به ششمین جلسه از آموزش برنامه نویسی ++C خوش آمدید. در این جلسه با مبحث دستورات تکرار (حلقه ها) در زبان ++C آشنا خواهیم شد.
دستورات تکرار
هرگاه بخواهیم برخی از دستورات برنامه بیش از یک بار اجرا شوند، از دستورات تکرار استفاده می کنیم. این دستورات در همه زبان های برنامه نویسی موجود است و در ادامه به بررسی هر یک از آنها در زبان ++C خواهیم پرداخت. دستورات تکرار در زبان ++C عبارتند از:
- حلقه while
- حلقه do..while
- حلقه for
دستورات تکرار در ++C
حلقه while
الگوی استفاده از حلقه while بدین صورت است: ;while (condition) statement
در الگوی فوق عبارت condition همان شرطی است که می بایست تست شود و چنانچه درست باشد، statement اجرا می شود. statement نیز هر دستور قابل اجرایی در زبان ++C است. پس الگوی فوق را بدین شکل می توان تشریح کرد. ابتدا شرط موجود در داخل پرانتز (condition) تست شده و چنانچه ارزش درست داشته باشد، دستورات پس از آن (statement) اجرا خواهند شد. این روند بررسی condition و اجرای statement ادامه خواهد داشت (تکرار خواهد شد)، تا زمانیکه شرط غلط شود. در این صورت کنترل از حلقه خارج شده و به اجرای ادامه برنامه خواهد پرداخت.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 |
int main() { int number = 1; while(number <= 10) { cout << "Hello" << endl; number++; } return 0; } |
در برنامه بالا در خط ۵ مقدار متغیر number تست شده و کوچکتر بودن آن از عدد ۱۰ بررسی می شود. تا زمانیکه شرط درست باشد، پیغام موجود در خط ۷ (کلمه Hello) در خروجی چاپ شد. پس از آن در خط ۸ یک واحد به متغیر number (متغیر کنترل حلقه) اضافه می شود. این کار برای پیش بردن مقدار متغیر و بالاخره غلط شدن شرط حلقه در آینده است.
خروجی قطعه کد فوق بدین صورت است:
1 2 3 4 5 6 7 8 9 10 |
Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello |
حلقه do..while
حلقه do..while دقیقا شبیه حلقه while است. با این تفاوت که شرط حلقه به جای ابتدا، در انتهای حلقه بررسی می شود. الگوی استفاده از حلقه do..while بدین صورت است: ;(do statement while (condition
در الگوی فوق تا زمانیکه شرط درست باشد، statement اجرا (تکرار) می شود. تنها تفاوت این دستور با حلقه while این است که دستورات بدنه حلقه (statement) صرف نظر از درست بودن یا غلط بودن شرط حلقه، حداقل یکبار اجرا می شوند. دلیل این امر این است که ابتدا statement اجرا شده و سپس condition بررسی می شود.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int main() { int number = 1; do { cout << "Hello" << endl; number++; } while(number <= 10); return 0; } |
برنامه بالا دقیقا همان خروجی برنامه قبل را دارد (۱۰ مرتبه چاپ عبارت Hello در خروجی). تنها تفاوت در زمان بررسی شرط حلقه است. در حلقه do..while شرط، به جای ابتدای حلقه، در انتهای حلقه چک می شود.
حلقه for
الگوی استفاده از حلقه for بدین صورت است: ;for (initialization ; condition ; update) statement
در این الگو condition (شرط حلقه) و statement (هر دستور قابل اجرا) است (مانند قبل). در درون پرانتز دو عبارت initialization و update به چشم می خورد. initialization برای تعریف و یا مقداردهی متغیر کنترل حلقه و update برای جلو بردن و بروزرسانی متغیر کنترل حلقه استفاده می شوند. دقت داشته باشید که بخش های سه گانه درون پرانتز با سمی کالن (;) از هم جدا می شوند.
ترتیب اجرای بخش های ذکر شده در حلقه for بدین صورت است:
- ارزیابی عبارت initialization
- بررسی شرط condition (اگر نادرست باشد، حلقه خاتمه می یابد)
- اجرای statement
- ارزیابی عبارت update
- تکرار گام های ۲ تا ۴
برای توضیحات بیشتر به ویدئوی ضمیمه آموزش مراجعه نمایید.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 |
int main() { for (int i = 1 ; i <= 10 ; i++) cout << "Hello" << endl; return 0; } |
برنامه بالا دقیقا همان خروجی قطعه کدهای قبل را دارد (۱۰ مرتبه چاپ عبارت Hello در خروجی).
do..while ، while و یا for ؟
یک سوال؟ هر کدام از دستورات do..while ، while و for را در چه موقعیتی باید استفاده کرد. در حالت کلی این دستورات برتری خاصی نسبت به یکدیگر ندارند و قابل تبدیل و جایگزینی با یکدیگر هستند. ولی به عنوان توصیه، هر زمان که تعداد تکرار دستورات حلقه از قبل مشخص است، بهتر است از حلقه for استفاده کنیم. در غیر اینصورت می توان از هر کدام از دستورات while و یا do..while استفاده کرد (زمانیکه تعداد دفعات تکرار از قبل مشخص نیست).
دستور break
دستور break جزو دستورات پرش در زبان ++C است. هرگاه در یک حلقه بخواهیم به محض برقراری یک شرط خاص، از حلقه خارج شویم و از ادامه اجرای آن صرف نظر کنیم، از دستور break (به معنی شکستن) استفاده می کنیم.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 |
int main() { for (int i = 1 ; i <= 10 ; i++) { if(i == 5) break; cout << i << endl; } } |
در برنامه بالا در خط ۵ مقدار متغیر i تست شده و برابر بودن آن با عدد ۵ بررسی می شود. اگر شرط درست باشد، دستور break اجرا شده و ما از حلقه خارج می شویم. این کار باعث می شود که دورهای بعدی حلقه دیگر اجرا نشوند.
خروجی قطعه کد فوق بدین صورت است:
1 2 3 4 |
1 2 3 4 |
در خروجی فوق می بینیم که اعداد ۵ به بعد در خروجی چاپ نشده اند و دلیل آن استفاده از دستور break است.
دستور continue
دستور continue یکی دیگر از دستورات پرش در زبان ++C است. هرگاه در یک حلقه بخواهیم به محض برقراری یک شرط خاص، به دور بعدی حلقه برویم (با صرفنظر از دستورات باقیمانده در ادامه حلقه)، از دستور continue (به معنی ادامه دادن) استفاده می کنیم.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 |
int main() { for (int i = 1 ; i <= 10 ; i++) { if(i == 5) continue; cout << i << endl; } } |
در برنامه بالا در خط ۵ مقدار متغیر i تست شده و برابر بودن آن با عدد ۵ بررسی می شود. اگر شرط درست باشد، دستور continue اجرا شده و ما به دور بعدی حلقه می رویم. این کار باعث می شود که دستورات بعد از آن (echo) دیگر اجرا نشوند.
خروجی قطعه کد فوق بدین صورت است:
1 2 3 4 5 6 7 8 9 |
1 2 3 4 6 7 8 9 10 |
با دقت در خروجی فوق می بینیم که عدد ۵ در بین اعداد وجود ندارد و دلیل آن استفاده از دستور continue است.
به پایان این جلسه آموزشی رسیدیم. در آینده با بخشهای دیگری از زبان ++C آشنا خواهیم شد. با ما همراه باشید…
9 دیدگاه. ارسال دیدگاه جدید
سلام وقتتون بخیر
من آموزش هاتون رو میبینم و واقعا خیلی خوبه ازتون ممنونم
استادمون توی دانشگاه بعد از تدریس for گفتن برنامه ای بنویسید که ۲۰ عدد صحیح دریافت کند و میانگین آنها را محاسبه و چاپ کند.
هر چی فکر میکنم چیزی به ذهنم نمیرسه بجز تعریف ۲۰ متغیر. ممکنه راهنمایی کنید.
دوست عزیز برای این کار نیاز به تعریف آرایه هست. جلسه ۸ (آرایه ها در ++C) میتونه بهتون کمک کنه.
توضیحات عاااااالی بود
واقعا آموزش شما بی نظیره. بی نهایت ممنون. امیدوارم همیشه سلامت و سربلند باشید.
آقا شما عالی ایییییییید
همینطوری پر قدرت ادامه بدین
سلام استاد خسته نباشید
من برای دستور while در آخر حلقه برای ++number به جای مثبت دو تا منفی گذاشتم و با این حال منتظر ارور بودم ولی اومد hello رو به سرعت به تعداد میلیون ها بار تو cmd چاپ کرد.
میخواستم بدونم بر چه اساسه؟
(و فکر کنم جواب درستش اینه که به جای اینکه به کمتر مساوی ۱۰ برسه یکی یکی کم میشه و تا میلیون ها عدد منفی ادامه پیدا میکنه و به همین دلیل چون هیچوقت به عدد مثبت نمیرسه همینجوری عبارت hello رو تایپ میکنه)
بله دوست عزیز درسته
دقیقا به همین علتی که گفتید این اتفاق افتاده
بسیار عالی
صرفه جویی در زمان
صرفه جویی در هزینه
بهترین و با کیفیت ترین انتقال مفهوم
مثال های متعدد و …
تشکر با عشق
ممنونم دوست عزیز، لطف دارید