تمرين - إنشاء منطق قرار متداخل مع if و else if و else

مكتمل

في الوحدة السابقة، استخدمت عبارات متعددة if لتنفيذ قواعد اللعبة. ومع ذلك، في نهاية الوحدة، لاحظت أن هناك حاجة إلى عبارات أكثر تعبيرا if لإصلاح خطأ دقيق في التعليمات البرمجية الخاصة بك.

في هذا التمرين، ستستخدم ifعبارات elseو و else if لتحسين خيارات التفريع في التعليمات البرمجية وإصلاح خطأ منطقي.

استخدام عبارات if و else بدلا من عبارات if منفصلة

بدلا من إجراء فحصين لعرض الرسالة "أنت تربح!" أو "عذرا، ستفقد"، ستستخدم else الكلمة الأساسية .

  1. تأكد من أن التعليمات البرمجية Program.cs تطابق ما يلي:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
    {
        Console.WriteLine("You rolled doubles! +2 bonus to total!");
        total += 2;
    }
    
    if ((roll1 == roll2) && (roll2 == roll3)) 
    {
        Console.WriteLine("You rolled triples! +6 bonus to total!");
        total += 6;
    }
    
    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    
    if (total < 15)
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    

    هذه هي التعليمات البرمجية التي أكملتها في الوحدة السابقة.

  2. خذ دقيقة لفحص العبارات if في نهاية الملف:

    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    
    if (total < 15)
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    

    لاحظ أن كلا if العبارات تقارن total بنفس القيمة الرقمية. هذه هي الفرصة المثالية لاستخدام بيان else .

  3. تحديث العبارتين if كما يلي:

    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    else 
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    

    هنا، إذا كانت total >= 15 خاطئة، تنفيذ كتلة التعليمات البرمجية else التي تتبع الكلمة الأساسية. نظرا لأن الحصيلتين متقابلتان مرتبطتان، فهذا سيناريو مثالي للكلمة else الأساسية.

  4. يجب أن يحتوي ملف Program.cs المحدث على التعليمات البرمجية التالية:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
    {
        Console.WriteLine("You rolled doubles!  +2 bonus to total!");
        total += 2;
    }
    
    if ((roll1 == roll2) && (roll2 == roll3))
    {
        Console.WriteLine("You rolled triples!  +6 bonus to total!");
        total += 6;
    }
    
    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    else 
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    

تعديل التعليمات البرمجية لإزالة مكافأة التكديس للزوج والثلاثي باستخدام التداخل

في الوحدة السابقة، رأيت أنه تم إدخال خطأ منطق دقيق في التطبيق الخاص بك. يمكنك إصلاح هذه المشكلة عن طريق تضمين عباراتك if .

