مرجع پارسی MyBB

نسخه‌ی کامل: آشنایی با حلقه while در زبان جاوا
شما درحال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب‌بندی مناسب.
آشنایی با حلقه while در زبان جاوا
پس از آشنایی با اولین و پیچیده ترین نوع Loop ها در آموزش قبل، حال نوبت به بررسی نوع دیگری از انواع Loop ها تحت عنوان while می رسد. در واقع بیشترین وجه تمایز for و while تفاوت ساختاری است. در Loop یی از جنس while بر خلاف for ما ابتدا به ساکن می بایست متغیر خود را تعریف نماییم سپس در دستور ()while شرط خود و یا همان نقطه پایانی Loop را در نظر بگیریم و در داخل دو علامت { } که مقابل ()while قرار می گیرد مقدار افزایش متغیر را تعریف کنیم. برای روشن تر شدن مطالب فوق، پروژه ای تحت عنوان WhileLoop ایجاد کرده سپس یک کلاس تحت عنوان WhileLoop در آن می سازیم و مطالب فوق را در آن به صورت زیر اعمال می کنیم:
public class WhileLoop {
   public static void main(String[] args) {
       int number = 1;
       while (number <= 10) {
           System.out.println("My Number Is: " + number);
       }
   }
}

همان طور که مشاهده می کنیم، متغیری از جنس int خارج از Loop تعریف کرده ایم و مقدار اولیه ی آن را معادل با یک قرار داده ایم. سپس ساختار اولیه Loop یی از جنس while را نوشته ایم و به این صورت آن را تکمیل کرده ایم که شرط خود یا همان نقطه پایانی را داخل پرانتز به صورت number <= 10 نوشته ایم. به عبارت دیگر مادامی که مقدار متغیر ما تحت عنوان number کوچکتر یا مساوی با ده باشد، این Loop ادامه خواهد یافت. سپس در داخل دو علامت { }، خروجی برنامه را می نویسیم و از آنجایی که می خواهیم خروجی برنامه ما در پنجره کنسول به نمایش در آید از دستور ;()System.out.println استفاده می کنیم و در آن پارامتری تحت عنوان :My Number Is به معنی "عدد من هست:" به علاوه نام متغیر خود که همان number است را می نویسیم. اکنون بایستی انتظار داشته باشیم پس از اجرای برنامه، مادامی که مقدار متغیر ما کوچکتر یا مساوی با ده است این Loop اجرا شود. پس از اجرای برنامه با موقعیتی مواجه می شویم که در تصویر زیر نشان داده شده است:
[تصویر:  e1af50da0f0ce22cbfa25ad49a56048b.jpg]
در حقیقت از آنجا که در Loop خود تعریف نکرده ایم که مقدار متغیر ما به چه میزان در هر بار Loop شدن افزایش یابد، این Loop تا بی نهایت ادامه خواهد یافت (اگر به دایره قرمز رنگ در عکس توجه کنیم می بینیم که نشانگر لیستی طولانی از Loop شدن متغیر است که مسلماً بیش از 10 بار می باشد!)
برای رفع این مشکل نیاز داریم تا مقدار افزایشی متغیر خود در هر بار Loop شدن را به برنامه اضافه کنیم. نکته ای که در اینجا می بایست مد نظر قرار دهیم این است که در while بر خلاف for این مقدار افزایشی را می بایست در داخل دو علامت {} قرار دهیم و این در حالی است که محل قرار گیری مقدار افزایشی در نحوه اجرای برنامه خیلی تعیین کننده است. برای روشن شدن این مطلب کد خود را به شکل زیر تکمیل می کنیم:
public class WhileLoop {
   public static void main(String[] args) {
       int number = 1;
       while (number <= 10) {
           number++;
           System.out.println("My Number Is: " + number);
       }
   }
}

