در این آموزش به کمک مثال های مختلف با دستورهای if، if…else، if…else نردبانی و if…else تودرتو در برنامه نویسی C آشنا خواهید شد.
دستور if در C
سلختار دستور if در برنامه نویسی C به شکل زیر است:
if (عبارت شرطی)
{
// اجرا می شوند if اگر عبارت شرطی درست باشد، دستورات
}
دستور if چگونه کار می کند؟
در دستور if ابتدا عبارت شرطی داخل پرانتز بررسی می شود:
- اگر عبارت شرطی درست (true) باشد، دستورات داخل بدنه if اجرا می شوند.
- اگر عبارت شرطی نادرست (false) باشد، دستورات داخل بدنه if اجرا نمی شوند و کنترل برنامه به بعد از دستور if (بعد از }) منتقل خواهد شد.
برای کسب اطلاعات بیشتر درباره عبارت های شرطی و اینکه چه زمانی درست (مقدار غیر صفر) و یا نادرست (مقدار صفر) ارزیابی می شوند، به آموزش عملگرها در برنامه نویسی C قسمت عملگرهای رابطه ای و منطقی مراجعه کنید.
مثال ۱: دستور if
// برنامه نمایش عدد منفی
#include <stdio.h>
int main() {
int number;
printf(“Enter an integer: “);
scanf(“%d”, &number);
// اگر عدد کوچکتر از ۰ باشد، عبارت شرطی درست و برقرار است
if (number < 0) {
printf(“You entered %d.\n”, number);
}
printf(“The if statement is easy.”);
return 0;
}
خروجی
Enter an integer: -2
You entered -2.
The if statement is easy.
وقتی کاربر عدد -۲ را وارد کند، شرط number<0 درست ارزیابی شده و رشته “You entered -2” درصفحه خروجی نمایش داده می شود.
خروجی ۲
Enter an integer: 5
The if statement is easy.
هنگامی که کاربر عدد ۵ را وارد کند، عبارت شرطی number<0 نادرست ارزیابی شده و دستور داخل بدنه if اجرا نمی شود. در ادامه، برنامه به بعد از دستور if می رود.
دستور if…else در C
دستور if ممکن است یک بلوک اختیاری با نام else داشته باشد. ساختار دستور if…else به صورت زیر است:
if (عبارت شرطی) {
// اجرا می شوند if اگر عبارت شرطی درست باشد، دستورات
}
else {
// اجرا می شوند else اگر عبارت شرطی نادرست باشد، دستورات
}
دستور if…else چگونه کار می کند؟
اگر عبارت شرطی درست باشد:
- دستورات داخل بدنه if اجرا می شوند.
- از دستورات داخل بدنه else رد شده و اجرا نمی شوند.
اگر عبارت شرطی نادرست باشد:
- دستورات داخل بدنه else اجرا می شوند.
- دستورات داخل بدنه if اجرا نمی شوند.
مثال ۲: دستور if…else
// عدد زوج است یا فرد؟
#include <stdio.h>
int main() {
int number;
printf(“Enter an integer: “);
scanf(“%d”, &number);
// اگر باقیمانده تقسیم عدد به ۲ صفر باشد، شرط درست است.
if (number%2 == 0) {
printf(“%d is an even integer.”,number);
}
else {
printf(“%d is an odd integer.”,number);
}
return 0;
}
خروجی
Enter an integer: 7
۷ is an odd integer.
وقتی کاربر عدد ۷ را وارد کند، عبارت شرطی
number%2==0
نادرست ارزیابی می شود و مقدار صفر را برمی گرداند. در نتیجه دستور داخل بدنه else اجرا شده است.
if…else نردبانی در C
در دستور if…else براساس درست یا نادرست بودن عبارت شرطی، دو کد مختلف اجرا می شود. گاهی انتخاب بین بیش از ۲ گزینه است.
if…else نردبانی (Ladder) این امکان را فراهم می کند که بین چندین عبارت شرطی بررسی شود و دستورات متفاوتی را اجرا کند.
ساختار if…else نردبانی:
if (عبارت شرطی ۱) {
// دستور(ها)
}
else if(عبارت شرطی ۲) {
// دستور(ها)
}
else if (عبارت شرطی ۳) {
// دستور(ها)
}
.
.
else {
// دستور(ها)
}
مثال ۳: if…else نردبانی در C
//
// = > < برنامه ای برای ارتباط دو عدد صحیح با استفاده از یکی از نمادهای
#include <stdio.h>
int main() {
int number1, number2;
printf(“Enter two integers: “);
scanf(“%d %d”, &number1, &number2);
// بررسی می کند آیا دو عدد مساوی است
if(number1 == number2) {
printf(“Result: %d = %d”,number1,number2);
}
// است number2 بزرگتر از number1 بررسی می کند آیا
else if (number1 > number2) {
printf(“Result: %d > %d”, number1, number2);
}
//اگر دو شرط قبلی نادرست باشند
else {
printf(“Result: %d < %d”,number1, number2);
}
return 0;
}
خروجی
Enter two integers: 12
۲۳
Result: 12 < 23
if…else تودرتو در C
می توانید یک دستور if…else را در داخل بدنه دستور if…else دیگری بنویسید.
مثال ۴: if…else تودرتو
برنامه زیر مشابه مثال ۳ است و با استفاده از نمادهای (<>=) ارتباط بین دو عدد صحیح رانشان می دهد ولی در اینجا برای حل مسئله از دستورات if…else تودرتو استفاده می شود.
#include <stdio.h>
int main() {
int number1, number2;
printf(“Enter two integers: “);
scanf(“%d %d”, &number1, &number2);
if (number1 >= number2) {
if (number1 == number2) {
printf(“Result: %d = %d”,number1,number2);
}
else {
printf(“Result: %d > %d”, number1, number2);
}
}
else {
printf(“Result: %d < %d”,number1, number2);
}
return 0;
}
اگر بدنه دستور if یا else فقط یک دستور داشته باشد، نیازی به استفاده از براکت نیست {}.
به عنوان مثال، این کد
if (a > b) {
printf(“Hello”);
}
printf(“Hi”);
با کد زیر یکی است،
if (a > b)
printf(“Hello”);
printf(“Hi”);