شرط و انواع آن

شرط چیست؟

گام اول – شرط ساده

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

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

جملات شرطی جملاتی هستند که انجام کار یا رسیدن به یک نتیجه را به انجام عمل دیگری مرتبط می‌کنند.

مثال: اگر دَرسَت را بخوانی (آنگاه) برایت دوچرخه می‌خرم ! در این جمله تنها در صورتی که درس بخوانی، برایت دوچرخه می‌خرند.

گام دوم – شرط چند قسمتی

خیلی اوقات پیش می آید که شرط ها کمی پیچیده‌تر هستند و فقط با یک عبارت ساده مشکل حل نمی‌شود!

اگر دَرست را بخوانی و پسر خوبی باشی و پول

داشته باشم، (آن‌گاه) برایت دوچرخه می‌خرم .

این جمله تنها در صورتی درست می‌شود که تمامی شروط برقرارشوند. یعنی حتّی اگر یکی از آن‌ها غلط باشد، شرط برقرار نشده و دوچرخه ای خریده نمی‌شود!

گام سوم – شرط کامل

برخی اوقات برای این‌که به قول ما ایرانی‌ها، کار از مهم کاری عیب نکند؛ شرطی به مرحله آخر اضافه می‌کنیم. این مرحله برای این است که اگر هیچ کدام از شرط / شروط انجام نشد، تکلیف مشخّص باشد و به قول خودمان، راه دررویی برای فرد باقی نگذاشته باشیم.

اگر دَرست را بخوانی و پسر خوبی باشی و پول داشته باشم، (آنگاه) برایت دوچرخه می خرم . در غیر این صورت از شام خبری نیست!

یعنی اگر این شرط برقرار نشود، دوچرخه که نمی خرم، هیچ، شام هم نمی خوری!

برای درک بهتر مثال بالا:

اگر فقط یکی از سه شرط برقرار شود : دوچرخه نمی خرم.

اگر تنها دو شرط از سه شرط برقرار شود : دوچرخه نمی خرم.

اگر هر سه شرط برقرار شود : دوچرخه می خرم.

اگر هیچ کدام برقرار نشود : شام نمی خوری.

دلایل استفاده از شرط

  • کنترل روند اجرای برنامه (Control Flow):

تغییر در نحوه‌ی عمل کردن متغیّرها و هدایت کردن برنامه برای رسیدن به نتیجه مطلوب توسّط شرط‌ها انجام می‌گیرد.

گام اوّل: اگر هوا بارانی باشد، برنامه هواشناسی به ما اخطار می‌دهد که چتر با خود ببرید. گام دوم: اگر هوا بارانی باشد و سرد هم بشود، اخطار می دهد که لباس گرم هم بپوشید گام سوم: اگر هوا بارانی باشد و سرد هم بشود و ما در خانه باشیم، هیچ کاری نکند.

  • خطایابی(عیب یابی) Diagnostic:

برای تحلیل درستی برنامه و کنترل آن که برنامه در چه وضعیّتی است همچنین، بررسی متغیّر‌ها که کدام متغیّر چه مقداری در خود دارد یا این که برنامه درست کار می‌کند یا نه!؟ نیازمند استفاده از شرط‌ها در طول روند برنامه هستیم.

فلوچارت چیست؟

الگوریتم در واقع همان چیدمان اولویّت بندی شده (ترتیب دار) و  گام به گامِ نحوه‌ی انجام یک کار برای رسیدن به یک هدف می‌باشد. (الگوریتم دم کردن چای)

فلوچارت (Flowchart) نمای گرافیکی یک الگوریتم، برای فهم بهتر نحوه عملکرد آن می باشد. برای رسم فلوچارت از مجموعه شکل‌های قرارداد شده استفاده می‌کنند که به کمک آن‌ها می‌توان دستورات را به ترتیب ترسیم نموده و روند یک الگوریتم را پیاده‌ و ساده‌سازی کرد.

کشیدن فلوچارت باید قبل از شروع برنامه‌نویسی انجام شود و وابستگی به نوع زبان برنامه‌نویسی ندارد. فلوچارت‌ها در تعیین روند اجرای دستورات و تعیین ورودی و خروجی برنامه نقش مهمی دارند.

اگر تصویر فلوچارت فوق را متوجه شدید، برگردان فارسی آن را Email کنید 😉

ساختار شرطی در پایتون

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

گام اول: 

if در واقع همان شرط ساده است.

برای نوشتن شرط در پایتون از فلوچارت روبرو استفاده می‌کنیم . به این معنی که اگر شرط برقرار بود که گزینه‌های مشخّص شده در زیر شرط را اجرا کن وگرنه آن‌ها را رها کن و به دستور بعدی مراجه نما.

به برنامه زیر توجّه نمایید، پس از دریافت یک عدد با کمک دستور ()input که به تابع ()int سپرده شده و قرار دادن آن در متغیّر a آماده‌ی بررسی وضعیّت و مقدار متغیّر a می شویم.

با گذاشتن if کنترل می‌کنیم که آیا مقدار a برابر یک است؟

اگرa برابر با یک باشد:

خطی که زیر آن و  در پناه این دستور قرار گرفته را اجرا می‌کند.

بعضی دستورات در پایتون دارای زیر دستور می‌باشند که باید حتما  indent یعنی تو رفتگی حدّاقل به اندازه یک space در ابتدای آن قرار گیرد. گرچه توصیه می‌شود از tab که پیش فرض ۸ حرف فاصله می‌اندازد استفاده کنیم که شکیل و خوانا باشد. (در برنامه‌های مختلف می توان مقدار tab را تغییر داد) این کار به شکیل شدن و زیبایی برنامه می‌افزاید و شباهتی به ساختار فایل‌های yaml یَمِل ایجاد می‌کند.

در غیر این صورت (یعنی a مخالف یک باشد):

به خط ۴ برای اجرای دستور بعدی رفته و خط ۳ اجرا نمی‌شود.

گام دوم: 

elif مخفف Else + if (یعنی اگر شرط قبلی برقرار نبود پس این شرط را کنترل کن) و برای ساخت شرط های بعدی به کار می رود. سؤال اینجاست که چرا به جای چند if پشت سر هم از elif های متعدّد استفاده می‌کنیم؟

لطفا قبل از دیدن جواب کمی فکر کنید

استفاده کردن از چندین if در کدها به این معنا است که برنامه تمام شروط موجود را از ابتدا چک کند تا از وضعیّت آن‌ها مطّلع شود. حتی اگر به جواب درست هم برسد باز روند برنامه و اجرای بقیّی‌ی دستورات را ادامه می‌دهد.

اما استفاده از elif به این معنا است که شما از برنامه می‌خواهید شروط را از بالا تا پایین نگاه کند و اوّلین شرط درست را انجام دهد.

شکل نوشتن elif

دقّت کنید

در برنامه‌ی بالا تفاوت if و elif مشخص نیست چون شرط ها با هم تداخل ندارند. در اصل elif برای جلوگیری از اجرای شرط‌های مرتبط با یکدیگر است.

به مثال زیر توجّه کنید:

حالا سعی کنید برنامه‌ی بالا را فقط با if بنویسید! خواهید دید که تعداد و مدل شرط‌ها تفاوت ویژه‌ای خواهند داشت.

گام سوم: 

else که همان گام سوم است. (به معنی غیر از آن یا بهتر بگویم؛ اگر هیچکدام از شروط بالا برقرار نبود… این کار را بکن)

در برنامه بالا برای اعداد ۱ تا ۳ شرط گذاشتیم، اما اگر از ۳ بزرگتر بود چه؟ در این صورت با استفاده از else به آن جواب می‌دهیم.

توجّه داشته باشید که برای اعداد کوچک‌تر از ۱ هم شرطی در نظر نگرفتیم و این نقص برنامه‌ماست!