الگرایتم ها همواره دارای تصمیماتی هستند که که باعث می شود کامپایلر بتواند وظیفه خود را به خوبی انجام دهد
دستور If :
راحت ترین راه برای تصمیم گیری در برنامه نویسی استفاده از دستور if است
دستور if شرطی را تست می کند و در صورتی که درآن شرط آن دارای ارزش درستی (true) باشد دستور(ات) را اجرا می کند.
روش اول |
روش سوم |
if (شرط)
دستور;
else
دستور; |
if (شرط)
دستور;
else if (شرط)
دستور; |
روش دوم |
روش چهارم |
if (شرط)
{
1دستور;
2دستور;
...
nدستور;
}
else
{
1دستور ;
2دستور ;
...
nدستور ;
}
|
if (شرط)
{
1دستور;
2دستور;
...
nدستور;
}
else if (شرط)
{
1دستور ;
2دستور ;
...
nدستور ;
}
|
در روشهای اول و دوم چنانچه شرط مورد بررسی درست باشد دستورات بعد از If در غیر این صورت دستورات بعد از else اجرا میشوند . و در روشهای سوم و چهارم چنانچه شرط مورد بررسی درست باشد دستورات بعد از if اجرا می شود و سپس دوباره شرط else if بررسی می شود اگر درست باشد دستورات آن اجرا می شود .
اگر بخواهیم در صورت غلط بودن شرط دستوری استفاده شود از else استفاده می کرد در غیر این صورت لزومی ندارد که از else استفاده کرد.
در روش های سوم و چهارم اگر بخواهیم بیش از یک حالت را بررسی کرد مورد استفاده قرار می گیرد
مثال :
int intNumber = 27;
if (intNumber == 1000) // false
printf("True intNumber is %d",intNumber);
else
printf("False intNumber is %d",intNumber);
برنامه هنگام رسیدن به if شرط بررسی می کند که آیا intNumber برابر 1000 است اگر درست باشد دستور بعد از if را اجرا می کند همان طور که مشخص است به دلیل درست نبودن شرط دستورات if اجرا نمی شود و دستورات بعد از else اجرا می شود .
دستورات if تودرتو :
علاوه بر استفاده متوالی از دستورات if می توان در داخل یک if از دستورات if دیگر استفاده کرد.
مثال :
if (intX > 3)
{
Printf("intX is greater that 3");
if (intX == 6)
printf("intX is 6!");
}
عملگرهای and و or منطقی :
در بعضی از شرط ها ممکن است بخواهیم به جای یک شرط چند شرط را در دستور if بررسی کرد برای مثال می خواهیم بدانیم که آیا intNumber بزرگتر از 27 و کوچکتر از 10 است یا نه در این صورت می توانیم شرط های درون دستور if را می توان با استفاده از عملگر های and و or منطقی ترکیب کرد
عملگر || در برنامه نویسی به عنوان "یا" منطقی استفاده می شود و معمولا در بررسی شرط ها برای ترکیب کردن دو شرط متفاوت به کار می رود . و عملگر && به عنوان " و " منطقی استفاده می شود
دستور switch :
این ساختار برای تصمیم گیری های چند گانه استفاده می شود در تمام تصمیم گیری ها که بیش از سه انتخاب وجود دارد بهتر است از این ساختار استفاده شود
روش |
switch (عبارت)
{
case مقدار:
دستورات;
break;
case مقدار:
دستورات;
break;
.
.
.
default:
دستورات;
} |
این عملگر ابتدا عبارت مقابل Switch ارزیابی می شود و مقدار آن تعیین می گردد سپس با تک تک مقدار های که مقابل case است مورد بررسی قرار می گیرد اگر با مقداری برابر باشد دستورات زیر case را اجرا می کند در غیر این صورت با مقدار بعدی مورد بررسی قرار داده می شود و اگر به هیچ یک از مقادیر برابر نبود دستورات مربوط به default اجرا می شود .
ساختار switch می تواند فاقد بخش default باشد
مقادیر موجود در case های switch نباید با هم مساوی باشند
دستور break مورد استفاده برای این است که کنترل برنامه را از ساختار switch خارج کند اگر در یک case از دستور break استفاده نشود با مقدار case بعدی or می شود برای این که دو یا چند شرط را در ساختار switch با هم or کنیم آنها را بدون دستور break پشت سر هم قرار می دهیم
تفاوت switch و if در این است که در ساختار if می توان عبارت منطقی یا روابط رو مورد بررسی قرار داد و در ساختار switch فقط مساوی بودن مقادیر مورد بررسی قرار می گیرد
ساختار switch نیز می تواند به صورت تو در تو استفاده کرد یعنی هر یک از case ها نیز می تواند شامل ساختار switch باشد .
مثال :
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
int main()
{
int x;
printf("Please enter a number:");
x=getche();
switch (x) {
case 1:
printf("x is 1");
break;
case 2:
printf("x is 2");
break;
case 3:
printf("x is 3");
break;
case 4:
case 5:
case 6:
case 7:
printf("x is 4 or 5 or 6 or 7");
break;
default:
printf("Unknown value");
}
return 0;
}