در این کد پیش از اجرای دستور ;(System.out.println("My Number Is: " + number برنامه یک واحد به مقدار متغیر number اضافه کرده سپس دستور بعدی که به نمایش در آوردن My number is: + number در پنجره کنسول است را اجرا می کند که در این صورت همان طور که ملاحظه می شود مقدار اولیه متغیر ما مساوی با یک است، حال while به برنامه دستور می دهد که یک واحد به مقدار اولیه متغیر اضافه شود و در نهایت مقدار نهایی را در پنجره کنسول به نمایش در آورد که این مقدار نهایی معادل با عدد دو است چرا که مقدار افزایشی را ++number تعریف کرده ایم. خروجی برنامه در این مرحله به شکل زیر خواهد بود:
[تصویر:  254b017238df9ffeb931dd277773a97e.jpg]
همان طور که انتظار می رفت، اولین خروجی برنامه عدد دو است و این کار ادامه می یابد تا Loop طراحی شده توسط ما به عدد ده می رسد. از آنجا که ما خود به برنامه دستور داده ایم مادامی که مقدار متغیر کوچکتر یا مساوی با ده است این کار ادامه یابد، پس در فاز یکی مانده به آخر که My Number Is: 10 می باشد جواب شرط قرار گرفته در داخل پرانتز true می شود پس این Loop یک بار دیگر اجرا می شود و عدد یازدهم به نمایش در می آید اما در این مرحله از برنامه از آنجا که جواب شرط داخل پرانتز به عدد یازده معادل با false می باشد برنامه ما از Loop خارج خواهد شد.
اکنون ببینیم اگر جای مقدار افزایشی را از ماقبل دستور نمایش خروجی برنامه به بعد از آن تغییر دهیم چه اتفاقی خواهد افتاد. برنامه خود را به شکل زیر بازنویسی خواهیم کرد:
public class WhileLoop {
public static void main(String[] args) {
int number = 1;
while (number <= 10) {
System.out.println("My Number Is: " + number);
number++;
}
}
}

حال برنامه را اجرا می کنیم:
[تصویر:  0f343013bae64cca805467d317a65427.jpg]
همان طور که ملاحظه می شود خروجی برنامه ما با برنامه پیشین کاملاً متفاوت است. برای روشن شدن این وجه تمایز به بررسی خط به خط کد خود می پردازیم. پس از اجرای برنامه، دستور while می بیند که مقدار اولیه تعیین شده برای متغیر number معادل با عدد یک است و پاسخ به شرط داخل پرانتز -که می گوید این عدد می بایست کوچکتر از عدد ده باشد و یا حداکثر مساوی با عدد ده باشد- نیز true است پس بلافاصله دستور ;()System.out.println را اجرا می کند و در پنجره ی کنسول عبارت My Number Is: 1 به نمایش در می آید.
پس از به نمایش در آمدن عبارت My Number Is: 1 حال نوبت به اجرای دستور ++number می رسد که عبارت از آن است که یک واحد به مقدار متغیر number اضافه کند. در واقع پس از به نمایش در آمدن اولین عبارت یک واحد به مقدار متغیر number اضافه می شود. این کار ادامه می یابد تا به عدد نه می رسیم. از آنجا که جواب به شرط number <= 10 معادل با true است این Loop یک بار دیگر اتفاق می افتد و مقدار اختصاص داده شده به متغیر number معادل با عدد ده می شود. حال برنامه می خواهد تا مجدداً Loop شود از اینرو اجرای برنامه یک بار دیگر از اول شروع می شود اما از آنجا که در شرط داخل پرانتز قید کرده ایم که مقدار متغیر می بایست کوچکتر و یا حداکثر مساوی با عدد ده باشد و در این مرحله که مقدار متغیر برابر با ده است، برنامه از Loop خارج خواهد شد و بر خلاف برنامه پیشین عدد یازده به نمایش در نخواهد آمد و برنامه ما به پایان می رسد. در قسمت آموزشی آینده با do-while Loop ها در زبان برنامه نویسی جاوا آشنا خواهیم شد.