تمرين - إكمال نشاط التحدي للتمييز بين عبارات الإكمال والتكرار

مكتمل

ستعزز تحديات التعليمات البرمجية ما تعلمته وتساعدك على اكتساب بعض الثقة قبل المتابعة.

فحص الفرق بين تكرارات العبارة do و while

كما رأيت، تدعم C# أربعة أنواع من عبارات التكرار: forو foreachdo-whileو و.while تصف الوثائق المرجعية للغة من Microsoft هذه العبارات على النحو التالي:

  • العبارة for : تنفذ نصها بينما يتم تقييم تعبير منطقي محدد ('الشرط') إلى صحيح.
  • العبارة foreach : تعداد عناصر المجموعة وتنفيذ نصها لكل عنصر من عناصر المجموعة.
  • العبارة do-while : تنفذ نصها بشكل مشروط مرة واحدة أو أكثر.
  • العبارة while : تنفذ بشكل مشروط نصها صفرا أو أكثر من المرات.

for يبدو أن التكرارات و foreach تم تمييزها بوضوح عن بعضها do-while وعن التكرارات وwhile. ومع ذلك، يبدو أن تعريفي do-while وعبارتي و while متشابهتين تماما. معرفة متى تختار بين do-while و while تبدو أكثر عشوائية، ويمكن أن تكون مربكة بعض الشيء. قد تساعد بعض مشاريع التحدي على توضيح الاختلافات.

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

إشعار

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

إدارة إدخال المستخدم أثناء هذا التحدي

عند استخدام عبارة Console.ReadLine() للحصول على إدخال المستخدم، من الشائع استخدام سلسلة نوع تقبل القيم الخالية (المعينة string?) لمتغير الإدخال ثم تقييم القيمة التي أدخلها المستخدم. يستخدم نموذج التعليمات البرمجية التالي سلسلة نوع تقبل القيم الخالية لالتقاط إدخال المستخدم. يستمر التكرار بينما القيمة التي يوفرها المستخدم خالية:

string? readResult;
Console.WriteLine("Enter a string:");
do
{
    readResult = Console.ReadLine();
} while (readResult == null);

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

string? readResult;
bool validEntry = false;
Console.WriteLine("Enter a string containing at least three characters:");
do
{
    readResult = Console.ReadLine();
    if (readResult != null)
    {
        if (readResult.Length >= 3)
        {
            validEntry = true;
        }
        else
        {
            Console.WriteLine("Your input is invalid, please try again.");
        }
    }
} while (validEntry == false);

إذا كنت تريد استخدام Console.ReadLine() الإدخال للقيم الرقمية، فستحتاج إلى تحويل قيمة السلسلة إلى نوع رقمي.

int.TryParse() يمكن استخدام الأسلوب لتحويل قيمة سلسلة إلى عدد صحيح. يستخدم الأسلوب معلمتين، سلسلة سيتم تقييمها واسم متغير عدد صحيح سيتم تعيين قيمة له. يقوم الأسلوب بإرجاع قيمة منطقية. يوضح نموذج التعليمات البرمجية int.TryParse() التالي باستخدام الأسلوب :

// capture user input in a string variable named readResult

int numericValue = 0;
bool validNumber = false;

validNumber = int.TryParse(readResult, out numericValue);

إذا كانت قيمة السلسلة المعينة إلى readResult تمثل عددا صحيحا صحيحا، فسيتم تعيين القيمة إلى متغير العدد الصحيح المسمى numericValue، true وسيتم تعيينها إلى المتغير المنطقي المسمى validNumber. إذا كانت القيمة المعينة إلى readResult لا تمثل عددا صحيحا صحيحا، validNumber فسيتم تعيين قيمة .false على سبيل المثال، إذا كانت readResult تساوي "7"، فسيتم تعيين القيمة 7 إلى numericValue.

مشروع التعليمات البرمجية 1 - كتابة التعليمات البرمجية التي تتحقق من صحة إدخال عدد صحيح

