Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مقارنة بين If و Switch

جزء من قسم المنطق وتدفق التنفيذ في رحلة C# على Coddy. الدرس 10 من 66.

توفر C# طريقتين أساسيتين للتعامل مع الشروط المتعددة: عبارات if-else وعبارات switch. ولكل منهما نقاط قوة في سيناريوهات مختلفة.

عبارات if-else مرنة ويمكنها التعامل مع أي نوع من الشروط:

string grade = "B";

if (grade == "A")
{
    Console.WriteLine("Excellent");
}
else if (grade == "B")
{
    Console.WriteLine("Good");
}
else if (grade == "C")
{
    Console.WriteLine("Satisfactory");
}
else
{
    Console.WriteLine("Needs improvement");
}

تكون عبارات switch أكثر وضوحًا عند مقارنة متغير واحد بعدة قيم ثابتة:

string grade = "B";

switch (grade)
{
    case "A":
        Console.WriteLine("Excellent");
        break;
    case "B":
        Console.WriteLine("Good");
        break;
    case "C":
        Console.WriteLine("Satisfactory");
        break;
    default:
        Console.WriteLine("Needs improvement");
        break;
}

يمكن لـ Switch تجميع حالات متعددة معًا (الانتقال التلقائي) بحيث تشترك في النتيجة نفسها. ضع تسميات case واحدة تلو الأخرى من دون أي تعليمات برمجية بينها، واستخدم break واحدة فقط في النهاية:

string grade = "B";

switch (grade)
{
    case "A":
    case "a":
        Console.WriteLine("Excellent - 4 points");
        break;
    case "B":
    case "b":
        Console.WriteLine("Good - 3 points");
        break;
    case "C":
    case "c":
        Console.WriteLine("Satisfactory - 2 points");
        break;
    default:
        Console.WriteLine("Needs improvement");
        break;
}

هنا، both "B" و"b" ينتقلان إلى الكتلة نفسها ويطبعان "Good - 3 points". هذا النمط مفيد كلما أردت أن تنتج المدخلات بالأحرف الكبيرة والأحرف الصغيرة، أو أي مجموعة من القيم، النتيجة نفسها.

يمكن لـ switch أيضًا تجميع الحالات ذات التسميات المختلفة التي تشترك في نتيجة واحدة:

char dayCode = 'M';

switch (dayCode)
{
    case 'M':
        Console.WriteLine("Monday");
        break;
    case 'T':
        Console.WriteLine("Tuesday or Thursday");
        break;
    case 'W':
        Console.WriteLine("Wednesday");
        break;
    case 'F':
        Console.WriteLine("Friday");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}
challenge icon

التحدي

متوسط

أنشئ method تُسمّى convertGradeToPoints بحيث:

  1. تأخذ تقديرًا حرفيًا كمعامل من نوع string
  2. تحوّله إلى نقاط تقدير رقمية باستخدام أسلوبي switch وif-else
  3. يجب أن تُنفّذ method كلا الأسلوبين وأن تُرجع نتيجة تنفيذ switch
  4. استخدم تحويلات التقديرات التالية:
    • "A" أو "a" = 4
    • "B" أو "b" = 3
    • "C" أو "c" = 2
    • "D" أو "d" = 1
    • "F" أو "f" = 0
    • أي إدخال آخر = -1

جرّب بنفسك

public class ConvertGradeToPoints
{
    // قم بتنفيذ الدالة convertGradeToPoints
    public static int convertGradeToPoints(string letterGrade)
    {
        // اكتب الكود الخاص بك هنا
        
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم C# عبر الإنترنت