يسمح لك التداخل بوضع كتل التعليمات البرمجية داخل كتل التعليمات البرمجية. في هذه الحالة، سوف تتداخل مع if و else (التحقق من مزدوج) داخل بيان آخر if (التحقق من ثلاثة أضعاف) لمنع منح كلا العلاوات.

  1. قم بتعديل التعليمات البرمجية الخاصة بك لمطابقة سرد التعليمات البرمجية التالية:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
    {
        if ((roll1 == roll2) && (roll2 == roll3))
        {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6;
        }
        else
        {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    }
    
    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    else 
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    
  2. خذ دقيقة لمراجعة العبارات المتداخلة if .

    والهدف من ذلك هو إنشاء بناء داخلي if-else حيث تكون النقطتان متناقضتين مرتبطتين، ثم استخدام النتائج المتعارضة (إذا/صحيح وغير ذلك/خطأ) لمنح نقاط المكافأة للثلاثي والزوجي. لتحقيق هذا الهدف، يمكنك التحقق من تضاعف في العبارة الخارجية if ، ثم للثلاثي في العبارة الداخلية if . يضمن هذا النمط أنه عندما يرجع الفحص الداخلي للثلاثي false، else يمكن أن تمنح كتلة التعليمات البرمجية نقاطا للزوج.

    القادمة، سوف "تعليمات برمجية صعبة" نتائج لفات الثلاث الخاصة بك من أجل اختبار منطق التعليمات البرمجية الخاصة بك.

  3. إنشاء سطر تعليمة برمجية فارغ أعلى السطر حيث total يتم الإعلان عنه وتهيئته.

  4. لاختبار لفة من الازدواج، أدخل التعليمات البرمجية التالية:

    roll1 = 6;
    roll2 = 6;
    roll3 = 5;
    

    يمكنك الترميز الثابت للمتغيرات الثلاثة roll من اختبار التعليمات البرمجية دون الحاجة إلى تشغيل التطبيق عشرات المرات.

  5. في قائمة Visual Studio Code File ، انقر فوق Save.

  6. في طريقة عرض EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal.

    يجب فتح لوحة Terminal، ويجب أن تتضمن موجه أوامر يظهر أن Terminal مفتوحة لموقع مجلد TestProject.

  7. في موجه الأوامر Terminal، لتشغيل التعليمات البرمجية، اكتب dotnet run ثم اضغط على Enter.

    عند تشغيل التعليمات البرمجية الخاصة بك، يجب أن ترى:

    Dice roll: 6 + 6 + 5 = 17
    You rolled doubles!  +2 bonus to total!
    You win!
    
    
  8. لاختبار لفة من الثلاثيات، قم بتحديث متغيرات لفة ذات التعليمات البرمجية المضمنة كما يلي:

    roll1 = 6;
    roll2 = 6;
    roll3 = 6;
    
  9. في قائمة Visual Studio Code File ، انقر فوق Save.

  10. في طريقة عرض EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal.

  11. في موجه الأوامر Terminal، لتشغيل التعليمات البرمجية، اكتب dotnet run ثم اضغط على Enter.

    عند تشغيل التعليمات البرمجية الخاصة بك، يجب أن ترى:

    Dice roll: 6 + 6 + 6 = 18
    You rolled triples!  +6 bonus to total!
    You win!
    
    

استخدم عبارات if, else, and else if لمنح جائزة بدلا من رسالة win-lost

لجعل اللعبة أكثر متعة، يمكنك تغيير اللعبة من "الفوز أو الخسارة" إلى منح جوائز وهمية لكل نتيجة. يمكنك تقديم أربع جوائز. ومع ذلك، يجب أن يفوز اللاعب بجائزة واحدة فقط:

  • إذا سجل اللاعب ما يساوي 16 أو أكثر، فسيربح سيارة جديدة.
  • إذا سجل اللاعب ما يساوي 10 أو أكثر، فسيربح جهاز كمبيوتر محمولاً جديدًا.
  • إذا سجل اللاعب 7 بالضبط، فسيربح رحلة.
  • بخلاف ذلك، سيربح اللاعب قطة صغيرة.
  1. قم بتعديل التعليمات البرمجية من الخطوات السابقة إلى سرد التعليمات البرمجية التالية:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
    {
        if ((roll1 == roll2) && (roll2 == roll3))
        {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6;
        }
        else
        {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    
        Console.WriteLine($"Your total including the bonus: {total}");
    }
    
    if (total >= 16)
    {
        Console.WriteLine("You win a new car!");
    }
    else if (total >= 10)
    {
        Console.WriteLine("You win a new laptop!");
    }
    else if (total == 7)
    {
        Console.WriteLine("You win a trip for two!");
    }
    else
    {
        Console.WriteLine("You win a kitten!");
    }
    
    
  2. خذ دقيقة لمراجعة البنية المحدثة if-elseif-else .

    تسمح لك العبارة if وelse if وelse بإنشاء شروط خاصة متعددة كتعبيرات منطقية. بمعنى آخر، عندما تريد أن تحدث نتيجة واحدة فقط، ولكن لديك العديد من الشروط والنتائج المحتملة، استخدم أكبر عدد تريده من else if العبارات. إذا لم تنطبق أي من عبارات if وelse if، فسيتم تنفيذ كتلة التعليمة البرمجية else النهائية. else هو اختياري، ولكن يجب أن يأتي الأخير إذا اخترت تضمينه.

  3. استخدم تقنية الترميز roll الثابت للمتغيرات مؤقتا لاختبار كل رسالة.

خلاصة

  • يتيح لك الجمع بين if عبارات و else اختبار شرط واحد، ثم تنفيذ إحدى نتيجتين. سيتم تشغيل كتلة التعليمات البرمجية if ل عندما يكون التعبير المنطقي هو true، وسيتم تشغيل كتلة التعليمات البرمجية ل else عندما يكون التعبير المنطقي هو false.
  • يمكنك تضمين عبارات if لتحديد شرط محتمل. ومع ذلك، يجب أن تنظر في استخدام العبارات ⁧if وelse if وelse بدلاً من ذلك.
  • استخدم else if عبارات لإنشاء شروط حصرية متعددة.
  • else اختياري، ولكن يجب أن يأتي دائما آخر عند تضمينه.