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

برای این کار می‌توانیم از دستور شرطی if یا عملگر شرطی ? استفاده کنیم.


دستور شرطی if

اولین دستور شرطی، if است.

دستور if (ساختار کنترلی if) یک شرط را بررسی می‌کند، اگر نتیجه آن شرط true بود یک بلاک (block) از کد را اجرا می‌کند:

در مثال بالا، بلاک کد ما تنها یک دستور داشت. اگر بیش‌ از یک دستور داشته باشد، باید بلاک کد را درون براکت {} قرار دهیم:

توصیه می‌شود حتی زمانی که تنها یک دستور درون بلاک کد داریم، باز هم از براکت استفاده کنیم تا خوانایی کد را بالا ببریم.


مقادیر خاص به عنوان شرط: 0 و 1

دو عدد 0 و 1، به عنوان شرط‌ قابل قبول هستند:

  • عدد 0: یک شرط همیشه غلط است.
  • عدد 1: یک شرط همیشه درست است.

بنابراین بلاک کد این شرط هیچ‌ وقت اجرا نمی‌شود:

و بلاک کد این شرط همیشه اجرا می‌شود:


پایان‌دهنده شرط‌ها: else

دستور شرطی else یک بلاک دلخواه است. زمانی که شرط if اشتباه باشد، بلاک else  اجرا می‌شود:


چند شرطی: else if

گاهی اوقات نیاز داریم تا چند شرط را بررسی کنیم، در چنین شرایطی باید از else if استفاده کنیم:

در ادامه سه شرط به کار برده شده را بررسی می‌کنیم:

  • اولین شرط if: صحیح بودن جواب را چک می‌کند.
  • شرط دوم else if: بزرگتر بودن result از جواب (1 + 2 = 3) را چک می‌کند.
  • شرط سوم else:اگر هیچ‌کدام از دو شرط بالا یعنی شرط if و else if برقرار نباشد، یعنی result از عدد 3 کوچکتر است.

اگر شرط اول برقرار باشد، دیگر شرط دوم و سوم اجرا نمی‌شود.

اگر شرط دوم برقرار باشد (این یعنی که شرط اول رد شده و برقرار نیست)، دیگر شرط سوم اجرا نمی‌شود.

اگر شرط سوم برقرار باشد (این یعنی که شرط اول و دوم رد شده و برقرار نیستند)، پس آخرین بلاک اجرا می‌شود.


دستور شرطی ?

دومین دستور شرطی، ? است.

گاهی اوقات نیاز داریم تا یک متغیر را مقداردهی کنیم، البته با توجه به یک شرط:

ما می‌توانیم این کار را به کمک دستور شرطی ?، ساده‌تر و کوتاه‌تر کنیم.

نحوه نوشتن:

شرط (condition) محاسبه می‌شود: اگر صحیح بود value1 و در غیر اینصورت value2 برگردانده می‌شود.

بنابراین value1 مانند if و value2 مانند else عمل می‌کند.

برای مثال:

همینطور می‌توانیم پرانتزها را برداریم:

البته توصیه می‌شود از پرانتزها استفاده کنیم زیرا باعث خوانایی کد می‌شوند.


چندشرطی:‌ ?

یک تولی از اپراتور علامت سوال ? می‌تواند مقداری را رگرداند که به بیش از یک شرط وابسته است.

برای اینکار باید در قسمت value2 یک شرط دیگر بنویسیم نه یک مقدار:

به اینصورت هر بار به‌ جای دومین مقدار هر شرط، شرط دیگری می‌نوسیم.

مراحل اجرای کد بالا را در پایین شرح می‌دهیم:

  1. اگر condition_1 برقرار بود مقدار value_1 برگردانده می‌شود.
  2. در غیر اینصورت condition_2 بررسی می‌شود و اگر برقرار بود مقدار value_2 برگردانده می‌شود.
  3. در غیر اینصورت condition_3 بررسی می‌شود و اگر برقرار بود مقدار value_3 برگردانده می‌شود.
  4. اگر condition_3 برقرار نبود، value_4 برگردانده می‌شود.

و حالا یک مثال:

برای اینکه متوجه چگونگی کارکرد کد بالا بشوید، ۴ مراحل بالا را مرور کنید.

اما در مورد علامت && در مطلب بعد بصورت کامل توضیح می‌دهیم، فعلا در این حد بگوییم که باعث می‌شود که قسمت شرط ما دارای بیش از یک شرط باشد و نیاز است تا همه آن شرط‌ها برقرار باشند.

و این هم کد بالا با دستور if..else:


کدام یک؟ if یا ?

دو قانون خیلی ساده وجود دارد:

  1. اگر هدفتان مقداردهی بود، از ? استفاده کنید.
  2. اگر هدفتان اجرای یک کد یا یک بلاک از کد بود، از if استفاده کنید.

البته شما می‌توانید قوانین بالا را نقض کنید! این‌ها قوانین پیشنهادی هستند.


… پایان مطلب 🙂