(C++) حلقه ها. حلقه با پارامتر (for)


حلقه ها در برنامه نویسی
موقعیتی را تصور کنید که باید همان کلمه را روی صفحه نمایش دهیم، مثلا کلمه "HELLO" را 10 بار بگوییم. چه کنیم؟
شما می توانید 10 بار cout << "سلام";

اما اگر شما نه 10 بار، بلکه 20، 30، 40 بار؟، و اگر 200 بار نیاز داشته باشید، چه؟ در این صورت کپی کردن زمان بسیار زیادی طول خواهد کشید. و اگر لازم است کاربر انتخاب کند که چند بار اطلاعات روی صفحه نمایش داده شود؟ 

برای کنار آمدن با این کار، از ساختار خاصی به نام حلقه
استفاده می کنیم  
حلقهیک ساختار الگوریتمی است که در آن دنباله خاصی از دستورات چندین بار تکرار می شود.< /div>
در زبان برنامه نویسی C++ دو نوع حلقه وجود دارد: یک حلقه متغیر (for) و یک حلقه شرطی (while و do...while)

بیایید آشنایی خود را با چرخه ها از نوع اول شروع کنیم.
 
حلقه با متغیر (for)

اغلب اتفاق می افتد که تعداد تکرار برخی از اقدامات را می دانیم یا با استفاده از داده هایی که می دانیم می توانیم تعداد تکرارها را محاسبه کنیم. برخی از زبان های برنامه نویسی دستوری دارند که به زبان روسی به نظر می رسد repeat(تعداد دفعات) که تعداد دقیق تکرارها را در براکت ها نشان می دهد. 

جالب است که ببینیم این چرخه در سطح ماشین چگونه کار می کند:
1. یک سلول حافظه خاص در حافظه اختصاص داده می شود و تعداد تکرارها روی آن نوشته می شود؛
2. وقتی برنامه یک بار بدنه حلقه را اجرا می کند، محتویات این سلول (شمارنده) یک بار کاهش می یابد؛
3. اجرای حلقه زمانی به پایان می رسد که این سلول صفر شود.

چنین ساختاری در زبان برنامه نویسی C++ وجود ندارد، اما ساختار for وجود دارد.  

شکل کلی دستور حلقه for به صورت زیر است: برای (/*expression1*/; /*expression2*/; /*expression3*/ ) { /*یک دستور یا بلوک عبارات - بدنه حلقه*/; } این طراحی مستلزم این است که ما:
1. به صراحت یک سلول حافظه را که یک شمارنده خواهد بود اختصاص داد و مقدار اولیه آن را تنظیم کرد؛
2. یک شرط نوشته شده بود که تحت آن بدنه حلقه اجرا می شود؛
3. نحوه تغییر مقدار در این سلول را مشخص کنید.

در قسمت عملی سعی می کنیم کلمه "سلام" 10 بار نمایش داده شود. در کارهای بعدی این ساخت و ساز را با جزئیات بیشتری تحلیل خواهیم کرد.

حلقه
برای
حلقه for وسیله ای برای گام برداشتن در اقدامات مکرر است. بیایید نگاهی دقیق تر به نحوه عملکرد آن بیندازیم.

اجرای for حلقه از مراحل زیر تشکیل شده است: 
1. تنظیم مقدار اولیه متغیر حلقه (counter)؛
2. بررسی شرایط برای ادامه حلقه;
3. اجرای یک مرحله (بدنه حلقه)؛ 
4. تغییر مقدار متغیر حلقه.
علاوه بر این، مراحل 2-4 تکرار می شود تا زمانی که شرط & nbsp؛ در مرحله 2 نادرست شود. به محض اینکه شرط نادرست شد، حلقه خاتمه می‌یابد و عبارت زیر از عبارت حلقه for.
اجرا می‌شود.

اجازه دهید به شکل کلی عبارت حلقه برگردیم و همه قسمت ها را با جزئیات بیشتری تجزیه و تحلیل کنیم.
برای (/*expression1*/; /*expression2*/; /*expression3*/ ) {       /*یک دستور یا بلوک عبارات - بدنه حلقه*/; }

عبارت 1 مسئول تنظیم مقدار اولیه متغیر حلقه (counter) است که با نقطه ویرگول به پایان می رسد

مثلا،

1)i=0;    // مقدار اولیه برابر با صفر را به متغیر حلقه i اختصاص دهید.
                 // با این نماد، متغیر i باید قبل از حلقه اعلام شود.

2) int i=0; //  متغیر i را می توان مستقیماً در هدر حلقه اعلام کرد، اما
                     // در این مورد، پس از پاک شدن حلقه از حافظه

3) ;    // اصلاً مقدار اولیه و اعلان متغیر سیکل وجود ندارد،
          //  در این مورد می توان آن را قبل از حلقه تعریف کرد.


بیان 2 شرایط ادامه حلقه برای است که درست بودن آن آزمایش شده است.

i<=10  // تا زمانی که متغیر i کمتر یا مساوی 10 باشد، حلقه اجرا می شود. شرط می تواند هر چیزی باشد.
 

عبارت 3 مقدار متغیر شمارنده را تغییر می‌دهد. بدون این مقدار، حلقه بی نهایت در نظر گرفته می شود.

i++  // متغیر با هر مرحله 1 افزایش می یابد.
 

اگر یک عبارت در بدنه حلقه وجود داشته باشد

اگر فقط یک عبارت در بدنه حلقه وجود داشته باشد، پرانتزها را می توان حذف کرد.

چرخه برای -features

در هر قسمت سرصفحه ممکن است چندین عبارت وجود داشته باشد که با کاما از هم جدا شده اند.
 
مثال
برای (i = 0، x = 1.; i < 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 از صفحه کلید توسط کاربر.
برنامه به شکل زیر خواهد بود:
  #include <iostream> با استفاده از namespace std. main() { int i,N; // در فاصله؛ متغیر حلقه، N - حداکثر عددی که مربع را برای آن محاسبه می کنیم cin>> N; برای (i = 1; i <= N; i ++) // حلقه: برای همه i از 1 تا N. متغیر i به ترتیب مقادیر 1 تا N را می گیرد. { cout << "عدد مربع "<<i<<" است" <<i*i<<"\n"; // خروجی مربع یک عدد در یک فرمت خاص و انتقال به یک خط جدید } } هنگام ورود به حلقه، عبارت i = 1 اجرا می شود و سپس متغیر i با هر مرحله یک عدد افزایش می یابد (i ++ ). حلقه در حالی اجرا می شود که شرط i <= N درست است. در بدنه حلقه، تنها دستور خروجی، خود عدد و مربع آن را بر اساس فرمت مشخص شده روی صفحه چاپ می کند.
برای مربع یا سایر توانای کم، بهتر است از ضرب استفاده کنید.

برنامه را اجرا کنید و نتیجه کار آن را با مقادیر مختلف متغیر N مشاهده کنید.