استفاده از جملات شرطی برای کنترل جریان برنامه

در هنگام برنامه‌نویسی، مواقعی به وجود می‌آید که نیاز داریم قطعه کدهایی را براساس شرط‌های خاصی اجرا کنیم و بقیۀ کد‌ها اجرا نشوند، یعنی در صورت درستی یک شرط یک قطعه کد اجرا شود و در غیر این صورت آن قطعه کد اجرا نشود. همان‌طور که احتمالاً متوجه شدید نتیجۀ این شرط‌ها درست یا نادرست بودن را نشان می‌دهد، یعنی خروجی آن‌ها از نوع bool است، پس باید برای بررسی درست یا نادرست بودن با عبارات true یا false مقایسه شوند. در این فصل با جملات شرطی که برای همین کار هستند، آشنا می‌شویم.

اعمال شرط با استفاده از if

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

if (شرط)
{
در صورتی که شرط برقرار باشد،  
کد(هایی) که در این قسمت نوشته شده است را اجرا کن

برای مثال می‌خواهیم قطعه کدی بنویسیم که اگر سن شخصی به نام "بیل" از من بیشتر بود، متنی را در کنسول بنویسد:

int myAge = 38;
int billAge = 67;
bool isOlderThanMe = myAge < billAge;
if(isOlderThanMe == true)
{
    Console.WriteLine("Bill is Older Than Me");
}

  1. قطعه کدی بنویسید که اگر مقدار یک عدد صحیح بزرگ‌تر از 0 بود عبارت "Number is Positive" را در کنسول بنویسد

تصمیم گیری دوگانه با استفاده ازif-else

بعضی مواقع هم می‌خواهیم بگوییم اگر شرطی برقرار بود، کد(های) خاصی اجرا شود و اگر شرط برقرار نبود کد(های) دیگری اجرا شوند. به‌راحتی با استفاده از if-else می‌توانیم این کار را انجام دهیم:

if(شرط)
{
در صورتی‌که شرط برقرار باشد، 
کد(هایی) که در این قسمت نوشته شده است را اجرا کن
}
else
{
در صورتی‌که شرط برقرار نباشد، 
کد(هایی) که در این قسمت نوشته شده است را اجرا کن
}

برای مثال اگر سن شخصی به نام "بیل" از من بیشتر بود عبارت "Bill is Older Than Me" را بنویسد و در غیر این صورت عبارت "I am Older Than Bill" را بنویسد.

int myAge = 38;
int billAge = 67;
bool isOlderThanMe = myAge < billAge;
if(isOlderThanMe == true)
{
    Console.WriteLine("Bill is Older Than Me");
}
else
{
    Console.WriteLine("I am Older Than Bill");
}

  1. قطعه کدی بنویسید که اگر مقدار یک عدد صحیح بزرگ‌تر از 0 بود عبارت "Number is Positive" را در کنسول بنویسد و در غیر این صورت عبارت “Number is Not Positive. It is Negative”  را در کنسول بنویسد.

  2. قطعه کدی بنویسید که اگر شخص مرد بود عبارت "He is a Man" را در کنسول بنویسد و در غیر این صورت عبارت  "She is a Woman" را بنویسد. (راهنمایی: ابتدا یک متغیر از نوع bool تعریف کنید مثلاً isWoman و مقداری را به آن تخصیص دهید، مثلاً آن را برابر با true کنید و سپس با if تمرین را حل کنید)

  3. قطعه کدی بنویسید که اگر نمره دانش آموز بیشتر از 10 بود عبارت "موفقیت در امتحان" را در کنسول بنویسد و در غیر این صورت عبارت "نیاز به امتحان مجدد" را بنویسد. (راهنمایی: نمره دانش آموز را می توان به صورت عدد صحیح یا عدد اعشاری در نظر گرفت و سپس مقداری را به آن تخصیص دهید)

تصمیم گیری پیچیده تر با استفاده از if-else-if

بعضی وقت‌ها هم شرط‌های زیادی داریم که براساس آن‌ها کد(های) خاصی باید اجرا شود، که به‌راحتی با استفاده از if-else-if می‌توانیم این کار را انجام دهیم:

if(شرط اول)
{
در صورتی‌که شرط اول برقرار باشد، 
کد(هایی) که در این قسمت نوشته شده است را اجرا کن
}
else if(شرط دوم)
{
در صورتی‌که شرط دوم برقرار باشد، 
کد(هایی) که در این قسمت نوشته شده است را اجرا کن
}
else if(شرط سوم)
{
در صورتی‌که شرط سوم برقرار باشد، 
کد(هایی) که در این قسمت نوشته شده است را اجرا کن
}
به هر تعداد شرط که می‌خواهیم می‌‌توانیم اضافه کنیم.
else
{
در صورتی‌که هیچ کدام از شرط‌های‌‌بالا برقرار نباشد، کد(هایی) که در این قسمت نوشته شده است را اجرا کن
}

برای مثال می‌توانیم براساس تعداد چرخ‌های یک وسیلۀ نقلیه نوع آن را حدس بزنیم و در کنسول نمایش دهیم. در خط اول لینک صفحۀ وب مربوط به این داده‌ها به‌صورت کامنت نمایش داده شده است.

//https://en.wikipedia.org/wiki/List_of_land_vehicles_types_by_number_of_wheels
int wheelCount = 4;
if(wheelCount == 1)
{
    Console.WriteLine("Vehicle Can be Unicycle");
}
else if(wheelCount == 2)
{
    Console.WriteLine("Vehicle Can be Bicycle");
}
else if(wheelCount == 3)
{
    Console.WriteLine("Vehicle Can be Tricycle");
}
else if(wheelCount == 4)
{
    Console.WriteLine("Vehicle Can be AutoMobile");
}
else
{
    Console.WriteLine("I can not Guess");
}

در این قطعه کد اگر تعداد چرخ 1 باشد، در کنسول می‌نویسیم که وسیلۀ نقلیه می‌تواند یک تک‌چرخ باشد، اگر 2 باشد می‌نویسیم که وسیلۀ نقلیه می‌تواند یک دوچرخه باشد، و همین‌طور تا 4 چرخ. در قسمت آخر با استفاده از else گفتیم در صورتی ‌که هیچ‌یک از این موارد نبود، متن "I can not Guess" نمایش داده شود.

  1. قطعه کدی بنویسید که اگر بازیکن در یک بازی کامپیوتری در مرحلۀ اول است عبارت "Level number is 1 " نمایش داده شود، اگر در مرحلۀ 8 است عبارت  "Current Level is near last level" نمایش داده شود، اگر در مرحلۀ 10 است عبارت "You are in Last Level نمایش داده شود و در غیر این صورت عبارت "Playing…" نمایش داده شود.

  2. قطعه کدی بنویسید که اگر سبد خرید خالی است (تعداد آیتم‌های موجود در سبد خرید 0 است) عبارت "Empty ShoppingCart نمایش داده شود، اگر تعداد آیتم‌های موجود در سبد خرید بیش از 10 تاست عبارت "Lots of Items" نمایش داده شود، و در غیر این صورت عبارت "Normal ShoppingCart" نمایش داده شود.

  3. قطعه کدی بنویسید که اگر مقدار یک عدد صحیح کوچک‌تر از 0 بود عبارت Number is Negative" را در کنسول بنویسد و در غیر این صورت اگر باقیمانده بر 2 برابر با صفر بود، عبارت "Number is Even" را بنویسد و در غیر این صورت عبارت "Number is Odd" را بنویسد.

نحوه ارزیابی در if-else و if-else-if

در if-else و if-else-if شرط‌ها به همان ترتیبی که در کد نوشته شده‌اند، چک می‌شوند و بعد از بررسی هر شرط در صورتی ‌که نتیجۀ شرط برابر true باشد (شرط درست باشد)، کد(های) آن شرط اجرا می‌شود و بقیۀ شرط‌ها چک نمی‌شوند.

  1. در قطعه کد زیر چه عبارتی در کنسول نمایش داده می‌شود

     

    int itemCount = 10;
    if(itemCount > 10)
    {
     Console.WriteLine("Item Count is Greater Than 10");
    }
    else if(itemCount > 5)
    {
     Console.WriteLine("Item Count is Greater Than 5");
    }
    else if(itemCount > 0)
    {
     Console.WriteLine("Item Count is Greater Than 0");
    }
    else
    {
     Console.WriteLine("Item Count is Less Than 0");
    }
     

     

ساده سازی انتخاب ها با استفاده از switch

در صورتی ‌که تمام شرط‌ها مقایسه برابری یک متغیر با مقادیر مختلف باشند، می‌توانیم از سوئیچ (Switch) استفاده کنیم که به‌صورت زیر است:

 switch(متغیر)
 {
  case مقدار_اول:
در صورتی‌که مقدار متغیر، برابر مقدار اول باشد، 
کد(هایی) که در این قسمت نوشته شده است را اجرا کن
  break;

  case مقدار_دوم:
در صورتی‌که مقدار متغیر، برابر مقدار دوم باشد، 
کد(هایی) که در این قسمت نوشته شده است را اجرا کن
  break;

  case مقدار_سوم:
در صورتی‌که مقدار متغیر، برابر مقدار سوم باشد، 
کد(هایی) که در این قسمت نوشته شده است را اجرا کن
  break;
  
به هر تعداد شرط که می‌خواهیم می‌توانیم اضافه کنیم.
  
  default:
در صورتی‌که مقدار متغیر، هیچ کدام از مقادیر بالا نباشد، 
کد(هایی) که در این قسمت نوشته شده است را اجرا کن
  break;
 }

می‌توانیم قطعه کد حدس وسیلۀ نقلیه براساس تعداد چرخ‌ها را به‌صورت زیر بازنویسی کنیم:

//https://en.wikipedia.org/wiki/List_of_land_vehicles_types_by_number_of_wheels

int wheelCount = 4;
switch(wheelCount)
{
    case 1:
    Console.WriteLine("Vehicle Can be Unicycle");
    break;

    case 2:
    Console.WriteLine("Vehicle Can be Bicycle");
    break;

    case 3:
    Console.WriteLine("Vehicle Can be Tricycle");
    break;

    case 4:
    Console.WriteLine("Vehicle Can be AutoMobile");
    break;

    default:
    Console.WriteLine("I can not Guess");
    break;
}

به عبارت break; که در انتهای هر case آمده است، دقت کنید.

default در switch

بخش default اختیاری است. دستورات داخل default در صورتی اجرا می‌شوند که مقدار متغیر با هیچ‌یک از مقادیر مشخص‌شده در case‌ها برابر نباشد. لزومی ندارد که این بخش حتماً آخرین بخش switch باشد، اما معمولاً به‌عنوان آخرین بخش نوشته می‌شود.

از default در تمام دستورات switch استفاده کنید.

  1. قطعه کدی بنویسید که یک متغیر از نوع عدد صحیح را با اعداد 1 تا 12 مقایسه کند و نام ماه متناظر با آن عدد را در کنسول نمایش دهد. مثلاً 1 یعنی فروردین، 2 یعنی اردیبهشت، و به همین ترتیب.