جلسه هفتم-عبارات تکرار

جلسه هفتم : عبارات تکرار

عبارات تکرار iteration statement در جاوا عبارتند از for,while و do-while . نتیجه عملکرد این عبارات عموما حلقه loop نامیده می شود. هر حلقه مکررا مجموعه ای از دستورالعمل ها را آنقدر اجرا می کند تا شرط پایان کار برآورده شود. جاوا حلقه هایی برای برآورده ساختن تمام نیازهای برنامه سازی دارد.

حلقه while:

حلقه while اصلی ترین حلقه جاوا محسوب می شود. تا زمانی که حاصل جمله کنترل کننده این حلقهtrue است؛ اجزای عبارت یا بلوکی از عبارات تکرار می شود. شکل کلی آن بدین صورت است:

while(condition) {

// body of loop

}

Condition می تواند هر جمله بولی باشد. تا زمانی که حاصل آن true باشد؛ قسمتbody اجرا می شود. هرگاه حاصل آن false شود؛ کنترل به نخستین سطر پس از حلقه هدایت می شود. چنانچه هدف تکرار ؛اجرای تنها یک عبارت باشد؛ وجود {} لازم نخواهد بود.از آنجایی گه حلقه while جمله شرطی خود را در ابتدای حلقه بررسی می کند ؛ در صورت false بودن شرط؛ قسمت body حلقه اصلا اجرا نمی شود.
قسمت body حلقه )while یا سایر حلقه های جاوا) می تواند خالی باشد. دلیل این امر آن است که عبارتهایnull (عباراتی که تنها از یک” ; “ تشکیل می شوند)از نظر گرامری درست هستند.

مثال:

خروجی :

tick 10 tick 9 tick 8 tick 7 tick 6 tick 5 tick 4 tick 3 tick 2 tick 1

 

Do-while:

همانگونه که خواندید؛ چنانچه جمله شرطی کنترل کننده هر حلقه while از ابتدا false باشد؛ در آن صورت قسمت body حلقه اصلا اجرا نمی شود. اما گاهی لازم است قسمتbody حداقل یک مرتبه اجرا شود حتی اگر حاصل جمله شرطی از همان ابتدا false باشد. یعنی گاهی اوقات لازم است جمله شرطی را به جای ابتدا؛ در انتهای حلقه بررسی کنید.حلقهdo-while همیشه قسمتbody را حداقل یک مرتبه اجرا می کند ؛چرا که جمله شرطی آن در انتهای حلقه قرار دارد.شکل کلی آن را با هم می بینیم:

do {

// body of loop

} while (condition);

هر بار که حلقه do-while تکرار می شود؛ ابتدا قسمتbody اجرا می شود و سپس حاصل جمله شرطی ارزیابی می گردد. اگر این حاصلtrue باشد؛حلقه تکرار خواهد شد و در غیر این صورت حلقه به پایان می رسد. شرطه حلقه باید حتما از نوع Boolean باشد.

حلقه do-while خصوصا زمانی مفید است که از آن برای پردازش گزینه های یک منو استفاده می کنید. چرا که معمولا در این گونه شرایط لازم است قسمتbody حداقل یک مرتبه اجرا شود.

مثال:

حلقهfor یکی از ساختارهای قدرتمند و کاربردی جاوا به شمار می آید. وجود دو شکل مختلف برای حلقه for از نگارش J2SE 5 مطرح شد. نخستین شکل حلقه for ؛همان حلقه قدیمی است که از زمان عرضه نخستین نگارش جاوا مطرح بوده است. شکل دوم که شکل جدید این حلقه است؛ به صورتfor-each می باشد.

شکل کلی حلقه قدیمی به این صورت است

for(initialization; condition; iteration) {

// body

}

حلقه for به این شکل عمل می کند:

