گاما رو نصب کن!

{{ number }}
اعلان ها
اعلان جدیدی وجود ندارد!
کاربر جدید

جستجو

پربازدیدها: #{{ tag.title }}

میتونی لایو بذاری!
نمونه سوال محتوای آموزشی آزمون آنلاین پرسش و پاسخ درسنامه آموزشی مدرسه‌یاب معلم‌ها

شرط: دستوری است که یک موضوع را بررسی می‌کند و بر اساس درست یا نادرست بودن آن، تصمیم می‌گیرد چه کاری انجام دهد. مثل «اگر به لبه رسیدی، برگرد».

بروزرسانی شده در: 18:43 1405/02/7 مشاهده: 105     دسته بندی: کپسول آموزشی

شرط در برنامه‌نویسی و زندگی روزمره: حکم «اگر... آنگاه...»

اصول تصمیم‌گیری شرطی، ساختار «اگر-آنگاه-درغیراینصورت» و نقش آن در الگوریتم‌ها و کدنویسی
خلاصه: در این مقاله با مفهوم «شرط» به عنوان دستوری که یک موضوع را بررسی کرده و بر اساس درست یا نادرست بودن آن تصمیم می‌گیرد چه کاری انجام دهد، آشنا می‌شوید. شرط‌ها پایه‌ی تصمیم‌گیری در برنامه‌نویسی، الگوریتم‌ها و حتی منطق روزمره هستند. ساختار اگر-آنگاه-درغیراینصورت، عملگرهای مقایسه و ترکیب شرط‌ها با هم، همچنین مثال‌هایی از زبان برنامه‌نویسی پایتون و کاربرد شرط‌ها در هوش مصنوعی و بازی‌ها ارائه می‌شود. در پایان چالش‌های مفهومی و پاورقی شامل معادل‌های انگلیسی واژه‌های کلیدی آورده شده است.

شرط چیست؟ ریشه در منطق و تصمیم‌گیری

شرط (Condition)1 دستوری است که یک گزاره را بررسی می‌کند و بر اساس درست یا نادرست بودن آن، تصمیم می‌گیرد چه کاری انجام شود. در زندگی روزمره مدام از شرط استفاده می‌کنیم: «اگر باران ببارد، چتر بردارم» یا «اگر به لبهٔ پرتگاه رسیدی، برگرد». در برنامه‌نویسی، شرط‌ها قلب تصمیم‌گیری الگوریتم‌ها هستند. یک الگوریتم بدون شرط، فقط دنباله‌ای از دستورات خطی است؛ اما با اضافه شدن شرط، می‌تواند مسیرهای مختلف را انتخاب کند.

به بیان ساده، یک شرط شامل سه بخش اصلی است: ۱. گزاره یا عبارت بولی (Boolean expression)2 که نتیجه‌اش یا درست است یا نادرست. ۲. کاری که در صورت درست بودن انجام می‌شود.۳. (اختیاری) کاری که در صورت نادرست بودن انجام می‌شود. این ساختار را با عنوان «اگر-آنگاه-درغیراینصورت» می‌شناسیم.

مثال ریاضی: فرض کنید تابعی داریم که مقدار مطلق یک عدد را حساب می‌کند. شرط این است: اگر عدد بزرگ‌تر یا مساوی صفر باشد، خروجی خود عدد است، در غیر این صورت خروجی قرینهٔ عدد خواهد بود. با فرمول: $ |x| = \begin{cases} x & \text{if } x \ge 0 \\ -x & \text{if } x \lt 0 \end{cases} $

اجزای اصلی یک دستور شرطی: گزاره، بدنه و شاخه‌ها

در کدنویسی (مثلاً زبان پایتون)، یک دستور شرطی با if شروع می‌شود. بعد از آن یک عبارت بولی می‌آید و سپس دونقطه. در خط بعد با تورفتگی، دستورات درون شرط نوشته می‌شوند. برای بخش «در غیر این صورت» از else و برای بررسی چند شرط پشت سر هم از elif (مخفف else if) استفاده می‌شود.

عملگرهای مقایسه3 ابزارهایی هستند که به ما اجازه می‌دهند دو مقدار را مقایسه کنیم. مهم‌ترین عملگرها عبارتند از: برابری (==)، نامساوی (!=)، بزرگ‌تر (>)، کوچک‌تر (<)، بزرگ‌تر یا مساوی (>=) و کوچک‌تر یا مساوی (<=).

عملگر معنی مثال درست
== برابری 5 == 5
!= نا مساوی 3 != 4
> بزرگ‌تر 10 > 7
< کوچک‌تر 2 < 9

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

گاهی نیاز است چند شرط را همزمان بررسی کنیم یا یک شرط را درون شرط دیگر قرار دهیم. به شرط درون شرط، «شرط تودرتو» (Nested condition)4 می‌گویند. برای ترکیب شرط‌ها از عملگرهای منطقی5 مانند و (and)، یا (or) و نقیض (not) استفاده می‌کنیم.

مثال ترکیب با «و»: برای ورود به یک باشگاه، باید هم سن فرد بیشتر از 18 سال باشد و هم کارت عضویت داشته باشد. در قالب شرط: اگر (سن > 18) و (کارت_عضویت == درست) پس اجازه ورود بده.

فرمول منطقی: برای عبارت $A \land B$ (و) تنها زمانی درست است که هر دو $A$ و $B$ درست باشند. برای $A \lor B$ (یا) اگر حداقل یکی درست باشد کل گزاره درست است.

