مهندس موفق الکترونیک

دستورات شرطی در زبان C

در این جلسه دستورات شرطی در زبان C شامل : IF ، IF Else، و IF Else تودرتو همراه با مثال را یادمی‌گیریم.، دستور شرطی در C چیست؟

در زبان C برنامه به صورت ترتیبی اجرا می شود. این حالت زمانی رخ می دهد که  در دستورات، شرطی وجود نداشته باشد. اگر روی یک بلوک  دستورات شرطی قرار دهیم، روند اجرای برنامه بر اساس نتیجه ارزیابی شرط می تواند تغییر کند. این فرآیند در ‘C’ به عنوان تصمیم گیری(decision making) شناخته می شود. این دستورات تصمیم گیری، عبارتهای کنترلی نیز نامیده می شوند.

در برنامه نویسی C دستورات شرطی را می توان به کمک دو ساختار پدید آورد:

  • 1.دستور If
  • 2.دستور If-else

براساس ارزیابی نتیجه شرط، برنامه تصمیم می گیرد که کدام عبارت باید اجرا شود. به این روند شاخه بندی(branching) نیز گفته می شود.

در این محبث خواهیم آموخت:

  • دستور شرطی چیست؟
  • دستور If
  • عملگرهای رابطه ای
  • دستور If-Else
  • عبارات شرطی
  • دستورات If-Else تودرتو
  • دستورات Else-if تودرتو

دستور If

دستور if یکی از قدرتمندترین دستورهای شرطی می باشد. دستور If مسئول تغییر جریان اجرای یک برنامه است. دستور If همواره با یک شرط به کار می رود. قبل از اجرای هر دستوری درون بدنه If ، شرط ارزیابی می گردد. دستورزبان برای If به صورت زیر است:

 if (condition) 
     instruction;

نتیجه شرط به مقادیر صحیح (true)یا غلط( false )ختم می شود. True همیشه یک مقدار غیر صفر بوده، و false مقداری صفر است. دستورات ممکن است یک عدد یا یک بلوک کد باشد که در این صورت درون آکلاد {} گذاشته می شوند.

برنامه زیر استفاده از ساختار If در برنامه نویسی C را به نمایش می گذارد:

#include<stdio.h>
int main()
{
	int num1=1;
	int num2=2;
	if(num1<num2)		//test-condition
	{
		printf("num1 is smaller than num2");
	}
	return 0;
}

خروجی:

num1 is smaller than num2

برنامه بالا از ساختار If برای مقایسه دو عدد استفاده می کند.

دستورات شرطی در زبان C

1.در برنامه بالا، دو متغیر با نامهای num1 و num2 را به ترتیب با مقادیر 1 و 2 مقداردهی اولیه کرده ایم.

  1. سپس، از دستور If با یک عبارت تست استفاده کرده تا عدد کوچکتر و بزرگتر را مشخص کنیم. در ساختار If از یک عبارت رابطه ای استفاده کرده ایم. از آنجا که num1 کوچکتر از num2 است، نتیجه شرط true خواهد بود.
  2. بنابراین عبارت درون بلوک If را چاپ خواهد کرد. پس از آن، کنترل برنامه به خارج از بلوک هدایت شده و برنامه با یک نتیجه موفق به پایان می رسد.
مطلب پیشنهادی:  تفاوت بین C و ++C

عملگرهای رابطه ای

زبان C شش عملگر رابطه ای دارد که برای فرمول بندی عبارات بولی در تصمیم گیری ها و تست شرط ها بکار می روند، و خروجی true یا false  برمی گرداند:

  • < کوچکتر از
  • <= کوچکتر یا مساوی
  • >  بزرگتر از
  • >= بزرگتر یا مساوی با
  • == مساوی با
  • != مخالف با

دقت کنید که آزمون تساوی(==) متفاوت از عملگر تخصیص(=) است،این مسئله یکی از متداول ترین مشکلاتی است که برنامه نویسان با آن روبرو می شوند.

برای مثال

int x = 41;

x =x+ 1;

if (x == 42) {

printf("You succeed!");}

خروجی:

You succeed

به یاد داشته باشید که هر شرطی که به مقداری غیرصفر منتج شود، به منزله true تلقی می گردد.

برای مثال

int present = 1;

if (present)

