دورات. حلقة مع معلمة (من أجل)


لنتخيل موقفًا نحتاج فيه إلى عرض نفس الكلمة على الشاشة ، دعنا نقول الكلمة & quot؛ مرحبًا & quot؛ ؛ 10 مرات. ماذا يجب ان نفعل؟
يمكنك أخذ وكتابة الأمر 10 مرات Console.WriteLine (& quot؛ HELLO & quot؛)؛

ولكن ماذا لو لم تكن بحاجة إلى 10 مرات ، بل 20 ، 30 ، 40 مرة؟ وإذا 200 مرة؟ في هذه الحالة ، سيستغرق النسخ وقتًا طويلاً. وإذا كان من الضروري أن يختار المستخدم عدد مرات عرض المعلومات على الشاشة؟ & nbsp؛

للتعامل مع هذه المهمة ، يمكننا استخدام بنية خاصة تسمى حلقة .

الحلقة عبارة عن بناء خوارزمي يتم فيه تكرار تسلسل معين من الأوامر عدة مرات.

في لغة البرمجة C # ، هناك نوعان من الحلقات: حلقة متغيرة ( for ) وحلقة شرطية ( while و do ... while )

لنبدأ التعرف على دورات من النوع الأول.

حلقة بها متغير أو بعدد معروف من الخطوات (for).

غالبًا ما يحدث أننا نعرف عدد مرات التكرار لبعض الإجراءات ، أو يمكننا أن نحسب "> حساب
عدد مرات التكرار باستخدام البيانات التي نعرفها. تحتوي بعض لغات البرمجة على أمر يبدو في اللغة الروسية مثل تكرار (عدد المرات) - أي يمكننا تحديد عدد التكرارات بالضبط. & nbsp؛

من المثير للاهتمام أن نرى كيف تعمل هذه الدورة على مستوى الماكينة:
1. يتم تخصيص خلية ذاكرة معينة في الذاكرة ويتم كتابة عدد التكرارات عليها.
2. عندما ينفذ البرنامج جسم الحلقة مرة واحدة ، فإن محتويات هذه الخلية (العداد) تتناقص بواحد.
3. تنتهي الحلقة عندما تكون هذه الخلية صفراً.

في لغة البرمجة C # ، لا يوجد مثل هذا البناء ، بل بناء for . نبسب ؛

الشكل العام لعامل تشغيل الحلقة for هو كما يلي:
<قبل> لـ (/ * expression1 * /؛ / * expression2 * /؛ / * expression3 * /) { / * عبارة واحدة أو مجموعة من العبارات - loop body * /؛ } تتطلب منا هذه البنية:
1. خصص صراحة خلية ذاكرة ستكون عدادًا ، وحدد قيمتها الأولية.
2. لقد كتبنا شرطًا يتم بموجبه تنفيذ جسم الحلقة.
3. حدد كيف ستتغير القيمة في هذه الخلية.

في الجزء العملي ، سنحاول عرض كلمة & quot؛ Hello & quot؛ 10 مرات ، وفي مهام أخرى سنحلل هذا البناء بمزيد من التفصيل.

للحلقة
الحلقة لـ هي وسيلة للتنقل عبر الإجراءات المتكررة. دعونا نلقي نظرة فاحصة على كيفية عملها.

عادةً ما تتخذ أجزاء من حلقة & nbsp؛ الخطوات التالية: & nbsp؛
1. تحديد القيمة الأولية. & nbsp؛
2. إجراء اختبار شرط لمتابعة الحلقة. & nbsp؛
3. تنفيذ إجراءات الحلقة. & nbsp؛
4. قم بتحديث القيمة (القيم) المستخدمة في الاختبار. & nbsp؛
ثم يتم تكرار الخطوات من 2 إلى 4 حتى يتم استيفاء الشرط. بمجرد أن يصبح الشرط خاطئًا ، تنتهي الحلقة ويتم تنفيذ العبارة التي تلي تعليمة الحلقة for.
نبسب ؛
الشكل العام للحلقة & nbsp؛ لـ (/ * التعبير 1 * / ؛ / * التعبير 2 * / ؛ / * التعبير 3 * /) { على & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ / * عبارة واحدة أو مجموعة من العبارات - loop body * /؛ }