کاربرد عملی: سامانه نمره‌دهی مدرسه و تشخیص قبولی

فرض کنید معلمی می‌خواهد برنامه‌ای بنویسد که بر اساس نمرهٔ دانش‌آموز، وضعیت قبولی یا رد شدن را تعیین کند. شرط به این صورت نوشته می‌شود: اگر نمره بزرگ‌تر یا مساوی 10 باشد، عبارت «پذیرفته شدی» نمایش داده شود، در غیر این صورت «متاسفانه رد شدی». اما می‌توانیم شرط را دقیق‌تر کنیم: اگر نمره بین 10 تا 12 باشد «قبول ضعیف»، بین 12 تا 15 «قبول متوسط» و بالاتر از 15 «قبول عالی». این کار با elif انجام می‌شود.

مثال کد فرضی پایتون (فقط برای درک ساختار):

نمره = 14
if نمره >= 18:
    print("عالی")
elif نمره >= 15:
    print("خیلی خوب")
elif نمره >= 10:
    print("قبول")
else:
    print("رد")

در بازی‌های رایانه‌ای، شرط‌ها برای تشخیص برخورد دو شخصیت استفاده می‌شوند: «اگر موقعیت بازیکن با موقعیت دشمن یکی شد، جان بازیکن کم شود». یا در ربات‌های مسیر یاب: «اگر سنسور جلوی ربات مانعی تشخیص داد، بچرخ در غیر این صورت مستقیم برو».

چالش‌های مفهومی در شرط‌ها و اشتباهات رایج

پرسش ۱: چه فرقی بین علامت تساوی (=) در ریاضی و عملگر برابری (==) در برنامه‌نویسی وجود دارد؟
پاسخ: در ریاضی، علامت = بیانگر تساوی دو طرف است. در برنامه‌نویسی، یک علامت مساوی عمل «نسبت‌دهی مقدار» (مقدار سمت راست را در متغیر سمت چپ ذخیره می‌کند) و دو علامت مساوی برای مقایسه برابری استفاده می‌شود. اشتباه نوشتن if (x = 5) به جای if (x == 5) یکی از رایج‌ترین خطاهای تازه‌کاران است.
پرسش ۲: شرط تودرتو چه زمانی بهتر از ترکیب با and و or است؟
پاسخ: وقتی شرایط به صورت سلسله‌مراتبی باشند و وابستگی متوالی وجود داشته باشد، شرط تودرتو خوانایی بهتری دارد. مثلاً: ابتدا بررسی می‌کنیم آیا کاربر وارد شده است؟ اگر بله، سپس بررسی می‌کنیم آیا اجازه دسترسی دارد؟ این ساختار با if داخل if خواناتر از ترکیب with and است. اما برای شرایط مستقل و ساده، استفاده از عملگرهای منطقی کوتاه‌تر و بهتر است.
پرسش ۳: آیا همیشه باید بخش else را بنویسیم؟
پاسخ: خیر، بخش else اختیاری است. بسیاری از شرط‌ها فقط در صورت درست بودن یک گزاره کاری انجام می‌دهند و در غیر آن صورت هیچ‌کاری لازم نیست. برای مثال «اگر دمای هوا از 30 درجه بیشتر شد، کولر را روشن کن» نیازی به else ندارد. با این حال اضافه کردن else حتی برای هیچ‌کار نکردن می‌تواند قصد برنامه‌نویس را واضح‌تر کند.

جداول مقایسه انواع ساختارهای شرطی

نوع ساختار تعداد شاخه‌ها مثال کاربردی
if ساده یک شاخه (فقط درست) هشدار دادن در صورت کمبود موجودی
if-else دو شاخه (درست و نادرست) قبولی/رد شدن در آزمون
if-elif-else چندین شاخه درجه‌بندی نمرات (عالی، خوب، قبول، رد)
نکته نهایی: شرط‌ها قلب تصمیم‌گیری در برنامه‌نویسی هستند. با تسلط بر گزاره‌های بولی، عملگرهای مقایسه و منطقی، و ساختارهای if، if-else و if-elif-else می‌توانید هر الگوریتمی را پیاده‌سازی کنید. به یاد داشته باشید که خوانایی کد اهمیت دارد؛ شرط‌های خیلی عمیق و تودرتو را تا حد امکان ساده کنید و از ترکیب عملگرهای منطقی به جای تو رفتن بیش از حد استفاده نمایید. همچنین همواره مراقب اشتباه رایج ِنوشتن = به جای == باشید.

پاورقی‌ها

1. شرط (Condition): در علوم رایانه و منطق، عبارتی است که مقدار درست یا نادرست دارد و جریان اجرای برنامه بر اساس آن تغییر می‌کند.
2. عبارت بولی (Boolean expression): عبارتی که نتیجه‌اش مقادیر «درست» (True) یا «نادرست» (False) است. نام آن از جورج بول، ریاضیدان انگلیسی، گرفته شده است.
3. عملگرهای مقایسه (Comparison operators): نمادهایی مانند ==, !=, >, <, >=, <= که دو مقدار را مقایسه کرده و یک مقدار بولی برمی‌گردانند.
4. شرط تودرتو (Nested condition): حالتی که یک دستور شرطی درون بلوک شرطی دیگر قرار می‌گیرد.
5. عملگرهای منطقی (Logical operators): عملگرهایی مانند and (و)، or (یا) و not (نقیض) که برای ترکیب چند عبارت بولی استفاده می‌شوند.