تمرين - إنشاء التكرار الحلقي "do" وأثناء التكرار

مكتمل

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

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

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

do
{
    // This code executes at least one time
} while (true);

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

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

حسنا، الآن دعونا نعد بيئة الترميز الخاصة بنا ونبدأ فحصنا لعينات التعليمات البرمجية التي تنفذ عبارة do-while .

إعداد بيئة الترميز الخاصة بك

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

  1. فتح Visual Studio Code.

    يمكنك استخدام القائمة Windows (أو مورد مكافئ لنظام تشغيل آخر) لفتح Visual Studio Code.

  2. في قائمة Visual Studio Code File ، حدد Open Folder.

  3. في مربع الحوار فتح مجلد ، انتقل إلى مجلد سطح مكتب Windows.

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

  4. في مربع الحوار فتح مجلد ، حدد تحديد مجلد.

    إذا رأيت مربع حوار أمان يسألك عما إذا كنت تثق بالمؤلفين، فحدد نعم.

  5. في قائمة Visual Studio Code Terminal ، حدد New Terminal.

    لاحظ أن موجه الأوامر في لوحة Terminal يعرض مسار المجلد للمجلد الحالي. على سبيل المثال:

    C:\Users\someuser\Desktop>
    

    إشعار

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

  6. في موجه الأوامر Terminal، لإنشاء تطبيق وحدة تحكم جديد في مجلد محدد، اكتب dotnet new console -o ./CsharpProjects/TestProject ثم اضغط على Enter.

    يستخدم أمر .NET CLI هذا قالب برنامج .NET لإنشاء مشروع تطبيق وحدة تحكم C# جديد في موقع المجلد المحدد. يقوم الأمر بإنشاء مجلدات CsharpProjects وTestProject لنا، ويستخدم TestProject كاسم لملفنا .csproj .

  7. في لوحة EXPLORER، قم بتوسيع المجلد CsharpProjects .

    يجب أن تشاهد مجلد TestProject وملفين، ملف برنامج C# المسمى Program.cs وملف مشروع C# يسمى TestProject.csproj.

  8. في لوحة EXPLORER، لعرض ملف التعليمات البرمجية في لوحة المحرر، حدد Program.cs.

  9. حذف أسطر التعليمات البرمجية الموجودة.

    ستستخدم مشروع وحدة تحكم C# هذا لإنشاء نماذج التعليمات البرمجية وبنائها وتشغيلها أثناء هذه الوحدة النمطية.

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

كتابة عبارة do-while للانقطاع عند إنشاء رقم عشوائي معين

دعونا نكتب التعليمات البرمجية التي ستستمر في الإبقاء على إنشاء أرقام عشوائية بين 1 و10 حتى ننشئ عدد 7. قد يستغرق الأمر تكرارا واحدا فقط للحصول على 7، أو قد يستغرق عشرات التكرارات.

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

    إشعار

    يجب أن يكون Program.cs فارغا. إذا لم يكن كذلك، فحدد كافة أسطر التعليمات البرمجية واحذفها.

  2. اكتب التعليمات البرمجية التالية في محرر التعليمات البرمجية Visual Studio.

    Random random = new Random();
    int current = 0;
    
    do
    {
        current = random.Next(1, 11);
        Console.WriteLine(current);
    } while (current != 7);
    
  3. في قائمة Visual Studio Code File ، حدد Save.

    يجب حفظ ملف Program.cs قبل إنشاء التعليمات البرمجية أو تشغيلها.

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

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

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

    إشعار

    إذا رأيت رسالة تقول "تعذر العثور على مشروع لتشغيله"، فتأكد من أن موجه الأوامر Terminal يعرض موقع مجلد TestProject المتوقع. على سبيل المثال: C:\Users\someuser\Desktop\csharpprojects\TestProject>

  6. راجع الإخراج الخاص بك.

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

    2
    5
    8
    2
    7
    
  7. خذ دقيقة لمراجعة التعليمات البرمجية الخاصة بك.

    التعلم الرئيسي لهذه المهمة الأولى هو أن كتلة التعليمات البرمجية do-while للحلقة سيتم تنفيذها مرة واحدة على الأقل. يمكن أن يكرر عددا كبيرا من المرات، ومن غير المحتمل أن نعرف مسبقا عدد التكرارات التي ستكون هناك.

    من المهم أيضًا ملاحظة أن التعليمات البرمجية داخل كتلة التعليمات البرمجية تؤثر على ما إذا كان يجب الاستمرار في التكرار من خلال كتلة التعليمات البرمجية أم لا. كتلة التعليمات البرمجية التي تؤثر على معايير الخروج هي سبب أساسي لتحديد do-while عبارات أو while بدلا من إحدى عبارات التكرار الأخرى. يعتمد كل من foreach و for على العوامل الخارجية لحظر التعليمات البرمجية لتحديد عدد تكرارات كتلة التعليمات البرمجية.

