آشنایی با مفهوم حلقه در زبان برنامه نویسی جاوا


اگر به حدوداً 40 تا 50 سال پیش بازگردیم، می بینیم که در آن دوران در مدارس روال به این شکل بود که برای تعطیلات نوروز دانش آموزان را مجبور می کردند تا به طور مثال از روی کتاب فارسی خود چند بار بنویسند. در واقع دانش آموزان موظف بودند چیزی تکراری را بارها و بارها بنویسند تا مثلاً تعداد 7 سری از نوشته ها تکمیل شود. پس از آن که 7 سری نوشتن از روی کتاب فارسی تکمیل شد، از مغز دانش آموز دستور می رسد که کار به اتمام رسیده است و بازنویسی می بایست متوقف گردد.

در زبان برنامه نویسی به این کار Loop گفته می شود (لازم به ذکر است به جای آن که معنی فارسی واژه Loop به معنی حلقه را حفظ کنیم، بهتر است بدون توجه به معنی فارسی آن، دستوری را که این کار تحت آن انجام می شود Loop بنامیم.)

به عبارت دیگر Loop دستوری است که منجر می شود چیزی ثابت برای تعداد دفعاتی تعریف شده و یا تا بی نهایت تکرار شود. در زبان برنامه نویسی جاوا سه دستور برای استفاده از Loop ها وجود دارد که عبارتند از for، while، do که می توان هر یک از آنها را به جای دیگری مورد استفاده قرار داد اما نکته ای که می بایست مد نظر قرار داده شود این است که هر کدام از این دستورات می تواند بسته به این که چه انتظاری از Loop داریم کار ما را راحت تر کند.

نحوه به کار گیری for در زبان برنامه نویسی جاوا
حال قصد داریم ببینیم که با دستورات Loop در برنامه چه کارهایی می توان انجام داد. در واقع زمانی که آنتی ویروس نصب شده روی کامپیوتر یا لپ تاپ ما هر زمانی که یک ایمیل جدید می آید آن را چک می کند تا ببیند حاوی ویروس است یا خیر، این کار توسط دستورات Loop انجام می شود. و یا زمانی که اسکرین سیور کاری تکراری را بارها و بارها انجام می دهد (به طور مثال یک توپ مکرراً از سمت چپ به سمت راست می رود و بالعکس) این کار توسط Loop انجام می شود. در حقیقت دستورات Loop در یک برنامه، آن را مجبور می کنند تا برای تعداد دفعاتی که ما برای آن تعریف می کنیم به قسمت خاصی از برنامه بازگردند. برای روشن تر شدن این مطلب می توانیم بازی یویو را در نظر بگیریم که مثلاً ما به عنوان کسی که اختیار این بازی را در دست داریم به یویو دستور می دهیم تا به نقطه پیشین که در آن قرار داشت بارها و بارها بازگردد.

برای آن که به طور عملی با لوپی از جنس for آشنا شویم پروژه ای جدید تحت عنوان ForLoop ایجاد کرده و کلاسی تحت عنوان ForLoop در آن می سازیم:

public class ForLoop {
    public static void main(String[] args) {

    }
}

برای آن که بتوانیم از Loop یی از جنس for استفاده کنیم، می بایست دستور ()for را به کد خود اضافه کنیم (توجه داشته باشیم که حرف اول for به صورت کوچک نوشته شده است.) در ادامه، داخل پرانتز مقابل for می بایست سه پارامتر یا آرگومان ورودی را بگنجانیم به این شکل که پارامتر اول می بایست نقطه آغازین لوپ ما باشد و پارامتر دوم می بایست نقطه انتهایی Loop باشد. به عبارت دیگر می توان پارامتر دوم را یک شرط در نظر گرفت که مادامی که true است Loop ادامه خواهد یافت و به محض این که false شود، برنامه از Loop خارج خواهد شد و در نهایت در پارامتر سوم می بایست مشخص کنیم که مقدار پارامتر نقطه آغازین در هر بار Loop شدن به چه مقدار افزایش یابد.

در این مثال قصد داریم تا به برنامه خود دستور دهیم که از نقطه آغازین 1 شروع کرده و پس از هر بار لوپ شدن یک واحد به آن اضافه کند و در نهایت در نقطه پایانی 10 توقف نماید. کد تکمیل شده به شکل زیر خواهد بود:

public class ForLoop {
    public static void main(String[] args) {
        for (int number = 1; number <= 10; number++) {
            System.out.println(number);
        }
    }
}

