گاهی در برنامه باید تصمیم‌گیری کنیم، یعنی تحت شرایطی گروهی از دستورها اجرا شوند و گروهی دیگر اجرا نشوند، که در این صورت از **ساختار شرطی** استفاده می‌کنیم. ساختار شرطی یکی از ساختارهای زبان ++C (سی‌پلاس‌پلاس) است که یاد گرفتن آن برای برنامه‌نویسی ضروری است.

دستور if
--------

یک دستور شرطی ساده است که اگر شرط‌ها درست بودند، برنامه اجرا می‌شود.

دستور if-else
-------------

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

فلوچارت دستور شرطی if-else

```
                                     ((if (condition(s
                                    statement1 }
                                             .
                                            .  
                                             .
                                  ;statementN
                                                                        {
```

دستور if-else-if
----------------

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

فلوچارت دستور شرطی if-else-if

```
                               ((if(condition(s 
                            ;statement
                            ((ifelse(condition(s
                            ;statement       .
                                       .                 .
                                       .                 .
                                       .
                         ((ifelse(condition(s
                            ;statement
                                                   else
                            ;statement
```

ساختارswitch
------------

ساختار تصمیم گیری دیگری است که در آن فقط عمل مقایسه تساوی صورت می‌گیرد. 
نکات:

1. عبارت داخل پرانتز ارزیابی می‌شود و مقدار آن به ترتیب با مقدار عبارت هر کدام از case‌ها مقایسه می‌شود و اگر با مقدار عبارت case اول برابر بود دستورهای آن case فقط اجرا می‌شود و با اجرای دستور break از ساختار switch خارج می‌شود.
2. اگر عبارت داخل پرانتز با مقدار عبارت case برقرار نبود با مقدار عبارت caseبعدی عمل مقایسه می‌شود واگر باهیچ کدام از caseها برابر نبود دستورهای قسمت default اجرا می‌شوند.
3. فلوچارت دستور شرطی switchمقدار عبارات (exp) فقط از نوع int (داده صحیح) یا char (داده کاراکتری) است و اگر در یک case از دستور break استفاده نشود case بعدی هم اجرا می‌شود. فرم کلی **ساختارswitch** :

```
                                   (switch(exp  
                                            }                                           
                                 : <case<exp1
                       ;statement1
                                 .
                                 .
                                 .
                      ;statementN
                           ;break
                                 :<case<exp2
                      ;statement2
                                 .
                                .   
                                 .
                     ;statementN
                           ;break
                                 : <case<expN 
                     ;statement1
                                 .
                                 .
                                 .
                    ;statementN
                         ;break
                                           :default
                    ;statement1
                                 .
                                 .
                                 .
       { ;statementN
```

**دستور break:** این دستور موجب خروج از حلقه‌های تکرار می‌شود. اگر چند حلقه تودرتو وجود داشته باشد، این دستور موجب خروج از داخلی‌ترین حلقه تکرار می‌شود. کاربرد دیگر این دستور، خاتمه دادن به ساختار switch است.

جستارهای وابسته
---------------

* سی پلاس پلاس
* رایانه
* کامپایلر
* برنامه نویسی

منابع
-----

* «دستور switch». بایگانی‌شده از اصلی در ۱ ژانویه ۲۰۱۹. دریافت‌شده در ۲۰ اکتبر ۲۰۱۹.
* «ساختارشرطی».
* «ساختارهای شرطی».
* «دستورشرطیif».
* «دستورif-else».
* «دستور شرطی if-else».[*پیوند مرده*]
* «دستورif-else-if». بایگانی‌شده از اصلی در ۱۳ ژانویه ۲۰۱۸. دریافت‌شده در ۴ ژانویه ۲۰۱۸.
* «دستور شرطی if-else-if».
* «ساختار switch».