شرط چیست؟
در برنامهنویسی، «شرط» یک پرسش بله یا خیر است که تعیین میکند کدام بخش از کد اجرا شود. وقتی برنامه به یک شرط میرسد، مقدار آن را بررسی میکند؛ اگر درست بود، یک کار مشخص را انجام میدهد و اگر غلط بود، کار دیگری را اجرا میکند یا از آن بخش عبور میکند. این مفهوم پایهی بسیاری از تصمیمگیریها در نرمافزارهاست، از بازیهای رایانهای گرفته تا سامانههای مدیریت مدرسه. در این مقاله، با زبان ساده و مثالهای ملموس، میآموزیم که شرط چه شکلی است، چگونه کار میکند و چه اشتباهاتی ممکن است پیش بیاید.
شرط در زندگی روزمره و برنامه
هر روز بدون آنکه فکر کنیم، از شرطها استفاده میکنیم. مثلاً وقتی مادرتان میگوید «اگر تکالیفت را انجام دادهای، میتوانی تلویزیون تماشا کنی»، در واقع یک شرط را بیان کرده است. در برنامهنویسی نیز دقیقاً همین اتفاق میافتد؛ برنامه یک عبارت منطقی را بررسی میکند و بر اساس درست یا غلط بودن آن، تصمیم میگیرد.
به عبارت دیگر، شرط یک پرسش است که پاسخ آن فقط میتواند «بله» (درست) یا «خیر» (غلط) باشد. برای نمونه، در یک بازی رایانهای، برنامه مدام چک میکند که «آیا جان بازیکن به صفر رسیده است؟» اگر پاسخ بله باشد، بازی تمام میشود و پیام «باختی» نمایش داده میشود. اگر پاسخ خیر باشد، بازی ادامه پیدا میکند. این همان تصمیمگیری سادهای است که با کمک شرطها در برنامه پیاده میشود.
برای روشنتر شدن موضوع، به یک مثال ساده از یک ماشینحساب کوچک توجه کنید. فرض کنید برنامهای نوشتهاید که از کاربر دو عدد و یک عملگر (مثلاً + یا -) میگیرد. اگر عملگر + باشد، جمع را انجام میدهد و اگر - باشد، تفریق را. اینجا دو شرط جداگانه وجود دارد که هر کدام بخش خاصی از برنامه را اجرا میکنند. به این ترتیب، با کمک شرطها میتوان برنامههایی ساخت که رفتارشان بر اساس ورودیهای متفاوت، تغییر کند.
انواع شرط و ساختارهای تصمیمگیری
شرطها فقط به یک «اگر» ختم نمیشوند. گاهی نیاز است چند حالت مختلف را بررسی کنیم. برای این کار، از ساختارهای شرطی گوناگونی استفاده میشود که هرکدام برای موقعیت خاصی مناسباند. در ادامه با سه نوع رایج آشنا میشویم.
| نوع شرط | شکل نوشتاری | کاربرد |
|---|---|---|
| شرط ساده | if (شرط) { ... } | وقتی فقط یک حالت خاص را میخواهیم بررسی کنیم. |
| شرط دوطرفه | if (شرط) { ... } else { ... } | وقتی برای حالت درست و غلط، دو کار متفاوت داریم. |
| شرط زنجیرهای | if (شرط۱) { ... } else if (شرط۲) { ... } | وقتی بیش از دو حالت ممکن وجود دارد. |
بیایید یک مثال عینی برای شرط زنجیرهای بزنیم. فرض کنید برنامهای برای تعیین نمرهٔ قبولی نوشتهاید: اگر نمرهٔ دانشآموز بزرگتر یا برابر با ۱۲ باشد، پیام «قبول» نمایش داده میشود؛ در غیر این صورت، اگر نمره بین ۱۰ و ۱۲ باشد، پیام «مشروط» و اگر کمتر از ۱۰ باشد، پیام «رد» نشان داده میشود. اینجا سه حالت مختلف داریم که با یک شرط زنجیرهای به راحتی قابل پیادهسازی است. هر کدام از این شرطها، بخشی از برنامه را فعال میکنند و به برنامه اجازه میدهند تا بر اساس ورودی، پاسخ متفاوتی بدهد.
پرسشهای چالشی و رایج
آیا شرط فقط یک بار بررسی میشود؟
خیر، بستگی به جایگاه شرط در برنامه دارد. اگر شرط درون یک حلقه (مانند while یا for) قرار گرفته باشد، ممکن است بارها و بارها بررسی شود تا زمانی که شرط غلط شود. برای نمونه، در یک بازی، شرط «آیا زمان تمام شده؟» مدام در هر ثانیه چک میشود تا بازی را متوقف کند. بنابراین، تعداد دفعات بررسی شرط، به ساختار برنامه بستگی دارد.
چرا گاهی برنامه با وجود درست بودن شرط، کار اشتباه میکند؟
این مشکل معمولاً به خاطر اشتباه در نوع داده یا عملگرهای مقایسهای پیش میآید. مثلاً اگر عدد ۵ را با رشتهٔ '۵' مقایسه کنید، در برخی زبانها ممکن است نتیجهی درست ندهد، چون نوع دادهها یکی نیست. همچنین استفاده از عملگرهای اشتباه مانند = به جای == میتواند شرط را همیشه درست کند. پس باید دقت کنید که عبارت شرطی دقیقاً همان چیزی باشد که مد نظر دارید.
آیا میتوان از چند شرط با هم استفاده کرد؟
بله، با استفاده از عملگرهای منطقی مانند «و» و «یا» میتوان چند شرط را ترکیب کرد. برای مثال، اگر بخواهیم بررسی کنیم که یک عدد هم بزرگتر از ۱۰ باشد و هم کوچکتر از ۲۰، از «و» استفاده میکنیم. این کار به ما امکان میدهد شرایط پیچیدهتری را در برنامه پیاده کنیم بدون اینکه کد طولانی و درهمبرهم شود.
شرط، قلب تصمیمگیری در برنامهنویسی است. با کمک آن، برنامه میتواند بر اساس ورودیها و موقعیتهای مختلف، واکنشهای متفاوتی نشان دهد. شرطها به شکلهای ساده، دوطرفه و زنجیرهای نوشته میشوند و با عملگرهای منطقی میتوان آنها را ترکیب کرد. دقت در نوشتن عبارت شرطی و انتخاب نوع مناسب آن، از رایجترین کارهایی است که یک برنامهنویس تازهکار باید یاد بگیرد. با تمرین و حل مسئله، میتوانید به راحتی از شرطها در پروژههای خود استفاده کنید و برنامههای هوشمندانهتری بنویسید.