کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش ساختارهای تصمیم گیری در C++

آموزش ساختارهای تصمیم گیری (دستورهای شرطی) در ++C

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

در زیر شکل کلی جریان یا روند اجرای برنامه در ساختارهای تصمیم گیری را مشاهده می کنید:


آموزش c++

++C از ساختارهای تصمیم گیری زیر پشتیبانی می کند.


شرح
دستور شرطی
دستور if از یک عبارت بولی به همراه یک یا چند دستور دیگر تشکیل می شود.
if دستور
می توان پس از دستور if، یک دستور else نیز ذکر کرد که در صورت صحیح نبودن شرط یا عبارت بولی if، اجرا شود.
if...else دستور
یک دستور switch به برنامه امکان می دهد تا مقدار متغیری را از لحاظ برابری با لیستی از مقادیر دیگر مقایسه کند. این ساختار چند انتخابی به توسعه دهنده امکان می دهد تا بر اساس مقدار ثابت متغیر، چندین انتخاب داشته باشد.
ساختار چند انتخابی
switch
می توان یک دستور if یا else if را داخل بدنه ی if یا else if دیگر قرار دهد.
دستورهای if تودرتو
می توان یک دستور switch را داخل دستور switch دیگر قرار داد که به آن دستورهای تودرتو (nested) می گویند.
دستورهای switch تودرتو

عملگر :?

همان طور که در مباحث قبلی شرح دادیم، عملگر ? : یک عبارت شرطی تعریف می کند و می تواند جایگزین if…else در کدنویسی شود. شکل کلی آن به صورت زیر می باشد:


Exp1 ? Exp2 : Exp3;

در این ساختار دستوری Exp1، Exp2 و Exp3 عبارت های شرطی هستند. همان طور که می بینید قبل از عبارت سوم از عملگر دو نقطه استفاده شده است.

ساختار فوق به این صورت پردازش می شود که اول عبارت Exp1 ارزیابی شده و صحت آن بررسی می شود. چنانچه عبارت اول صحیح بود، Exp2 ارزیابی شده و مقدار آن، نتیجه ی کل عبارت فوق محسوب می شود. چنانچه Exp1 صحیح نبود، آنگاه Exp3 ارزیابی شده و مقدار آن نتیجه ی کل عبارت فوق قلمداد می شود.

در زیر نمونه های کاربردی از دستورهای نام برده را به تفصیل شرح می دهیم.


دستور شرطی if

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

نحوه ی استفاده از دستور شرطی if در زبان C++ به شرح زیر می باشد:


if(boolean_expression) {
   // statement(s) will execute if the boolean expression is true
}

در صورتی که عبارت بولی صحیح بوده و نتیجه ی ارزیابی true شد، در آن صورت قطعه کد داخل if اجرا می شود. اگر عبارت بولی برابر false شد، اولین مجموعه دستور پس از ساختمان if (پس از کاراکتر "}")

اجرا خواهد شد.


آموزش c++
مثال:
#include 
using namespace std;
int main () {
   // local variable declaration:
   int a = 10;
   // check the boolean condition
   if( a < 20 ) {
      // if condition is true then print the following
      cout << "a is less than 20;" << endl;
   }	
   cout << "value of a is : " << a << endl;
   return 0;
}

خروجی قطعه کد فوق به صورت زیر می باشد:


a is less than 20;
value of a is : 10

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

می توان پس از دستور if یک دستور else نیز استفاده کرد که در صورت برقرار نبودن شرط اول، عبارت شرطی دستور else اجرا شود.

نحوه ی استفاده از دستور 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
}

اگر عبارت بولی موجود در if نتیجه ی صحیح داد (برابر true بوده و صادق باشد)، آنگاه دستور موجود در قطعه کد if اجرا می شود و در غیر این صورت کد موجود در بدنه ی else اجرا خواهد شد.

نمودار جریان و روند اجرای برنامه

آموزش c++
مثال:
#include 
using namespace std;
int main () {
   // local variable declaration:
   int a = 100;
   // check the boolean condition
   if( a < 20 ) {
      // if condition is true then print the following
      cout << "a is less than 20;" << endl;
   }else {
      // if condition is false then print the following
      cout << "a is not less than 20;" << endl;
   }	
   cout << "value of a is : " << a << endl;
   return 0;
}

خروجی:
a is not less than 20;
value of a is : 100

دستور if…else if…else

می توان پس از دستور if، یک دستور شرطی (اختیاری) if…else if…else نیز استفاده کرد. با استفاده از از دستورهای if…else منفرد پشت سرهم، می توان شرطهای مختلف را ارزیابی و صحت درستی آن ها را بررسی کرد.

به هنگام استفاده از if، else if و else لازم است به نکات زیر توجه داشته باشید:


  • یک if می تواند 0 یا 1 دستور شرطی else داشته باشد. همچنین این دستور else بایستی بعد از if متعلق به else قرار گیرد.
  • یک if می تواند 0 چندین else if داشته باشد.این دستورات else if باید قبل از esle خالی درج شوند.
  • زمانی که دستور 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.
}

مثال:
#include 
using namespace std;
int main () {
   // local variable declaration:
   int a = 100;
   // check the boolean condition
   if( a == 10 ) {
      // if condition is true then print the following
      cout << "Value of a is 10" << endl;
   } else if( a == 20 ) {
      // if else if condition is true
      cout << "Value of a is 20" << endl;
   } else if( a == 30 ) {
      // if else if condition is true 
      cout << "Value of a is 30" << endl;
   }else {
      // if none of the conditions is true
      cout << "Value of a is not matching" << endl;
   }
   cout << "Exact value of a is : " << a << endl;
   return 0;
}

خروجی:
Value of a is not matching
Exact value of a is : 100

دستور چند انتخابی switch

ساختار شرطی switch این امکان را فراهم می کند تا بر اساس مقدار یک متغیر ثابت از میان چندین گزینه (پس از مقایسه ی آن با لیستی از مقادیر) یکی را انتخاب کند. در ساختار switch به هر مقدار یک case گفته می شود و مقدار متغیر موجود در پرانتز switch، به ترتیب با این مقادیر تطبیق داده شود و با هر یک همخوانی داشت، دستور آن را اجرا می نماید. به عبارت دیگر، توسعه دهنده قادر است با استفاده از دستور switch مقدار یک متغیر واحد را با لیستی از مقادیر مقایسه کند و با هر یک که منطبق بود، دستور موجود در آن case را اجرا کند.

نحوه ی استفاده از ساختار چند انتخابی switch در ++C به شرح زیر می باشد:


switch(expression){
   case constant-expression  :
      statement(s);
      break; //optional
   case constant-expression  :
      statement(s);
      break; //optional
   // you can have any number of case statements.
   default : //Optional
      statement(s);
}

قوانین زیر باید در استفاده از دستور switch رعایت شوند:


  • عبارت بکار رفته در دستور switch باید یک نوع عدد صحیح (integral)، شمارشی (enumerated) یا از جنس یک کلاس که حاوی تابع تبدیل به نوع عدد صحیح یا شمارشی هست، باشد.
  • می توانید n تا دستور case داخل ساختمان switch داشته باشید. هر case شامل یک مقدار است که عبارت switch با آن مقایسه شده و پس از case یک دو نقطه قرار دارد.
  • زمانی که متغیر داخل پرانتز switch برابر یا منطبق با مقداری باشد، دستورات پس از آن case اجرا می شوند تا اینکه اجرا به دستور break برسد.
  • زمانی که اجرا به دستور break می رسد، اجرای ساختار switch پایان یافته، روند یا کنترل اجرا به خط بعدی ساختمان switch منتقل (می پرد) می شود.
  • لازم نیست تمامی case ها در خود دستور break را داشته باشند. چنانچه دستور break وجود نداشته باشد، اجرا به case های بعدی ادامه می یابد تا اینکه برنامه به یک دستور break رسیده و برنامه به دستور بعدی ساختمان switch برسد.
  • توسعه دهنده می تواند در بدنه ی switch خود یک دستور اختیاری به نام default case داشته باشد. این دستور در انتهای ساختمان درج و زمانی استفاده می شود که عبارت switch با هیچ یک از گزینه ها منطبق نباشد. آنگاه عملیات تعریف شده در default اجرا خواهد شد.

نمودار جریان اجرای برنامه در ساختمان switch
آموزش c++
مثال:
#include 
using namespace std;
int main () {
   // local variable declaration:
   char grade = 'D';
   switch(grade) {
      case 'A' :
         cout << "Excellent!" << endl; 
         break;
      case 'B' :
      case 'C' :
         cout << "Well done" << endl;
         break;
      case 'D' :
         cout << "You passed" << endl;
         break;
      case 'F' :
         cout << "Better try again" << endl;
         break;
      default :
        cout << "Invalid grade" << endl;
   }	
   cout << "Your grade is " << grade << endl;
   return 0;
}

خروجی زیر را بدست می دهد:
You passed
Your grade is D

دستورات if تودرتو (nested if statements)

همچنین این امکان وجود دارد که دستورات if-else را داخل بدنه ی هم قرار داد، بدین معنی که توسعه دهنده می تواند یک دستور if یا else if را داخل یک if یا else if دیگر بگنجاند.
نحوه ی تعریف if های تودرتو به شرح زیر می باشد:


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

در صورت نیاز می توان دستور else if…else را نیز همانند if داخل هم قرار داده و به اصطلاح تودرتو کرد.


مثال:
#include 
using namespace std;
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   // check the boolean condition
   if( a == 100 ) {
      // if condition is true then check the following
      if( b == 200 ) {
         // if condition is true then print the following
         cout << "Value of a is 100 and b is 200" << endl;
      }
   }
   cout << "Exact value of a is : " << a << endl;
   cout << "Exact value of b is : " << b << endl;
   return 0;
}

خروجی کد به صورت زیر می باشد:
Value of a is 100 and b is 200
Exact value of a is : 100
Exact value of b is : 200

دستورات switch تودرتو (nested switch statements)

می توان یک switch را داخل بدنه ی یک switch دیگر تعریف کرد. حتی اگر ثوابت (مقادیر case ها) ساختمان هر دو switch یکسان باشد، هیچ تداخلی رخ نخواهد داد.

++C این اجازه را به توسعه دهنده می دهد تا دستورات switch را تا عمق 256 به صورت تودرتو تعریف کند (256 nesting levels).

نحوه ی تعریف switch تودرتو به شرح زیر می باشد:


switch(ch1) {
   case 'A': 
      cout << "This A is part of outer switch";
      switch(ch2) {
         case 'A':
            cout << "This A is part of inner switch";
            break;
         case 'B': // ...
      }
      break;
   case 'B': // ...
}

مثال:
#include 
using namespace std;
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   switch(a) {
      case 100: 
         cout << "This is part of outer switch" << endl;
         switch(b) {
            case 200:
               cout << "This is part of inner switch" << endl;
         }
   }	
   cout << "Exact value of a is : " << a << endl;
   cout << "Exact value of b is : " << b << endl;
   return 0;
}

نتیجه ی زیر حاصل می شود:
This is part of outer switch
This is part of inner switch
Exact value of a is : 100
Exact value of b is : 200

1396/04/08 4591 1270
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...