كتابة عبارة while التي تتكرر فقط بينما يكون الرقم العشوائي أكبر من بعض القيم

الآن دعونا نلقي نظرة على العبارة while .

  1. استخدم محرر Visual Studio Code لتحديث التعليمات البرمجية الخاصة بك كما يلي:

    Random random = new Random();
    int current = random.Next(1, 11);
    
    /*
    do
    {
        current = random.Next(1, 11);
        Console.WriteLine(current);
    } while (current != 7);
    */
    
    while (current >= 3)
    {
        Console.WriteLine(current);
        current = random.Next(1, 11);
    }
    Console.WriteLine($"Last number: {current}");
    

    إشعار

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

  2. احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.

    أدخل dotnet run من موجه الأوامر Terminal لتشغيل التعليمات البرمجية الخاصة بك.

  3. راجع قيم الإخراج المدرجة.

    نظرا لأن الأرقام عشوائية، لذلك ستنتج التعليمات البرمجية تسلسلا مختلفا.

    9
    7
    5
    Last number: 1
    
  4. خذ دقيقة لمراجعة التعليمات البرمجية الخاصة بك.

    في التعليمات البرمجية العليا، نستخدم random لتهيئة المتغير المسمى currentint . سطر التعليمات البرمجية النشط التالي هو عبارة لدينا while .

    سيتم تكرار العبارة الخاصة بنا while استنادا إلى التعبير (current >= 3)المنطقي . لا نعرف القيمة التي سيتم تعيينها إلى current، ولكن هناك احتمالات تؤثر على حلقة لدينا while :

    • إذا current تمت تهيئة إلى قيمة أكبر من أو تساوي 3، فسيرجع trueالتعبير المنطقي ، وسيدخل تدفق التنفيذ كتلة التعليمات البرمجية. داخل كتلة التعليمات البرمجية، أول شيء نقوم به هو كتابة قيمة current إلى وحدة التحكم. بعد ذلك، لا يزال داخل كتلة التعليمات البرمجية، نقوم بتحديث قيمة current بقيمة عشوائية جديدة. عند هذه النقطة، يعود عنصر التحكم إلى أعلى العبارة while حيث يتم تقييم التعبير المنطقي. تستمر هذه العملية حتى يرجع false التعبير المنطقي وينفصل تدفق التنفيذ من كتلة التعليمات البرمجية.
    • إذا current تمت تهيئة (في أعلى التعليمات البرمجية الخاصة بنا) إلى قيمة أقل من 3، فسيرجع falseالتعبير المنطقي ، ولن يتم تنفيذ كتلة التعليمات البرمجية.

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

