شرط در برنامه نویسی – آشنایی با مفاهیم if و else
امروزه تقریباً برنامه نویسی یکی از مهارتهای مهم و کاربردی همه بخشهای علوم کامپیوتر در نظر گرفته میشود. یکی از مباحث مهم و کاربردی در این مهارت، شرط در برنامه نویسی (Conditional Programming) به حساب میآید. با استفاده از شرط در برنامه نویسی میتوان حالتی را پیادهسازی کرد که در آن اگر یک شرط برقرار یا درست (True) باشد، برخی کدها اجرا شوند و اگر شرط برقرار نباشد یا به اصطلاح «False» (نادرست) باشد، برنامه از کدهای داخل شرط عبور میکند و کدهای بعد از آن اجرا میشوند. در این مقاله سعی شده است به طور جامع به چیستی شرط در برنامه نویسی خصوصاً عبارت if و else پرداخته شود. همچنین برای درک بهتر مفاهیم، مثالهایی به زبانهای برنامه نویسی مختلف در این نوشتار ارائه شدهاند.
شرط در برنامه نویسی چیست؟
شرطها در برنامه نویسی عبارتهای منطقی با «اگر» (if) و «آنگاه» (Then) هستند که نحوه اجرای کدها را تغییر میدهند. شرط در برنامه نویسی یکی از بخشهای کلیدی فرایندهای تصمیمگیری را برای رایانه مشخص میکند. برای مثال، میتوان گفت که عبارتهای شرطی بخش مهمی از زندگی انسان به حساب میآیند. انسانها در مورد موقعیتهای زندگی خود فکر میکنند و بر اساس مشاهدههایشان و چیزی که به نظرشان درست است، تصمیم میگیرند.
به عنوان نمونهای از این تصمیمها میتوان به شرطی به صورت «اگر بیرون باران ببارد، پس ما در داخل میمانیم.» اشاره کرد یا به عنوان نمونه دیگری میتوان گفت که «اگر تولد من است، پس میتوانم کیک تولد داشته باشم.» این شرطها دارای علت و معلول هستند یعنی به صورت «اگر این، پس آن» انجام میشوند.
از آنجایی که کامپیوترها ماشینهایی هستند که بدون هدایت برنامه نویسها و توسعه دهندگان نمیتوانند کاری انجام دهند، لازم است که با دستورات شرطی هدایت شوند. با استفاده از شرط در برنامه نویسی میتوان برای کامپیوتر مشخص کرد چه کاری را در چه زمان و شرایطی انجام دهد. یکی از مثالهای بسیار سادهای که میتوان برای شرط در برنامه نویسی کامپیوتر به آن اشاره کرد در مورد رمز عبور است. رمزهای عبور به این صورت کار میکنند که رمز عبور را صحیح وارد کند، میتواند وارد برنامه شود، در غیر این صورت باید مجدداً رمز عبور را وارد کند.
به طور کلی، یکی از مفاهیمی که برنامه نویسی را قدرتمندتر میکند، عبارتهای شرطی هستند. در کامپیوتر زمانی که نیاز است عبارتی بر اساس شرایط خاصی انجام شود، از شرط در برنامه نویسی استفاده میشود. عبارتهای شرطی امکان انجام کاری را بر اساس رعایت شرایطی مشخص برای کامپیوترها فراهم میکنند. «عبارتهای شرطی» (Conditional Statements) در اکثر زبانهای برنامه نویسی وجود دارند تا به کامپیوتر درباره تصمیمگیری در شرایطی خاص کمک کنند. بسته به عملکردها و تصمیمهایی که برنامه نویسها در نظر دارند، این تصمیمها در صورتی گرفته میشوند که شرایط اعلام شده، درست یا نادرست باشند. در ادامه، شرط در برنامه نویسی با استفاده از مثال سادهای توصیف شده است.
توصیف شرط در برنامه نویسی با مثال
برای شروع به مثالی ساده از شرط در برنامه نویسی، پرداخته میشود. در برنامهای زمانی که کاربر دکمه «ورود» (Enter) را میزند، وظیفه تعریف شده توسط برنامه نویس، اجرا خواهد شد. در تصویر زیر نحوه عملکرد این فرآیند نشان داده شده است.
این سادهترین حالت برنامه برای انجام کار است که بدون پرسیدن سوال یا وارد کردن اطلاعاتی، کاری که برای کاربر تعریف شده است، توسط برنامه انجام میشود. حال برای افزایش امنیت و رسیدن به هدف با روشی پیچیدهتر، سوالی برای بخش ورود طراحی خواهد شد. بنابراین، از این به بعد هر زمان که کاربر قصد ورود به برنامه و انجام کار را داشت از او سوالی پرسیده میشود. مثلاً سوال میتواند این باشد که «آیا کاربر متنی را وارد کرده است؟» و اگر جواب «بله» توسط کاربر وارد شود، عملیات لازم انجام خواهد شد. اما اگر پاسخ کاربر «خیر» باشد، برنامه مجدداً سوالی دیگر از کاربر میپرسد.
در کدنویسی، زمانی که نیاز است سوالی پرسیده شود، از شرط در برنامه نویسی استفاده خواهد شد. شرط موردی است که کامپیوتر میتواند «درست» (True) یا «نادرست» (False) بودن آن را تشخیص دهد. حالت True زمانی اتفاق میافتد که در کامپیوتر پاسخ «بله» وارد شده و حالت False وقتی رخ میدهد که به کامپیوتر پاسخ «خیر» داده شده است. بسته به درست یا نادرست بودن شرایط، میتوان برنامه خود را برای انجام کارهای مختلف آماده کرد. مثلاً میتوان در برنامه به این موضوع پرداخت که کاربر متنی را با استفاده از یک شرط وارد کند.
در بخش بعدی از مقاله «شرط در برنامه نویسی» به بررسی عبارتهای شرطی پرداخته شده است.
عبارت شرطی در برنامه نویسی چیست ؟
در بخشهای قبلی این موضوع که شرط در برنامه نویسی چیست، مورد بررسی قرار گرفت. حال در این بخش به روش استفاده از شرط در برنامه نویسی پرداخته شده است. میتوان گفت با استفاده از «عبارتهای شرطی» (Conditional Statement)، شرط در برنامه نویسی ایجاد میشود. عبارتهای شرطی روشی برای ایجاد تصمیمها در برنامه نویسی هستند. این عبارتها همیشه حداقل یک بخش if دارند که به برنامهها نشان میدهد زمانی که شرط درست است چه کاری باید انجام دهند. اگر عبارت شرطی دارای بخش else نباشد، زمانی که شرط برنامه False باشد، کدهای داخل بلوک if اجرا نخواهند شد و پرش به کدهای بعد از قطعه if انجام میشود. فلوچارت این بخش از برنامه به صورت زیر طراحی شده است:
عبارتهای شرطی به صورت زیر در نظر گرفته میشوند:
نحوه عملکرد شرط به این صورت است که شرط دستور if در پایتون نوشته میشود. به عبارت دیگر، کدهایی که در صورت درست بودن برنامه باید انجام شوند در بخش if قرار میگیرند و سپس کدهایی که در صورت نادرست بودن شرط باید انجام شوند، در بخش else نوشته میشوند. اگر شرط به درستی انجام شود، فقط کدهایی که پس از if وجود دارند پیادهسازی خواهند شد و کدهای بعد از else نادیده گرفته میشوند. اگر شرط اصلی به صورت نادرست انجام شود، کدهای بعد از if نادیده گرفته خواهند شد و فقط کدهای پس از else اجرا میشوند.
به عبارتی میتوان گفت «اگر این شرط درست است، آنگاه شرط باید انجام شود، در غیر این صورت، شرط بعدی انجام میشود.» عبارتهای شرطی انواع گوناگونی دارند و حتی میتوان در برخی از موارد آنها را با استفاده از حلقههای «While» نیز پیادهسازی کرد. ادامه این بخش از مقاله «شرط در برنامه نویسی» به بررسی «عبارتهای شرطی بولی» (Conditional Boolean Expression) اختصاص داده شده است.
- مقالههای پیشنهادی:
عبارت های شرطی بولی چه هستند؟
گاهی در یک برنامه شرایطی به وجود میآید که برای ادامه اجرا باید مسیری انتخاب شود. برای مثال، اگر توپ در برنامه است یک کار انجام شود، در غیر این صورت کار دیگری انجام گیرد. یا اگر همه دادهها پردازش شدهاند، برنامه میتواند به پایان برسد، در غیر این صورت بخش دادههای بعدی پیادهسازی میشود. میتوان برای نشان دادن این نوع از شرطها از علامتهای برابری، بزرگتر و کوچکتر ریاضیات استفاده کرد. همچنین، در برخی از زبانهای برنامه نویسی شرطها داخل پرانتز قرار میگیرند.
همه شرطها در برنامه نویسی باید به صورت درست یا نادرست ارزیابی شوند، به همین دلیل به آنها عبارتهای شرطی بولی گفته میشود. همچنین، میتوان با استفاده از عملگرهای منطقی از جمله OR ،AND و سایر موارد شرطهای برنامه نویسی را با یکدیگر ترکیب کرد. در ادامه مثالی از عبارتهای شرطی بولی با استفاده از زبان پایتون ارائه شده است.
1>>> x = 0
2>>> y = 5
3>>> if x < y: #True
4 print('yes')
در بخش بعدی به بررسی چیستی عبارت if در برنامه نویسی پرداخته شده است.
عبارت if در برنامه نویسی چیست؟
یک عبارت if ساده در زبانهای برنامه نویسی برای پیادهسازی کدهایی مورد استفاده قرار میگیرد که شرط برای آنها صحیح باشد. به عبارت if در برنامه نویسی «انتخاب یک طرفه» (One-Way Selection) نیز میگویند. زمانی که از شرط ifاستفاده میشود، در حقیقت، آرگومانهای آن بررسی شدهاند و اگر هدف مورد نظر را برآورده کنند، کدهای داخل عبارت if یا همان بلوک if پیادهسازی میشوند، در غیر این صورت هیچ اتفاقی نمیافتد. در ادامه کدهایی با ساختار نحوی زبان برنامه نویسی C ارائه شدهاند که عبارت شرطی if را نشان میدهند.
1if(expression)
2{
3 //code to be executed
4}
در ادامه فلوچارتی برای درک بهتر if و شرط در برنامه نویسی ارائه شده است.
if یا همان شرط در برنامه نویسی به این صورت عمل میکند که اگر محاسبه عبارت شرطی دارای مقدار غیر صفر یا True باشد. آنگاه، بلوک کدهای مربوط به گزاره if اجرا خواهد شد و اگر این عبارت دارای مقدار صفر یا نادرست باشد، برنامه از بخش شرط در برنامه نویسی عبور میکند و خط بعدی کدها را میخواند. در ادامه مقاله «شرط در برنامه نویسی» به بررسی عبارت If else پرداخته شده است.
عبارت if else برای شرط در برنامه نویسی چیست؟
عبارتهای if else در زبانهای برنامه نویسی در زمانی مورد استفاده قرار میگیرند که ممکن است شرط درست یا نادرست باشد. به این نوع از عبارتها، «انتخاب دو طرفه» (Two-Way Selection) نیز گفته میشود. استفاده از if به تنهایی عملکرد مطلوبی دارد، اما اگر در برنامهای نیاز به کار کردن با چندین متغیر یا گسترش پارامترهای شرطی وجود داشته باشد، عبارت If else بهترین انتخاب به حساب میآید.
با استفاده از عبارت if ، تنها یک بلوک از کدها پس از عملکرد صحیح شرط اجرا میشوند. اما در عبارت If else دو بلوک از کدها وجود دارند که بلوک اول برای مدیریت بخش درست استفاده میشود و بلوک دوم برای زمانی است که شرط if برقرار نباشد یا به اصطلاح False باشد. ساختار نحوی استفاده از این عبارت در زبان برنامه نویسی C به صورت زیر است:
1if(expression)
2{
3 //Statements
4}
5else
6{
7 //Statements
8}
در ادامه فلوچارتی برای درک بهتر عبارت If else ارائه شده است.
در عبارت If else اگر نتیجه شرط غیر صفر و صحیح باشد، آنگاه بلوک مربوط به گزاره if اجرا میشود و اگر عبارت شرطی دارای شرط صفر یا نادرست باشد، بلوک عبارت else پیادهسازی میشود. حال بخش بعدی از مقاله «شرط در برنامه نویسی» پس از معرفی مجموعه دورههای آموزش برنامه نویسی فرادرس به بررسی عبارتهای «if elseتو در تو» (Nested if else) اختصاص داده شده است.
معرفی فیلم های آموزش برنامه نویسی فرادرس
دورههای آموزشی سایت فرادرس بر اساس موضوع به صورت مجموعههای آموزشی مختلفی دستهبندی میشوند. یکی از این مجموعههای جامع مربوط به آموزشهای انواع زبانهای برنامه نویسی گوناگون است. علاقهمندان و دانشجویان میتوانند برای یادگیری بیشتر شرط در برنامه نویسی و همچنین زبانهای گوناگونی که از شرطها استفاده میکنند، از دورههای ارائه شده در این مجموعه آموزشی استفاده کنند. در زمان تدوین این مقاله، مجموعه دورههای برنامه نویسی فرادرس حاوی بیش از ۴۹۱ ساعت محتوای ویدیویی و حدود ۵۹ عنوان آموزشی متفاوت است. در ادامه، برخی از دورههای این مجموعه به طور مختصر معرفی شدهاند:
- فیلم آموزش برنامه نویسی پایتون Python – مقدماتی (طول مدت: ۱۹ ساعت و ۵۳ دقیقه، مدرس: پژمان اقبالی شمس آبادی): در این دوره آموزشی فرادرس، زبان برنامه نویسی پایتون از پایهترین مفاهیم تا اصول پیشرفته آن آموزش داده میشود و سعی شده است که همه مباحث مقدماتی مورد نیاز آن ارائه شود. برای مشاهده فیلم آموزش برنامه نویسی پایتون Python – مقدماتی + کلیک کنید.
- فیلم آموزش برنامه نویسی C++ سی پلاس پلاس (طول مدت: ۲۰ ساعت و ۱۴ دقیقه، مدرس: دکتر فرشید شیرافکن): در این فرادرس، زبان برنامه نویسیC++ در دو بخش آموزش داده شده است. برای مشاهده فیلم آموزش برنامه نویسی C++ سی پلاس پلاس + کلیک کنید.
- فیلم آموزش برنامه نویسی جاوا Java (طول مدت: 19 ساعت و 19 دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): این دوره آموزشی به دانشجویان و علاقهمندانی پیشنهاد میشود که قصد یادگیری زبان برنامه نویسی جاوا را به صورت جامع دارند. برای مشاهده فیلم آموزش برنامه نویسی جاوا Java + کلیک کنید.
- فیلم آموزش برنامه نویسی C (طول مدت: ۱۳ ساعت و ۳۰ دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): در این فرادرس، زبان برنامه نویسی C همراه با مفاهیم کاربردی آن به همراه مثالهای عملی آموزش داده شده است. برای مشاهده فیلم آموزش برنامه نویسی C + کلیک کنید.
- فیلم آموزش کاربردی برنامه نویسی سی شارپ #C (طول مدت: ۱۳ ساعت و ۵۸ دقیقه، مدرس: مهندس رشید شجاعی): در این دوره آموزشی، آموزندگان به صورت کاربردی و عملی با زبان سی شارپ و محیطهای Visual Studio و داتنت آشنا میشوند. برای مشاهده فیلم آموزش کاربردی برنامه نویسی سی شارپ #C + کلیک کنید.
- فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript (طول مدت: ۸ ساعت و ۴۵ دقیقه، مدرس: پوریا کهریزی): این دوره آموزشی به علاقهمندانی پیشنهاد شده است که قصد یادگیری زبان برنامه نویسی تایپ اسکریپت را از پایهترین مفاهیم آن دارند. تایپ اسکریپت دارای شباهتهای بسیاری با زبانهای سی شارپ و جاوا اسکریپت است. برای مشاهده فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript + کلیک کنید.
اکنون در ادامه مقاله «شرط در برنامه نویسی» و پس از معرفی برخی از دورههای آموزشی ویدیویی برنامه نویسی فرادرس، در بخش بعدی این مقاله به بررسی عبارت های if else تو در تو برای شرط در برنامه نویسی پرداخته میشود.
عبارت های if else تو در تو برای شرط در برنامه نویسی
if elseهای تو در تو زمانی مورد استفاده قرار میگیرند که برنامه به بیش از یک عبارت شرطی نیاز داشته باشد. به این نوع از عبارتهای شرطی «انتخاب چند طرفه» (Multi-Way Selection) نیز گفته میشود. زمانی که دنبالهای از تصمیمها در یک عبارت وجود داشته باشد، از دستور If else به شکل تو در تو استفاده خواهد شد. if elseهای تو در تو زمانی برای برنامه سودمند هستند که چندین منبع از عبارتها وجود داشته باشند و بر اساس مقدار خاصی، شرایط تو در تو بررسی شوند. در ادامه ساختار نحوی این نوع از عبارتهای If Else تو در تو با شبهکدی از زبان برنامه نویسی C ارائه شده است.
1if( expression )
2{
3 if( expression1 )
4 {
5 statement-block1;
6 }
7 else
8 {
9 statement-block 2;
10 }
11}
12else
13{
14 statement-block 3;
15}
به دلیل پیچیده بودن روش استفاده از این نوع عبارتها، توصیه میشود که به جای آن از if-else-if و switch استفاده شود. در بخش بعدی از مقاله «شرط در برنامه نویسی» به بررسی عبارتهای «if else if Ladder» یا «نردبان if else if» پرداخته شده است.
- مقاله پیشنهادی: گزاره های شرطی ساده و تودرتو در ++C — به زبان ساده
عبارت های نردبانی If else If برای شرط در برنامه نویسی
عبارت if else if Ladder یا همان نردبان If else If برای پیادهسازی یک کد از چندین شرط، مورد استفاده قرار میگیرد. همچنین این نوع از عبارتها به عنوان «تصمیم چند مسیره» (Multipath Decision) نیز شناخته میشوند. این نوع شرط در برنامه نویسی زنجیرهای از عبارتهای If else است که در آن هر عبارت if با عبارت if دیگری ارتباط دارد و آخرین عبارت، else خواهد بود. همچنین به این نکته نیز باید توجه شود که عبارتهای if else if Ladder در همه زبانهای برنامه نویسی مورد استفاده قرار نمیگیرند. در ادامه ساختار نحوی از آنها در زبان C ارائه شده است.
1if(condition1)
2{
3 //statements
4}
5else if(condition2)
6{
7 //statements
8}
9else if(condition3)
10{
11 //statements
12}
13else
14{
15 //statements
16}
فلوچارت زیر روش استفاده عبارت if else if Ladder را به صورت واضحتر شرح میدهد.
در بخش بعدی از مقاله «شرط در برنامه نویسی» به بررسی عبارت Switch برای شرط در برنامه نویسی پرداخته شده است.
عبارت Switch برای شرط در برنامه نویسی
switch نوع دیگری از عبارتهای شرطی در برخی از زبانهای برنامه نویسی به حساب میآید. این عبارت کدهایی تمیز با قابلیت خوانایی بالاتر از if ، else if وelseدر برنامهها به وجود میآورد. در عبارتهای سوئیچ، هر بلوک با کلمه کلیدیbreak خاتمه مییابد. عبارتها در switch به صورت موردی یا همانcase نوشته میشوند. میتوان گفت دستورswitch به عنوان جایگزینی برای if else if Ladder مورد استفاده قرار میگیرد. یک دستور switch شامل یک یا چند مورد است که در برابر آن تست میشوند. هنگامی که این عبارت با یکcase مطابقت دارد، دستورهای مرتبط با آن caseاجرا میشوند. ساختار نحوی کدهای دستورswitchدر زبان برنامه نویسی C به صورت زیر هستند:
1Switch (expression)
2{
3 case value1:
4 //Statements
5 break;
6 case value 2:
7 //Statements
8 break;
9 case value 3:
10 //Statements
11 case value n:
12 //Statements
13 break;
14 Default:
15 //Statements
16}
در فلوچارت زیر سعی شده است به طور واضحتر، روش عملکرد دستورswitchارائه شود.
برای درک بهتر نحوه استفاده از گزاره شرطی Switch، در ادامه به بررسی مثالی از زبان برنامه نویسی #C پرداخته شده است:
1int myDay = 4; // setting the value to test
2switch (myDay)
3{
4 case 1:
5 Console.WriteLine("Read in the Library");
6 break;
7 case 2:
8 Console.WriteLine("Read at Home");
9 break;
10 case 3:
11 Console.WriteLine("Read in the Garden");
12 break;
13 default:
14 Console.WriteLine("Get some Sleep");
15 break;
16}
در مثال فوق، هر کدام از موارد نوشته شده، تست خواهند شد و این کار تا زمانی ادامه دارد که یک مقدار درست یا همان true بازگردانده شود. پس از اجرای هر بوک از کدها، کلمه کلیدیbreak نوشته میشود. اگر همه موارد نادرست یا همانfalse باشند، بلوک پیشفرض یا همانdefault پیادهسازی میشود. بنابراین، در کدهای فوق، مقدار پیشفرض پیادهسازی خواهد شد؛ زیرا هیچ کدام از موارد اول، دوم و سوم درست نیستند. مقدار صحیح در این مثال فقط «myDay = 4» است. در بخش بعدی از مقاله «شرط در برنامه نویسی» به بررسی عملگرهای منطقی در عبارتهای شرطی پرداخته میشود.
- مقاله پیشنهادی: گزاره switch..case در ++C — راهنمای کاربردی
عملگرهای منطقی در عبارت های شرطی
اگر برنامه نویسی قصد استفاده از ifهای تو در تو را نداشته باشد، میتواند به جای آن از عملگرهای منطقی استفاده کند. برای استفاده از این نوع شرط در برنامه نویسی میتوان از عملگرهای منطقی AND و OR استفاده کرد که در فهرست زیر توضیحهای بیشتر پیرامون آنها ارائه شده است.
- عملگر AND با علامت && : این عملگر به برنامه نویس این امکانی را میدهد که دو یا چند عبارت را به صورت زنجیرهای به یکدیگر متصل کند و درستی یا نادرستی کل آنها را مورد بررسی قرار بدهد. استفاده از این عملگر در شرط به این معنا است که برای اجرای کدهای بلوک شرطی، همه شرطها باید برقرار باشند.
- عملگر OR با علامت || : این عملگر نیز امکان اتصال دو یا چند عبارت شرطی با یکدیگر را فراهم میکند و اگر یک یا چند عبارت از آنها درست باشد، کل زنجیره عبارتها درست در نظر گرفته میشوند. تفاوت این عملگر با AND در این است که در صورت برقرار بودن یکی از شرطها، کدهای داخل بلوک شرطی اجرا خواهند شد.
میتوان با استفاده از این دو عملگر و ترکیب عبارتهای شرطی، گزارههای شرطی سادهتر و خلاصهتری را در برنامه نویسی ایجاد کرد. در ادامه مثالی به زبان جاوا اسکریپت در این خصوص ارائه شده است:
1if ((x === 5 || y > 3 || z <= 10) && (loggedIn || userName === 'Steve')) {
2 // run the code
3}
در ادامه این بخش از مقاله «شرط در برنامه نویسی» به بررسی شرط در برنامه نویسی با زبان پایتون پرداخته میشود. همچنین، با استفاده از مثالهای آن، بخشهای گوناگون شرط توصیف شدهاند.
شرط در پایتون چگونه است؟
برای شروع شرح و بررسی شرط در زبان برنامه نویسی پایتون، کدهای ساده زیر در نظر گرفته میشوند:
1if <expr>:
2 <statement>
در عبارت فوق<expr> عبارتی به حساب میآید که دارای محتوای بولی است و<statement> عبارت اصلی شرط پایتون را نشان میدهد، همچنین در زبان پایتون این عبارت دارای تو رفتگی است. اگر عبارت<expr> درست باشد، آنگاه <statement> اجرا خواهد شد. اما اگر عبارت درست نبوده و به اصطلاح False باشد، گزاره شرطی اجرا نخواهد شد و برنامه از آن پرش خواهد کرد. به این نکته نیز باید توجه شود که همیشه بعد از عبارت نوشته شده مقابلif نیاز به استفاده از علامت «دو نقطه» (Colon) وجود دارد. حتی در برخی از زبانهای برنامه نویسی نیاز است که این عبارت داخل پرانتز قرار بگیرد ولی در زبان پایتون پرانتز نیاز نیست. در ادامه مثالهای زیادی از عبارتهای شرطی گوناگون در زبان پایتون ارائه شدهاند.
1>>> x = 0
2>>> y = 5
3
4>>> if x < y: # Truthy
5... print('yes')
6...
7yes
8>>> if y < x: # Falsy
9... print('yes')
10...
11
12>>> if x: # Falsy
13... print('yes')
14...
15>>> if y: # Truthy
16... print('yes')
17...
18yes
19
20>>> if x or y: # Truthy
21... print('yes')
22...
23yes
24>>> if x and y: # Falsy
25... print('yes')
26...
27
28>>> if 'aul' in 'grault': # Truthy
29... print('yes')
30...
31yes
32>>> if 'quux' in ['foo', 'bar', 'baz']: # Falsy
33... print('yes')
34...
در بخش بعدی از مقاله «شرط در برنامه نویسی» به شرح و بررسی گروهی از عبارتهای شرطی با استفاده از زبان برنامه نویسی پایتون پرداخته میشود.
گروهی از عبارت های شرطی در زبان برنامه نویسی پایتون
گاهی برای ارزیابی شرط در برنامه نویسی ، نیاز است بیش از یک شرط صحیح باشد. به این منظور، باید گروهی از عبارتهای شرطی تعریف شوند. جهت درک بهتر این موضوع، مثال زیر تعریف شده است:
«اگر هوا خوب باشد، پس؛
- میتوان چمنهای حیاط را کوتاه کرد.
- میتوان علفهای هرز باغ را حذف کرد.
- میتوان سگ را برای پیادهروی به بیرون برد.
در غیر این صورت؛ هیچ کدام از کارهای فوق انجام نمیشوند.»
رویکرد معمولی که توسط اکثر زبانهای برنامه نویسی انجام میشود، تعریف ساختار نحوی است که چندین دستور را در یک «دستور ترکیبی» (Compound Statement) یا بلوک گروهبندی میکند. یک بلوک از نظر نحوی به عنوان یک موجودیت واحد در نظر گرفته میشود. زمانی که در بلوک هدف، دستور if و عبارت <expr> درست باشد، آنگاه تمام دستورهای موجود در بلوک اجرا خواهند شد. اگر <expr> نادرست باشد، هیچ کدام از آنها پیادهسازی نمیشوند. تقریباً همه زبانهای برنامه نویسی قابلیت تعریف بلوکها را دارند، اما ساختار نحوی آنها با یکدیگر متفاوت هستند.
قانونی در زبانهای برنامه نویسی به نام قانون «آفساید» وجود دارد که توسط یک دانشمند علوم کامپیوتر انگلیسی به نام «Peter J. Landin» ایجاد شده است. این اصطلاح دقیقاً از همان قانون آفساید در فوتبال برگرفته شده است. این قانون بیان میکند که زبانهای برنامه نویسی که از بلوکها و «تورفتگیها» (Indentation) استفاده میکنند، از قانون آفساید پیروی کردهاند. پایتون یکی از زبانهای برنامه نویسی به حساب میآید که از این قانون در کدنویسی آن استفاده شده است. در زبان پایتون، مجموعهای از عبارتهای شرطی در یک بلوک به صورت زیر نوشته میشوند:
1if <expr>:
2 <statement>
3 <statement>
4 ...
5 <statement>
6<following_statement>
در کدهای فوق، همه عبارتهایی که دارای تورفتگی هستند، یک بلوک را نشان میدهند. در این مثال کل بلوک پیادهسازی میشود و اگر درست باشد، شرط انجام میشود، ولی اگر نادرست باشد شرط نادیده گرفته خواهد شد. در هر صورت پس از اجرای ادامه برنامه خط ششم کدهای فوق یعنی خط <following_statement> ادامه پیدا میکند. باید به این نکته در زبان پایتون توجه شود که هیچ نشانهای مبنی بر تمام شدن شرط در این زبان وجود و تنها نشانه پایان یافتن شرط، استفاده از تورفتگی است.
مثالی در ادامه برای درک بهتر بلوکها ارائه شده است:
1if 'foo' in ['bar', 'baz', 'qux']:
2 print('Expression was true')
3 print('Executing statement in suite')
4 print('...')
5 print('Done.')
6print('After conditional')
با پیادهسازی کدهای فوق، خروجی زیر نمایش داده میشود:
C:\Users\maryam\Documents>python foo.py
After conditional
در این مثال چهار دستور print() که دارای تورفتگی هستند، به عنوان یک بلوک در نظر گرفته میشوند. برای درست بودن شرایط باید این چهار عبارت درست باشند، اما چون اشتباه و نادرست هستند، از آنها عبور میشود و عبارت پس از دستور if پیادهسازی میشود. بلوکها را میتوان تا عمق دلخواهی به صورت تو در تو ایجاد کرد. هر تورفتگی یک بلوک جدید را تعریف میکند و به بلوک قبلی پایان میدهد. به این نوع از عبارتهای شرطی، «ifهای تو در تو» (Nested if) گفته میشود. در ادامه مثال پیچیدهتری برای این تورفتگیها به زبان پایتون ارائه شده است:
1# Does line execute? Yes No
2# --- --
3if 'foo' in ['foo', 'bar', 'baz']: # x
4 print('Outer condition is true') # x
5
6 if 10 > 20: # x
7 print('Inner condition 1') # x
8
9 print('Between inner conditions') # x
10
11 if 10 < 20: # x
12 print('Inner condition 2') # x
13
14 print('End of outer condition') # x
15print('After outer condition') # x
زمانی که کدهای فوق پیادهسازی میشوند، عبارتهای زیر در خروجی چاپ خواهند شد:
C:\Users\maryam\Documents>python blocks.py Outer condition is true Between inner conditions Inner condition 2 End of outer condition After outer condition
در بخش بعدی از مقاله «شرط در برنامه نویسی» به صورت کلی عبارتهای شرطی گروهی مورد بررسی قرار میگیرند.
عبارت های شرطی گروهی در برنامه نویسی
عبارتهای شرطی که به صورت گروهی تعریف میشوند در بخش قبلی و به وسیله زبان پایتون شرح داده شدند. در این بخش به بررسی این نوع از عبارتها و قانون آفساید در زبانهای برنامه نویسی دیگر پرداخته شده است. روشی که در بیشتر زبانهای برنامه نویسی مورد استفاده قرار میگیرد به این صورت است که از نشانههای خاصی برای شروع و پایان یک بلوک استفاده میشود. به عنوان مثال در زبان برنامه نویسی Perl، بلوکها در ({}) قرار میگیرند. در ادامه شبهکدی از این زبان برنامه نویسی ارائه شده است:
1# (This is Perl, not Python)
2if (<expr>) {
3 <statement>;
4 <statement>;
5 ...
6 <statement>;
7}
8<following_statement>;
در بسیاری از زبانهای برنامه نویسی دیگر از جمله C، جاوا و ++C نیز از روش فوق استفاده میشود.
در بخش بعدی مقاله «شرط در برنامه نویسی» عبارتهای if و else مورد بررسی قرار میگیرند.
عبارت های if و else در برنامه نویسی با زبان پایتون چیست؟
در بخشهای قبلی روشهای پیادهسازی if با عبارت یا گروهی از عبارتهای شرطی مورد بررسی قرار گرفت. در این بخش به بررسی بخش بعدی هر عبارت شرطی یعنی else در پایتون پرداخته شده است. گاهی اوقات در ارزیابی یک شرط، نیاز میشود در صورتی که شرط درست باشد برنامه یک وظیفه و در زمانی که شرط به صورت نادرست انجام شود، برنامه مسیر وظیفه دیگری را به عهده بگیرد. برای مثال کدهای پایتون زیر ارائه شده است:
1if <expr>:
2 <statement(s)>
3else:
4 <statement(s)>
اگر در کدهای فوق،<expr> درست باشد، اولین عبارت بعد ازif پیادهسازی میشود و از عبارت نوشته شده بعد از else میگذرد. همچنین اگر<expr> نادرست باشد، برنامه از روی عبارت بعد ازif میگذرد و عبارت بعد ازelse اجرا میشود. در هر صورت بعد از این شرطها ادامه اجرا پس از مرحله دوم انجام خواهد گرفت. در ادامه مثالی ارائه شده است که در این مثال، متغیر x مقداری کمتر از ۵۰ دارد، پس خط چهارم و پنجم برنامه پیادهسازی میشود و از خط هفتم و هشتم پرش انجام میشود.
1>>> x = 20
2
3>>> if x < 50:
4... print('(first suite)')
5... print('x is small')
6... else:
7... print('(second suite)')
8... print('x is large')
9...
10(first suite)
11x is small
در مثال بعدی ارائه شده، مقدار متغیر x از عدد ۵۰ بزرگتر است، بنابراین، برنامه از دو عبارت شرطی اولیه یعنی خط چهارم و پنجم میگذرد و خطهای هفتم و هشتم آن پیادهسازی میشوند.
1>>> x = 120
2>>>
3>>> if x < 50:
4... print('(first suite)')
5... print('x is small')
6... else:
7... print('(second suite)')
8... print('x is large')
9...
10(second suite)
11x is large
همچنین در اکثر زبانهای برنامه نویسی دستور دیگری برای اجرای انشعابهای بیشترif وجود دارد. برای استفاده از این روش، مثلاً در زبان برنامه نویسی پایتون از کلمهelif استفاده میشود. این کلمه مخفف عبارت Else If به حساب میآید که ممکن است در هر زبانی با کلمه متفاوتی نوشته شود. مثالی در ادامه برای درک بهتر این مفهوم ارائه شده است. در این مثال، پایتون هر عبارت<expr> را ارزیابی و مجموعه مربوط به اولین مورد درست را اجرا میکند. اگر هیچ یک از عبارتها درست نباشند و یک عبارتelse مشخص شده باشد، مجموعه آن اجرا میشود.
1if <expr>:
2 <statement(s)>
3elif <expr>:
4 <statement(s)>
5elif <expr>:
6 <statement(s)>
7 ...
8else:
9 <statement(s)>
میتوان به تعداد دلخواه و خاص مجموعههای elif تعریف کرد. به طور کلی، وجود یا عدم وجود بخش else اختیاری است. اما باید به این نکته توجه شود که این عبارت فقط میتواند یکی باشد و وجود چند عبارت else در یک ifامکانپذیر نیست. همچنین همیشه else در آخرین بخش از این کدها قرار میگیرد. در بخش بعدی از مقاله «شرط در برنامه نویسی» به بررسی و روش نوشتن عبارتهای شرطی در یک خط پرداخته شده است.
روش نوشتن عبارت if در یک خط چگونه است؟
میتوان برای نوشتن if در برخی از زبانها، از جمله پایتون، به جای استفاده از تورفتگی در نوشتن عبارتهای آن، عبارت را در یک خط و در مقابل if نوشت. ساختار نحوی این نوع از نوشتن if در ادامه نشان داده شده است.
1if <expr>: <statement>
حتی برای نوشتن شرط در برنامه نویسی با استفاده از این روش، میتوان از چندین عبارت شرطی نیز استفاده کرد و آنها را با استفاده از «نقطه ویرگول» به صورت زیر، از هم جدا کرد.
1if <expr>: <statement_1>; <statement_2>; ...; <statement_n>
در کدهای فوق، اگر <expr> درست باشد، عبارت اول یعنی <statement_1> پیادهسازی میشود، سپس عبارت دوم تا عبارت آخر صرف نظر از صحیح بودن یا نبودن شرط اصلی برنامه پیادهسازی میشوند. اگر شرط برنامه نادرست باشد، هیچ یک از عبارتهای شرطی پیادهسازی نخواهند شد. در ادامه مثالی برای درک بهتر این روش از نوشتن شرط در برنامه نویسی با استفاده از if در پایتون ارائه شده است.
1>>> if 'f' in 'foo': print('1'); print('2'); print('3')
2...
31
42
53
6>>> if 'z' in 'foo': print('1'); print('2'); print('3')
7...
همانطور که در کدهای فوق مشخص است، در شرط اول حرف f در کلمه foo قرار دارد، بنابراین هر سه عبارت شرطی پس از آن پیادهسازی خواهند شد. در شرط دوم حرف z در کلمه foo وجود ندارد، پس هیچ یک از عبارتهای شرطی مقابل آن پیادهسازی نخواهند شد. در بخش بعدی به بررسی عبارتهای شرطی بولی یا همان عملگرهای سهگانه پایتون پرداخته شده است.
عبارت های شرطی بولی در پایتون چیست؟
زبان برنامه نویسی پایتون و برخی از زبانهای دیگر از یک موجودیت تصمیمگیری بیشتر به نام عبارتهای شرطی بولی نیز پشتیبانی میکنند. از این روش به عنوان یک «عملگر شرطی» (Conditional Operator) یا «عملگر سهگانه» (Ternary Operator) یاد میشود. در کدهای ساده زیر، روش استفاده و ساختار نحوی عبارتهای شرطی بولی یا همان عملگر سهگانه در پایتون نمایش داده شده است:
1<expr1> if <conditional_expr> else <expr2>
این روش اندکی با دستورهای شرطی قبلی شرح داده شده در این مقاله متفاوت است. زیرا دارای یک ساختار کنترلی نیست که اجرای برنامه را هدایت کند. این روش بیشتر شبیه به یک عملگر است که عبارتی را تعریف میکند. در عبارت فوق، ابتدا<conditional_expr> ارزیابی میشود و در صورتی که درست باشد، عبارت<expr1> پیادهسازی خواهد شد و اگر این شرط نادرست باشد، عبارت پس ازelse یعنی<expr2> پیادهسازی میشود.
در این نوع از عبارتها باید به ترتیب پیادهسازیهای عبارتهای شرطی توجه کرد. همانطور که مشخص است، ابتدا عبارت میانی اجرا میشود، سپس یکی از عبارتهای اطراف آن اجرا خواهد شد و پس از آن عبارت طرف دیگر پیادهسازی میشود. در ادامه مثالی برای بررسی این روش ارائه شده است.
1>>> raining = False
2>>> print("Let's go to the", 'beach' if not raining else 'library')
3Let's go to the beach
4>>> raining = True
5>>> print("Let's go to the", 'beach' if not raining else 'library')
6Let's go to the library
7
8>>> age = 12
9>>> s = 'minor' if age < 21 else 'adult'
10>>> s
11'minor'
در کدهای فوق سه مثال ارائه شده است. در مثال اول «باران باریدن» (raining = False) عملی نادرست (False) به حساب میآید و چون «باران نباریده است» (if not raining)، عبارت «رفتن به ساحل» (Let's go to the beach) اجرا میشود و برنامه از روی عبارت «رفتن به کتابخانه» (Let's go to the library) میپرد. در مثال بعدی «باران باریدن» (raining = True) عمل درستی (True) در نظر گرفته میشود و چون شرط «اگر باران نبارد» (if not raining) به حساب میآید ولی باران باریده است، عبارت پس از else یعنی «رفتن به کتابخانه» (Let's go to the library) پیادهسازی میشود و اولین عبارت مثال، اجرا نمیشود.
در مثال بعدی، مقدار متغیر «سن» (age) با عدد ۱۲ تعریف شده است و شرط برنامه «کوچکتر بودن مقدار متغیر age از ۲۱» یا در واقع، age<21 در نظر گرفته میشود. بنابراین چون age کوچکتر از ۲۱ است، پس در خروجی عبارت اول یعنی «minor» چاپ میشود و عبارت پس از else نادیده گرفته خواهد شد.
یکی از زمینههای متداول استفاده از این رویکرد، استفاده از آن در عملگرهای انتسابی است. برای مثال میتوان بین دو عدد بزرگترین آنها را با استفاده از شرط در برنامه نویسی پیدا کرد. با اینکه زبانی مانند پایتون برای این گونه از وظایف دارای تابعهای داخلی از جمله max() است، اما با این حال گاهی نیاز است که چنین محاسباتی به صورت دستی انجام شوند. در ادامه مثالی با روش ساده ساختار if برای درک بهتر این موضوع ارائه شده است:
1>>> if a > b:
2... m = a
3... else:
4... m = b
اگر برای نوشتن همین مثال فوق از عبارتهای شرطی بولی استفاده شود، مثال به صورت زیر نوشته میشود:
1>>> m = a if a > b else b
بخش بعدی از مقاله «شرط در برنامه نویسی» به بررسی اولویت عبارتهای شرطی در یک برنامه اختصاص داده میشود.
اولویت عبارت های شرطی در برنامه نویسی چگونه است؟
عبارتهای شرطی رفتاری مانند عبارتهای دیگر دارند. به همین دلیل میتوان گفت که در میان عملگرها کمترین اولویت به عبارت شرطی تعلق میگیرد. همچنین، برای گروهبندی آنها استفاده از پرانتز پیشنهاد میشود. در مثالی که در ادامه ارائه شده است، ابتدا عملگرهای + ارزیابی میشوند زیرا اولویتی بالاتر از عبارتهای شرطی دارند. به عبارت دیگر، ابتدا 1 + x و y + 2 محاسبه میشوند و سپس شرط مورد بررسی قرار میگیرد. با محاسبه این دو مورد، مقدار متغیر x بزرگتر از y نیست و به همین دلیل عدد ۴۲ که پاسخ عبارت پس از else است در خروجی چاپ میشود.
1>>> x = y = 40
2
3>>> z = 1 + x if x > y else y + 2
4>>> z
542
6
7>>> z = (1 + x) if x > y else (y + 2)
8>>> z
942
اگر هدف این است که ابتدا عبارت شرطی محاسبه شود، باید این عبارت داخل پرانتز قرار بگیرد تا پرانتز اولویت آن را افزایش دهد. در این حالت پاسخ عبارت داخل پرانتز عدد ۴۰ است و سپس این عدد، با عدد ۱ و ۲ در اطراف پرانتز جمع میشود. کدهای مربوط به این مثال در ادامه ارائه شدهاند:
1>>> x = y = 40
2
3>>> z = 1 + (x if x > y else y) + 2
4>>> z
543
جمعبندی
شرط در برنامه نویسی یکی از مفاهیم بسیار مهم و کاربردی به حساب میآید. برنامه نویسها و توسعه دهندگان برای نشان دادن حالتهای گوناگون عبارتها، درستی و غلطی آنها و سایر موارد دیگر از شرط در برنامه نویسی استفاده میکنند. بدون یادگیری این مفهوم شاید برنامه نویسی مهارت سختی به نظر برسد، زیرا برای نوشتن برخی از بخشهای برنامه، ایدههایی که وجود دارند تنها بر اساس شرط در برنامه نویسی قابل توسعه هستند. در این مقاله سعی شد تا حد امکان مفاهیم و انواع گوناگون شرط در برنامه نویسی مورد بررسی قرار بگیرد و به نحوی ساده بیان شوند.
همچنین در مثالهای آن، از کدهای زبانیهای برنامه نویسی از جمله C، جاوا اسکریپت، #C و سایر موارد استفاده شد. در نهایت نیز بررسی کاملتری از شرط در برنامه نویسی پایتون انجام شد. در این مقاله برای یادگیری بیشتر و بهتر برنامه نویسی و شرط در آن، آموزش برخی از زبانهای برنامه نویسی نیز برای علاقهمندان و دانشجویان معرفی شدند.