آخرین به روز رسانی در شنبه 18 مهر 1388 ساعت 22:52
نوشته شده توسط مدیر سایت
شنبه 11 مهر 1388 ساعت 21:04
حلقه ی for
موارد زیادی پیش می آید که بخواهیم کاری را چندین بار تکرار کنیم. در این موارد حلقه ها به کارمان می آیند. از پرکاربردترین و قدرتمندترین حلقه های جهان، حلقه ی for در C++ است! این حلقه در حالت ساده به فرم زیر است:
for (initial statement; condition; evaluation statement)
{
Repetitive instructions;
}
بخش اول داخل پرانتز، مقداردهی اولیه متغیر حلقه است. بخش دوم شرطی است که پس از اجرای عبارت داخل حلقه کنترل می شود و در صورتیکه برقرار بود، حلقه ادامه پیدا خواهد کرد. بخش سوم، به روز رسانی متغیر حلقه است که پس از هر بار اجرا انجام می شود. بهتر است برای روشن شدن مطلب مثالی بزنیم. فرض کنید بخواهیم تمام حروف اسکی بین 0 تا 255 را روی کنسول چاپ کنیم:
cout << "print all ASCII characters using \"for\" loop" << endl;
for (int j = 0; j < 256; j++)
{
cout << (char)j << " ";
}
در این مثال، j متغیر حلقه است که با 0 مقدار دهی اولیه شده است. هر چند می توان متغیر حلقه را در بیرون حلقه هم تعریف کرد، لیکن غالبا بهتر است که متغیر به صورت محلی تعریف شود. شرط پایان حلقه عبارت j < 256 است و در نهایت j++ عبارتی است که پس از هر بار اجرای حلقه، اعمال شده و سپس شرط حلقه کنترل می شود. در بدنه حلقه تنها خواسته ایم که حرف متناظر با عدد j نمایش داده شود. اگر بخواهیم ببینیم که این حلقه چند بار اجرا می شود می توانیم یک متغیر دیگر تعریف کنیم و کد را به صورت زیر تغییر دهیم:
int counter = 0; //counts number of loop execution
cout << "print all ASCII characters using \"for\" loop" << endl;
for (int j = 0; j < 256; j++)
{
cout << (char)j << " ";
counter++;
}
cout << "\n\"for\" loop executed " << counter << " times";
cout << "\n**************************************************" << endl;با اجرای این کد خروجی زیر ظاهر خواهد شد:

ملاحظه می شود که عبارت داخل حلقه دقیقا 256 بار اجرا شده است. دقت کنید که برخی حروف اسکی، کنترلی بوده و قابل چاپ نیستند از این روست که برخی مکانها خالی مانده اند. در حلقه ی for می توان چندین متغیر حلقه داشت و برای هر کدام عبارت خاصی را در انتهای هر دور اجرای حلقه اعمال کرد.
حلقه های while و do-while
حلقه ی دیگری که در C++ کاربرد دارد حلقه ی while است که به صورت زیر تعریف می شود:
while(condition)
{
Repetitive instructions;
}
بر خلاف حلقه ی for در اینجا عبارتی که به طور خودکار کم یا زیاد شود وجود ندارد و خود ما باید آن را در داخل حلقه کنترل کنیم. اگر مثال قبلی را با while بنویسیم خواهیم داشت:
cout << "\n\nprint all ASCII characters using \"while\" loop" << endl;
int i = 0;
counter = 0;
while(i < 256){
cout << (char)i << " ";
i++;
counter++;
}
cout << "\n\"first while\" loop executed " << counter << " times";
cout << "\n**************************************************" << endl; در اینجا متغیر i را خودمان افزایش داده و در هر بار اجرا، کنترل می کنیم که مقدار آن از 256 کمتر باشد. می توانستیم برای صرفه جویی در نوشتن، کد فوق را به صورت زیر بنویسیم. دقت کنید که اگر به جای ++i از عبارت i++ استفاده کنیم محتوای حلقه 257 بار اجرا خواهد شد. چرا؟
i = -1;
counter = 0;
while(++i < 256){// now try i++
cout << (char)i << " ";
counter++;
}حلقه ی do-while حلقه ی دیگری است که خیلی شبیه به حلقه ی while است با این تفاوت که مستقل از شرط حلقه، حتما حداقل یک بار اجرا خواهد شد:
do
{
Repetitive instructions;
} while(condition)
مثال قبلی را این بار با استفاده از do-while ببینید:
i = 0;
counter = 0;
do{
cout << (char)i++ << " ";
counter++;
}while(i < 256);
دستور goto
آخرین حلقه در C++ استفاده از دستور goto است که به دلیل اینکه معمولا استفاده از این دستور خطرناک است و ضمنا بازخوانی برنامه را هم دشوار می کند، به هیچ وجه توصیه نمی شود. نحوه ی استفاده به صورت زیر است:
i = 0; counter = 0;
loop:
cout << (char)i++ << " ";
counter++;
if(i < 256)
goto loop;
یک برچسب با نام loop تعریف کرده ایم و با استفاده از دستور goto به آن پرش می کنیم. باز هم تاکید می-کنم حتی الامکان از این دستور استفاده نکنید. کد برنامه های این مقاله در قالب پروژه Exam_05 در سایت قرار خواهد گرفت.