دستورات تكرار iteration statements در جاوا (1)

دستورات تكرار iteration statements در جاوا (1)

دستورات تكرار iteration statements

دستورات تكرار در جاوا عبارتند از for، while،و do-while. اين دستورات آن چه را ما " حلقه " مي ناميم ، ايجاد مي كنند. حلقه يك مجموعه از دستورالعملها را بطور تكراري اجرا مي‌كند تا اينكه يك شرط پاياني را ملاقات نمايد.

While

حلقه while اساسي ترين دستور حلقه سازي (looping) در جاوا است. اين دستور مادامي كه عبارت كنترل كننده ، صحيح (true) باشد، يك دستور يا يك بلوك را تكرار مي كند.

شکل کلی دستور while

while(condition ){
// body of loop
}

شرط يا condition ممكن است هر عبارت بولي باشد. زمانی که عبارت شرطي صحت داشته باشد، بدنه حلقه اجرا خواهد شد. هنگامي كه شرط صحت نداشته باشد، كنترل بلافاصله به خط بعدي كدي كه بلافاصله پس از حلقه جاري قرار دارد، منتقل خواهد شد. اگر فقط يك دستور منفرد در حال تكرار باشد، استفاده از ابروها غير ضروري است.

يك حلقه while وجود دارد كه تا 10 را محاسبه كرده

// Demonstrate the while loop.
class While {
public static void main(String args[] ){
int n = 10;
while(n > 0 ){
System.out.println("tick" + n);
n--;
}
}
}

هنگامي كه اين برنامه را اجرا مي كنيد، ده مرتبه "tick" را انجام خواهد داد

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

از آنجايي كه حلقه while عبارت شرطي خود را در بالاي حلقه ارزيابي مي‌كند، اگر شرط ابتدايي ناصحيح باشد ، بدنه حلقه اجرا نخواهد شد.

در قطعه زير ، فراخواني ()println هرگز اجرا نخواهد شد

int a = 10, b = 20;
while(a < b)
System.out.println("This will not be displayed");

بدنه while يا هر حلقه ديگر در جاوا ممكن است تهي باشد. زيرا دستور تهي(دستوري كه فقط شامل ; باشد) از نظر قواعد تركيبي، در جاوا معتبراست.

اين برنامه نقطه مياني (midpoint) بين i و j را پيدا مي كند

// The target of a loop can be empty.
class NoBody {
public static void main(String args[] ){
int i,j;
i = 100;
j = 200;
// find midpoint between i and j
while(++i <-- j); // no body in this loop
System.out.println("Midpoint is" + i);
}
}

نتیجه بدین صورت خواهد بود

Midpoint is 150

do-While

بدنه while يا هر حلقه ديگر در جاوا ممكن است تهي باشد. زيرا دستور تهي(دستوري كه فقط شامل ; باشد) از نظر قواعد تركيبي، در جاوا معتبراست . به عنوان مثال ، برنامه زير را در نظر بگيريد : اگر عبارت شرطي كنترل كننده يك حلقه while در ابتدا ناصحيح باشد آنگاه بدنه حلقه اصلاً اجرا نمي شود. اما گاهي می‌خواهیم در چنين شرايطي، بدنه حلقه حداقل يكبار اجرا شود. به عبارت ديگر، در حالات خاصي مايليم عبارت پايان دهنده در انتهاي حلقه را آزمايش كنيم. جاوا حلقه اي را عرضه مي كند كه دقيقاً همين كار را انجام مي دهد، حلقه‌ی do-while.

حلقه do-while همواره حداقل يكبار بدنه خود را اجرا مي كند، زيرا عبارت شرطي آن در انتهاي حلقه قرار گرفته است.

شکل کلی حلقه do-while

do{
// body of loop
} while(condition);

هر تكرار از حلقه do-while ابتدا بدنه حلقه را اجرا نموده، سپس به ارزيابي عبارت شرطي خود مي پردازد. اگر اين عبارت صحيح (true) باشد، حلقه اجرا خواهد شد. در غير اين صورت حلقه پايان مي‌گيرد. نظير كليه حلقه‌هاي جاوا، شرط بايد يك عبارت بولي باشد.

برنامه‌ای كه حلقه‌ی do-while را نشان مي دهد

// Demonstrate the do-while loop.
class DoWhile {
public static void main(String args[] ){
int n = 10;

do {
System.out.println("tick" + n);
n--;
} while(n > 0);
}
}

