تمرين - إنشاء نموذج للبيانات والحلقات الخاصة بتحديد القائمة

مكتمل

في هذا التمرين، يمكنك مراجعة التعليمات البرمجية في مشروع Starter، وتنفيذ بعض مهام تنظيف التعليمات البرمجية، ثم البدء في إضافة ميزات إلى التطبيق الخاص بك. المهام التي تكملها أثناء هذا التمرين هي:

  1. مراجعة التعليمات البرمجية: راجع محتويات ملف Program.cs.
  2. عينة البيانات: تحويل بنية if-elseif-else إلى بنية حالة التبديل التي تحسن قابلية القراءة.
  3. حلقة القائمة: إحاطة القائمة الرئيسية وتحديد عنصر القائمة في حلقة تتكرر حتى يدخل المستخدم "exit".
  4. تحديدات القائمة: اكتب التعليمات البرمجية لبنية حالة التبديل التي تنشئ فروع تعليمات برمجية منفصلة لكل خيار قائمة.
  5. فروع التعليمات البرمجية: اكتب عنصرا نائبا داخل فروع عناصر القائمة التي توفر ملاحظات المستخدم حتى يتم تطوير ميزات التطبيق.
  6. اختبار التحقق: قم بإجراء اختبارات التحقق للتعليمات البرمجية التي تطورها في هذا التمرين.

مراجعة محتويات ملف Program.cs

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

  1. تأكد من فتح مجلد GuidedProject في Visual Studio Code.

    تتضمن الوحدة السابقة قسم Setup الذي يصف كيفية فتح مشروع Starter. إذا لزم الأمر، فارجع واتبع إرشادات الإعداد.

  2. في طريقة عرض EXPLORER ، قم بتوسيع مجلد Starter ، ثم حدد Program.cs.

    عند تحديد ملف Program.cs، يتم فتح محتويات الملف في محرر Visual Studio Code.

    إذا لم تكن طريقة عرض EXPLORER مفتوحة، فحدد EXPLORER من شريط نشاط Visual Studio Code. يوجد الزر EXPLORER في أعلى شريط النشاط.

  3. خذ بضع دقائق لمراجعة التعليمات البرمجية في ملف Program.cs.

  4. لاحظ أن الجزء العلوي من التعليمات البرمجية الخاصة بك يبدأ ببعض الإعلانات المتغيرة.

    // the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
    // variables that support data entry
    int maxPets = 8;
    string? readResult;
    string menuSelection = "";
    
    // array used to store runtime data, there is no persisted data
    string[,] ourAnimals = new string[maxPets, 6];
    

    في أعلى الملف، سترى سطر تعليق وقائمة بالمتغيرات. تستخدم هذه المتغيرات، animalSpecies من خلال animalNickname، للاحتفاظ بقيم خصائص الأليفة. لاحقا في التعليمات البرمجية تقوم بتعيين القيم المميزة إلى صفيف سلسلة متعدد الأبعاد يسمى ourAnimals. تتم تهيئة كل من هذه المتغيرات لتحتوي على سلسلة طول صفرية "". ourAnimals يتم الإعلان عن الصفيف بشكل أكبر قليلا في التعليمات البرمجية.

    المجموعة التالية من المتغيرات هي مزيج من string المتغيرات والمتغيرات int التي ستستخدمها لإنشاء بيانات نموذجية، وقراءة إدخال المستخدم، ووضع معايير الخروج لحلقة البرنامج الرئيسية. ربما لاحظت سطر string? readResult;التعليمات البرمجية . عند استخدامه في تعريف متغير مثل هذا، ? يعرف الحرف متغير نوع يقبل القيم الخالية. عند قراءة المستخدم أدخل القيم باستخدام Console.ReadLine() الأسلوب ، من الأفضل استخدام نوع يقبل القيم الخالية.

    المتغير النهائي هو صفيف سلسلة ثنائي الأبعاد يسمى ourAnimals. نظرا لأنك تقوم بإنشاء مثيل للصفيف دون تهيئة أي قيم، يمكنك استخدام new عامل التشغيل ( new يتم استخدام عامل التشغيل لإنشاء مثيل جديد من نوع). يتم تعريف عدد الصفوف بواسطة maxPets، الذي تمت تهيئته إلى ثمانية. عدد الخصائص التي تقوم بتخزينها هو ستة، متغيرات السلسلة التي فحصتها أعلاه.

  5. مرر لأسفل لفحص الحلقة for التي تحتوي على if-elseif-else بنية تحديد.

    ملاحظه

    إذا رأيت عبارة switch بدلا من if-elseif-else داخل كتلة التعليمات البرمجية للحلقة، for فتأكد من مراجعة ملف Program.cs في مجلد Starter ، وليس ملف Program.cs في المجلد Final . لا تريد إجراء تغييرات على التعليمات البرمجية في المجلد النهائي. قد تحتاج إلى استخدام المجلد النهائي كمرجع لاحقا في هذه الوحدة النمطية.

  6. لاحظ أن الحلقة for تستخدم maxPets المتغير لإنشاء حد أعلى لعدد التكرارات.

  7. لاحظ أن if-elseif-else الإنشاء يفرع التعليمات البرمجية الخاصة بك بشكل انتقائي بناء على خصائص الأليفة.

    if-elseif-else يتم استخدام البنية لتعريف قيم مختلفة للتكرارات الأربعة الأولى من الحلقةfor. بعد التكرار الرابع، يتم تعيين سلسلة فارغة أو صفرية لكافة الخصائص.

    يتم تعيين قيم متغيرات خصائص إلى صفيف ourAnimals في أسفل الحلقة for .

  8. قم بالتمرير إلى أسفل ملف التعليمات البرمجية، ثم افحص التعليمات البرمجية المستخدمة لعرض خيارات القائمة وقراءة تحديد المستخدم.

  9. لاحظ أنك تقوم بتعيين القيمة التي تم إرجاعها بواسطة Console.ReadLine() الأسلوب إلى السلسلة readResultالتي تقبل القيم الخالية .

    استخدام سلسلة تقبل القيم الخالية هو أفضل ممارسة لالتقاط الإدخال من أسلوب ReadLine(). بمجرد التحقق من أن قيمة الإدخال ليست خالية، يمكنك تعيين القيمة إلى متغير سلسلة قياسي يسمى menuSelection. تمكنك هذه العملية من تقييم قيمة تحديد القائمة دون القلق بشأن القيم الخالية. ستنشئ العديد من الطرق التي تقبل السلاسل كمعلمة إدخال خطأ إذا تم تمرير قيمة خالية. إذا لم تتبع نمط الإدخال هذا، فمن المحتمل أن يقوم المحول البرمجي للتعليمات البرمجية بإنشاء تحذير عند إنشاء مشروعك.

    تعكس الأسطر النهائية لملف Program.cs تحديد خيار القائمة ثم توقف التنفيذ مؤقتا حتى يتم الضغط على المفتاح Enter.