فيما يلي الشروط التي يجب أن ينفذها مشروع الترميز الأول:

  • يجب أن يتضمن الحل الخاص بك إما تكرارا do-while أو while .

  • قبل كتلة التكرار: يجب أن يستخدم الحل عبارة Console.WriteLine() لمطالبة المستخدم بقيمة عدد صحيح بين 5 و10.

  • داخل كتلة التكرار:

    • يجب أن يستخدم الحل عبارة Console.ReadLine() للحصول على إدخال من المستخدم.
    • يجب أن يضمن الحل الخاص بك أن الإدخال هو تمثيل صحيح لعدد صحيح.
    • إذا لم تكن قيمة العدد الصحيح بين 5 و10، يجب أن تستخدم التعليمات البرمجية عبارة Console.WriteLine() لمطالبة المستخدم بقيمة عدد صحيح بين 5 و10.
    • يجب أن يضمن الحل الخاص بك أن تكون قيمة العدد الصحيح بين 5 و10 قبل إنهاء التكرار.
  • أسفل (بعد) كتلة التعليمات البرمجية للتكرار: يجب أن يستخدم الحل الخاص بك عبارة Console.WriteLine() لإعلام المستخدم بأنه تم قبول قيمة الإدخال الخاصة به.

  1. تأكد من أن لديك ملف Program.cs فارغا مفتوحا في Visual Studio Code.

    إذا لزم الأمر، افتح Visual Studio Code، ثم أكمل الخطوات التالية لإعداد ملف Program.cs في المحرر:

    1. في القائمة ملف ، حدد فتح مجلد.

    2. استخدم مربع الحوار فتح مجلد للانتقال إلى المجلد CsharpProjects ثم فتحه.

    3. في لوحة Visual Studio Code EXPLORER، حدد Program.cs.

    4. في قائمة Visual Studio Code Selection ، حدد Select All، ثم اضغط على مفتاح Delete.

  2. اكتب التعليمات البرمجية التي تنفذ كل شرط لمشروع التعليمات البرمجية 1.

  3. قم بتشغيل التطبيق الخاص بك وتحقق من أن التعليمات البرمجية الخاصة بك تتحقق من صحة إدخال المستخدم استنادا إلى المتطلبات المحددة.

    على سبيل المثال، عند تشغيل التطبيق الخاص بك، يجب أن يرفض قيم الإدخال مثل "اثنان" و"2"، ولكن يجب أن يقبل قيمة إدخال "7".

    المثال الموضح أعلاه، يجب أن يبدو إخراج وحدة التحكم مشابها للمثال التالي:

    Enter an integer value between 5 and 10
    two
    Sorry, you entered an invalid number, please try again
    2
    You entered 2. Please enter a number between 5 and 10.
    7
    Your input value (7) has been accepted.
    

مشروع التعليمات البرمجية 2 - كتابة التعليمات البرمجية التي تتحقق من صحة إدخال السلسلة

