دستورات شرطی if و if…else در برنامهنویسی C: راهنمای کامل با مثال مدیر ارشد رایشمند / ﺳﻪشنبه, 03 اسفند,1395 / دستهها: آموزش برنامه نویسی, آموزش زبان برنامه نویسی سی C تو این مقاله میخوایم حسابی بریم سراغ یکی از پایه و اساسهای برنامهنویسی به زبان C: دستورات شرطی `if` و `if…else`. قراره با مثالهای متنوع و کاربردی، این دستورات رو موشکافی کنیم تا کاملاً برشون مسلط بشید. به طور خلاصه، دستورات شرطی به برنامه ما اجازه میدن که بر اساس یک "شرط"، تصمیم بگیره و مسیرهای مختلفی رو دنبال کنه. یعنی چی؟ یعنی میتونیم به برنامه بگیم: "اگر این اتفاق افتاد، فلان کار رو بکن؛ در غیر این صورت، اون یکی کار رو انجام بده!" این قابلیت، قدرت فوقالعادهای به برنامههای ما میده. دستور if در C: قدم اول تصمیمگیری اولین و سادهترین دستور شرطی، همون `if` هست. ساختار کلیش رو ببینیم: if (عبارت شرطی) { // اگر عبارت شرطی درست (True) باشه، این دستورات اجرا میشن } دستور if چطور کار میکنه؟ کار `if` خیلی سادهست: برنامه اول به «عبارت شرطی» که توی پرانتز نوشتیم نگاه میکنه: اگه عبارت شرطی، درست (true) باشه، کدها و دستوراتی که داخل بلوک `if` (بین آکولادها `{}`) نوشتیم، اجرا میشن. اما اگه عبارت شرطی نادرست (false) باشه، دستورات داخل بلوک `if` کلاً نادیده گرفته میشن و برنامه از بعد از آکولاد بستهشده `}` ادامه پیدا میکنه. برای اینکه بهتر بفهمید عبارتهای شرطی چطور درست یا نادرست ارزیابی میشن (مقدار غیر صفر برای درست و صفر برای نادرست)، میتونید به بخش مربوط به عملگرهای رابطهای و منطقی در مقاله عملگرها در برنامه نویسی C مراجعه کنید. مثال ۱: دستور if بیاید با یه مثال ساده شروع کنیم تا `if` رو بهتر بفهمیم. این برنامه یه عدد از کاربر میگیره و اگه اون عدد منفی باشه، پیغامی رو نشون میده: // برنامه بررسی عدد منفی #include <stdio.h> int main() { int inputNumber; // یک متغیر برای ذخیره عدد ورودی printf("یه عدد صحیح وارد کن: "); scanf("%d", &inputNumber); // اگر عدد ورودی کوچکتر از 0 باشه، این شرط درست میشه if (inputNumber < 0) { printf("شما عدد %d رو وارد کردید. \n", inputNumber); } printf("دستور if خیلی راحته!"); // این خط همیشه اجرا میشه return 0; } خروجی احتمالی (۱): یه عدد صحیح وارد کن: -7 شما عدد -7 رو وارد کردید. دستور if خیلی راحته! تو این حالت، وقتی کاربر عدد -7 رو وارد میکنه، شرط inputNumber < 0 درست ارزیابی میشه و جمله "شما عدد -7 رو وارد کردید." توی خروجی نمایش داده میشه. خروجی احتمالی (۲): یه عدد صحیح وارد کن: 10 دستور if خیلی راحته! این بار، اگه کاربر عدد 10 رو وارد کنه، عبارت شرطی inputNumber < 0 نادرست ارزیابی میشه و دستور داخل بلوک `if` اجرا نمیشه. برنامه مستقیماً به خط بعد از بلوک `if` میره و پیام "دستور if خیلی راحته!" رو نشون میده. دستور if…else در C اگه بخوایم برنامهمون دو مسیر کاملاً متفاوت رو بر اساس درست یا نادرست بودن یه شرط طی کنه، از دستور `if…else` استفاده میکنیم. یعنی اگه شرط درست بود یه کار انجام بده و اگه غلط بود، کار دیگهای رو. ساختار دستور if…else به صورت زیره: if (عبارت شرطی) { // اگر عبارت شرطی درست (True) باشه، این دستورات اجرا میشن } else { // اگر عبارت شرطی نادرست (False) باشه، این دستورات اجرا میشن } دستور if…else چطور کار میکنه؟ با if…else، دیگه هیچوقت دستوری نادیده گرفته نمیشه و همیشه یکی از دو بلوک کد اجرا میشه: اگه «عبارت شرطی» درست باشه: دستورات داخل بلوک `if` اجرا میشن. دستورات داخل بلوک `else` کلاً نادیده گرفته میشن و اجرا نمیشن. اگه «عبارت شرطی» نادرست باشه: دستورات داخل بلوک `else` اجرا میشن. دستورات داخل بلوک `if` کلاً نادیده گرفته میشن و اجرا نمیشن. مثال ۲: دستور if…else بیایید با یه برنامه ساده تعیین کنیم که آیا یک عدد زوج هست یا فرد: // عدد زوج است یا فرد؟ #include <stdio.h> int main() { int checkNumber; // متغیری برای ذخیره عدد printf("یه عدد صحیح وارد کن: "); scanf("%d", &checkNumber); // اگه باقیمانده تقسیم عدد به 2 صفر باشه، شرط درسته (زوج) if (checkNumber % 2 == 0) { printf("%d یه عدد زوج هست. \n", checkNumber); } // در غیر این صورت، عدد فرده else { printf("%d یه عدد فرد هست. \n", checkNumber); } return 0; } خروجی: یه عدد صحیح وارد کن: 7 7 یه عدد فرد هست. وقتی کاربر عدد 7 رو وارد میکنه، عبارت شرطی checkNumber % 2 == 0 (که معادل 7 % 2 == 0 هست) نادرست ارزیابی میشه و مقدار 0 رو برمیگردونه. در نتیجه، دستورات داخل بلوک `else` اجرا میشن و پیام "7 یه عدد فرد هست." نمایش داده میشه. if…else نردبانی در C گاهی اوقات، انتخابهای ما بیشتر از دو گزینه هستن. مثلاً میخوایم برای چندین حالت مختلف، کارهای متفاوتی انجام بدیم. اینجا `if…else` نردبانی (Ladder) به کمکمون میاد. این ساختار به شما اجازه میده که بین چندین عبارت شرطی به ترتیب بررسی کنید و هر جا یکی از شرطها درست بود، بلوک کد مربوط به اون اجرا بشه. ساختار if…else نردبانی: if (عبارت شرطی ۱) { // دستور(ها)ی مربوط به عبارت شرطی ۱ } else if(عبارت شرطی ۲) { // دستور(ها)ی مربوط به عبارت شرطی ۲ } else if (عبارت شرطی ۳) { // دستور(ها)ی مربوط به عبارت شرطی ۳ } // . // . else { // اگر هیچ کدام از شرطهای بالا درست نبودند، این دستور(ها) اجرا میشوند } مثال ۳: if…else نردبانی در C بیاید برنامهای بنویسیم که دو عدد صحیح رو از کاربر بگیره و رابطه بینشون (برابر، بزرگتر، کوچکتر) رو نشون بده: // برنامه ای برای مقایسه دو عدد صحیح #include <stdio.h> int main() { int firstNum, secondNum; // دو متغیر برای اعداد ورودی printf("دو عدد صحیح وارد کن: "); scanf("%d %d", &firstNum, &secondNum); // بررسی میکنه آیا دو عدد مساوی هستن if(firstNum == secondNum) { printf("نتیجه: %d = %d \n", firstNum, secondNum); } // بررسی میکنه آیا عدد اول بزرگتر از عدد دوم هست else if (firstNum > secondNum) { printf("نتیجه: %d > %d \n", firstNum, secondNum); } // اگه هیچ کدوم از شرطهای بالا درست نبودند، یعنی عدد اول کوچکتره else { printf("نتیجه: %d < %d \n", firstNum, secondNum); } return 0; } خروجی: دو عدد صحیح وارد کن: 12 23 نتیجه: 12 < 23 if…else تودرتو در C شما میتونید یک دستور if…else رو داخل بلوک `if` یا `else` یک دستور if…else دیگه بنویسید. به این حالت، if…else تودرتو (Nested) میگن. مثلاً، برنامه زیر دقیقاً شبیه مثال ۳ عمل میکنه و رابطه بین دو عدد صحیح رو نشون میده، اما این بار با استفاده از ساختار تودرتو: مثال ۴: if…else تودرتو #include <stdio.h> int main() { int numA, numB; // دو متغیر برای اعداد printf("دو عدد صحیح وارد کن: "); scanf("%d %d", &numA, &numB); if (numA >= numB) { // شرط اول: آیا numA بزرگتر یا مساوی numB است؟ if (numA == numB) { // اگر شرط اول درست بود، حالا این شرط رو بررسی کن: آیا مساوی هستند؟ printf("نتیجه: %d = %d \n", numA, numB); } else { // اگر numA بزرگتر یا مساوی numB بود، اما مساوی نبود، پس قطعاً بزرگتره printf("نتیجه: %d > %d \n", numA, numB); } } else { // اگر شرط اول (numA >= numB) نادرست بود، پس قطعاً numA کوچکتر از numB است printf("نتیجه: %d < %d \n", numA, numB); } return 0; } یه نکته کوچیک اما مهم: اگه بلوک کد داخل دستور `if` یا `else` فقط شامل یک دستور باشه، نیازی به استفاده از آکولاد `{}` نیست. این کار کد رو کوتاهتر و خواناتر میکنه، اما اگه بیش از یک دستور داشتید، حتماً از آکولاد استفاده کنید. به عنوان مثال، این کد: if (myVal > otherVal) { printf("Hello"); } printf("Hi"); با کد زیر کاملاً یکسان عمل میکنه: if (myVal > otherVal) printf("Hello"); printf("Hi"); امیدواریم این آموزش جامع و دوستانه براتون مفید بوده باشه و تونسته باشید با دستورات شرطی `if` و `if…else` در زبان C به خوبی آشنا بشید. این مقاله توسط سایت علمی رایشمند برای شما آماده شده است. عملگرها در زبان برنامهنویسی C دور زدن با حلقهها: آموزش کامل حلقه for در برنامهنویسی C پرینت 40 رتبه بندی این مطلب: بدون رتبه کلمات کلیدی: آموزش زبان برنامه نویسی سی مدیر ارشد رایشمندمدیر ارشد رایشمند سایر نوشته ها توسط مدیر ارشد رایشمند تماس با نویسنده مطالب مرتبط کلاسهای حافظه در C — چهار سبک نگهداری متغیرها با مثالهای واضح توابع بازگشتی در C — چطور تابع خودش را صدا میزند؟ چهار روش تعریف تابع در C برای بررسی عدد اول — با مثالهای مرحلهبهمرحله توابع تعریفشده توسط کاربر در زبان C به همراه آموزش و مثال تابع در برنامهنویسی C آموزش کامل به همراه مثال نوشتن یک نظر نام: لطفا نام خود را وارد نمایید. ایمیل: لطفا یک آدرس ایمیل وارد نمایید لطفا یک آدرس ایمیل معتبر وارد نمایید نظر: لطفا یک نظر وارد نمایید موافقم این فرم نام، ایمیل، آدرس IP و محتوای شما را جمعآوری میکند تا بتوانیم نظرات درج شده در وبسایت را پیگیری کنیم. برای اطلاعات بیشتر خطمشی رازداری و شرایط استفاده< /a> که در آن اطلاعات بیشتری در مورد مکان، چگونگی و چرایی ذخیره داده های شما دریافت خواهید کرد. شما باید این قوانین را بخوانید و قبول کنید. افزودن نظر
تو این مقاله میخوایم حسابی بریم سراغ یکی از پایه و اساسهای برنامهنویسی به زبان C: دستورات شرطی `if` و `if…else`. قراره با مثالهای متنوع و کاربردی، این دستورات رو موشکافی کنیم تا کاملاً برشون مسلط بشید. به طور خلاصه، دستورات شرطی به برنامه ما اجازه میدن که بر اساس یک "شرط"، تصمیم بگیره و مسیرهای مختلفی رو دنبال کنه. یعنی چی؟ یعنی میتونیم به برنامه بگیم: "اگر این اتفاق افتاد، فلان کار رو بکن؛ در غیر این صورت، اون یکی کار رو انجام بده!" این قابلیت، قدرت فوقالعادهای به برنامههای ما میده. دستور if در C: قدم اول تصمیمگیری اولین و سادهترین دستور شرطی، همون `if` هست. ساختار کلیش رو ببینیم: if (عبارت شرطی) { // اگر عبارت شرطی درست (True) باشه، این دستورات اجرا میشن } دستور if چطور کار میکنه؟ کار `if` خیلی سادهست: برنامه اول به «عبارت شرطی» که توی پرانتز نوشتیم نگاه میکنه: اگه عبارت شرطی، درست (true) باشه، کدها و دستوراتی که داخل بلوک `if` (بین آکولادها `{}`) نوشتیم، اجرا میشن. اما اگه عبارت شرطی نادرست (false) باشه، دستورات داخل بلوک `if` کلاً نادیده گرفته میشن و برنامه از بعد از آکولاد بستهشده `}` ادامه پیدا میکنه. برای اینکه بهتر بفهمید عبارتهای شرطی چطور درست یا نادرست ارزیابی میشن (مقدار غیر صفر برای درست و صفر برای نادرست)، میتونید به بخش مربوط به عملگرهای رابطهای و منطقی در مقاله عملگرها در برنامه نویسی C مراجعه کنید. مثال ۱: دستور if بیاید با یه مثال ساده شروع کنیم تا `if` رو بهتر بفهمیم. این برنامه یه عدد از کاربر میگیره و اگه اون عدد منفی باشه، پیغامی رو نشون میده: // برنامه بررسی عدد منفی #include <stdio.h> int main() { int inputNumber; // یک متغیر برای ذخیره عدد ورودی printf("یه عدد صحیح وارد کن: "); scanf("%d", &inputNumber); // اگر عدد ورودی کوچکتر از 0 باشه، این شرط درست میشه if (inputNumber < 0) { printf("شما عدد %d رو وارد کردید. \n", inputNumber); } printf("دستور if خیلی راحته!"); // این خط همیشه اجرا میشه return 0; } خروجی احتمالی (۱): یه عدد صحیح وارد کن: -7 شما عدد -7 رو وارد کردید. دستور if خیلی راحته! تو این حالت، وقتی کاربر عدد -7 رو وارد میکنه، شرط inputNumber < 0 درست ارزیابی میشه و جمله "شما عدد -7 رو وارد کردید." توی خروجی نمایش داده میشه. خروجی احتمالی (۲): یه عدد صحیح وارد کن: 10 دستور if خیلی راحته! این بار، اگه کاربر عدد 10 رو وارد کنه، عبارت شرطی inputNumber < 0 نادرست ارزیابی میشه و دستور داخل بلوک `if` اجرا نمیشه. برنامه مستقیماً به خط بعد از بلوک `if` میره و پیام "دستور if خیلی راحته!" رو نشون میده. دستور if…else در C اگه بخوایم برنامهمون دو مسیر کاملاً متفاوت رو بر اساس درست یا نادرست بودن یه شرط طی کنه، از دستور `if…else` استفاده میکنیم. یعنی اگه شرط درست بود یه کار انجام بده و اگه غلط بود، کار دیگهای رو. ساختار دستور if…else به صورت زیره: if (عبارت شرطی) { // اگر عبارت شرطی درست (True) باشه، این دستورات اجرا میشن } else { // اگر عبارت شرطی نادرست (False) باشه، این دستورات اجرا میشن } دستور if…else چطور کار میکنه؟ با if…else، دیگه هیچوقت دستوری نادیده گرفته نمیشه و همیشه یکی از دو بلوک کد اجرا میشه: اگه «عبارت شرطی» درست باشه: دستورات داخل بلوک `if` اجرا میشن. دستورات داخل بلوک `else` کلاً نادیده گرفته میشن و اجرا نمیشن. اگه «عبارت شرطی» نادرست باشه: دستورات داخل بلوک `else` اجرا میشن. دستورات داخل بلوک `if` کلاً نادیده گرفته میشن و اجرا نمیشن. مثال ۲: دستور if…else بیایید با یه برنامه ساده تعیین کنیم که آیا یک عدد زوج هست یا فرد: // عدد زوج است یا فرد؟ #include <stdio.h> int main() { int checkNumber; // متغیری برای ذخیره عدد printf("یه عدد صحیح وارد کن: "); scanf("%d", &checkNumber); // اگه باقیمانده تقسیم عدد به 2 صفر باشه، شرط درسته (زوج) if (checkNumber % 2 == 0) { printf("%d یه عدد زوج هست. \n", checkNumber); } // در غیر این صورت، عدد فرده else { printf("%d یه عدد فرد هست. \n", checkNumber); } return 0; } خروجی: یه عدد صحیح وارد کن: 7 7 یه عدد فرد هست. وقتی کاربر عدد 7 رو وارد میکنه، عبارت شرطی checkNumber % 2 == 0 (که معادل 7 % 2 == 0 هست) نادرست ارزیابی میشه و مقدار 0 رو برمیگردونه. در نتیجه، دستورات داخل بلوک `else` اجرا میشن و پیام "7 یه عدد فرد هست." نمایش داده میشه. if…else نردبانی در C گاهی اوقات، انتخابهای ما بیشتر از دو گزینه هستن. مثلاً میخوایم برای چندین حالت مختلف، کارهای متفاوتی انجام بدیم. اینجا `if…else` نردبانی (Ladder) به کمکمون میاد. این ساختار به شما اجازه میده که بین چندین عبارت شرطی به ترتیب بررسی کنید و هر جا یکی از شرطها درست بود، بلوک کد مربوط به اون اجرا بشه. ساختار if…else نردبانی: if (عبارت شرطی ۱) { // دستور(ها)ی مربوط به عبارت شرطی ۱ } else if(عبارت شرطی ۲) { // دستور(ها)ی مربوط به عبارت شرطی ۲ } else if (عبارت شرطی ۳) { // دستور(ها)ی مربوط به عبارت شرطی ۳ } // . // . else { // اگر هیچ کدام از شرطهای بالا درست نبودند، این دستور(ها) اجرا میشوند } مثال ۳: if…else نردبانی در C بیاید برنامهای بنویسیم که دو عدد صحیح رو از کاربر بگیره و رابطه بینشون (برابر، بزرگتر، کوچکتر) رو نشون بده: // برنامه ای برای مقایسه دو عدد صحیح #include <stdio.h> int main() { int firstNum, secondNum; // دو متغیر برای اعداد ورودی printf("دو عدد صحیح وارد کن: "); scanf("%d %d", &firstNum, &secondNum); // بررسی میکنه آیا دو عدد مساوی هستن if(firstNum == secondNum) { printf("نتیجه: %d = %d \n", firstNum, secondNum); } // بررسی میکنه آیا عدد اول بزرگتر از عدد دوم هست else if (firstNum > secondNum) { printf("نتیجه: %d > %d \n", firstNum, secondNum); } // اگه هیچ کدوم از شرطهای بالا درست نبودند، یعنی عدد اول کوچکتره else { printf("نتیجه: %d < %d \n", firstNum, secondNum); } return 0; } خروجی: دو عدد صحیح وارد کن: 12 23 نتیجه: 12 < 23 if…else تودرتو در C شما میتونید یک دستور if…else رو داخل بلوک `if` یا `else` یک دستور if…else دیگه بنویسید. به این حالت، if…else تودرتو (Nested) میگن. مثلاً، برنامه زیر دقیقاً شبیه مثال ۳ عمل میکنه و رابطه بین دو عدد صحیح رو نشون میده، اما این بار با استفاده از ساختار تودرتو: مثال ۴: if…else تودرتو #include <stdio.h> int main() { int numA, numB; // دو متغیر برای اعداد printf("دو عدد صحیح وارد کن: "); scanf("%d %d", &numA, &numB); if (numA >= numB) { // شرط اول: آیا numA بزرگتر یا مساوی numB است؟ if (numA == numB) { // اگر شرط اول درست بود، حالا این شرط رو بررسی کن: آیا مساوی هستند؟ printf("نتیجه: %d = %d \n", numA, numB); } else { // اگر numA بزرگتر یا مساوی numB بود، اما مساوی نبود، پس قطعاً بزرگتره printf("نتیجه: %d > %d \n", numA, numB); } } else { // اگر شرط اول (numA >= numB) نادرست بود، پس قطعاً numA کوچکتر از numB است printf("نتیجه: %d < %d \n", numA, numB); } return 0; } یه نکته کوچیک اما مهم: اگه بلوک کد داخل دستور `if` یا `else` فقط شامل یک دستور باشه، نیازی به استفاده از آکولاد `{}` نیست. این کار کد رو کوتاهتر و خواناتر میکنه، اما اگه بیش از یک دستور داشتید، حتماً از آکولاد استفاده کنید. به عنوان مثال، این کد: if (myVal > otherVal) { printf("Hello"); } printf("Hi"); با کد زیر کاملاً یکسان عمل میکنه: if (myVal > otherVal) printf("Hello"); printf("Hi"); امیدواریم این آموزش جامع و دوستانه براتون مفید بوده باشه و تونسته باشید با دستورات شرطی `if` و `if…else` در زبان C به خوبی آشنا بشید. این مقاله توسط سایت علمی رایشمند برای شما آماده شده است.