(C ++) الحلقات. حلقة مع معلمة (من أجل)


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

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

للتعامل مع هذه المهمة ، سنستخدم بنية خاصة تسمى loop.
نبسب ؛
الحلقة عبارة عن بناء خوارزمي يتم فيه تكرار تسلسل معين من الأوامر عدة مرات. < / div>
في لغة البرمجة C ++ ، هناك نوعان من الحلقات: حلقة متغيرة ( لـ ) وحلقة شرطية ( بينما و تفعل ... بينما )

لنبدأ التعرف على دورات من النوع الأول.
نبسب ؛
حلقة مع المتغير (for)

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

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

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

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

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

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

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

دعنا نعود إلى الشكل العام لبيان الحلقة ونحلل جميع الأجزاء بمزيد من التفصيل.
لـ (/ * expression1 * /؛ / * expression2 * /؛ / * expression3 * /) { على & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ & nbsp؛ / * عبارة واحدة أو مجموعة من العبارات - loop body * /؛ }

التعبير 1 & nbsp؛ المسؤول عن تعيين القيمة الأولية لمتغير الحلقة (العداد) ، وينتهي بفاصلة منقوطة

على سبيل المثال،

1) i = 0 ؛ & nbsp؛ نبسب ؛ // قم بتعيين القيمة الأولية التي تساوي صفرًا إلى متغير الحلقة i.
نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ على & nbsp؛ // باستخدام هذا الترميز ، يجب التصريح عن المتغير i قبل الحلقة.

2) int i = 0؛ // & nbsp؛ يمكن التصريح عن المتغير i مباشرة في رأس الحلقة ، لكن
نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ على & nbsp ؛ // في هذه الحالة ، بعد محو الحلقة من الذاكرة

3) ؛ & nbsp؛ نبسب ؛ // لا يوجد تهيئة وإعلان لمتغير الدورة على الإطلاق ،
نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ // & نبسب ؛ في هذه الحالة يمكن تعريفه قبل الحلقة.
التعبير 2 & nbsp؛ هو شرط استمرار الحلقة & nbsp؛ لـ الذي تم اختباره ليكون صحيحًا.

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

التعبير 3 & nbsp؛ يغير قيمة متغير العداد. بدون هذه القيمة ، سيتم اعتبار الحلقة غير محدودة.

i ++ & nbsp؛ // المتغير i & nbsp؛ سيزيد بمقدار 1 مع كل خطوة.
على & nbsp؛

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

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

كرر 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 .