تو این مقاله از پایه و بصورت کامل در مورد دستورات شرطی داخل زبان برنامه نویسی C مواردی ارائه میشه.

تو برنامهنویسی، شرط ها بهت کمک میکنن تصمیم بگیری که یه قسمت از کدت اجرا بشه یا نه. مثلا فرض کن یه برنامه داری که باید ببینی یه نفر سنش بالای 18 هست یا نه. اگه بالای 18 بود، یه چیزی چاپ کن، وگرنه یه چیز دیگه. اینجاست که شرطها به کار میان.
تو C شرطها معمولا با دستورات if, else, else if و گاهی switch نوشته میشن. من اول روی if و دوستاش تمرکز میکنم، چون پایهی کارن.
(برای درک بهتر این مقاله پیشنهاد میکنم مقاله مربوط به عملگرها یا اپراتورهای زبان C رو مطالعه کنید)
ساختار if در زبان C:
if (شرط) { // کدی که اگه شرط درست باشه اجرا میشه }
شرط: یه عبارت که نتیجهش یا true (درست) یا false (غلط) باشه.
آکولاد {}: کدی که میخوای اجرا بشه رو داخل اینا مینویسی.
مثال:
#include <stdio.h> int main() { int age; printf("Enter your age: "); scanf("%d", &age); if (age >= 18) { printf("OK!"); } }
اگه بخوای وقتی شرط if درست نیست، یه کار دیگه انجام بدی، از else استفاده کن. کد:
#include <stdio.h> int main() { int age; printf("Enter your age: "); scanf("%d", &age); if (age >= 18) { printf("OK!"); } else { printf("Not OK!"); } }
برای وقتی که چندتا شرط داری، از else if استفاده کن. این بهت اجازه میده چندتا حالت مختلف رو چک کنی. کد:
#include <stdio.h> int main() { int age; printf("Enter your age: "); scanf("%d", &age); if (age >= 18) { printf("Bozorgsal"); } else if (age >= 13) { printf("Nojavan"); } else { printf("Bache"); } }
اگه مقدار 18 به بالا وارد کنم، متن Bozorgsal برای من نمایش داده میشه. اگه مقدار 13 تا 17 وارد کنم، متن Nojavan نمایش داده میشه و اگه مقداری زیر 13 وارد کنم متن Bache نمایش داده میشه.
ما میتونیم از عملگرهای منطقی تو شرط ها استفاده کنیم. برای مثال یه برنامهایی نوشتم که طرف باید سنش رو وارد کنه، از طرفی باید کاراکتر اول اسمش رو وارد کنم که اگه اسم من amirhosein هست، باید a بزنم. حالا بررسی میکنم که اگه سن وارد شده 21 بود (و) کاراکتر اول اسمش a بود برنده میشه. در غیر این صورت نه. کد:
#include <stdio.h> int main() { char ch; int age; printf("Enter first character your name: "); scanf("%c", &ch); printf("Enter your age: "); scanf("%d", &age); if (age == 21 && ch == 'a') { printf("To Barande Shodi."); } else { printf("To Bakhti."); } }
میتونم بجای استفاده از && از || استفاده کنم به معنی (یا) که یعنی اگه یا سنش 21 بود یا کاراکتر اول اسمش a بود برنده بشه (اگه حداقل یکی از شرط ها درست بود برنده بشه).
در کنار عملگر && و || عملگر NOT هم داریم که با علامت ! مشخص میشه. عملگر ! یعنی «نه» یا «برعکس». کارش اینه که نتیجه یه شرط رو برعکس میکنه:
اگه شرط درست (true) باشه، ! اونو غلط (false) میکنه.
اگه شرط غلط (false) باشه، ! اونو درست (true) میکنه.
به این کد دقت کن:
char ch = 'a'; if (ch == 'a') { printf("ch == a"); }
به شرط if دقت کن! گفتم بررسی کن که آیا مقدار داخل متغییر ch با کاراکتر a برابر هست یا نه، چون این مقدار ها برابره حاصل شرط عدد 1 میشه که داخل C یعنی true. حالا چون عدد 1 برگشته سمت if (یعنی true برگشته) if میفهمه که شرط درست بود و باید کد داخل آکولاد رو اجرا کنه.
اما حالا به این کد دقت کن:
char ch = 'a'; if (!(ch == 'a')) { printf("ch == a"); }
اینجا همون شرط رو قرار دادم، یعنی ch با a مقایسه میشن و چون درسته عدد 1 به معنی true برمیگرده سمت if ولی، من از عملگر ! استفاده کردم، وقتی شرط درست بود و عدد 1 برگشت سمت if، عملگر ! میاد اون عدد رو (هرچی که باشه) برعکس میکنه، اینجا چون شرط درست بوده عدد 1 برگشته ولی عملگر ! میاد اون عدد رو برعکس میکنه و عدد 0 به if تحویل میده. درنتیجه if میبینه که عدد 0 به معنی false براش اومده و شرط رو اجرا نمیکنه.
برای اینکه مطمئن شم کامل فهمیدی، یه مثال دیگه میزنم، اینبار با یه عدد. فرض کن میخوای چک کنی آیا یه عدد صفره یا نه. اگه صفر نباشه، یه پیام چاپ کن.
#include <stdio.h> int main() { int number = 5; // یه عدد غیرصفر if (!number) { // یعنی اگه عدد صفر باشه printf("عدد صفره!\n"); } else { printf("عدد صفر نیست!\n"); } return 0; }
number = 5 یه عدد غیرصفره (یعنی true عه)
شرط number! یعنی «اگه عدد صفر باشه». چون number برابر 5 هست (و true عه) 5! میشه 0 یا false (چون برعکس true میشه false) پس شرط درست نیست (چون حاصل شرط false برمیگرده) و کد داخل else اجرا میشه.
اگه number برابر 0 بود (یعنی false بود) 0! میشد 1 یا true، و پیام «عدد صفره!» چاپ میشد (چون برعکس false که همون 0 هست میشه true و حاصل شرط درست بود و خود if اجرا میشد)
دستور if یه حالت از شرط گذاری بود و یه حالت دیگه وجود داره به اسم switch. کد:
#include <stdio.h> int main() { int choice = 2; // فرض کن کاربر عدد 2 رو انتخاب کرده switch (choice) { case 1: printf("Your choice 1\n"); break; case 2: printf("Your choice 2\n"); break; case 3: printf("Your choice 3\n"); break; case 4: printf("Your choice 4\n"); break; default: printf("Error\n"); break; } return 0; }
switch (choice): اینجا به C میگم من میخوام مقدار متغیر choice رو بررسی کنی. متغیر داخل پرانتز میتونه int یا char باشه.
case 1: این یعنی اگه مقدار choice برابر با 1 بود، کدهای بعد از این رو اجرا کن.
break: این فوقالعاده مهمه. break به switch میگه کار من اینجا تموم شد، بپر بیرون! اگه break رو نذاری، یه اتفاق جالب (و معمولا ناخواسته) میفته. C بعد از اینکه case درست رو پیدا کرد، به راهش ادامه میده و کدهای case های بعدی رو هم اجرا میکنه تا به یه break یا آخر switch برسه.
default: این مثل else توی دستور if عمل میکنه. یعنی اگه مقدار choice با هیچکدوم از case ها یکی نبود، بیا اینجا و این کد رو اجرا کن. گذاشتن default اختیاریه ولی خیلی کار خوبیه که همیشه بزاریش تا برنامت رفتار غیرمنتظرهای نداشته باشه.