التعبير 1 هو المسؤول عن ضبط القيمة الأولية لمتغير الحلقة (العداد) ، وينتهي بفاصلة منقوطة.
على سبيل المثال :
  • i = 0؛ // متغير حلقة i & nbsp؛ عيّن قيمة أولية تساوي الصفر - يجب التصريح عن & nbsp؛ i & nbsp؛ من قبل الحلقة
  • int i = 0؛ // يمكن التصريح عن المتغير i على الفور في رأس الحلقة ، ولكن في هذه الحالة ، سيتم محوه من الذاكرة بعد يدير حلقة
  • ؛ & nbsp؛ // لا يوجد تهيئة وإعلان لمتغير الدورة على الإطلاق ، & nbsp ؛ في هذه الحالة ، يمكن التصريح عنه قبل الدورة
التعبير 2 - على & nbsp ؛ هذا هو الشرط لاستمرار حلقة for ، يتم اختبارها للتأكد من صحتها. على سبيل المثال،

i & lt؛ = 10 & nbsp؛ // ستعمل الحلقة طالما أن المتغير i أقل من أو يساوي 10.
يمكن أن تكون الحالة أي شيء. التعبير 3 & nbsp ؛ يغير قيمة متغير العداد. بدون هذه القيمة ، سيتم اعتبار الحلقة غير محدودة. على سبيل المثال،

i ++؛ & nbsp؛ // في كل مرة يكتمل فيها نص الحلقة ، تتم زيادة i بمقدار 1.

نبسب ؛

يمكن أن يكون هناك عوامل تشغيل متعددة في كل جزء عنوان مفصولة بفواصل.
أمثلة على العناوين:

لـ (int i = 0؛ i & lt؛ 10؛ i + +) {...} - العنوان القياسي

لـ (int i = 0، x = 1؛ i & lt؛ 10 ؛ أنا + = 2 ، س * = 2 نبسب ؛) {...} نبسب ؛ نبسب ؛
على & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ // في هذه الحالة ، نستخدم متغيرين سيتغيران بعد تنفيذ جسم الحلقة - وهما المتغيران i و x
على & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ // متغير i التغييرات بزيادات 2 - i + = 2 - اختصار لـ & nbsp؛ i = i + 2
على & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ // المتغير x يزيد بمقدار 0.1 مرة مع كل خطوة x = x * 2 & nbsp؛ - الاختصار х * = 2 < / span>

كرر N مرات لا يمكن تسمية جميع البرامج ذات الحلقة for التي كتبناها حتى الآن بأنها عالمية. لأننا حددنا لأنفسنا عدد التكرارات لجسم الحلقة. ولكن ماذا لو كان عدد التكرارات يعتمد على قيمة أخرى؟ على سبيل المثال ، يريد المستخدم نفسه تحديد عدد مرات تكرار الدورة.
ماذا تفعل في هذه الحالة؟ كل شيء بسيط للغاية. بدلاً من قيم البداية والنهاية الرقمية ، يمكننا استخدام أي متغيرات يمكن حسابها أو تعيينها بواسطة المستخدم.

على سبيل المثال ، نحتاج إلى عرض مربعات الأرقام من 1 إلى N ، حيث يتم إدخال قيمة المتغير N من لوحة المفاتيح بواسطة المستخدم.
سيبدو البرنامج كالتالي:
نبسب ؛ # تضمين & lt؛ iostream & gt؛ استخدام اسم للمحطة؛ رئيسي() { int أنا ، N ؛ // أنا & - متغير الحلقة ، N - العدد الأقصى الذي نحسب له المربع سينما & GT ؛ & GT. ن؛ لـ (i = 1 ؛ i & lt ؛ = N ؛ i ++) // حلقة: بالنسبة للجميع أنا من 1 إلى N. المتغير أنا سأأخذ قيمًا بالتسلسل من 1 إلى N { كوت & lt؛ & lt؛ & quot؛ رقم مربع & quot؛ & lt؛ & lt؛ i & lt؛ & lt؛ & quot؛ هو & quot؛ & lt؛ & lt؛ i * i & lt؛ & lt؛ & quot؛ \ n & quot ؛؛ // إخراج مربع الرقم بتنسيق معين والانتقال إلى سطر جديد } } عند إدخال الحلقة ، يتم تنفيذ العبارة i = 1 ، ثم تتم زيادة المتغير i بواحد مع كل خطوة ( i ++ ). يتم تنفيذ الحلقة بينما الشرط i & lt؛ = N صحيح. في جسم الحلقة ، تقوم عبارة الإخراج الوحيدة بطباعة الرقم نفسه ومربعه على الشاشة وفقًا للتنسيق المحدد.
للتربيع أو الأسس المنخفضة الأخرى ، من الأفضل استخدام الضرب.

شغّل البرنامج وشاهد نتيجة عمله بقيم مختلفة للمتغير N .