در این مقاله، ما قصد داریم در مورد عبارتهای شرطی در #C صحبت کنیم. ما یاد میگیریم که چطور عبارتهای شرطی ساده، تو در تو و عبارتهای شرطی چندگانه بنویسیم.
این مقاله، سرفصلی از دوره آموزشی زیر میباشد:
- راه اندازی محیط توسعه
- Data Type ها، Declaration ها و تعریف متغیرها در #C
- عملگرها در #c
- تبدیل نوع های داده ای
- ورودی و خروجی در #c
- کار با رشته ها
- شرطها در #c
- حلقه ها (While، Do-While، For)
- مدیریت خطاها
- Access Modifier ها
- متدها
- کلمات کلیدی Ref و Out
- بازگشت و متدهای بازگشتی
- آرایه ها (آرایه های تک بعدی و چند بعدی)
- کار با فایلها، StreamWriter و StreamReader
- کار با فایلها، File و Directory
اگر می خواهید محتویات کامل این دوره را ببینید ، می توانید بر روی لینک مبانی #c کلیک کنید.
اگر میخواهید سورس مثالها را دانلود کنید اینجا کلیک کنید.
شروع کنیم.
عبارتهای شرطی پایه
اگر میخواهیم که در صورت صحیح بودن تعدادی از شرطها، دستوراتی را اجرا کنیم باید از عبارتهای شرطی استفاده کنیم. برای نوشتن همچین عبارت شرطی باید از کلمات if و else استفاده کنیم.
ما یک عبارت شرطی را به صورت زیر مینویسیم:
1 2 3 4 5 6 7 8 |
if (condition) { < expression1 > ; } else { < expression2 > ; } |
این شرط، یک عبارت منطقی است که نتیجه آن true یا false میباشد. اگر نتیجه true باشد، <expression1> در غیر اینصورت <expression2> اجرا میشود. بعد از هر expression، ما باید علامت ; را قرار دهیم.
ما میتوانیم expression های بیشتری را اجرا کنیم در صورتی که شرط true یا false باشد:
1 2 3 4 5 6 7 8 9 10 |
if (condition) { < expression1 > ; < expression2 > ; } else { < expression3 > ; < expression4 > ; } |
مثال 1: یک برنامه بنویسید که از بین دو عدد صحیح، عدد بزرگتر را تعیین کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
class Program { static void Main(string[] args) { Console.WriteLine("Enter the first number: "); int first = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter the second number: "); int second = Convert.ToInt32(Console.ReadLine()); if(first > second) { Console.WriteLine($"The greater number is {first}"); } else { Console.WriteLine($"The greater number is {second}"); } Console.ReadKey(); } } |

ما مجبور نیستیم فقط از کلمات if و else در عبارتهای شرطی استفاده کنیم، ما میتوانیم شرط دیگری را با اضافه کردن بلاک else if اضافه کنیم.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
if(condition1) { < expression 1 > ; } else if(condition 2) { < expression 2 > ; } else if(condition n) { <expression n> } else { < expression k > ; } |
مثال 2: برنامه ای بنویسید که یک رشته را به همراه رنگ فونت (r برای رنگ قرمز، g برای رنگ سبز و o برای دیگر رنگها) به عنوان ورودی بگیرد. سپس آن رشته باید با رنگ فونت انتخاب شده چاپ گردد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class Program { static void Main(string[] args) { Console.WriteLine("Enter your random string: "); string sentence = Console.ReadLine(); Console.WriteLine("Choose your color: r for Red, g for Green, o for Other"); char color = Convert.ToChar(Console.ReadLine()); if(color == 'r') { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(sentence); } else if(color == 'g') { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(sentence); } else { Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine(sentence); } Console.ReadKey(); } } |

عبارتهای شرطی تو در تو
در #C ما میتوانیم در صورتی نیاز در پروژه، یک عبارت شرطی را داخل عبارت شرطی دیگری بنویسیم. بنابراین، سینتکس آن به صورت زیر میباشد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
if (condition) { if (condition2) { < expression1 > ; } else { < expression2 > ; } } else { < expression3 > ; } |
اگرچه ما میتوانیم از عبارتهای شرطی تودرتو استفاده کنیم اما خیلی آنها را توصیه نمیکنیم، زیرا آن منجربه خوانایی کم در برنامه میشود.
مثال 3: یک برنامه بنویسید که کاربر عددی را بین 1 تا 100 وارد کند.اگر عدد کمتر از 50 باشد، برنامه آن عدد را در 5 ضرب نماید. اما اگر عدد بزرگتر از 50 بود، در صورتی که عدد مورد نظر زوج بود آن را در 2 ضرب نموده اما اگر فرد بود آن را در 3 ضرب نماید و نتیجه را چاپ کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
class Program { static void Main(string[] args) { Console.WriteLine("Enter your number: "); int number = Convert.ToInt32(Console.ReadLine()); if (number > 50) { if(number % 2 == 0) //reminder in division with two for even numbers is always a zero. { Console.WriteLine(number * 2); } else { Console.WriteLine(number * 3); } } else { Console.WriteLine(number * 5); } Console.ReadKey(); } } |

عبارت های Switch-Case
در موقعیتهایی که ما به بیشتر از یک یا دو شرط برای اجرای تعدادی expression نیاز داریم، استفاده از فرآیند چند شاخه ای میتواند یک مزیت به حساب بیاید. برای استفاده از فرآیند چند شاخه ای در #C،ما باید از کلمات switch
و case
استفاده کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (expression) { case value1: <expression 1> ; break; case value2: <expression 2> ; break; default: < expression3>; break; } |
مثال 4: یک برنامه بنویسید که عدد مربوط به ماه مورد نظر را بگیرد و تعداد روزهای آن ماه را چاپ کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
static void Main(string[] args) { Console.WriteLine("Enter the month number from 1 to 12"); int month = Convert.ToInt32(Console.ReadLine()); switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: Console.WriteLine("Number of days is 31"); break; case 4: case 6: case 9: case 11: Console.WriteLine("Number of days is 30"); break; case 2: Console.WriteLine("Number of days is 28 or 29"); break; default: Console.WriteLine("Your number is not between 1 and 12"); break; } Console.ReadKey(); } |

نتیجه گیری
بسیار عالی.
ما بابدست آوردن دانش مربوط به شرطها می توانیم ساختارهای شرطی را در کد خود ایجاد کنیم و بر اساس درست یا نادرست بودن شرایط تصمیم گیری کنیم.
در مرحله بعد از این سری آموزش، ما در مورد حلقه ها در #C صحبت میکنیم.