فيما يلي الشروط التي يجب أن ينفذها مشروع الترميز الثاني:

  • يجب أن يتضمن الحل الخاص بك إما تكرارا do-while أو while .

  • قبل كتلة التكرار: يجب أن يستخدم الحل عبارة Console.WriteLine() لمطالبة المستخدم بأحد أسماء الأدوار الثلاثة: مسؤول istrator أو Manager أو User.

  • داخل كتلة التكرار:

    • يجب أن يستخدم الحل عبارة Console.ReadLine() للحصول على إدخال من المستخدم.
    • يجب أن يضمن الحل الخاص بك أن القيمة التي تم إدخالها تطابق أحد خيارات الدور الثلاثة.
    • يجب أن يستخدم الحل الخاص بك الأسلوب على Trim() قيمة الإدخال لتجاهل أحرف المسافة البادئة واللاحقة.
    • يجب أن يستخدم ToLower() الحل الخاص بك الأسلوب على قيمة الإدخال لتجاهل حالة الأحرف.
    • إذا لم تكن القيمة المدخلة مطابقة لأحد خيارات الدور، يجب أن تستخدم التعليمات البرمجية عبارة Console.WriteLine() لمطالبة المستخدم بإدخال صالح.
  • أدناه (بعد) كتلة التعليمات البرمجية للتكرار: يجب أن يستخدم الحل الخاص بك عبارة Console.WriteLine() لإعلام المستخدم بأنه تم قبول قيمة الإدخال الخاصة به.

  1. التعليق خارج جميع التعليمات البرمجية في لوحة محرر التعليمات البرمجية Visual Studio

    1. حدد كافة أسطر التعليمات البرمجية في محرر التعليمات البرمجية
    2. في القائمة تحرير ، حدد تبديل تعليق الحظر.
  2. اكتب التعليمات البرمجية التي تنفذ كل شرط لمشروع التعليمات البرمجية 2.

  3. قم بتشغيل التطبيق الخاص بك وتحقق من أن التعليمات البرمجية الخاصة بك تتحقق من صحة إدخال المستخدم استنادا إلى المتطلبات المحددة.

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

    يجب أن يبدو إخراج وحدة التحكم لهذا المثال مشابها لما يلي:

    Enter your role name (Administrator, Manager, or User)
    Admin
    The role name that you entered, "Admin" is not valid. Enter your role name (Administrator, Manager, or User)
       Administrator
    Your input value (Administrator) has been accepted.
    

مشروع التعليمات البرمجية 3 - كتابة التعليمات البرمجية التي تعالج محتويات صفيف سلسلة

فيما يلي الشروط التي يجب أن ينفذها مشروع الترميز الثالث:

  • يجب أن يستخدم الحل الخاص بك صفيف السلسلة التالي لتمثيل الإدخال إلى منطق الترميز الخاص بك:

    string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
    
  • يجب أن يعلن الحل الخاص بك عن متغير عدد صحيح يسمى periodLocation يمكن استخدامه للاحتفاظ بموقع حرف الفترة داخل سلسلة.

  • يجب أن يتضمن الحل الخاص بك تكرارا خارجيا foreach أو for تكرارا يمكن استخدامه لمعالجة كل عنصر سلسلة في الصفيف. يجب تسمية myStringمتغير السلسلة الذي ستعالجه داخل التكرارات الحلقية .

  • في الحلقة الخارجية، يجب أن يستخدم IndexOf() الحل أسلوب String الفئة للحصول على موقع حرف الفترة الأولى في myString المتغير. يجب أن يكون استدعاء الأسلوب مشابها ل: myString.IndexOf("."). إذا لم يكن هناك حرف نقطة في السلسلة، فسيتم إرجاع قيمة -1.

  • يجب أن يتضمن الحل الخاص بك حلقة أو while داخلية do-while يمكن استخدامها لمعالجة myString المتغير.

  • في الحلقة الداخلية، يجب أن يقوم الحل باستخراج وعرض (الكتابة إلى وحدة التحكم) كل جملة مضمنة في كل سلسلة من السلاسل التي تتم معالجتها.

  • في الحلقة الداخلية، يجب ألا يعرض الحل حرف النقطة.

  • في الحلقة الداخلية، يجب أن يستخدم Remove()Substring()الحل أساليب و و TrimStart() لمعالجة معلومات السلسلة.

  1. التعليق خارج جميع التعليمات البرمجية في لوحة محرر التعليمات البرمجية Visual Studio

    1. حدد كافة أسطر التعليمات البرمجية في محرر التعليمات البرمجية
    2. في القائمة تحرير ، حدد تبديل تعليق الحظر.
  2. اكتب التعليمات البرمجية التي تنفذ كل شرط مدرج لمشروع التعليمات البرمجية 3.

  3. قم بتشغيل التطبيق الخاص بك وتحقق من أن الإخراج الخاص بك يفي بالمتطلبات.

    إذا كان منطق التعليمات البرمجية يعمل بشكل صحيح، يجب أن يبدو الإخراج مشابها للآتي:

    I like pizza
    I like roast chicken
    I like salad
    I like all three of the menu choices
    

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