دستورات کنترلی سی شارپ
در بخش سوم دوره آموزش سی شارپ قصد بررسی دستورات کنترلی زبان برنامه نویسی سی شارپ مانند: 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 بدین شکل است:
1 2 3 4 5 6 7 8 | if (شرط) { // دستورات } else { // دستورات } |
در اینجا شرط یک عبارت بولی (true یا false) است.
اگر شرط شامل مقدار true باشد، آنگاه دستور۱ اجرا میشود.
اگر شرط شامل مقدار false باشد در اینصورت دستور۱ اجرا نمیشود و دستور۲ اجرا میشود.
به نمونه ی زیر دقت کنید:
1 2 3 4 5 6 7 8 | if (x < y) { z=x*y; } else { z= x-y; } |
توجه:
در دستورات داخل if و while و for و … زمانی که بدنه شامل یک خط باشد نیاز به {} ندارید ولی در اینجا برای خوانایی بیشتر از آنها استفاده می کنیم .
نکته:
استفاده از {} در آینده باعث راحت تر شدن امر توسعه نرم افزار می شود .
نکته:
دستور شرطی if می تواند در داخل بدنه ی خود هیچ دستوری نداشته باشد و خالی باشد .
دستورهای if تو در تو یا Nested ifs:
if تودرتو، if ای است که در قسمت statement یک if یا else دیگر قرار دارد.
به نمونهی زیر دقت کنید:
1 2 3 4 5 6 7 | if (i < 10) { if (i == 5) { Console.WriteLine("HelloWorld ...!!"); } } |
همانطور که میبینید، یک if در درون if دیگری واقع شده است.
اگر if اول شامل مقدار true باشد، کامپایلر وارد بلاک آن شده که با if دیگری مواجه میشود.
اگر if دوم هم شامل مقدار true باشد، استرینگ مربوطه نمایش داده میشود.
در غیر اینصورت هیچ خروجی چاپ نمیشود.
نکته اصلی که در مورد Nested ifs باید بهخاطر بسپارید این است که، عبارت else همیشه مربوط به نزدیکترین if بالای خودش است که هر دو آنها در یک بلاک هستند.
به نمونهی زیر دقت کنید:
1 2 3 4 5 6 7 | 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 دار:
اگر شما به یک مقایسهی پیچیدهتر نیاز داشته باشید، میتوانید چندین شرط را چک کنید.
این روش که به روش نردبانی معروف است، یکی از رایجترین روشها در برنامهنویسی است.
فرم کلی آن بهشکل زیر است:
1 2 3 4 5 6 7 8 9 10 11 | 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 را میتوانید در زیر ببینید:
1 2 3 4 | for(initialization; condition; iteration) { statement sequence } |
در قسمت initialization (مقدار دهی اولیه) معمولاً متغیری قرار داده میشود که شمارنده حلقه است (counter).
در قسمت condition یک عبارت شرطی قرار میگیرد که مشخص میکند حلقه به چه تعداد باید تکرار شود.
در قسمت iteration مقدار شمارنده حلقه را در هربار که حلقه تکرار میشود را به میزان مشخص شده تغییر میی دهد.
توجه داشته باشید که این سه قسمت (initialization و condition و iteration) باید حتماً توسط سمیکالن از هم جدا شوند.
حلقهی for تا زمانیکه مقدار condition برابر با true است تکرار شده و به محض اینکه condition برابر با false شد برنامه از حلقه خارج میشود.
به مثال زیر توجه کنید:
1 2 3 4 5 6 | int i; for (i = 0; i < 12; i++) { Console.WriteLine(i); } for (int x = 300; x > -300; x -= 10) |
حلقهی while:
حلقهی while تا شرط برقرار باشد دستورات را تکرار می کند.
فرم کلی حلقهی while بهشکل زیر است:
1 2 3 4 | while (Condition) { دستورات } |
در قسمت condition شرط حلقه بررسی میشود تا زمانی که مقدار condition برابر با true است قسمت statement اجرا میشود.
به مثال زیر که قبلاً آن را با استفاده از حلقهی for انجام دادیم توجه کنید:
1 2 3 4 5 6 | int i = 2; while (i < 21) { Console.WriteLine(i); i++; } |
حلقه ی do-while:
برخلاف حلقهی for و while که شرط در بالای حلقه بررسی میشد، در do-while شرط در پایین حلقه بررسی میشود.
بههمین دلیل، این حلقه همیشه حداقل یکبار اجرا میشود.
فرم کلی آن به شکل زیر است:
1 2 3 4 | do { statements; } while (condition); |
در این حلقه نیز تا زمانیکه conditon برابر با true است، statement اجرا میشود.
البته قبل از اینکه برنامه به condition برسد statement یکبار اجرا میشود.
به مثال زیر توجه کنید:
خروجی و عملکرد این برنامه همانند مثال قبلی در حلقهی while است با این تفاوت که شرط در پایین حلقه چک میشود.
1 2 3 4 5 6 | int number = 20; int limit = 60; do { number++; } while (number <= limit); |
خب حالا برای اینکه با موارد بالا بیشتر آشنا شوید چند مورد تمرین برای شما قرار داده ایم که می توانید آنها را حل کنید.
تمرین:
- یک if بنویسید که بتواند محتوای متغیر x که ۵ می باشد نام روز هفته را چاپ کند.(با تغییر عدد ۵ نام روز هفته تغییر کند؛مقدار x باید بین ۱ تا ۷ باشد.)
- با استفاده از حلقهی for برنامهای بنویسید که اعداد زوج ۰ تا ۲۰۰ را چاپ کند.
- با استفاده از حلقهی for برنامهای بنویسید که اعداد ۰ تا ۲۰۰ را از انتها تا ابتدا چاپ کند.
- با استفاده از حلقهی for برنامهای بنویسید که اعداد فرد ۰ تا ۲۰۰ را چاپ کند.
- با استفاده از حلقهی while برنامهای بنویسید که مضارب ۵ اعداد ۰ تا ۵۰۰۰ را چاپ کند.
برای استفاده از تمامی جلسات از هشتگ #دوره آموزشی_سی_شارپ در سایت ما استفاده کنید.
منتظر جلسه ی بعدی دوره آموزشی سی شارپ باشید.
موفق و پیروز باشید.
سلام
بسیار عالی بود
برای تدریس استفاده کردن
لطف دارید.
لطفا از دیگر نوشته های ما نیز بازدید کنید.