تحويل عبارة if إلى عبارة تبديل

في هذه المهمة، يمكنك تحويل البنية الموجودة if-elseif-else إلى switch-case بنية. تعمل switch العبارة على تحسين قابلية قراءة التعليمات البرمجية الخاصة بك.

  1. قم بالتمرير لأعلى إلى بداية الحلقة for المستخدمة لإنشاء نموذج البيانات.

  2. لاحظ أن البنية if-elseif-else تبدأ بالبيان التالي if و كتلة التعليمات البرمجية:

    if (i == 0)
    {
        animalSpecies = "dog";
        animalID = "d1";
        animalAge = "2";
        animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 65 pounds. housebroken.";
        animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.";
        animalNickname = "lola";
    }
    
  3. استبدل العبارة الأولية if وحظر التعليمات البرمجية بالتعليمات البرمجية التالية:

    switch (i)
    {
        case 0:
            animalSpecies = "dog";
            animalID = "d1";
            animalAge = "2";
            animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 65 pounds. housebroken.";
            animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.";
            animalNickname = "lola";
            break;
    
    

    case 0: تقوم التعليمات البرمجية بتنفيذ نفس التحديد if (i == 0) الذي تحل محله. ستقوم بإجراء استبدالات مقابلة لإكمال التحويل من if-elseif-else الإنشاء إلى البنية switch-case .

  4. لاحظ أن رمز خط أحمر متعرج يظهر الآن أسفل ; في نهاية العبارة break .

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

  5. استبدل العبارة else if (i == 1) وحظر التعليمات البرمجية بالتعليمات البرمجية التالية:

    case 1:
        animalSpecies = "dog";
        animalID = "d2";
        animalAge = "9";
        animalPhysicalDescription = "large reddish-brown male golden retriever weighing about 85 pounds. housebroken.";
        animalPersonalityDescription = "loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.";
        animalNickname = "loki";
        break;
    
    
  6. استبدل العبارة else if (i == 2) وحظر التعليمات البرمجية بالتعليمات البرمجية التالية:

    case 2:
        animalSpecies = "cat";
        animalID = "c3";
        animalAge = "1";
        animalPhysicalDescription = "small white female weighing about 8 pounds. litter box trained.";
        animalPersonalityDescription = "friendly";
        animalNickname = "Puss";
        break;
    
    
  7. استبدل العبارة else if (i == 3) وحظر التعليمات البرمجية بالتعليمات البرمجية التالية:

    case 3:
        animalSpecies = "cat";
        animalID = "c4";
        animalAge = "?";
        animalPhysicalDescription = "";
        animalPersonalityDescription = "";
        animalNickname = "";
        break;
    
    
  8. استبدل العبارة else وحظر التعليمات البرمجية بالتعليمات البرمجية التالية:

    default:
        animalSpecies = "";
        animalID = "";
        animalAge = "";
        animalPhysicalDescription = "";
        animalPersonalityDescription = "";
        animalNickname = "";
        break;
    
    }
    
  9. لاحظ أن if-elseif-else البنية الآن تم استبدالها بالكامل ببنية switch-case وأن رمز الخط الأحمر المتعرج قد اختفى.

    إذا بقيت أجزاء من البنية الخاصة بك if-elseif-else ، أو إذا كانت switch العبارة غير مكتملة، فتحقق لمعرفة ما إذا كنت قد فاتتك خطوة.

  10. يجب أن يكون للبنية المكتملة switch-case بنية مشابهة للتعليمات البرمجية التالية:

    ملاحظه

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

    switch (i)
    {
        case 0:
            // variable assignments were removed for this view of the structure
            break;
    
        case 1:
            // variable assignments were removed for this view of the structure
            break;
    
        case 2:
            // variable assignments were removed for this view of the structure
            break;
    
        case 3:
            // variable assignments were removed for this view of the structure
            break;
    
        default:
            // variable assignments were removed for this view of the structure
            break;
    }
    

    تذكر أنه لا يسمح بتنفيذ مقطع التبديل "بالسقوط" إلى قسم التبديل التالي. break يتم استخدام العبارة للتأكد من عدم حدوث "السقوط".

  11. في قائمة Visual Studio Code File ، حدد Save.

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

    يجب فتح لوحة TERMINAL أسفل منطقة محرر التعليمات البرمجية.

    هناك عدة طرق لفتح المحطة الطرفية المتكاملة ل Visual Studio Code. على سبيل المثال، توفر القائمة العلوية الوصول إلى لوحة TERMINAL من كل من القائمة View وقائمة Terminal . يمكنك أيضا معرفة اختصارات لوحة المفاتيح التي تفتح لوحة TERMINAL. كل أسلوب مقبول.

  13. لاحظ أن لوحة TERMINAL تتضمن موجه سطر أوامر، وأن المطالبة تعرض مسار المجلد الحالي.

    على سبيل المثال:

    C:\Users\someuser\Desktop\GuidedProject\Starter>
    

    يمكنك استخدام لوحة TERMINAL لتشغيل أوامر واجهة سطر الأوامر (CLI)، مثل dotnet build و dotnet run. dotnet build سيقوم الأمر بتجميع التعليمات البرمجية وعرض رسائل الخطأ والتحذير المتعلقة ببناء جملة التعليمات البرمجية.

    هام

    تحتاج إلى التأكد من أن موجه أوامر المحطة الطرفية مفتوح إلى جذر مساحة عمل المشروع. في هذه الحالة، يكون جذر مساحة عمل المشروع هو مجلد Starter، حيث توجد ملفات Starter.csproj وملفات Program.cs. عند تشغيل الأوامر في المحطة الطرفية، ستقوم الأوامر بتنفيذ إجراءات باستخدام موقع المجلد الحالي. إذا قمت بتشغيل dotnet build الأمر أو dotnet run من موقع مجلد لا يحتوي على ملفاتك، فسينشئ الأمر رسائل خطأ.

  14. في موجه الأوامر TERMINAL، لإنشاء التعليمات البرمجية للمشروع، أدخل الأمر التالي: dotnet build

    بعد بضع ثوان، يجب أن تشاهد رسالة تخبرك بنجاح البناء الخاص بك، وأن لديك 0 تحذير (تحذيرات) و0 خطأ (أخطاء).

    Determining projects to restore...
    All projects are up-to-date for restore.
    Starter -> C:\Users\someuser\Desktop\GuidedProject\Starter\bin\Debug\net10.0\Starter.dll
    
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    
  15. إذا رأيت رسائل خطأ أو تحذير، فستحتاج إلى إصلاحها قبل المتابعة.

    تسرد رسائل الخطأ والتحذير سطر التعليمات البرمجية حيث يمكن العثور على المشكلة. الرسالة التالية هي مثال على Build FAILED رسالة خطأ:

    C:\Users\someuser\Desktop\GuidedProject\Starter\Program.cs(53,18): error CS1002: ; expected [C:\Users\someuser\Desktop\GuidedProject\Starter\Starter.csproj]

    تخبرك هذه الرسالة بنوع الخطأ الذي تم اكتشافه ومكان العثور عليه. في هذه الحالة، تخبرك الرسالة أن ملف Program.cs يحتوي على خطأ - error CS1002: ; expected. ; expected يقترح أنك نسيت تضمين ; في نهاية عبارة . Program.cs(53,18) يخبرك جزء الرسالة أن الخطأ موجود في سطر التعليمات البرمجية 53، في موضع 18 حرفا من اليسار.

    يمنع خطأ في بناء الجملة مثل هذا نجاح البنية (فشل الإنشاء). توفر بعض رسائل الإنشاء "تحذير" بدلا من "خطأ"، ما يعني أن هناك شيئا يجب الاهتمام به، ولكن يمكنك محاولة تشغيل البرنامج على أي حال (نجح الإنشاء).

    بمجرد إصلاح المشكلات وحفظ التحديثات، يمكنك تشغيل dotnet build الأمر مرة أخرى. تابع حتى يكون لديك 0 تحذير (تحذيرات) و0 خطأ (أخطاء).

    ملاحظه

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

  16. أغلق لوحة Terminal.

إنشاء حلقة قائمة البرنامج

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

  1. في محرر Visual Studio Code، في أعلى التعليمات البرمجية المستخدمة لعرض خيارات القائمة، حدد موقع التعليق التالي:

    // display the top-level menu options
    
  2. أنشئ سطرا فارغا للتعليمات البرمجية أعلى التعليق، ثم أدخل التعليمات البرمجية التالية:

    do
    {
    
    

    من خلال إحاطة خيارات قائمة البرنامج داخل do حلقة، تأكد من أن المستخدم يرى خيارات القائمة مرة واحدة على الأقل.

  3. مرر لأسفل إلى أسفل ملف التعليمات البرمجية.

  4. أنشئ سطرا فارغا للتعليمات البرمجية أسفل التعليمات البرمجية التي توقف تنفيذ التعليمات البرمجية مؤقتا، ثم قم بتحديث التعليمات البرمجية كما يلي:

    // pause code execution
    readResult = Console.ReadLine();
    
    } while ();
    

    لاحظ أنك أغلقت كتلة التعليمات البرمجية do للحلقة، وأنك بدأت في إنشاء بيانك while .

  5. لتحديد التعبير المنطقي الذي يتم تقييمه بواسطة العبارة while ، قم بتحديث العبارة while كما يلي:

    while (menuSelection != "exit");
    

    سيضمن هذا التعبير تكرار do التكرار الحلقي حتى يختار المستخدم "إنهاء" التطبيق. سيعرض كل تكرار القائمة ويقرأ تحديد قائمة المستخدم.

  6. لاحظ أن المسافة البادئة سطر التعليمات البرمجية ليست ما تتوقع رؤيته داخل كتلة التعليمات البرمجية للحلقة الخاصة بك do .

  7. لجعل Visual Studio Code "يصلح" المسافة البادئة لخطوط التعليمات البرمجية، انقر بزر الماوس الأيمن داخل محرر التعليمات البرمجية، ثم حدد تنسيق المستند.

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

    اختصارات لوحة المفاتيح لاستدعاء هذا الأمر هي:

    • في Windows Shift + Alt + F
    • على Mac Shift + Option + F
    • على Linux Ctrl + Shift + I

    يمكن أيضا العثور على هذا الأمر باستخدام لوحة الأوامر. للعثور على الأمر تنسيق المستند من لوحة الأوامر:

    • في القائمة عرض ، حدد لوحة الأوامر، ثم أدخل تنسيق D في المطالبة.
    • ستظهر قائمة الأوامر التي تمت تصفيتها تنسيق المستند كأمر قابل للتحديد
  8. في قائمة Visual Studio Code File ، حدد Save.

  9. افتح لوحة المحطة الطرفية المتكاملة.

    يمكنك فتح لوحة Terminal بالنقر بزر الماوس الأيمن فوق مجلد Starter في EXPLORER، ثم تحديد Open in Integrated Terminal.

  10. في موجه الأوامر Terminal، أدخل dotnet build الأمر لإنشاء التعليمات البرمجية المحدثة.

    يجب أن تشاهد رسالة تبلغ عن 0 تحذير (تحذيرات) و0 خطأ (أخطاء)

  11. قم بإصلاح أي أخطاء أو تحذيرات إنشاء تراها تم الإبلاغ عنها قبل المتابعة.

  12. في موجه الأوامر Terminal، أدخل الأمر لتشغيل التعليمات البرمجية dotnet run المحدثة.

    سيبدأ تشغيل التطبيق الخاص بك.

  13. تحقق من عرض خيارات القائمة الرئيسية في لوحة Terminal كما هو متوقع.

    يجب أن تشاهد ما يلي معروضا في لوحة TERMINAL.

    Welcome to the Contoso PetFriends app. Your main menu options are:
    1. List all of our current pet information
    2. Add a new animal friend to the ourAnimals array
    3. Ensure animal ages and physical descriptions are complete
    4. Ensure animal nicknames and personality descriptions are complete
    5. Edit an animal's age
    6. Edit an animal's personality description
    7. Display all cats with a specified characteristic
    8. Display all dogs with a specified characteristic
    
    Enter your selection number (or type Exit to exit the program)
    
  14. في موجه الأوامر Terminal، لتحديد خيار القائمة 1، أدخل 1

    إذا تم إيقاف تطبيقك مؤقتا مع وجود المؤشر على يمين "1"، فاضغط على مفتاح الإدخال Enter. لإدخال القيمة، تحتاج إلى الضغط على المفتاح Enter بعد كتابة الحرف 1 .

  15. تحقق من أن التعليمات البرمجية الخاصة بك تعكس تحديد القائمة الذي أدخلته.

    يجب أن تشاهد الإخراج التالي معروضا في المحطة الطرفية.

    You selected menu option 1.
    Press the Enter key to continue
    

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

  16. في موجه الأوامر Terminal، اضغط على المفتاح Enter للمتابعة.

    يؤدي الضغط على Enter إلى تمكين التعليمات البرمجية الخاصة بك من المتابعة بعد Console.ReadLine() الأسلوب الموجود قبل while تقييم التعبير في نهاية التطبيق.

  17. للتحقق من أن التعليمات البرمجية الخاصة بك تستمر في قبول تحديدات قوائم إضافية، حاول إدخال واحد أو أكثر من أرقام عناصر القائمة الأخرى.

    إذا توقفت التعليمات البرمجية عن العمل بعد إدخال "1"، فتأكد من حفظ تحديثات التعليمات البرمجية. إذا لزم الأمر، احفظ التعليمات البرمجية الخاصة بك ثم حاول تشغيل التطبيق الخاص بك مرة أخرى.

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

  18. في موجه أوامر Terminal، للتحقق من تقييم معايير الخروج للحلقة بشكل صحيح، أدخل إما Exit أو exit.

    عند إدخال إما "Exit" أو "exit"، while يجب تقييم التعبير إلى false ويجب أن ينتهي تنفيذ التعليمات البرمجية.

    هام

    إذا لم يتوقف تنفيذ التعليمات البرمجية كما هو متوقع عند إدخال "إنهاء"، يمكنك الضغط على Ctrl-C في الوحدة الطرفية المتكاملة لفرض إيقاف تنفيذ التعليمات البرمجية.

  19. أغلق لوحة Terminal.

كتابة عبارة التبديل لتحديدات القائمة

في هذه المهمة، يمكنك كتابة التعليمات البرمجية لبيان switch يفرع تنفيذ التعليمات البرمجية استنادا إلى القيمة المعينة إلى menuSelection. يمكنك إنشاء تسمية switch تتوافق مع كل رقم عنصر قائمة. يضمن إنشاء تسميات منفصلة switch إدارة كل عنصر قائمة بشكل منفصل. switch تقوم العبارة بعمل جيد لتنفيذ المنطق المقصود من التطبيق الخاص بك.

  1. في محرر التعليمات البرمجية Visual Studio، حدد موقع سطر التعليمات البرمجية التالي Console.WriteLine() المستخدم لإعادة تحديد القائمة.

    Console.WriteLine($"You selected menu option {menuSelection}.");
    
  2. لبدء تطوير العبارة الخاصة بك switch ، قم بتحديث التعليمات البرمجية الخاصة بك على النحو التالي:

    //Console.WriteLine($"You selected menu option {menuSelection}.");
    //Console.WriteLine("Press the Enter key to continue");
    
    // pause code execution
    //readResult = Console.ReadLine();
    
    switch(menuSelection)
    {
    
    }
    
    
  3. لإضافة النمط الأول case إلى العبارة الخاصة بك switch ، قم بتحديث رمز العبارة الخاص بك switch كما يلي:

    switch(menuSelection)
    {
        case "1":
            break;
    
    }
    

    ربما لاحظت أن نمط الحالة المستخدم هنا يبدو مختلفا قليلا عن نمط الحالة المستخدم عند إنشاء نموذج البيانات في وقت سابق في التطبيق (case 1: مقابل case "1":). التفسير بسيط. كنت تتحقق من قيم العدد الصحيح مسبقا والآن تقوم بالتحقق من قيم السلسلة.

  4. لإنشاء فروع التحديد في البنية الخاصة بك switch-case لكل من أرقام تحديد القائمة المتبقية، أضف خيارات إضافية case كما يلي:

    switch(menuSelection)
    {
        case "1":
            break;
    
        case "2":
            break;
    
        case "3":
            break;
    
        case "4":
            break;
    
        case "5":
            break;
    
        case "6":
            break;
    
        case "7":
            break;
    
        case "8":
            break;
    
    }
    
  5. لاحظ أنه يمكنك إضافة الحالة الاختيارية default إلى نهاية قائمة التحديد الخاصة بك كما يلي:

    switch(menuSelection)
    {
        // case selections 1-7 have been removed to simplify this sample code 
    
        case "8":
            break;
    
        default:
            break;
    }
    
  6. في قائمة Visual Studio Code File ، حدد Save.

  7. افتح لوحة الوحدة الطرفية المتكاملة ثم قم بتشغيل الأمر لإنشاء البرنامج.

    dotnet build استخدم الأمر لإنشاء التعليمات البرمجية المحدثة.

    يجب أن تشاهد الرسالة التي تبلغ عن 0 تحذير (تحذيرات) و0 خطأ (أخطاء)

  8. قم بإصلاح أي أخطاء أو تحذيرات إنشاء تراها تم الإبلاغ عنها قبل المتابعة.

  9. أغلق لوحة Terminal.

كتابة رمز العنصر النائب لكل حالة من عبارة التبديل

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

  1. في محرر Visual Studio Code، حدد موقع سطر التعليمات البرمجية الذي case "1": يحتوي على التحديد:

    switch (menuSelection)
    {
        case "1":
            break;
    
    
  2. لتوفير رسالة ملاحظات للمستخدم بين سطري التعليمات البرمجية case "1": و break; ، قم بتحديث التعليمات البرمجية الخاصة بك كما يلي:

    switch (menuSelection)
    {
        case "1":
            // List all of our current pet information
            Console.WriteLine("this app feature is coming soon - please check back to see progress.");
            Console.WriteLine("Press the Enter key to continue.");
            readResult = Console.ReadLine();
            break;
    
    
  3. أضف نفس رسالة الملاحظات للتحديد case "2": كما يلي:

    switch (menuSelection)
    {
        case "1":
            // List all of our current pet information
            Console.WriteLine("this app feature is coming soon - please check back to see progress.");
            Console.WriteLine("Press the Enter key to continue.");
            readResult = Console.ReadLine();
            break;
    
        case "2":
            // List all of our current pet information
            Console.WriteLine("this app feature is coming soon - please check back to see progress.");
            Console.WriteLine("Press the Enter key to continue.");
            readResult = Console.ReadLine();
            break;
    
    
  4. قم بتحديث تعليق الخط للتحديد case "2": ليعكس خيار القائمة الثانية كما يلي:

    case "2":
        // Add a new animal friend to the ourAnimals array
        Console.WriteLine("this app feature is coming soon - please check back to see progress.");
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break;
    
    
  5. case "3": بالنسبة للتحديدات من خلالcase "8":، قم بتحديث التعليمات البرمجية الخاصة بك بتعليق سطر يعكس نص عنصر القائمة المقترن.

    على سبيل المثال، أضف // Ensure animal ages and physical descriptions are complete أدناه case "3":

    يمكنك نسخ نص عنصر القائمة من أسطر التعليمات البرمجية التي تعرض خيارات القائمة.

    ملاحظه

    يمكنك استخدام الأمر "تنسيق المستند" لتنظيف التنسيق. قد يؤدي ذلك إلى تسريع عملك ومنحك المزيد من الوقت للتركيز على التعليمات البرمجية التي تدخلها بدلا من كيفية ظهورها.

  6. بالنسبة للتحديدين case "3": و case "4": ، أضف رسالة الملاحظات التالية و ReadLine() أسفل تعليق السطر:

    Console.WriteLine("Challenge Project - please check back soon to see progress.");
    Console.WriteLine("Press the Enter key to continue.");
    readResult = Console.ReadLine();
    
  7. بالنسبة للتحديدات المتبقية case ، قم بتحديث التعليمات البرمجية الخاصة بك برسالة الملاحظات التالية و ReadLine():

    Console.WriteLine("UNDER CONSTRUCTION - please check back next month to see progress.");
    Console.WriteLine("Press the Enter key to continue.");
    readResult = Console.ReadLine();
    

    ملاحظه

    إذا أضفت الحالة الاختيارية default إلى قائمة التحديد، فلا تقم بإضافة رسالة الملاحظات إلى هذه الحالة.

  8. في قائمة Visual Studio Code File ، حدد Save.

    تذكر أن Visual Studio Code سينسق التعليمات البرمجية الخاصة بك إذا نقرت بزر الماوس الأيمن داخل محرر التعليمات البرمجية ثم حدد تنسيق المستند من قائمة السياق.

  9. افتح لوحة المحطة الطرفية المتكاملة، ثم قم بتشغيل الأمر لإنشاء البرنامج.

    dotnet build استخدم الأمر لإنشاء التعليمات البرمجية المحدثة.

  10. قم بإصلاح أي أخطاء أو تحذيرات إنشاء تراها تم الإبلاغ عنها قبل المتابعة.

راجع عملك

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

  1. إذا لزم الأمر، افتح لوحة المحطة الطرفية المتكاملة في Visual Studio Code.

  2. في موجه الأوامر Terminal، أدخل dotnet run

  3. في موجه الأوامر Terminal، لتحديد خيار القائمة الأولى، أدخل 1

  4. تحقق من عرض الرسالة المتوقعة "قريبا".

  5. كرر الخطوة السابقة، وأدخل كل رقم من أرقام خيارات القائمة الأخرى للتحقق من عرض الرسالة المتوقعة في كل حالة.

  6. في موجه الأوامر Terminal، أدخل إما Exit أو exit للتحقق من أن معايير الخروج الخاصة بك لا تزال قيد التقييم بشكل صحيح.

    هام

    إذا لم يتوقف تنفيذ التعليمات البرمجية كما هو متوقع، يمكنك الضغط على Ctrl-C في الوحدة الطرفية المتكاملة لفرض التنفيذ للإيقاف.

  7. أغلق لوحة Terminal.