printf("There is someone present in the classroom \n");

خروجی:

There is someone present in the classroom

دستور If-Else

دستورات شرطی در زبان C

دستور if-else نسخه تعمیم یافته دستور If است. فرم عمومی دستور if-else به شکل زیر است:

if (test-expression)

{

True block of statements

}

Else

{

False block of statements

}

Statements;

در این ساختار، اگر مقدار عبارت تست برابر true شود، آنگاه دستورات بلوک true اجرا خواهند شد. اگر مقدار عبارت تست   برابر false شود، آنگاه دستورات بلوک  false  به اجرا درخواهند آمد.در هردوحالت، پس از اجرا، کنترل به صورت خودکار به دستوراتی منتقل می شود کخ خارج از بلوک If هستند.

برنامه زیر استفاده از ساختار if-else را به نمایش می گذراد:

متغیری را با یک مقدار اولیه آغاز کرده و برنامه ای می نویسیم که مشخص می کند که آیا عدد از ده کوچکتر یا بزرگتر است.

بیایید شروع کنیم.

#include<stdio.h>

int main()

{

int num=19;

if(num<10)

{

printf("The value is less than 10");

}

else

{

printf("The value is greater than 10");

}

return 0;

}

خروجی:

The value is greater than 10

دستورات شرطی در زبان C

  1. یک متغیر را با مقدار 19 مقداردهی اولیه کردیم. با استفاده از برنامه C درمی یابیم که عدد از 10 بزرگتر یا کوچکتر است.بدین منظور، از ساختار if-else بهره می گیریم.
  2. در اینجا شرط num<10 را فراهم آورده ایم تا عددمان را با 10 مقایسه کنیم.
  3. همانطور که میبینیم بلوک اول همواره بلوک true است که یعنی اگر مقدار عبارت تست true باشد آنگاه بلوک اول که if است اجرا خواهد شد.
  4. بلوک دوم بلوک else می باشد. این بلوک حاوی دستوراتی است که در صورت false شدن عبارت تست اجرا خواهد شد. در برنامه ما، مقدار num بزرگتر از ده است در نتیجه شرط تست false شده و بلوک else اجرا می شود. بنابراین، خروجی ما شکل بلوک else را به خود می گیرد که برابر “The value is greater than 10” است.بعد از if-else، برنامه با یک نتیجه موفق به پایان می رسد.
مطلب پیشنهادی:  نحوه قرار دادن توضیحات یا کامنت در برنامه نویسی C

در برنامه نویسی C می توان چندین ساختار if-else را در درون یکدیگر جای داد. این دستورات، دستورات if-else تودرتو نام دارند.

عبارت های شرطی (Conditional Expressions )

راه دیگر بیان یک دستور شرطی if-else استفاده از عملگر ?: است. در یک عبارت شرطی، عملگر ?: برای بخش if و بخش else تنها از یک عبارت استفاده می کند.

برای مثال:

#include <stdio.h>

int main() {

int y;

int x = 2;

y = (x >= 6) ?  6 : x;/* This is equivalent to:  if (x >= 5)    y = 5;  else    y = x; */

printf("y =%d ",y);

return 0;}

خروجی:

y =2

دستورات if-else تودرتو

وقتی که یک سلسله تصمیم گیری مورد نیاز باشد، if-else تودرتو بکار می رود. تودرتویی به معنی استفاده از یک ساختار if-else  درون یک ساختار if-else دیگر است.

حال بیایید برنامه ای بنویسیم که کاربرد if-else تودرتو را نمایش دهد.

#include<stdio.h>

int main()

{

int num=1;

if(num<10)

{

if(num==1)

{

printf("The value is:%d\n",num);

}

else

{

printf("The value is greater than 1");

}

}

else

{

printf("The value is greater than 10");

}

return 0;

}

خروجی:

The value is:1

برنامه بالا بررسی می کند که  عدد بزرگتر یا کوچکتر از 10 بوده و نتیجه را با استفاده از ساختار if-else تودرتو چاپ می کند.

