IF
تا اینجا برنامه هایی که مینوشتیم خط به خط اجرا میشدند و هیچ خطی از برنامه وجود نداشت که اجرا نشده باشد.
اما گاهی میخواهیم برنامههایی بنویسیم که در شرایط متفاوت نیازمند دستورات متفاوتی هستند.
فرض کنید از شما بخواهند که از داخل یک کیسه که در آن توپهای رنگی ریخته شده است یک توپ در آورید. اگر توپی که درآوردهاید آبی بود یک دایره روی صفحه بکشید و اگر قرمز بود که مربع روی صفحه بکشید. خب اگر بخواهیم برنامهی چنین بازی را بنویسیم باید دو حالت را در نظر بگیریم که توپی که از کیسه درمیآوریم ممکن است قرمز باشد یا آبی( حالت سومی هم وجود دارد؟ )
پس نیازمند استفاده از واژهی اگر هستیم تا با استفاده از آن حالات مختلف را بررسی کنیم و برای هر حالت دستورات مربوط را بنویسیم.
برای استفاده از شرط از دستور زیر کمک می گیریم:
if( شرط)
{
دستوراتی که در صورت برقرار بودن شرط انجام میگیرند
}
else
{
دستوراتی که در صورت عدم برقراری شرط انجام میگیرند
}
مثلا برنامه ی زیر را در نظر بگیرید:
main()
{
cout << "please enter one number: " << endl;
int a;
cin >> a;
if(a > 100)
cout << "your number is more than 100" << endl;
else
cout << "your number is less than 100" << endl;
getch();
}
خروجی این برنامه به صورت زیر می باشد:
توجه کنید که عدد 120 از ورودی گرفته شده است.
پس برنامه ی بالا یک عدد را از ورودی میگیرد و اگر عدد وارد شده بزرگتر از 100 بود پیغام متناسب با آن را چاپ می کند و در غیر این صورت پیغام مناسب دیگری را چاپ می کند.
نکته ی دیگر این برنامه که باید به آن توجه داشت این است که بعد از شرط و if از علامت {} استفاده نشده است. علت این کار این است که اگر تنها یک دستور بعد از if قرار بدهیم لزومی به استفاده از آکولاد نیست. اگر تعداد دستورات بیشتر از یکی شد باید حتما از علامت آکولاد استفاده کنیم.
همین امر در مورد else نیز برقرار است. به برنامه ی بالا توجه کنید.
چند نکته را در مورد شرط باید همواره به خاطر بسپاریم.
• بعد از if داخل پرانتز شرط را قرار میدهیم.
• بعد از else هیچ شرطی قرار نمیدهیم. خود کلمه ی else خلاف شرط if را هم در بر دارد.
• بعد از if و else از علامت ; استفاده نمیکنیم. اگر از این علامت استفاده کنیم شرط را خاتمه دادهایم.
• بعد از هر کدام از خطوط دستورات از علامت ; مثل برنامههای قبلی استفاده میکنیم.
• اگر بخواهیم مقدار متغیری را چک کنیم و ببینیم مثلا برابر با مقدار 100 هست یا نه از علامت ==استفاده میکنیم. مثلا به صورت زیر عمل میکنیم.
if(a == 100)
cout << ”a barabar ast ba 100” << ”\n”;
آیا میتوانید توضیح دهید که اگر به جای a==100 از عبارت a=100 استفاده کنیم چه خطایی رخ خواهد داد؟
• اگر بخواهیم از چند شرط در کنار هم استفاده کنیم باید ارتباط بین شرطها را هم معین کنیم. به این صورت که اگر میخواهیم بین شروط از علامت" و " استفاده کنیم باید به جای علامت , از علامت && استفاده کنیم. همچنین برای علامت "یا" از || استفاده میکنیم.
به عنوان مثال به برنامهی زیر دقت کنید:
main()
{
int a;
cout << "please enter one number:" << endl;
cin >> a;
if(a < 100 && a > 50)
cout << "your number is between 50 and 100" << endl;
getch();
}
این برنامه یک عدد را از ورودی گرفته و در صورتی که عدد وارد شده بزرگتر از 50 و کوچکتر از 100 باشد پیغام متناسب را چاپ میکند. برای علامت و از && استفاده کردیم.
خروجی برنامه به ازای عدد 65 به شکل زیر است:
نکته ی دیگر برنامه ی بالا این است که else وجود ندارد! بنابراین برای هر if حداکثر یک else قرار میدهیم.
استفاده بیشتر از یک if برای برنامههایی با بیش از دو حالت
گاهی میخواهیم چند حالت را بررسی کنیم و برای هر حالت پیغام مناسب را چاپ کنیم. برای همین باید از چند if پشت سر هم استفاده کنیم. مثلا به برنامهی زیر توجه کنید:
main()
{
int a;
cout << "please enter one number: " << endl;
cin >> a;
if(a < 100) cout << "your number is more than 100" << endl;
else if(a == 100) cout << "your number is 100" << endl;
else cout << "your number is less than 100" << endl;
getch();
}
همانطور که در برنامه ی بالا مشاهده می کنید هر if یک else در ادامه ی خود( بلافاصله بعد از خود) دارد.
در جدول زیر برخی از علامتهایی که در ریاضیات استفاده میکنیم آمدهاند. این علائم در زبان C++ به شکل ستون دوم قرار میگیرند.
زبان c++ |
ریاضیات |
= |
مقدار دهی |
== |
چک کردن تساوی |
!= |
≠ |
>= |
≤ |
<= |
≥ |
a>50 && a<=100 |
50<a≤100 |
&& |
And و |
|| |
Or یا |
در ادامه برنامه ی های حل شده در کلاس را حل خواهیم کرد.