شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش مبانی برنامه نویسی - تصمیم گیری

تصمیم گیری برای برنامه نویسی کامپیوتری بسیار حائز اهمیت است. در بسیاری از مواقع، دو یا چند گزینه به شما داده می شود و شما باید یکی از گزینه ها را بر اساس شرایط داده شده انتخاب کنید. به عنوان مثال، ما می خواهیم بر اساس نمرات امتحانی دانش آموز، یک نظر درباره او چاپ کنیم. موقعیت به شرح زیر است:

Assume given marks are x for a student:

If given marks are more than 95, then
Student is brilliant

If given marks are less than 30, then
Student is poor

If given marks are less than 95 and more than 30, then
Student is average

حال سوال این است که چگونه برای مدیریت چنین موقعیتی، یک کد برنامه نویسی بنویسیم. تقریباً همه زبان های برنامه نویسی دستور های شرطی را فراهم می کنند که بر اساس شکل زیر عمل می کنند −

بیانیه های تصمیم گیری در زبان C

بیایید با کمک دستور های شرطی if، یک برنامه C برای تبدیل موقعیت فوق به یک کد برنامه نویسی بنویسیم −

#include <stdio.h>

int main() {
   int x = 45;
   
   if( x > 95) {
	
      printf( "Student is brilliant\n");
   }
   if( x < 30) {
	
      printf( "Student is poor\n");
   }
   if( x < 95 && x > 30 ) {
	
      printf( "Student is average\n");
   }
}

زمانی که برنامه فوق اجرا می شود، نتیجه زیر را تولید می کند −

Student is average

برنامه فوق از دستور های شرطی if استفاده می کند. در اینجا، اولین دستور if بررسی می کند که آیا شرط داده شده یعنی متغیر x بزرگتر از ۹۵ است یا خیر و اگر شرط را درست بیابد، بدنه شرطی وارد می شود تا برنامه های داده شده را اجرا کند. در اینجا ما فقط یک دستور printf() برای چاپ یک نظر در مورد دانش آموز داریم.

به طور مشابه، دومین دستور if نیز کار می کند. در نهایت، سومین دستور if اجرا می شود، در اینجا ما دو شرط زیر را داریم −

  • شرط اول x > ۹۵ است

  • شرط دوم x < ۳۰ است

کامپیوتر هر دو شرط داده شده را ارزیابی می کند و سپس نتیجه کلی با کمک اپراتور باینری && ترکیب می شود. اگر نتیجه نهایی درست باشد، دستور شرطی اجرا خواهد شد، در غیر این صورت هیچ دستور ای اجرا نخواهد شد.

این آموزش به شما یک ایده پایه ای از انواع مختلف اگر if و مقدمه ای در مورد دستورات سوییچ switch در زبان برنامه نویسی C ارائه می دهد. زبان های برنامه نویسی مختلف انواع مختلفی از دستورات تصمیم گیری را فراهم می کنند، اما مفهوم پایه آن همان است که در این آموزش توضیح داده شده است.

دستور شرطی if...else

یک دستور if می تواند توسط یک دستور اختیاری else دنبال شود که زمانی اجرا می شود که دستور منطقی false باشد. نحو دستوری if...else در زبان برنامه نویسی C به صورت زیر است −

if(boolean_expression) {
   
   /* Statement(s) will execute if the boolean expression is true */
} else {
  
  /* Statement(s) will execute if the boolean expression is false */
}

این نحوهٔ نوشتن کد به صورت دیاگرام زیر نشان داده می‌شود −

C if...else statement

یک دستورٔ if...else زمانی کاربردی است که می‌خواهیم از بین دو گزینه یکی را انتخاب کنیم. به عنوان مثال، اگر یک دانش‌آموز بیش از ۹۵ نمره بگیرد، او ممتاز است، در غیر این صورت ما نمی‌توانیم چنین موقعیتی را کد کنیم، به شرح زیر −

#include <stdio.h>

int main() {
   int x = 45;
   
   if( x > 95) {
	
      printf( "Student is brilliant\n");
   } else {
      printf( "Student is not brilliant\n");
   }
}

هنگامی که برنامه فوق الذکر اجرا می‌شود، نتیجه زیر تولید می‌شود −

Student is not brilliant

دستور if...elseif...else

یک دستور if می‌تواند توسط یک دستور اختیاری else if...else دنبال شود که برای آزمایش شرایط مختلف بسیار مفید است.

در حین استفاده از دستورات if، else if، else، چند نکته را باید در نظر داشت:

  • یک if می‌تواند صفر یا یک else داشته باشد و باید پس از یک else if قرار گیرد.

  • یک if می‌تواند صفر تا بیشترین تعداد else…if را داشته باشد و باید قبل از else قرار گیرد.

  • هنگامی که یک else…if موفق باشد، هیچ یک از else…if های باقی‌مانده یا else ها بررسی نخواهد شد.

