با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش ++C در خدمت شما دوستان هستیم . در بخش قبلی با عملگر ها در ++C آشنا شدید، در این جلسه قصد داریم تا با دستورات شرطی در ++C از جمله دستور if در ++C , دستورات if else و دستور switch در ++C آشنا شویم.
دستورات شرطی برای انجام کار ها و تصمیم گیری های مختلف بر اساس شرایط مختلف به کار می رود.
ساختار دستور:
1 2 3 4 | if (عبارت شرطی) { // کد } |
دستور if عبارت شرطی درون پرانتز را بررسی می کند.
اگر شرط درست باشد دستورات داخل بلوک اجرا می شوند و اگرنه که هیچی.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> using namespace std; int main() { int number; cout << "Enter an integer: "; cin >> number; // checks if the number is positive if ( number > 0) { cout << "You entered a positive integer: " << number << endl; } cout << "This statement is always executed."; return 0; } |
خروجی ۱:
1 2 3 | Enter an integer: 5 You entered a positive number: 5 This statement is always executed. |
خروجی ۲:
1 2 | Enter a number: -5 This statement is always executed. |
این دستور نیز ابتدا شرط درون پرانتز را بررسی می کند.
اگر شرط درست باشد کد درون بلوک if اجرا می شود و اگر شرط درست نباشد کد درون بلوک else اجرا می شود.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <iostream> using namespace std; int main() { int number; cout << "Enter an integer: "; cin >> number; if ( number >= 0) { cout << "You entered a positive integer: " << number << endl; } else { cout << "You entered a negative integer: " << number << endl; } cout << "This line is always printed."; return 0; } |
خروجی به شکل زیر می باشد:
1 2 3 | Enter an integer: -4 You entered a negative integer: -4. This line is always printed. |
نحوه کار این نوع دستور نیز مانند دستورات بالا می باشد با این تفاوت که در اینجا ما به جای یک شرط از چند شرط استفاده می کنیم.
ساختار دستور:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | if (شرط 1) { // اگر شرط 1 درست باشد کد این بلوک اجرا می شود (شرط های دیگر بررسی نمی شود) } else if(شرط 2) { // اگر شرط 2 درست باشد کد این بلوک اجرا می شود (شرط های دیگر بررسی نمی شود) } else if (شرط 3) { // اگر شرط 3 درست باشد کد این بلوک اجرا می شود(شرط های دیگر بررسی نمی شود) } . . else { // اگر هیچ کدام از شرط ها درست نباشد کد این بلوک اجرا می شود. } |
مثال:
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 | #include <iostream> using namespace std; int main() { int number; cout << "Enter an integer: "; cin >> number; if ( number > 0) { cout << "You entered a positive integer: " << number << endl; } else if (number < 0) { cout<<"You entered a negative integer: " << number << endl; } else { cout << "You entered 0." << endl; } cout << "This line is always printed."; return 0; } |
خروجی:
1 2 3 | Enter an integer: 0 You entered 0. This line is always printed. |
این عملگر را می توان به جای if…else استفاده کرد.
کد if…else :
1 2 3 4 5 6 | if ( a < b ) { a = b; } else { a = -b; } |
کد با عملگر ? :
1 | a = (a < b) ? b : -b; |
هر دو کد بالا عملکرد یکسانی دارند.
از دستور switch در ++C برای بررسی یک مقدار با موارد case مختلف استفاده می شود که اگر با هر موردی برابر بود، کد مربوط به آن مورد اجرا خواهد شد.
ازین دستور در بیشتر موارد به جای if else متوالی استفاده می شود.
ساختار دستور:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | switch (n) { case مقدار 1: // کد اجرا می شود اگر n با مقدار 1 برابر باشد break; case مقدار 2: // کد اجرا می شود اگر n با مقدار 2 برابر باشد break; . . . default: // اگر هیچ تطبیقی نباشد کد ابن بلوک اجرا می شود. } |
فراموش نکنیذ تا از دستور break بعد از هر case استفاده کنید. زیرا این کار از مقایشه های بی دلیل با سایر موارد جلوگیری می کند.
مثال:
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 31 32 33 34 35 36 | #include <iostream> using namespace std; int main() { char o; float num1, num2; cout << "Enter an operator (+, -, *, /): "; cin >> o; cout << "Enter two operands: "; cin >> num1 >> num2; switch (o) { case '+': cout << num1 << " + " << num2 << " = " << num1+num2; break; case '-': cout << num1 << " - " << num2 << " = " << num1-num2; break; case '*': cout << num1 << " * " << num2 << " = " << num1*num2; break; case '/': cout << num1 << " / " << num2 << " = " << num1/num2; break; default: // operator is doesn't match any case constant (+, -, *, /) cout << "Error! operator is not correct"; break; } return 0; } |
خروجی:
1 2 3 4 5 | Enter an operator (+, -, *, /): + - Enter two operands: 2.3 4.5 2.3 - 4.5 = -2.2 |
جلسه آموزش دستورات شرطی در C++ نیز به پایان رسید.
در جلسه بعد به آموزش حلقه های تکرار در ++C خواهیم پرداخت. با ما همراه باشید
ابوالفضل اسماعیل نژاد
سلام مطلبتون عالی بود من یه مشکلی برام پیش اومده حدود سه چهار ساعته دارم سعی میکنم حلش کنم خخ.اینکه میخوام تاریخ تولد شخص از تاریخ امروز منها بشه و روز ر باD و ماه ر باM و سال ر باY متغیر هاشو ساختم و روز تولد ر CIN نوشتم .اینجا سه تا حالت وجود داره یکی اینکه ارقام روز و ماه از تاریخ امروز کمتر باشند که مشکلی نیست میذاریمشون تویELSE ولی دو تا چیز دیگه داریم یکی اینکه روز بزرگ تر از تاریخ امروز باشه که باید از ماه یکی کم بشه و به روز سی تا اضافه بشه و در نهایت از تاریخ امروز کم بشه و این هم اوکیه یه حالت دیگه وجود داره که ماه هم از تاریخ ماه امروز بزرگ تر هست این ر توی ELSE IF که مینویسم
{ عملیات}else if(y>ny , nm<m ,nd<d )
در اینجا nm تاریخ امروز هست خب من اول از ماه یکی کم میکنم و به روز سی تا اضافه میکنم و از روز تولد کمش میکنم و از سال یکی کم میکنم به ماه دوازده تا اضافه میکنم و ماه ر از ماه کم میکنم و سالو از سال کم میکنم ولی اصلا انگار ای دی ای کد ر نمیخونه و توی کنسول اینطور نتیجه بعد cout میشه منهای ماه عدد منفی میده و از سال کم نمیکنه