استخدم عبارة المتابعة لخطوة مباشرة إلى التعبير المنطقي

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

  1. استخدم محرر Visual Studio Code لتحديث التعليمات البرمجية الخاصة بك كما يلي:

    Random random = new Random();
    int current = random.Next(1, 11);
    
    do
    {
        current = random.Next(1, 11);
    
        if (current >= 8) continue;
    
        Console.WriteLine(current);
    } while (current != 7);
    
    /*
    while (current >= 3)
    {
        Console.WriteLine(current);
        current = random.Next(1, 11);
    }
    Console.WriteLine($"Last number: {current}");
    */
    
  2. خذ دقيقة لمراجعة التعليمات البرمجية الخاصة بك.

    لاحظ أننا عدنا إلى do-while. do-while يضمن تكرار التكرار الحلقي مرة واحدة على الأقل.

    أول شيء نقوم به داخل كتلة التعليمات البرمجية هو تعيين قيمة عشوائية جديدة إلى current. بعد ذلك، نتحقق لمعرفة ما إذا كان current أكبر من أو يساوي 8. إذا أرجع trueهذا التعبير ، continue فإن الكلمة الرئيسية ستنقل عنصر التحكم إلى نهاية كتلة التعليمات البرمجية while وسيتم تقييم (current != 7). لذلك، سيستمر التكرار الحلقي في التكرار طالما أن قيمة current لا تساوي 7.

    مفتاح هذه الخطوة من التمرين هو سطر التعليمات البرمجية الذي يحتوي على continue الكلمة الرئيسية:

    if (current >= 8) continue;
    

    نظرا لأن التعليمات البرمجية الخاصة بنا التي تكتب قيمة current إلى وحدة التحكم موجودة بعد if (current >= 8) continue;، فإن التعليمات البرمجية الخاصة بنا تضمن أن قيمة current أكبر من أو تساوي 8 لن تتم كتابتها أبدا إلى نافذة الإخراج.

    دعونا نجرب ذلك.

  3. احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.

    أدخل dotnet run من موجه الأوامر Terminal لتشغيل التعليمات البرمجية الخاصة بك.

  4. راجع قيم الإخراج المدرجة.

    5
    1
    6
    7
    

    من المحتمل أن ترى نتائج مختلفة عما هو معروض أدناه. ومع ذلك، لن تشاهد أي قيم 8 أو أكبر في نافذة الإخراج قبل أن ينتهي تنفيذ التعليمات البرمجية بالقيمة 7.

  5. ضع في اعتبارك الفرق بين continue عبارات و break .

    كما رأيت في هذه الخطوة الأخيرة، تنقل العبارة continue التنفيذ إلى نهاية التكرار الحالي. يختلف هذا السلوك عن السلوك الذي رأيناه مع العبارة break . تقوم break العبارة بإنهاء التكرار (أو switch) ونقل عنصر التحكم إلى العبارة التي تتبع العبارة التي تم إنهاؤها. إذا لم يكن هناك عبارة بعد العبارة التي تم إنهاؤها، فسيتم نقل عنصر التحكم إلى نهاية الملف أو الأسلوب.

خلاصة

هناك بعض الأفكار الهامة التي يجب أن تأخذها عن هذه الوحدة:

  • do-while تتكرر العبارة من خلال كتلة تعليمات برمجية مرة واحدة على الأقل، وقد تستمر في التكرار استنادا إلى تعبير منطقي. يعتمد تقييم التعبير المنطقي عادةً على قيمة ما تم إنشاؤها أو استردادها داخل كتلة التعليمات البرمجية.
  • تقوم العبارة while بتقييم تعبير منطقي أولاً، وتستمر في التكرار من خلال كتلة التعليمات البرمجية طالما أن التعبير المنطقي يقيم إلى true.
  • الكلمة الأساسية continue للتقدم مباشرة إلى التعبير المنطقي.

اكتمل اختبار المعلومات

1.

أي مما يلي يصف بشكل صحيح سلوك عبارة أو do-whilewhile تكرارية؟

2.

يحتاج المطور إلى تسجيل إدخال المستخدم داخل حلقة. يدخل المستخدم تركيبة ctrl + Esc لوحة المفاتيح للخروج من التكرار عند الانتهاء من إدخال المعلومات. ما هي أفضل عبارة تكرار لهذا الغرض؟