۱. دستور شرطی «اگر-آنگاه»؛ مغز متفکر برنامه
در زندگی روزمره مدام از شرطها استفاده میکنیم: «اگر باران ببارد، چتر برمیدارم»، «اگر نمرهٔ قبولی بگیرم، به مسافرت میروم». در برنامهنویسی نیز دستور اگر-آنگاه (که به آن دستور شرطی یا انشعاب نیز میگویند1) همین نقش را ایفا میکند. این دستور به برنامه میگوید: شرطی را بررسی کن؛ اگر درست بود، یک کار را انجام بده؛ در غیر این صورت (در صورت نیاز) کار دیگر را انجام بده.
$ \text{اگر } (شرط) \text{ آنگاه } \{ \text{بلوک دستورات 1} \} \text{ وگرنه } \{ \text{بلوک دستورات 2} \} $
برای مثال فرض کنید برنامهٔ نمرهدهی مینویسیم. اگر نمرهٔ دانشآموز از 10 بیشتر باشد، پیام «قبول» نشان داده شود، در غیر این صورت «مردود». این تصمیمگیری دقیقاً با دستور «اگر-آنگاه» انجام میشود. به این ترتیب برنامه به جای اجرای یکطرفهٔ دستورها، میتواند بسته به ورودیهای متفاوت، رفتار متفاوتی از خود نشان دهد.
۲. دستور «تکرار کن» (حلقهها)؛ نیروی کار بیخستگی برنامه
یکی از تواناییهای مهم رایانهها، انجام مکرر یک کار بدون خسته شدن است. دستور تکرار کن (که به آن حلقه نیز میگویند2) این امکان را فراهم میکند. دو نوع اصلی از حلقهها وجود دارد: حلقههایی که تعداد دفعات تکرار از قبل مشخص است، مانند برای ... از ... تا ... و حلقههایی که تا زمانی که یک شرط برقرار است اجرا میشوند، مانند تا زمانی که ... تکرار کن.
۳. جدول مقایسهٔ انواع دستورهای گروه کنترل
| نام دستور | کاربرد اصلی | مثال ساده |
|---|---|---|
| اگر-آنگاه (شرطی) | تصمیمگیری بر اساس یک شرط | اگر دما 0 باشد، پیام «یخبندان» را نشان بده |
| تکرار کن برای (حلقهٔ شمارشی) | انجام کار به تعداد مشخص | برای 1 تا 10: عدد را چاپ کن |
| تا زمانی که تکرار کن (حلقهٔ شرطی) | تکرار تا وقتی شرط برقرار است | تا زمانی که عدد وارد شده مثبت است، جمع را ادامه بده |
۴. مثال عملی: ساخت یک برنامهٔ هوشمند برای محاسبهٔ معدل
فرض کنید میخواهیم برنامهای بنویسیم که نمرات یک دانشآموز را دریافت کرده و سپس تصمیم بگیرد که آیا معدل او قبولی است یا خیر. در اینجا از هر دو دستور تکرار کن و اگر-آنگاه استفاده میشود:
- مرحلهٔ اول: با یک حلقه از کاربر بخواهیم نمرات درسها را (مثلاً 5 درس) وارد کند.
- مرحلهٔ دوم: داخل همان حلقه، هر نمره را با استفاده از یک متغیر به مجموع کل اضافه کند.
- مرحلهٔ سوم: پس از حلقه، معدل را محاسبه کند: $ \text{معدل} = \frac{\text{مجموع نمرات}}{\text{تعداد درسها}} $
- مرحلهٔ چهارم: با دستور «اگر-آنگاه» شرط گذاری کند: اگر معدل بزرگتر یا مساوی 12 باشد، پیام «قبول» و در غیر این صورت پیام «مردود» نمایش داده شود.
این مثال ساده نشان میدهد که چگونه ترکیب گروه کنترل، برنامه را از یک ماشین محاسبهگر ساده به موجودی هوشمند تبدیل میکند که میتواند بر اساس دادهها، قضاوت کند.
۵. کاربرد در بازیها و شبیهسازیها
فرض کنید میخواهید یک بازی حدس عدد بسازید. رایانه یک عدد تصادفی بین 1 تا 100 انتخاب میکند و کاربر باید آن را حدس بزند. در اینجا دستور تا زمانی که تکرار کن تا وقتی کاربر عدد را درست حدس نزده، بازی را ادامه میدهد. داخل حلقه، از اگر-آنگاه برای مقایسهٔ عدد حدس زده شده با عدد تصادفی استفاده میشود و بر اساس اینکه عدد بزرگتر، کوچکتر یا مساوی است، راهنمایی مناسب به کاربر داده میشود. این ترکیب ساده، یک بازی جذاب و هوشمند میسازد.
۶. چالشهای مفهومی و پاسخ به آنها
پاسخ: در این حالت برنامه همیشه قسمت «آنگاه» را اجرا میکند و هیچوقت به قسمت «وگرنه» نمیرسد. به این وضعیت «شرط ثابت درست» میگویند. اگر این اتفاق سهواً رخ دهد، برنامه ممکن است رفتار غیرمنتظرهای داشته باشد، مثلاً یک حلقه هیچوقت تمام نشود (حلقهٔ بینهایت).
پاسخ: حلقهٔ «برای» زمانی به کار میرود که از قبل تعداد دفعات تکرار را میدانیم، مثلاً تکرار 20 بار. حلقهٔ «تا زمانی که» زمانی استفاده میشود که شرط پایان مشخص نیست و حلقه باید تا وقتی که یک شرط خاص برقرار است (یا دیگر برقرار نیست) اجرا شود، مانند گرفتن ورودی از کاربر تا وقتی که ورودی معتبر باشد.
پاسخ: بله، این کار بسیار رایج است و به آن «حلقهٔ شرطی تو در تو» میگویند. برای مثال فرض کنید در یک حلقه که 100 عدد را بررسی میکند، از یک «اگر-آنگاه» استفاده کنیم تا فقط اعداد زوج را جدا کنیم. این تکنیک قدرت برنامه را بسیار افزایش میدهد.
۷. اشتباهات رایج در نوشتن دستورهای گروه کنترل
- حلقهٔ بینهایت: وقتی شرط پایان یک حلقه هرگز درست نمیشود، برنامه هرگز متوقف نمیشود. مثلاً در حلقهٔ «تا زمانی که» اگر شرط همیشه درست بماند.
- فراموشی استفاده از «وگرنه»: گاهی اوقات برنامهنویس فقط یک شاخه از شرط را مینویسد و حالت دیگر را نادیده میگیرد که میتواند باعث بروز خطاهای منطقی شود.
- تطابق ندادن نوع داده در شرط: اگر شرط را با نوع دادهٔ اشتباه مقایسه کنید (مثلاً مقایسهٔ عدد با رشتهٔ کاراکتری)، نتیجهٔ شرط ممکن است همیشه «غلط» باشد.
پاورقی
1 انشعاب: معادل عبارت Branching در انگلیسی، به معنای ایجاد دو یا چند مسیر مختلف در اجرای برنامه.
2 حلقه: معادل عبارت Loop در انگلیسی، به معنای ساختاری برای اجرای مکرر یک بلوک دستوری.
3 شرط: معادل Condition، عبارتی که مقدار درست یا غلط دارد و مسیر اجرا را تعیین میکند.
4 دستور گروه کنترل: معادل Control Flow Statements، مجموعهدستوراتی که ترتیب اجرای کدها را تعیین میکنند.