خوراک پی سی کدنویس

ورود کاربران

آمار سایت

اعضا : 431
محتوا : 74
پیوندها : 6
بازدیدهای محتوا : 245446

حاضرین در سایت

 78 مهمان حاضر

برای نمایش بهتر سایت، از مرورگر استاندارد فایرفاکس استفاده کنید! مرورگر اینترنت اکسپلورر متعلق به دهه گذشته است!

firefox icon

Valid XHTML 1.0 Transitional Valid CSS!

حلقه ها در ++C

2 امتیاز

حلقه ی 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;

با اجرای این کد خروجی زیر ظاهر خواهد شد:

خروجی برنامه حلقه for
ملاحظه می شود که عبارت داخل حلقه دقیقا 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 در سایت قرار خواهد گرفت.
  • bahar  - afarin
    avatar
    khaily khob bod azizam
    tnk
  • غزل
    avatar
    سلام
    خوب بود
    استفاده كردم از مطالبتون :P
  • nasrin  - c++
    avatar
    salam.khaste nabashid.siteton khobe vali kheyli mokhtasar tozih dadin.age mishe matalebeton ro gostaresh bedin.mamnon
  • ali  - sallam
    avatar
    mitavan do for ra adgam kard?anva an ra arsal konid
    motshakeram
  • ali  - فور تو در تو
    avatar
    سلام
    کدومتون میتونه دو حلقه for را یکی کنه
    بدون for each
  • ali
    avatar
    هرکی تونیست یه ایمیل بزنه
اظهار نظر
مشخصات شما:
گراواتار enabled
نظر:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):s:!::?::idea::arrow:
امنیت
کد آنتی اسپم نمایش داده شده در عکس را وارد کنید.