وقتی حلقه آغاز می شود؛قسمت initialization حلقه اجرا می شود. عموما این قسمت جمله جبری است که مقدارد متغیر کنترل حلقه را تعیین می کند. از این متغیر به عنوان شمارنده کنترل حلقه استفاده می شود. لازم است بدانید که جمله جبری مقدار دهی اولیه تنها یک مرتبه اجرا می شود. سپس condition ارزیابی می شود. حاصل آن باید از نوع Boolean باشد.condition معمولا متغیر کنترل حلقه را با یک مقدار معین مقایسه می کند. چنانچه حاصل کار true باشد؛ قسمت body اجرا می شود.
چنانچه حاصل false باشد حلقه به پایان می رسد. سپس قسمتiteration حلقه اجرا می گردد .این قسمت معمولا جمله جبری است که مقدار متغیر کنترل حلقه را افزایش یا کاهش می دهد. حلقه سپس تکرار می شود و هر بار ابتدا جمله شرطی ارزیابی می شود؛سپس قسمت body اجرا می گردد و سپس قسمت interation اجرا می گردد. این فرآیند آنقدر تکرار می گردد تا حاصل جمله کنترل کنندهfalse شود.
گاهی اوقات لازم می شود که بیش از یک عبارت را در قسمتهایinitialization و interation به کار ببرید.برای این کار این عبارت ها را توسط کاما از هم جدا می کنیم.
می توانید سه قسمت نامبرده در حلقه for را حذف کنید؛ در این حالت می توانید یک حلقه نامحدود که هیچگاه به پایان نمی رسد بسازید.

هر کدام از این سه قسمت می تواند از ساختار اصلی حلقه for حذف گردد.

مثال:

 

شکل for-each از حلقه for:

نظریه معاصر زبانها مفهومfor-each را به خوبی پذیرفته است و این سبک به سرعت به یکی از ویژگی های استانداردی مبدل می شود که برنامه سازان می بایست انتظار آن را داشته باشند. حلقه سبک for-each به گونه ای طراحی شده است تا چرخه ای برای کلکسیونی از شی ء ها ؛مثلا یک آرایه؛ به صورت کاملا متوالی و سریال و از ابتدا تا انتها ایجاد نماید.

For (type itr-var : collection) statement-block

Type مشخص کننده نوع وitr-var مشخص کننده نام متغیر تکرار است که عناصر یک کلکسیون را یک به یک و از ابتدا به انتها دریافت می کند. کلکسیونی که چرخه برای آن ایجاد می شود؛ با collection مشخص می شود. انواع گوناگونی از کلکسیون ها را می توان با for به کار برد اما تنها نوع مورد استفاده در این unit ؛آرایه ها هستند.

هر بار که حلقه تکرار می شود؛ عنصر بعدی در کلکسیون بازیابی و در itr-var ذخیره می شود. حلقه آنقدر تکرار می شود تا تمام عناصر در کلکسیون بازیابی می شود.چون متغیر تکرار؛ مقادیرش را از کلکسیون ها به دست می آورد؛type باید با نوع عناصر ذخیره شده در کلکسیون یکسان باشد(یا سازگار باشد). از این رو ؛type هنگام گردش در بین عناصر آرایه باید با نوع عناصر آنها سازگار باشد. برای درک انگیزه ابداع حلقه های سبک for-each ؛نوع حلقه for ایی را در نظر بگیرید که این سبک جدید به عنوان جایگزین آن طراحی شده است.

نکته مهمی درباره حلقه سبکfor-each وجود دارد که باید به خوبی درک کنید. چون متغیر تکرار آن با آرایه مرتبط است؛ لازم است “فقط خواندنی” باشد. تخصیص مقدار به این متغیر؛ هیچ تاثیری بر آرایه ندارد. به عبارت دیگر؛ محتوای آرایه را نمی توانید از طریق تخصیص مقدار جدید به متغیر تکرار تغییر دهید. برنامه زیر را در نظر بگیرید:

خروجی :

۱۲۳۴۵۶۷۸۹۱۰

۱۲۳۴۵۶۷۸۹۱۰




پاسخ دهید

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

*

code