چرخه ها حلقه با پارامتر (for)


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

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

برای کنار آمدن با این کار، می توانیم از ساختار خاصی به نام LOOP
استفاده کنیم
حلقه یک ساختار الگوریتمی است که در آن توالی خاصی از دستورات چندین بار تکرار می شود.


در زبان برنامه نویسی پاسکال دو نوع حلقه وجود دارد: یک حلقه با متغیر (for) و یک حلقه با یک شرط (while)

بیایید آشنایی خود را با چرخه ها از نوع اول شروع کنیم.

حلقه با یک متغیر یا با تعداد مشخصی از مراحل (برای)

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

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

در زبان برنامه نویسی پاسکال، چنین ساختاری وجود ندارد، اما برای ساخت وجود دارد.  

شکل کلی دستور حلقه for به صورت زیر است: <پیش> برای *start value* تا *end value* انجام دهید شروع /*یک دستور یا بلوک عبارات - بدنه حلقه*/; پایان؛ این ساخت مستلزم آن است که ما
1. به صراحت یک سلول حافظه را که یک شمارنده خواهد بود اختصاص داد و مقدار اولیه آن را تنظیم کرد
2. نحوه تغییر مقدار در این سلول را مشخص کنید.
3. یک شرط نوشته شد که تحت آن بدنه حلقه اجرا خواهد شد

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

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

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

اجازه دهید به شکل کلی عبارت حلقه برگردیم و همه قسمت ها را با جزئیات بیشتری تجزیه و تحلیل کنیم <پیش> برای *مقدار اولیه را روی متغیر* به/پایین *مقدار پایان* تنظیم کنید، شروع کنید /*یک دستور یا بلوک عبارات - بدنه حلقه*/; پایان؛

تنظیم یک متغیر به مقدار اولیه

مسئول تنظیم مقدار اولیه متغیر چرخه (شمارنده) است، با براکت یا چیز دیگری برجسته نمی شود
مثلا : <پیش> من := 0; //به متغیر چرخه i مقدار اولیه برابر با صفر اختصاص داده می شود. با چنین رکوردی، //متغیر i باید قبل از حلقه اعلام شود به/پایین <پیش> این مرحله ای است که در آن متغیر مورد استفاده در حلقه تغییر می کند. اگر در آن بنویسیم، در هر تکرار، مقدار متغیر 1 افزایش می یابد، اگر به پایین - 1 کاهش می یابد. <پیش> مقدار نهایی آخرین مقداری است که بدنه حلقه همچنان در آن اجرا می شود. به عنوان مثال، اگر آخرین مقدار را روی 100 قرار دهیم، در 100 حلقه ما همچنان اجرا می شود و در 101 اجرا نمی شود. بیایید نوشتن عنوان حلقه for را تمرین کنیم

سر یک حلقه for در پاسکال از چند قسمت تشکیل شده است:
1) کلمه برای
2) چه متغیر و چه مقداری را اختصاص می دهیم. در این برنامه، این b := 1 است، یعنی. مقدار 1 را به b اختصاص می دهیم.
3) کلمه to یا downto، که نشان دهنده مرحله اجرای حلقه است. اگر به را بنویسیم، متغیر در هر تکرار 1 افزایش می یابد، اگر پایین باشد، سپس 1 کاهش می یابد.
4) مقدار نهایی متغیر
5) کلمه انجام
6) کلمه  Begin  (اگر فقط یک خط در بدنه حلقه وجود داشته باشد می توان آن را حذف کرد، در غیر این صورت باید نوشته شود. اگر شروع نکنید، فقط خط اول خواهد بود. از کل بدنه حلقه اجرا شود). فراموش نکنیم بعد از بدنه حلقه، اگر کلمه شروع را نوشتیم، کلمه پایان; را بنویسیم!

تمام برنامه های دارای حلقه for که تا به حال نوشته ایم را نمی توان جهانی نامید. زیرا تعداد تکرارهای بدنه حلقه را خودمان تنظیم می کنیم. 
اما اگر تعداد تکرارها به مقدار دیگری بستگی داشته باشد چه؟ برای مثال، خود کاربر می خواهد تعداد تکرارهای چرخه را تنظیم کند.
در این مورد چه باید کرد؟
همه چیز بسیار ساده است. به جای مقادیر شروع و پایان عددی، می‌توانیم از هر متغیری استفاده کنیم که کاربر بتواند آن را محاسبه یا تنظیم کند.

به عنوان مثال، باید مربع های اعداد از 1 تا n را نمایش دهیم، جایی که مقدار متغیر n توسط کاربر از صفحه کلید وارد می شود.
برنامه به شکل زیر خواهد بود:
  <پیش> var i, n :integer; // در فاصله؛ متغیر حلقه، n - حداکثر عددی که مربع را برای آن محاسبه می کنیم شروع خواندن (n); // n را از صفحه کلید وارد کنید برای i := 1 تا n انجام // حلقه: برای همه i از 1 تا n - متغیر i به ترتیب مقادیر 1 تا n را می گیرد writeln('Kvadrat chisla ', i, ' Raven ', i * i); // خروجی مربع یک عدد در یک فرمت خاص و انتقال به یک خط جدید پایان. هنگام ورود به حلقه، عبارت i := 1 اجرا می شود و سپس متغیر i با هر مرحله یک (to) افزایش می یابد. حلقه در حالی اجرا می شود که شرط i <= n درست است. در بدنه حلقه، تنها دستور خروجی، خود عدد و مربع آن را بر اساس فرمت مشخص شده روی صفحه چاپ می کند.
برای مربع یا سایر توانای کم، بهتر است از ضرب استفاده کنید.

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