ساختار دستور if...else if...else در زبان برنامه‌نویسی C به شرح زیر است −

if(boolean_expression 1) {

   /* Executes when the boolean expression 1 is true */
}
else if( boolean_expression 2) {

   /* Executes when the boolean expression 2 is true */
}
else if( boolean_expression 3) {

   /* Executes when the boolean expression 3 is true */
} else {
   
   /* Executes when the none of the above condition is true */
}

اکنون با کمک دستور if...elseif...else، می‌توان برنامه اولیه را به صورت زیر کد نویسی کرد −

#include <stdio.h>

int main() {
   int x = 45;
   
   if( x > 95) {
      printf( "Student is brilliant\n");
   } 
   else if( x < 30) {
      printf( "Student is poor\n");
   } 
   else if( x < 95 && x > 30 ) {
      printf( "Student is average\n");
   }
}

هنگام اجرای برنامه فوق، نتیجه زیر تولید می شود −

Student is average

دستور Switch

یک دستور جایگزین برای دستور if می‌باشد که به متغیری اجازه می‌دهد برابری آن با لیستی از مقادیر را تست کنیم. هر مقدار به عنوان یک case شناخته می‌شود و متغیری که بر اساس آن سوئیچ شده است برای هر case ارزیابی می‌شود. این دستور دارای نحو زیر می‌باشد:

switch(expression){
   case ONE :
      statement(s);
      break;
   case TWO:
      statement(s);
      break;
   ......
   
   default :
      statement(s);
}

دستور (expression) استفاده شده در دستور switch باید یک مقدار صحیح را بدهد که با مقادیر مختلفی که در قسمت case ها داده شده‌اند، برای برابری مورد بررسی قرار می‌گیرد. هر جایی که مقدار یک دستور با مقدار یک case مطابقت داشت، بدنه آن case اجرا خواهد شد و در نهایت دستور switch با استفاده از دستور break پایان خواهد یافت. اگر دستورات break ارائه نشود، کامپیوتر به ادامه اجرای دستورات موجود در زیر case مطابقتی ادامه خواهد داد. اگر هیچ یک از case ها مطابقت نداشت، بدنه case پیش‌فرض اجرا خواهد شد.

قالب بالا می‌تواند به صورت یک نمودار جریان به شکل زیر نمایش داده شود −

Switch Statement in C

حال، فرض کنید می‌خواهیم برای یک عدد داده شده، کلمه معادل آن به انگلیسی را نوشته شود. این کار به شکل زیر قابل برنامه‌ریزی است −

#include <stdio.h>

int main() {
   int x = 2;
   
   switch( x ){
      case 1 :
         printf( "One\n");
         break;
      case 2 :
         printf( "Two\n");
         break;
      case 3 :
         printf( "Three\n");
         break;
      case 4 :
         printf( "Four\n");
         break;
      default :
         printf( "None of the above...\n");
   }
}

وقتی برنامه بالا اجرا می‌شود، نتیجه زیر را به دنبال دارد −

Two

تصمیم‌گیری در جاوا

در ادامه، برنامه معادلی که در زبان جاوا نوشته شده است و نیز پشتیبانی از دستورات if، if...else، if...elseif...else، و switch را دارد، آورده شده است.

شما می‌توانید تلاش کنید برنامه زیر را اجرا کنید تا خروجی آن را ببینید، که باید با نتیجه تولید شده توسط مثال بالا در زبان سی یکی باشد.

public class DemoJava {
   public static void main(String []args) {
      int x = 45;
   
      if( x > 95) {
         System.out.println( "Student is brilliant");
      } 
      else if( x < 30) {
         System.out.println( "Student is poor");
      } 
      else if( x < 95 && x > 30 ) {
         System.out.println( "Student is average");
      }
   }
}

هنگامی که برنامه فوق اجرا می شود، نتیجه زیر را تولید می کند −

Student is average

تصمیم‌ها در پایتون

برنامه معادل زیر به زبان پایتون نوشته شده است. پایتون از دستورات if، if...else، if...elif...else، و switch پشتیبانی می کند. در اینجا باید توجه داشت که پایتون از پرانتز داخلی برای بدنه شرط استفاده نمی‌کند، به جای آن با استفاده از فاصله‌گذاری بین دستورات، بلوک را شناسایی می‌کند.

شما می‌توانید سعی کنید برنامه زیر را اجرا کنید تا خروجی را ببینید −

x = 45

if x > 95:
   print "Student is brilliant"
elif x < 30:
   print "Student is poor"
elif x < 95 and x > 30:
   print "Student is average"

print "The end"

زمانی که برنامه بالا اجرا می‌شود، خروجی زیر را تولید می‌کند −

Student is average
The end