دستورات حلقه و تکرار در ++C

تكرار اجرای پی در پی یك دستور یا بلوكی از دستورالعملها داخل یك برنامه هست. با استفاده از تکرار میتونیم کنترل برنامه رو مجبور کنیم تا به خطوط قبلی برگرده و اون ها رو دوباره اجرا کنه.
++C دارای سه دستور تكرار هست: دستور while، دستور do_while و دستور for. دستورهای تکرار به علت طبیعت چرخهمانندشون، حلقه هم نامیده میشن.
دستور while در ++C
نحو یا syntax دستور while :
While (condition) statement;
به جای condition، یك شرط قرار میگیره و به جای statement دستوری که باید تکرار شه قرار میگیره. اگه مقدار شرط، صفر (یعنی نادرست) باشه، statement نادیده گرفته میشه و برنامه به اولین دستور بعد از while پرش میكنه. اگه مقدار شرط ناصفر (یعنی درست) باشه، statement اجرا میشه و دوباره مقدار شرط بررسی میشه. این تکرار آن قدر ادامه پیدا میکنه تا این که مقدار شرط صفر شه.
خاتمه دادن به یک حلقه در ++C
خب داخل مقاله قبل دیدیم كه چطور دستور break برای كنترل دستورالعمل switch استفاده میشه . از دستور break برای پایان دادن به حلقهها هم میتونیم استفاده کنیم. یكی از مزیتهای دستور break این هست كه فوراً حلقه رو خاتمه میده بدون این که مابقی دستورهای درون حلقه اجرا بشن.
اعداد فیبوناچی
اعداد فیبوناچی …, F0, F1, F2, F3 به شکل بازگشتی با استفاده از معادلههای زیر تعریف میشن:
F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2
مثلا برای n=2 میگیم:
F2 = F2-1 + F2-2 = F1 + F0 = 0 + 1 = 1
یا برای n=3 میگیم:
F3 = F3-1 + F3-2 = F2 + F1 = 1 + 1 = 2
و برای n=4 هم میگیم:
F4 = F4-1 + F4-2 = F3 + F2 = 2 + 1 = 3
تابع (0) exit
تابع (0) exit روش دیگه ای برای خاتمه دادن به یك حلقه هست. هرچند که این تابع بلافاصله به برنامه پایان میده. برنامهنویس ها ترجیح میدن از break برای خاتمه دادن به حلقههای نامتناهی استفاده کنن چون قابلیت انعطاف بیشتری داره.
متوقف کردن یك حلقۀ نامتناهی در ++C
ما با فشاردادن کلیدهای Ctrl+C کاری میکنیم که به اجبار سیستم عامل یک برنامه رو به پایان برسونه و ببنده. كلید Ctrl را پایین نگه دارید و كلید C رو داخل صفحهكلید خودتون فشار بدید تا برنامۀ فعلی تموم و بسته شه.
دستور do while
ساختار do..while نحوه دیگه ای برای ساختن دستورات حلقه و تکرار داخل ++C هست و شکلش به این صورت هست:
do statement while (condition);
به جای condition یك شرط قرار میگیره و به جای statement دستور یا بلوکی قرار میگیره که قرار هست تکرار بشه. این دستور statement رو اجرا میكنه و سپس شرط condition رو بررسی میكنه. اگر شرط درست بود حلقه دوباره تکرار میشه ولی اگه اینطور نبود حلقه تموم میشه.
دستور do..while مثل دستور while هست ولی با این تفاوت كه شرط کنترل حلقه به جای این که اول حلقه بررسی بشه، اخر حلقه بررسی میشه.
یعنی هر متغیر كنترلی به جای این كه قبل از شروع حلقه تنظیم بشه، میتونه داخل اون تنظیم بشه. حلقۀ do..while همیشه بدون توجه به مقدار شرط كنترل، حداقل یك بار اجرا میشه ولی حلقۀ while میتونه اصلا اجرا نشه.
اعداد فاكتوریل
اعداد فاكتوریل 0! و 1! و 2! و 3! و … که با استفاده از رابطههای بازگشتی زیر تعریف میشن:
0! = 1, n! = n (n-1)!
مثلا به ازای n = 1 داخل این معادله میگیم:
1! = 1((1-1)!) = 1(0!) = 1(1) = 1
همچنین برای n = 2میگیم:
2! = 2((2-1)!) = 2(1!) = 2(1) = 2
و به ازای n = 3هم میگیم:
3! = 3((3-1)!) = 3(2!) = 3(2) = 6
دستور for
نحو یا syntax دستورالعمل for داخل دستورات حلقه و تکرار داخل ++C به این صورته:
for (initialization; condition; update) statement;
سه قسمت داخل پرانتز، حلقه رو کنترل میکنه.
- کلمه initialization برای اعلان یا مقداردهی اولیه به متغیر کنترل حلقه استفاده میشه.این کلمه اولین عبارتی هست که بررسی میشه قبل از این که نوبت تکرارها بشه.
- کلمه condition برای تعیین این که آیا حلقه باید تکرار بشه یا نه به کار میروه. یعنی این کلمه، شرط کنترل حلقه هست و اگر این شرط درست باشه دستور statement اجرا میشه.
- کلمه update برای پیشبردن متغیر کنترل حلقه به کار میروه. این کلمه پس از اجرای statementبررسی میشه.
پس زنجیرۀ رویدادهایی که تکرار رو ایجاد میکنن عبارتند از:
- ارزیابی عبارت initialization
- بررسی شرط condition که اگه نادرست باشه حلقه بسته شه.
- اجرای statement
- ارزیابی عبارت update
- تکرار گامهای 2 تا 4
کلمه های initialization و condition و update کلمه های اختیاری هستن. یعنی میتوانیم اون ها رو داخل حلقه نیاریم شون.
داخل ++C استاندارد وقتی یك متغیر كنترل داخل یك حلقۀ for اعلان میشه حوزۀ اون متغیر به همان حلقۀ for محدود میشه. یعنی اون متغیر نمیتونه بیرون از اون حلقه استفاده شه. میتونیم از اسم های مشابهی در خارج از حلقۀ for برای یك متغیر دیگه استفاده کنیم.
دستور break
دستور break یک دستور آشنا هست. همان طور که میدونید از اون برای خاتمه دادن به دستور switch و حلقههای while و do..while استفاده میکنیم. از این دستور برای خاتمه دادن به حلقۀ for هم استفاده میکنیم. دستور break داخل هر جایی از حلقه میتونه باشه و در همان جا حلقه رو ببنده.
وقتی دستور break درون حلقههای تودرتو استفاده بشه، فقط روی حلقهای که مستقیماً داخل اون قرار گرفته تاثیر میزاره. حلقههای بیرونی بدون هیچ تغییری ادامه پیدا میکنن.
دستور continue
دستور break بقیۀ دستورهای درون بلوك حلقه را نادیده میگیره و به اولین دستور بیرون حلقه پرش میكنه. دستور continue هم شبیه همین هست اما به جای این که حلقه رو ببنده، اجرا رو به تكرار بعدی حلقه منتقل میكنه. این دستور، ادامۀ چرخۀ فعلی رو لغو میکنه و اجرای دور بعدی حلقه را آغاز میکنه.
دستور goto
دستور goto نوع دیگه از دستورات حلقه و تکرار در C++ هست. مقصد این پرش توسط یك برچسب انتخاب میشه. برچسب شناسهای هست كه جلوی اون علامت كولن ( ; ) میاد و جلوی یك دستور دیگر قرار میگیره. یک مزیت دستور goto این هست که با استفاده از اون میتونیم از همۀ حلقههای تودرتو خارج بشیم و به مکان دلخواهی در برنامه پرش کنیم.
تولید اعداد تصادفی
یكی از كاربردهای بسیار مهم کامپیوترها، شبیهسازی سیستمهای دنیای واقعیه که تحقیقات و توسعههای بسیار پیشرفته به این راهکار خیلی وابسته هست. به وسیلۀ شبیهسازی میتونیم رفتار سیستمهای مختلف رو مطالعه کنیم بدون این که لازم باشه واقعا اونها رو پیادهسازی کنیم. در شبیهسازی نیاز هست که اعداد تصادفی توسط کامپیوترها تولید بشه تا ندونسته های دنیای واقعی مدلسازی بشه.
کامپیوترها ثابتکار هستن یعنی با دادن دادههای مشابه به کامپیوترهای مشابه، همیشه خروجی یکسان تولید میشه. با وجود این میتونیم اعدادی تولید کنیم که به ظاهر تصادفی هستن؛ اعدادی که به طور یکنواخت در یک محدودۀ خاص درست شدن و برای هیچکدام الگوی مشخصی وجود نداره. این اعداد رو بهش اعداد شبهتصادفی میگیم.
هر عدد شبهتصادفی از روی عدد قبلی خودش ساخته میشه. اولین عدد شبهتصادفی از روی یك مقدار داخلی که هسته بهش میگن درست میشه.
هر دفعه که برنامه اجرا بشه، هسته با یک مقدار پیشفرض بارگذاری میشه. برای حذف این اثر نامطلوب که از تصادفی بودن اعداد کم میکنه، میتونیم با استفاده از تابع () srand خودمان مقدار هسته رو انتخاب کنیم.
دیدگاهتان را بنویسید