برخی مواقع نیاز داریم با توجه به شرایط موجود (برای مثال با توجه به مقدار یک متغیر) بین چند عمل مختلف برای اجرا، انتخاب انجام دهیم و یا این که در مورد اجرای یک عمل تصمیم بگیریم که انجام بشود یا نه. این کار به کمک دستورات انتخاب قابل انجام است. این دستور یکی از پرکاربرد ترین دستورات است که تقریبا در هر برنامه ای به کار می رود.
فرض کنید در حین اجرای یک برنامه به قسمتی رسیده ایم که باید با توجه به مثبت بودن یک متغیر به نام Var عملیاتی اجرا شود. اگر مقدار این متغیر منفی باشد نمی خواهیم که این عملیات اجرا شود. تکه کد زیر این عمل را به کمک دستور انتخابی if انجام می دهد.
... if (Var > 0) { //Statement } ...
صورت کلی این دستور به شکل زیر است.
if(condition){ //Statement }
در کد بالا اگر condition برقرار باشد آنگاه دستورات statement اجرا خواهند شد. در غیر این صورت دستورات داخل بلاک if اجرا نخواهند شد و ادامه ی اجرای برنامه بعد از if خواهد بود.
گاهی اوقات نیاز داریم تا چند شرط مختلف را بررسی کنیم و در صورت برقرار بودن هر کدام عمل مختلفی انجام شود. صورت کلی این دستور در زیر آمده است.
if (condition 1) { //statement 1 } else if (condition 2) { //statement 2 } else { //statement 3 }
تعداد دستورات else if می تواند به دلخواه افزایش یابد.اگر شرط اول برقرار باشد، دستورات بلوک اول، اگر شرط دوم برقرار باشد، دستورات بلوک دوم،… و در نهایت اگر هیچ کدام از شرط ها برقرار نباشد، دستورات بلوک else اجرا خواهند شد.
/**This code is written in C++ syntax**/ int your_number; cin>>your_number; if (your_number<0) { cout<<"Your number is negative"<<endl; } else if (your_number == 0) { cout<<"Your input number is zero"<<endl; } else if (your_number == 1) cout<<"Your number is equal to 1"<<endl; else { cout<<"Your number is not small enough"<<endl; cout<<"It's greater than one"<<endl; }
دقت کنید که اگر بلوک دستورات if، شامل یک دستور باشد نیازی به گذاشتن آکولادها نیست.
برای پیاده سازی دستور انتخاب، روش دیگری هم وجود دارد.
تکه کد زیر را در نظر بگیرید. فرض کنید میخواهیم اگر مقدار متغیر a برابر 1 باشد، مقدار b برابر 10 گردد و در غیر این صورت مقدار b برابر 10- گردد.
b = (a == 1?10 : -10) ;