تمرين - إنشاء التكرار الحلقي "do" وأثناء التكرار
- 10 دقائق
على السطح، do-while العبارات و while عبارة تكرار أخرى تسمح لك بالتكرار من خلال كتلة التعليمات البرمجية وبالتالي تغيير تدفق تنفيذ التعليمات البرمجية الخاصة بك. ومع ذلك، بمجرد أن نفحص كيفية عمل كل منها، يمكننا تحديد الفروق الدقيقة لكل عبارة تكرار ومتى نستخدمها بشكل أفضل.
ما هي عبارة do-while؟
do-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 لهذه الأنشطة على أن تصبح أكثر راحة في كتابة التعليمات البرمجية وتشغيلها في بيئة مطور يستخدمها المحترفون في جميع أنحاء العالم.
فتح Visual Studio Code.
يمكنك استخدام القائمة Windows (أو مورد مكافئ لنظام تشغيل آخر) لفتح Visual Studio Code.
في قائمة Visual Studio Code File ، حدد Open Folder.
في مربع الحوار فتح مجلد ، انتقل إلى مجلد سطح مكتب Windows.
إذا كان لديك موقع مجلد مختلف حيث تحتفظ بمشاريع التعليمات البرمجية، يمكنك استخدام موقع المجلد هذا بدلا من ذلك. لهذا التدريب، الشيء المهم هو أن يكون لديك موقع يسهل تحديد موقعه وتذكره.
في مربع الحوار فتح مجلد ، حدد تحديد مجلد.
إذا رأيت مربع حوار أمان يسألك عما إذا كنت تثق بالمؤلفين، فحدد نعم.
في قائمة Visual Studio Code Terminal ، حدد New Terminal.
لاحظ أن موجه الأوامر في لوحة Terminal يعرض مسار المجلد للمجلد الحالي. على سبيل المثال:
C:\Users\someuser\Desktop>إشعار
إذا كنت تعمل على جهاز الكمبيوتر الخاص بك بدلا من بيئة الاختبار المعزولة أو البيئة المستضافة وأكملت وحدات Microsoft Learn الأخرى في سلسلة C# هذه، فربما تكون قد أنشأت بالفعل مجلد مشروع لعينات التعليمات البرمجية. إذا كان الأمر كذلك، يمكنك تخطي الخطوة التالية، والتي تستخدم لإنشاء تطبيق وحدة تحكم في مجلد TestProject.
في موجه الأوامر Terminal، لإنشاء تطبيق وحدة تحكم جديد في مجلد محدد، أدخل المطالبة التالية:
dotnet new console -o ./CsharpProjects/TestProjectيستخدم أمر .NET CLI هذا قالب برنامج .NET لإنشاء مشروع تطبيق وحدة تحكم C# جديد في موقع المجلد المحدد. ينشئ الأمر مجلدات CsharpProjects وTestProject نيابة عنك، ويستخدم TestProject كاسم لملفك
.csproj.إذا تم عرض رسالة تخبرك بأن الملفات موجودة بالفعل، فتابع الخطوات التالية. ستقوم بإعادة استخدام ملفات المشروع الموجودة.
في طريقة عرض EXPLORER، قم بتوسيع المجلد CsharpProjects .
يجب أن تشاهد مجلد TestProject وملفين، ملف برنامج C# المسمى Program.cs وملف مشروع C# يسمى TestProject.csproj.
في قائمة Visual Studio Code File ، حدد Open Folder.
في مربع الحوار فتح مجلد ، حدد المجلد CsharpProjects ، ثم حدد تحديد مجلد.
في طريقة عرض EXPLORER، قم بتوسيع المجلد TestProject، ثم حدد Program.cs.
حذف أسطر التعليمات البرمجية الموجودة.
ستستخدم مشروع وحدة تحكم C# هذا لإنشاء نماذج التعليمات البرمجية وبنائها وتشغيلها أثناء هذه الوحدة النمطية.
أغلق لوحة Terminal.
كتابة عبارة do-while للانقطاع عند إنشاء رقم عشوائي معين
لنكتب التعليمات البرمجية التي ستستمر في إنشاء أرقام عشوائية بين 1 و10 حتى ننشئ الرقم 7. قد يستغرق الأمر تكرارا واحدا فقط للحصول على 7، أو قد يستغرق عشرات التكرارات.
تأكد من فتح Visual Studio Code وعرضه Program.cs في لوحة المحرر.
إشعار
يجب أن يكون Program.cs فارغا. إذا لم يكن كذلك، فحدد كافة أسطر التعليمات البرمجية واحذفها.
اكتب التعليمات البرمجية التالية في محرر التعليمات البرمجية Visual Studio.
Random random = new Random(); int current = 0; do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7);في قائمة Visual Studio Code File ، حدد Save.
يجب حفظ ملف Program.cs قبل إنشاء التعليمات البرمجية أو تشغيلها.
في لوحة EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal.
سيتم فتح لوحة Terminal. يجب أن تتضمن المحطة الطرفية موجه أوامر يظهر أن المحطة الطرفية مفتوحة لموقع مجلد TestProject.
في موجه الأوامر Terminal، لتشغيل التعليمات البرمجية، اكتب dotnet run ثم اضغط على Enter.
إشعار
إذا رأيت رسالة تقول "تعذر العثور على مشروع لتشغيله"، فتأكد من أن موجه الأوامر Terminal يعرض موقع مجلد TestProject المتوقع. على سبيل المثال:
C:\Users\someuser\Desktop\csharpprojects\TestProject>راجع الإخراج الخاص بك.
نظرا لأن الأرقام التي تم إنشاؤها عشوائية، ستكون نتائجك مختلفة. ومع ذلك، ستكون القيمة
7هي آخر رقم ستتم طباعته حيث سيتم تقييم التعبير المنطقي إلىfalseوقت إنشاء 7 وسيخرج تدفق التنفيذ من كتلة التعليمات البرمجية.2 5 8 2 7خذ دقيقة لمراجعة التعليمات البرمجية الخاصة بك.
التعلم الرئيسي لهذه المهمة الأولى هو أن كتلة التعليمات البرمجية
do-whileللحلقة سيتم تنفيذها مرة واحدة على الأقل. يمكن أن يكرر عددا كبيرا من المرات، ومن غير المحتمل أن نعرف مسبقا عدد التكرارات التي ستكون هناك.من المهم أيضا ملاحظة أن التعليمات البرمجية داخل كتلة التعليمات البرمجية تؤثر على ما إذا كان يجب متابعة التكرار من خلال كتلة التعليمات البرمجية أم لا. كتلة التعليمات البرمجية التي تؤثر على معايير الخروج هي سبب أساسي لتحديد
do-whileعبارات أوwhileبدلا من إحدى عبارات التكرار الأخرى. يعتمد كل منforeachوforعلى العوامل الخارجية لحظر التعليمات البرمجية لتحديد عدد تكرارات كتلة التعليمات البرمجية.
كتابة عبارة while التي تتكرر فقط بينما يكون الرقم العشوائي أكبر من بعض القيم
الآن دعونا نلقي نظرة على العبارة while .
استخدم محرر 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الكلمة الأساسية والتعبير المنطقي قبل كتلة التعليمات البرمجية. يؤدي هذا إلى تغيير معنى التعليمات البرمجية ويعمل ك "بوابة" للسماح فقط بتدفق التنفيذ للدخول إذا تم تقييم التعبير المنطقي إلى صحيح.احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.
أدخل
dotnet runمن موجه الأوامر Terminal لتشغيل التعليمات البرمجية الخاصة بك.راجع قيم الإخراج المدرجة.
نظرا لأن الأرقام عشوائية، لذلك ستنتج التعليمات البرمجية تسلسلا مختلفا.
9 7 5 Last number: 1خذ دقيقة لمراجعة التعليمات البرمجية الخاصة بك.
في التعليمات البرمجية العليا، نستخدم
randomلتهيئة المتغير المسمىintcurrent. سطر التعليمات البرمجية النشط التالي هو عبارة لديناwhile.سيتم تكرار العبارة الخاصة بنا
whileاستنادا إلى التعبير(current >= 3)المنطقي . لا نعرف القيمة التي سيتم تعيينها إلىcurrent، ولكن هناك احتمالات تؤثر على حلقة لديناwhile:- إذا
currentتمت تهيئة إلى قيمة أكبر من أو تساوي3، فسيرجعtrueالتعبير المنطقي ، وسيدخل تدفق التنفيذ كتلة التعليمات البرمجية. داخل كتلة التعليمات البرمجية، أول شيء نقوم به هو كتابة قيمةcurrentإلى وحدة التحكم. بعد ذلك، لا يزال داخل كتلة التعليمات البرمجية، نقوم بتحديث قيمةcurrentبقيمة عشوائية جديدة. عند هذه النقطة، يعود عنصر التحكم إلى أعلى العبارةwhileحيث يتم تقييم التعبير المنطقي. تستمر هذه العملية حتى يرجعfalseالتعبير المنطقي وينفصل تدفق التنفيذ من كتلة التعليمات البرمجية. - إذا
currentتمت تهيئة (في أعلى التعليمات البرمجية الخاصة بنا) إلى قيمة أقل من3، فسيرجعfalseالتعبير المنطقي ، ولن يتم تنفيذ كتلة التعليمات البرمجية.
يكتب سطر التعليمات البرمجية النهائي قيمة
currentإلى وحدة التحكم. تقوم هذه التعليمة البرمجية بتشغيل ما إذا تم تنفيذ كتلة التعليمات البرمجية للتكرار أم لا، وهي فرصتنا لكتابة القيمة النهائية لوحدةcurrentالتحكم.- إذا
استخدم عبارة المتابعة لخطوة مباشرة إلى التعبير المنطقي
في بعض الحالات، نريد اختصار الدائرة المتبقية من التعليمات البرمجية في كتلة التعليمات البرمجية والمتابعة إلى التكرار التالي. يمكننا القيام بذلك باستخدام العبارة continue .
استخدم محرر 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}"); */خذ دقيقة لمراجعة التعليمات البرمجية الخاصة بك.
لاحظ أننا عدنا إلى
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لن تتم كتابتها أبدا إلى نافذة الإخراج.دعونا نجرب ذلك.
احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.
أدخل
dotnet runمن موجه الأوامر Terminal لتشغيل التعليمات البرمجية الخاصة بك.راجع قيم الإخراج المدرجة.
5 1 6 7من المحتمل أن ترى نتائج مختلفة عما هو معروض أدناه. ومع ذلك، لن ترى أي قيم
8أو أكبر في نافذة الإخراج قبل أن ينتهي تنفيذ التعليمات البرمجية بالقيمة7.ضع في اعتبارك الفرق بين
continueعبارات وbreak.كما رأيت في هذه الخطوة الأخيرة، تنقل العبارة
continueالتنفيذ إلى نهاية التكرار الحالي. يختلف هذا السلوك عن السلوك الذي رأيناه مع العبارةbreak. تقومbreakالعبارة بإنهاء التكرار (أوswitch) ونقل عنصر التحكم إلى العبارة التي تتبع العبارة التي تم إنهاؤها. إذا لم يكن هناك عبارة بعد العبارة التي تم إنهاؤها، نقل عنصر التحكم إلى نهاية الملف أو الأسلوب.
خلاصة
هناك بعض الأفكار المهمة التي يجب أن تأخذها بعيدا عن هذه الوحدة:
-
do-whileتتكرر العبارة من خلال كتلة تعليمات برمجية مرة واحدة على الأقل، وقد تستمر في التكرار استنادا إلى تعبير منطقي. يعتمد تقييم التعبير المنطقي عادة على بعض القيمة التي تم إنشاؤها أو استردادها داخل كتلة التعليمات البرمجية. -
whileتقوم العبارة بتقييم تعبير منطقي أولا، وتستمر في التكرار من خلال كتلة التعليمات البرمجية طالما يتم تقييم التعبير المنطقي إلىtrue. -
continueالكلمة الأساسية لخطوة مباشرة إلى التعبير المنطقي.