در کد فوق یک متغیر از جنس int که در برگیرنده اعداد صحیح خواهد بود تحت عنوان number به معنی "عدد" با مقدار اولیه 1 برای نقطه آغازین تعریف کرده ایم سپس یک علامت ; قرار می دهیم و بلافاصله نقطه پایانی را برای Loop خود در نظر می گیریم که عبارت است از number <= 10 به این معنی که این Loop ادامه خواهد یافت تا زمانی که Loop ما به عدد 10 برسد (علت آن که علامت کوچکتر مساوی گذاشته ایم این است که خود عدد 10 را هم شامل شود که در غیر این صورت مادامی که Loop کوچکتر از 10 بود ادامه می یافت. به عبارت دیگر زمانی که Loop به عدد 9 می رسید توقف می کرد زیرا که شرط قرار گرفته در Loop برآورده می شد.) در نهایت مقداری که می خواهیم متغیر ما در هر دفعه Loop شدن افزایش یابد را در نظر می گیریم که در این مثال یک واحد است. حال برای آن که Loop را روی مانیتور به نمایش در آوریم، نام متغیر خود را در دستور ;()System.out.println قرار می دهیم. نکته ای که در مورد کد فوق وجود دارد این است که می توان متغیر را خارج از for نیز تعریف کرد. به عبارت دیگرکد فوق را به شکل زیر نیز می توان بازنویسی نمود:

public class ForLoop {
    public static void main(String[] args) {
        int number;
        for (number = 1; number <= 10; number++) {
            System.out.println(number);
        }
    }
}

در واقع ما یک متغیر از جنس int خارج از Loop ایجاد کرده ایم، حال داخل for مقدار اولیه، مقدار نهایی و همچنین مقدار افزایشی برای آن تعریف می کنیم.

پس از اجرای برنامه خواهیم دید که Loop ما از عدد یک شروع شده و به عدد ده خاتمه می یابد:

اکنون برای آن که مفهوم for برای ما نهادینه تر شود شروع می کنیم به اعمال یکسری تغییر در دستور for تا این که ببینیم چه نتیجه ای در بر خواهد داشت. فرض کنیم که می خواهیم برنامه ای طراحی کنیم که از عدد یک شروع می کند به شمردن و سه تا سه تا افزایش می یابد تا به عدد بیست و دو برسد. برای این منظور کد فوق را به شکل زیر بازنویسی می کنیم:

public class ForLoop {
    public static void main(String[] args) {
        for (int number = 1; number <= 22; number += 3) {
            System.out.println(number);
        }
    }
}

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

همان طور که مشاهده می شود Loop ما کار خود را از عدد یک شروع می کند. در آخرین پارامتر دستور داده ایم در هر بار Loop شدن می بایست سه واحد به واحد قبلی اضافه شود، از این رو در بار دوم Loop شدن سه واحد به واحد یک اضافه شده مقدار متغیر به چهار افزایش می یابد، در بار بعد سه واحد به عدد چهار اضافه می شود و به هفت افزایش می یابد الی آخر ...

اکنون فرض کنیم که می خواهیم برنامه خود را به نوعی بازنویسی کنیم که تا بی نهایت شروع به شمردن کند. برای این منظور کد خود را به شکل زیر بازنویسی خواهیم کرد:

public class ForLoop {
    public static void main(String[] args) {
        for (int number = 1; number > 0; number++) {
            System.out.println(number);
        }
    }
}

در این کد مقدار اولیه را یک در نظر گرفته ایم، سپس به Loop دستور داده ایم تا زمانی که مقدار متغیر number بزرگتر از صفر است در هر بار Loop شدن یک واحد به آن اضافه کند. در واقع از آنجا که مقدار اولیه متغیر ما یک بوده و منطقاً عدد یک از صفر بزرگتر است پس هیچ نقطه پایانی هم برای آن در نظر گرفته نشده است، Loop ما تا بی نهایت ادامه خواهد داشت و در هر بار Loop شدن یک واحد به آن اضافه خواهد شد. در واقع خروجی برنامه به شکل زیر خواهد بود:

در واقع این Loop که ایجاد کردیم تا بی نهایت ادامه خواهد یافت تا این که ما خود آن را متوقف نماییم که این کار با فشردن دکمه قرمز رنگ در بخش کنسول تحت عنوان Terminate عملی خواهد شد که در تصویر فوق با یک بیضی قرمز رنگ مشخص شده است.

حال فرض کنیم می خواهیم خروجی Loop را با یک استرینگ یا عبارت ادغام نماییم. برای این منظور به شکل زیر کد خود را بازنویسی می کنیم:

public class ForLoop {
    public static void main(String[] args) {
        for (int number = 1; number <= 10; number++) {
            System.out.println("My Number Is: " + number);
        }
    }
}