خروجي اين برنامه مشابه برنامه قبلي خواهد بود

حلقه موجود در برنامه قبلي ، اگر چه از نظر تكنيكي صحيح است ، اما مي‌توان آن را به شكل كاراتري بصورت زير دوباره نويسي نمود:

: do {
+ System.out.println("tick " + n);
+ } while--(n > 0);

در مثال فوق، عبارت (0>n) عمل كاهش n و آزمايش براي صفر را در يك عبارت گنجانده است. ابتدا دستور n اجرا مي شود و n را كاهش داده و مقدار جديد را به n برمي گرداند. اين مقدار سپس با صفر مقايسه مي شود. اگر بزرگتر از صفر باشد، حلقه ادامه مي يابد. درغير اين صورت حلقه پايان مي گيرد. حلقه do-while به ويژه هنگام پردازش انتخاب منو بسيار سودمند است، زيرا معمولاً مايليد تا بدنه يك حلقه منو حداقل يكبار اجرا شود.

برنامه پیاده سازی یک سیستم Help برای دستورات تکرار و انتخاب در جاوا

// Using a do-while to process a menu selection -- a simple help system.
class Menu {
public static void main(String args[])
throws java.io.IOException {
char choice;

do {
System.out.prinln("Help on:");
System.out.prinln(" 1 .if");
System.out.prinln(" 2 .switch");
System.out.prinln(" 3 .while");
System.out.prinln(" 4 .do-while");
System.out.prinln(" 5 .for\n");
System.out.prinln("Choose one:");
choice =( char )System.in.read)(;
} while(choice < '1' || choice > '5');

System.out.println("\n");
switch(choice ){
case '1':
System.out.println("The if:\n");
System.out.println("if(condition )statement;");
System.out.println("else statement;");
break;
case '2':

System.out.println("The switch:\n");
System.out.println("switch(expression ){");
System.out.println(" case constant:");
System.out.println(" statement sequence");
System.out.println(" break;");
System.out.println(" //... ");
System.out.println("}");
break;
case '3':
System.out.println("The switch:\n");
System.out.println(while(condition )statement;");
break;
case '4':
System.out.println("The do-while:\n");
System.out.println("do {"); System.out.println(" statement;"); System.out.println("} while( condition);"); break;
case '5':
System.out.println("The for:\n");
System.out.print("for(init; condition; iteration)");
System.out.println(" statement;");
break;
}
}
}

يك اجراي نمونه توليد شده توسط اين برنامه

Help on:
1 .if
2 .switch
3 .while
4 .do-while
5 .for
Choos one:
4

The do-while:

do {
statement;
} while( condition);

از حلقه do-while براي تصديق اين كه كاربر يك گزينه معتبر را وارد كرده باشد، استفاده مي شود. در غير اين صورت، به كاربر مجدداً اعلان خواهد شد. از آنجايي كه منو بايد حداقل يكبار به نمايش درآيد، do-while حلقه كاملي براي انجام اين مقصود است.

دقت كنيد كه كاراكترهااز صفحه كليد بوسيله فراخواني ()system.in.read خوانده مي شوند. اين يكي از توابع ورودي كنسول در جاوا است.

از ()system.in.read در اينجا براي بدست آوردن گزينه كاربر استفاده شده است. اين تابع كاراكترها را از ورودي استاندارد مي خواند (كه به عنوان عدد صحيح برگردان شد، اين دليلي است كه چرا مقدار برگردان از طريق تبديل (cast) به char تبديل شده است).

بصورت پيش فرض، ورودي استاندارد، بافر شده خطي است (line buffered) بنابراين قبل از اينكه كاراكترهايي را كه تايپ كرده ايد به برنامه ارسال كنيد، بايد كليد ENTER را فشار دهيد.

ورودي كنسول در جاوا كاملاً محدود شده و كار با آن بسيار مشكل است. به علاوه اكثر برنامه و ريز برنامه هاي واقعي نوشته شده با جاوا گرافيكي و پنجره اي هستند. از سوي ديگر، چون از ()system.in.read استفاده شده ، برنامه بايد جملهthrowsjava.io.loException را كاملاً توصيف نمايد. اين خط براي مديريت خطاهاي ورودي ضروري است.



نظرات کاربران



عبارت امنیتی : حاصل 2 × 3 می شود :
متن پیام :