تمرين - إنشاء التكرار الحلقي "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 لهذه الأنشطة على أن تصبح أكثر راحة في كتابة التعليمات البرمجية وتشغيلها في بيئة مطور يستخدمها المحترفون في جميع أنحاء العالم.
فتح 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 ثم اضغط على Enter.
يستخدم أمر .NET CLI هذا قالب برنامج .NET لإنشاء مشروع تطبيق وحدة تحكم C# جديد في موقع المجلد المحدد. يقوم الأمر بإنشاء مجلدات CsharpProjects وTestProject لنا، ويستخدم TestProject كاسم لملفنا
.csproj
.في لوحة EXPLORER، قم بتوسيع المجلد CsharpProjects .
يجب أن تشاهد مجلد TestProject وملفين، ملف برنامج C# المسمى Program.cs وملف مشروع C# يسمى TestProject.csproj.
في لوحة EXPLORER، لعرض ملف التعليمات البرمجية في لوحة المحرر، حدد 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
لتهيئة المتغير المسمىcurrent
int
. سطر التعليمات البرمجية النشط التالي هو عبارة لدينا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
للتقدم مباشرة إلى التعبير المنطقي.