در دستوری که در آن گفته ایم نوشته ای روی صفحه مانیتور چاپ شود که همان ;()System.out.println می باشد یک استرینگ تحت عنوان :My number Is به معنی "شماره من هست:" نوشته ایم و بلافاصله بعد از آن از یک Operator به علاوه استفاده کرده ایم تا استرینگ خود را به یک متغیر وصل کنیم که در اینجا همان متغیر number است. حال خروجی برنامه به شکل زیر خواهد بود:

اکنون فرض کنیم که هر دفعه که قرار است برنامه یک Loop انجام دهد می خواهیم تا جواب Loop در عدد 10 ضرب شود سپس حاصل ضرب خروجی Loop در عدد 10 در بخش کنسول به نمایش در آید. برای همین منظور کد خود را به شکل زیر بازنویسی می کنیم:

public class ForLoop {
    public static void main(String[] args) {
        for (int number = 1; number <= 10; number++) {
            int multiply = number * 10;
            System.out.println("My Number Is: " + multiply);
        }
    }
}

در این کد ما یک متغیر جدید از جنس int ایجاد کرده ایم تحت عنوان multiply به معنی "ضرب کردن" که مقدار آن عبارت است از هر آنچه مقدار متغیر number اختصاص داده شده به for بود، ضرب در عدد 10 و در نهایت برای آنکه مقدار متغیر جدید ما در محیط کنسول به نمایش در آید در دستور ;()System.out.println به جای نام متغیر قبلی، نام متغیر جدید که همان multiply است را قرار می دهیم که در این صورت خروجی برنامه به شکل زیر خواهد بود:

به عنوان مثال آخر، این نکته را نیز می بایست مد نظر قرار داده که به جای متغیری از جنس int که برای اعداد صحیح است، می توان از double هم برای استفاده از اعداد اعشاری هم استفاده کرد. فرض کنیم که می خواهیم برنامه خود را به این شکل تغییر دهیم که مقدار متغیر اختصاص داده شده به for پس از آن که Loop شد در عدد دوازده صدم ضرب شود. برای این منظور کد خود را به شکل زیر بازنویسی می کنیم:

public class ForLoop {
    public static void main(String[] args) {
        for (int number = 1; number <= 10; number++) {
            double multiply = number * 0.12;
            System.out.println("My Number Is: " + multiply);
        }
    }
}

در واقع در این کد تنها تغییری که رخ داده این است که جنس متغیر multiply از int به double تغییر یافته و همچنین عددی که می بایست مقدار متغیر number در آن ضرب شود از عدد ده به دوازده صدم تغییر پیدا کرده است. حال می توانیم انتظار داشته باشیم که خروجی برنامه ما به شکل زیر تغییر یابد:

پس از آشنایی با Loop یی از جنس for در قسمت بعد، به بررسی دیگر انواع Loop ها همچون while خواهیم پرداخت.

دانلود فایل‌های تمرین
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمان
ممنون از آموزش های عالییییییییییییی تون
Sharifi_7
Sharifi_7
خسته نباشید
آموزشها بسیار فوق العاده و با زبان عامیانه و روان توضیح داده شده و این مطالب می توانند به عنوان ماخذ برای جاوا مقدماتی به همه دوستان معرفی شود.
من حتما این تبلیغ را انجام خواهم داد.
mrabbas44
mrabbas44
for (int number = 1; number
mrabbas44
mrabbas44
public class forLoop {

public static void main(String[] args) {
for (int number = 1; number
daneshjoo
daneshjoo
آموزش ها واقعا عالی بود ...خسته نباشید
poria.tg
poria.tg
حرف نداره..دمتون گرم..خسته نباشین
vahid
vahid
سلام فایل های تمرین آموزش ها دانلود نمیشن!!!!!
کاربر میهمان
کاربر میهمان
کد 1
package forLoop;

public class ForLoop {

public static void main(String[] args) {
boolean myBoolean = true;
for (int number = 1 ; myBoolean ; number++)
{
System.out.println(number);
}

}

}


mohammad m
mohammad m
ممنون , استفاده کردم

در پاسخ به

کاربر میهمان
کاربر میهمان
با سلام و خسته نبا شید.از آموزش خوبتون ممنون.می خواستم یک نکته راجب حلقه بی نهایت بگم اون این که می توانیم حلفه های بی نهایت را به شکل کدا های زیر هم بنویسیم


کاربر میهمان
کاربر میهمان
واقعا عالی هستید.خدا خیرتون بده...
کاربر میهمان
کاربر میهمان
بسیار عالی بود
روان و قابل فهم
هاشم همراز
هاشم همراز
خیلی ممنون
آموزشهاتون واقعا جذاب و بسیار قابل فهمند
bijan9
bijan9
merci
mostafa
mostafa
خیلی ممنون
کاربر میهمان
کاربر میهمان
سپاس فراوان
عیسی پور
عیسی پور
عالی بود
دست گلتون درد نکنه