دستورات کنترلی سی شارپ
در بخش سوم دوره آموزش سی شارپ قصد بررسی دستورات کنترلی زبان برنامهنویسی سی شارپ مانند: ifها، forها، whileها و … را داریم.
دستورات کنترلی در سی شارپ
حتما قبل از بررسی دستورات کنترلی در سی شارپ نوشته ی مطالب قبلی این دورهی آموزشی را با هشتگ #دوره آموزشی_سی_شارپ در سایت ما را مطالعه کنید.
روند کنترلی و منطق برنامه، از مهمترین قسمتهای رفتار پویای یک زبان برنامه نویسی است. برای کنترل قسمتهایی از کد، سی شارپ دستورهای مخصوصی را فراهم کرده است تا برنامه نویس بتواند کنترل و منطق برنامه را در دست بگیرد.
سه دسته بندی برای Program Control Statement وجود دارد:
- Selection Statements
- Iteration Statements
- Jump Statements
بخش Selection Statements شامل if و switch است و همینطور که از اسم آن مشخص است. در صورت داشتن شروط لازم عمل selection (انتخاب) را انجام میدهد. Iteration Statements شامل حلقههای do-while، while، for و foreach هستند و عملیات تکرار (iteration) را انجام میدهند. Jump Statements هم شامل return، goto continue، break و throw است.
بررسی دستور شرطی if
اگر بخواهیم بخشی از یک برنامه درصورت رخ دادن یک شرط اجرا شود با استفاده از دستور شرطی if آنرا اجرا میکنیم.
فرم کلی دستور if بدین شکل است:
if (شرط) { // دستورات } else { // دستورات }
در اینجا شرط یک عبارت بولی (true یا false) است. اگر شرط شامل مقدار true باشد، آنگاه دستور۱ اجرا میشود. اگر شرط شامل مقدار false باشد در اینصورت دستور ۱ اجرا نمیشود و دستور ۲ اجرا میشود.
به نمونه ی زیر دقت کنید:
if (x < y) { z=x*y; } else { z= x-y; }
توجه: در دستورات داخل if و while و for و … زمانی که بدنه شامل یک خط باشد نیاز به {} ندارید ولی در اینجا برای خوانایی بیشتر از آنها استفاده میکنیم.
نکته: استفاده از {} در آینده باعث راحتتر شدن امر توسعه نرمافزار میشود.
نکته: دستور شرطی if میتواند در داخل بدنهی خود هیچ دستوری نداشته باشد و خالی باشد.
دستورهای if تو در تو یا Nested ifs
if تودرتو، if ای است که در قسمت statement یک if یا else دیگر قرار دارد.
به نمونهی زیر دقت کنید:
if (i < 10) { if (i == 5) { Console.WriteLine("HelloWorld ...!!"); } }
همانطور که میبینید، یک if در درون if دیگری واقع شده است. اگر if اول شامل مقدار true باشد، کامپایلر وارد بلاک آن شده که با if دیگری مواجه میشود. اگر if دوم هم شامل مقدار true باشد، استرینگ مربوطه نمایش داده میشود. در غیر اینصورت هیچ خروجی چاپ نمیشود. نکته اصلی که در مورد Nested ifs باید بهخاطر بسپارید این است که، عبارت else همیشه مربوط به نزدیکترین if بالای خودش است که هر دو آنها در یک بلاک هستند.
به نمونهی زیر دقت کنید:
if (i == 10) { if (j < 10) a = b; if (k > 50) c = d; else a = c; // this else refers to if(k > 50) } else a = d; // this else refers to if(i == 1)
شرط های چند بخشی یا else if دار
اگر شما به یک مقایسهی پیچیدهتر نیاز داشته باشید، میتوانید چندین شرط را چک کنید. این روش که به روش نردبانی معروف است، یکی از رایجترین روشها در برنامهنویسی است.
فرم کلی آن بهشکل زیر است:
if(condition) statement; else if(condition) statement; else if(condition) statement; . . . else statement;
در این مدل، condition ها از بالا به پایین چک میشوند و به محض اینکه یک condition با مقدار true پیدا شد. statement مربوط به آن اجرا میشود و بقیهی این ساختار نردبانی نادیده گرفته میشود. اگر هیچیک از condition ها درست نبود، عبارت else پایانی اجرا میشود. else پایانی غالباً بهعنوان condition پیشفرض عمل میکند. هرگاه که همهی condition ها شامل مقدار false باشند، else پایانی اجرا میشود. اگر else پایانی را قرار ندهید و همهی condition ها مقدار false داشته باشند، آنگاه هیچ اتفاقی نمیافتد. حالا که دستور شرطی if را به طور کامل آموختید میتوانید از این دستور در ساختار برنامه های خود استفاده کنید. ضمنا از اینکه مثال های ما کم می باشد دلگیر نشوید.
حلقه ها در سی شارپ
در برنامهنویسی همیشه مواردی پیش میآید که نیاز است یک بخش از کد چندین مرتبه اجرا و یککار بهصورت مکرر چندین مرتبه انجام شود. برای این منظور باید از حلقهها استفاده کرد.
حلقه ی for
حلقه for به تعداد مشخحصی دستورات را تکرار میکند.
شکل و فرم کلی حلقهی for را میتوانید در زیر ببینید:
for(initialization; condition; iteration) { statement sequence }
در قسمت initialization (مقدار دهی اولیه) معمولاً متغیری قرار داده میشود که شمارنده حلقه است(counter). در قسمت condition یک عبارت شرطی قرار میگیرد که مشخص میکند حلقه به چه تعداد باید تکرار شود. در قسمت iteration مقدار شمارنده حلقه را در هربار که حلقه تکرار میشود را به میزان مشخص شده تغییر میدهد. توجه داشته باشید که این سه قسمت (initialization و condition و iteration) باید حتماً توسط سمیکالن از هم جدا شوند. حلقهی for تا زمانی که مقدار condition برابر با true است تکرار شده و به محض اینکه condition برابر با false شد برنامه از حلقه خارج میشود.
به مثال زیر توجه کنید:
int i; for (i = 0; i < 12; i++) { Console.WriteLine(i); } for (int x = 300; x > -300; x -= 10)
حلقهی while
حلقهی while تا شرط برقرار باشد دستورات را تکرار میکند.
فرم کلی حلقهی while بهشکل زیر است:
while (Condition) { دستورات }
در قسمت condition شرط حلقه بررسی میشود تا زمانی که مقدار condition برابر با true است قسمت statement اجرا میشود. به مثال زیر که قبلاً آن را با استفاده از حلقهی for انجام دادیم توجه کنید:
int i = 2; while (i < 21) { Console.WriteLine(i); i++; }
حلقه ی do-while
برخلاف حلقهی for و while که شرط در بالای حلقه بررسی میشد، در do-while شرط در پایین حلقه بررسی میشود. بههمین دلیل، این حلقه همیشه حداقل یکبار اجرا میشود.
فرم کلی آن به شکل زیر است:
do { statements; } while (condition);
در این حلقه نیز تا زمانیکه conditon برابر با true است، statement اجرا میشود. البته قبل از اینکه برنامه به condition برسد statement یکبار اجرا میشود.
به مثال زیر توجه کنید:
خروجی و عمل کرد این برنامه همانند مثال قبلی در حلقهی while است با این تفاوت که شرط در پایین حلقه چک میشود.
int number = 20; int limit = 60; do { number++; } while (number <= limit);
خب حالا برای اینکه با موارد بالا بیشتر آشنا شوید چند مورد تمرین برای شما قرار دادهایم که میتوانید آنها را حل کنید.
تمرین:
- یک if بنویسید که بتواند محتوای متغیر x که ۵ است نام روز هفته را چاپ کند. (با تغییر عدد ۵ نام روز هفته تغییر کند؛ مقدار x بین ۱ تا ۷ است.)
- با استفاده از حلقهی for برنامهای بنویسید که اعداد زوج ۰ تا ۲۰۰ را چاپ کند.
- با استفاده از حلقهی for برنامهای بنویسید که اعداد ۰ تا ۲۰۰ را از انتها تا ابتدا چاپ کند.
- با استفاده از حلقهی for برنامهای بنویسید که اعداد فرد ۰ تا ۲۰۰ را چاپ کند.
- با استفاده از حلقهی while برنامهای بنویسید که مضارب ۵ اعداد ۰ تا ۵۰۰۰ را چاپ کند.
برای استفاده از تمامی جلسات از هشتگ #دوره آموزشی_سی_شارپ در سایت ما استفاده کنید.
منتظر جلسهی بعدی دوره آموزشی سی شارپ بمانید.
سلام
بسيار عالي بود
براي تدريس استفاده کردن
لطف دارید.
لطفا از دیگر نوشته های ما نیز بازدید کنید.