دستورات شرطی در زبان C

  • 1.در ابتدا، متغیر num با مقدار 1 را اعلان کرده ایم. سپس از ساختار if-else استفاده کرده ایم.
  • 2.در if-else بیرونی، شرط بکار رفته بررسی می کند که آیا عدد کوچکتر از 10 است یا نه. تنها در صورتی که شرط true شود حلقه داخلی اجرا می گردد. در این حالت، شرط true بوده و بنابراین بلوک داخلی پردازش می شود.
  • 3.در بلوک داخلی، دوباره یک شرط داریم که بررسی می کند متغیر ما حاوی مقدار 1 هست یا خیر. وقتی که یک شرط صحیح باشد، بلوک if پردازش می شود و در غیر این صورت بلوک else پردازش می گردد.در این مورد شرط صحیح بوده و در نتیجه بلوک if اجرا شده و مقدار در خروجی چاپ می گردد.
  • 4.برنامه فوق مقدرا یک متغیر را چاپ کرده و با موفقیت به پایان می رسد.

سعی کنید مقدار متغیر را تغییر داده و رفتار برنامه را مشاهده کنید.

نکته: در if-else تودرتو، باید مراقب تورفتگی(indentation) باشیم زیرا اگر چندین ساختار if-else در این فرآیند دخیل باشند، آنگاه تشخیص ساختارهای منفرد دشوار می شود. تورفتگی مناسب به خوانایی برنامه کمک می کند.

مطلب پیشنهادی:  تخصیص حافظه پویا در C با malloc ، calloc ، realloc و free

دستورات Else-if تودرتو

If-else تودرتو زمانی بکار می رود که تصمیات چندمسیره (multipath decisions) مورد نیاز باشد. دستور زبان عمومی برای ساختن نردبان های else-if در برنامه نویسی C به صورت زیر است:

 if (test - expression 1) {
    statement1;
} else if (test - expression 2) {
    Statement2;
} else if (test - expression 3) {
    Statement3;
} else if (test - expression n) {
    Statement n;
} else {
    default;
}
Statement x;

این نوع ساختار به نردبان else-if مشهور است. این زنجیره عموماً شبیه به یک نردبان بنظر میرسد و به همین خاطر است که به نردبان else-if مشهور است.

عبارات تست از بالا به پایین ارزیابی می شوند. هرزمان که یک عبارت تست صحیح پیدا شود، دستور مرتبط با آن اجرا می شود.وقتی که همه عبارت تست ها false شدند،  آنگاه دستور else پیش فرض اجرا می گردد. ذحال اجازه دهید عملکرد عملی را با کمک یک برنامه ببینیم.

#include<stdio.h>
int main()
{
	int marks=83;
	if(marks>75){
		printf("First class");
	}
	else if(marks>65){
		printf("Second class");
	}
	else if(marks>55){
		printf("Third class");
	}
	else{
		printf("Fourth class");
	}
	return 0;
}

خروجی:

First class

برنامه فوق نمره ها را متناسب با امتیازات امتحان چاپ می کند. از ساختار نردبان else-if در این برنامه استفاده کرده ایم.

دستورات شرطی در زبان C

  1. یک متغیر با نام marks آغاز کرده ایم. در ساختار نردبان else-if ، شروط مختلفی فراهم کرده ایم.
  2. مقدار متغیر marks با اولین شرط مقایسه می گردد و از آنجایی که شرط صحیح است دستور مرتبط با آن در خروجی چاپ می شود.
  3. اگر شرط اول false شود، آنگاه مقدار با شرط دوم مقایسه می شود.
  4. این رویه ادامه پیدا کرده تا همه عبارات ارزیابی شوند و در صورت false بودن همه، کنترل از نردبان else-if خارج می گردد و دستور پیش فرض چاپ می شود.

خلاصه

  • دستورات تصمیم گیری یا شاخه بندی، برای انتخاب یک مسیر بر اساس نتیجه ارزیابی یک عبارت استفاده می شوند.
  • همچنین با عنوان دستورات کنترلی نیز شناخته می شوند زیرا کنترل اجرای برنامه را در دست می گیرد.
  • زبان ‘C’ ساختارهای if، if-else را برای دستورات تصمیم گیری مهیا ساخته است.
  • زمانی که باید چندین مسیر را به آزمایش بگذاریم، می توان دستورات if-else را به صورت تودرتو بکار برد.
  • نردبان else-if زمانی استفاده می شود که مجبور باشیم راههای مختلفی را مبتنی بر نتیجه یک عبارت بررسی کنیم.

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *