در برنامه هرگاه بخواهیم در شرایط ویژه ای برخی از دستورات اجرا شوند و برخی دیگر اجرا نشوند از ساختارهای تصمیم استفاده می کنیم.

  • ساختار if :

با استفاده از ساختار if، شرطی را کنترل می کنیم. اگر شرط جلوی if درست باشد دستورات آن اجرا خواهد شد، در غیر اینصورت دستورات درون else اجرا خواهند شد .

توجه کنید که فقط و فقط یا دستورات if اجرا می شود و یا دستورات else و هرگز این دو با هم اجرا نمی شوند.

if ( عبارت شرطی )  
{
    Line Command 1;
    Line Command 2;
    Line Command n;
}

در ادامه به بررسی حالات مختلفی در بکارگیری دستور if در C++ می پردازیم :


1
2
3
4
 
int num = 5;

if ( num == 10 )  
    cout << "num is equal 10" ;

در کد برنامه نویسی بالا می بینیم که num برابر 5 است، بنابراین شرط if نادرست است و دستور مربوط به آن چاپ نمی شود.


1
2
3
4
5
6
7
 
int num = 10;

if ( num == 10 ) 
{ 
    cout << "num is :" ;
    cout << num ;
}
num is :10                                  
                                    

در کد برنامه نویسی بالا چون دستورات مربوط به if از یک سطر بیشتر است آنها را در بلوک آکولاد قرار دادیم. می بینیم که این بار مقدار num برابر با شرط است، در نتیجه دستورات مربوط به if اجرا می شوند.

نکته مهم اینجاست که برای بررسی تساوی از == استفاده کردیم و دلیل آن این است که این عملگر یک عملگر رابطه ای است و در بررسی شروط باید از عملگرهای رابطه ای استفاده کنیم .


1
2
3
4
5
6
7
8
9
10
11
12
 
int num = 5;

if ( num == 10 ) 
{ 
    cout << "num is :" ;
    cout << num ;
}
else
{
    cout << "num is not 10 % is :" ;
    cout << num ;
}
num is not 10 and is :5                                 

در کد برنامه نویسی بالا چون num برابر با 10 نیست پس دستورات درون else اجرا می شود .

مطالب قبلی دربرگیرنده 2 حالت از بررسی شرط if بودند، اما گاهی اوقات لازم است که ما حالات بیشتری را بررسی نماییم که در اینصورت از else if بهره می گیریم .


1
2
3
4
5
6
 
if ( num > 0 ) 
    cout << "num is positive ";
else if ( num < 0)
    cout << "num is negative ";
else
    cout << "num is 0 ";

 

  • ساختار switch :

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

switch ( عبارت شرطی )  
{
    case  مقدار 1 :
         command block 1;
         break;

    case  مقدار 2 :
         command block 2;
         break;
         .
         .
         .
    default
        command block n

}

به بررسی مثالی در C++ می پردازیم :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
int x = 2 ;

switch ( x )  
{
    case 1:
         cout << X is : "One" ;
         break;

    case 2:
         cout << X is : "Two" ;
         break;
         
    default :
        cout << X is : "is not One or Two" ;
}
X is : Two                              

در کد برنامه نویسی بالا متغیر x از نوع عدد صحیح تعریف شده است و مقدار اولیه 2 گرفته است. می خواهیم اگر 1 یا 2 باشد مقدار حروفی عدد را در خروجی نمایش دهیم و در غیر اینصورت خروجی نشان دهد که x نه 1 است نه 2 .

برای این منظور متغیر x را در جلوی switch میاوریم تا به برنامه بگوییم که قصد بررسی x را داریم، سپس در مقابل هر case مقادیر مورد انتظار خود را می نویسیم. در نهایت متغیر در یکی از case ها قرار می گیرد و دستورات مربوط به آن اجرا می شود و با رسیدن به عبارت break برنامه از switch خارج می شود .

عبارت default مواردی که خارج از موارد مورد انتظار ماست را در بر می گیرد و همان کار else در if را انجام خواهد داد .


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
30
 
int garde = 15 ;

switch ( grade )  
{
    case 20:
    case 19:
        cout << "A" ;
    break;

    case 18:
    case 17:
         cout << "B" ;
    break;

    case 16:
    case 15:
    case 14:
         cout << "C" ;
    break;

    case 13:
    case 12:
    case 11:
    case 10:
         cout << "D" ;
    break;

    default :
        cout << "Reprobate " ;
}
 C

کد برنامه نویسی بالا معدل دانش آموزی را گرفته و با توجه به معدل به او رتبه می دهد. توجه کنید که بعضی از case های موجود خالی از دستورند و علت آن اینست که دستورات برای تمامی آنها مشترک است، مثلا اگر معدل 20 یا 19 باشد رتبه دانش آموزش A خواهد بود و به همین ترتیب تا آخر .

با توجه به اینکه معدل دانش آموز در این مثال 15 است پس به او رتبه C نسبت داده شده و در خروجی چاپ می شود .

  • عملگر ؟

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

variable = ( condition ) ? true : false;

1
2
 
int X = 10;
int Y = (X < 9) ? 100 : 200;

منظور از دستور بالا اینست که اگر X کوچکتر از 9 است Y را برابر با 100 بگیر، در غیر اینصورت آنرا برابر 200 قرار بده. در واقع ساختار تصمیم عملگر ؟ برابر با ساختار تصمیم if else است .


1
2
3
4
5
6
 
int X = 10;

if (X < 9)
    int Y = 100;
else
    Y = 200;

پس اگر عبارت قبل از ؟ درست باشد، دستور بعد از آن فقط اجرا شده و اگر شرط نادرست باشد عبارت بعد از : اجرا می شود .