آموزش جاوا- قسمت 5 (حلقه‌ها)

در جاوا برای حلقه‌ها از دو نوع حلقه while و for استفاده می‌شود که در ادامه به تفصیل هر یک را شرح خواهیم داد.

For

همانطور که در کد زیر مشاهده می‌شود، حلقه for از سه بخش تشکیل شده است:

for (int i = 0; i < 3; i++) {}

اولین بخش فقط بار اول که وارد حلقه می‌شویم اجرا می‌شود. بخش دوم نقش کنترل حلقه را بر عهده دارد، مادامی که شرط حلقه برقرار باشد، عبارت داخل حلقه اجرا می‌شود، در نهایت با عدم برقراری شرط حلقه، از حلقه خارج می‌شویم. بخش سوم بلافاصله  بعد از هر بار اجرای بخش دوم اجرا می‌شود.

بنابراین در کد بالا حلقه سه بار اجرا می‌شود. می‌‌توان گفت با اجرای کد یک خطی بالا، به ترتیب این عملیات انجام می‌شود:

int i = 0;
i < 3 // 0 < 3 = true
      // Inside of loop
i++ // i is now 1
i < 3 // 1 < 3 = true
      // Inside of loop
i++ // i is now 2
i < 3 // 2 < 3 = true
      // Inside of loop
i++ // i is now 3
i < 3 // 3 < 3 = false
      // Loop is done...

جالب است بدانید که اگر اولین و سومین بخش حلقه for را حذف کنیم، برنامه همچنان قابل اجرا است:

for (;i < 5;) {}

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

 

while

این نوع حلقه از نظرsyntax مشابه حالت قبل است:

while (condition) {}

به این صورت که عبارت داخل حلقه با اولین بار وارد شدن به حلقه اجرا شده و مادامی که شرط حلقه برقرار باشد، اجرا می‌شود.

اگر بخواهیم حلقه حداقل یک بار اجرا شود، از do-while استفاده می‌کنیم:

do {

} while(condition);
توجه!!

 به “;” در انتهای do-while دقت کنید.

 

Foreach

نسخه دیگری از for بوده و کلمه کلیدی که هنگام کد نویسی استفاده می‌کنیم، همان for است. هنگامی که می‌خواهیم روی عناصر داخل آرایه عملیاتی را انجام دهیم می‌توانیم به سادگی از آ ن استفاده کنیم:

int[] arr = {2, 0, 1, 3};
for (int el : arr) {
    System.out.println(el);
}

کد بالا در واقع کد ساده شده و معادل کد زیر است:

int[] arr = {2, 0, 1, 3};
for (int i = 0; i < arr.length; i++) {
    int el = arr[i];
    System.out.println(el);
}

توجه داشته باشید که اگر بخواهید از اندیس عنصر آرایه در حلقه استفاده کنید، باید از نسخه طولانی‌تر استفاده کنید و استفاده از foreach در این حالت امکان‌پذیر نخواهد بود.

 

break and continue

از این دو کلمه کلیدی برای کنترل حلقه استفاده می‌شود. با break حلقه متوقف شده و بلافاصله به خط بعد از حلقه می‌رویم:

int i;
for (i = 0; i < 5; i++) {
    if (i >= 2) {
        break;
    }
    System.out.println("SDN");
}
System.out.println(i);
// Output:
// SDN
// SDN
// 2

همانطور که در کد بالا مشاهده می‌شود با رسیدن مقدار i به عدد 2، اجرای حلقه متوقف شده و خط بعد از حلقه یعنی چاپ مقدار i، اجرا می‌شود.

با continue  اجرای دور فعلی حلقه در همانجا متوقف شده  و دور بعدی حلقه از سر گرفته می‌شود. توجه داشته باشید که داخل حلقه for همچنان بخش سوم حلقه اجرا می‌شود.

int i;
for (i = 0; i < 5; i++) {
    if (i >= 3) {
        break;
    }
    System.out.println("SDN");
    if (i >= 1) {
        continue;
    }
    System.out.println("Controller");
}
System.out.println(i);
// Output
// SDN
// Controller
// SDN
// SDN
// 3

همانطور که در کد بالا مشاهده می‌شود، با اجرای دستور continue، اجرای ادامه دور 1اُم حلقه یعنی چاپ Controller در کنسول، انجام نشده و بلافاصله دور بعدی حلقه اجرا می‌شود. تفاوت این حالت با break در این است که با اجرای دستور break، تمام دورهای حلقه بدون اجرا رها شده و خط بعد از حلقه (در صورت وجود) اجرا می‌شود.

 

تمرین:

آموزش مبحث حلقه‌ها در همینجا به پایان رسید. به رسم گذشته، قصد داریم تا دانش شما را با طرح یک سوال از این مبحث به چالش بکشیم. برای این منظور کد زیر را به نحوی تکمیل کنید تا عناصری از آرایه که حاوی اعداد زوج هستند چاپ گردند به طوری که اعدادی که بعد از عنصر حاوی عدد 237 هستند چاپ نشوند. پاسخ تمرین در انتهای پست آموزشی قرار داده شده است که در صورت نیاز و پس از اینکه خودتان برای حل آن تلاش کردید، می‌توانید مشاهده کنید.

public class Main {
    public static void main(String[] args) {
        int[] numbers = {
            951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544, 
        615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941, 
        386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 
        399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 
        815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 
        958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 
        743, 527};

        // Your code goes here

    }
}
برای انجام تمرین‌ این مبحث می‌توانید از یک IDE آنلاین مثل tutorialspoint استفاده کنید.

 

تا اینجا با مفاهیم اولیه جاوا آشنا شدید. از پست بعدی به مفاهیم کلی تری خواهیم پرداخت. پس تا پست بعدی که درموردتوابع جاوا صحبت خواهیم کرد، همراه ما باشید…

 

پاسخ تمرین مبحث حلقه‌ها:

for (int el:numbers){
 if(el == 237)
 break;
 if (el%2 == 0)
 System.out.println(el);
 
 }

 

تاریخچه آموزش جاوا به ترتیب:

قسمت اول آموزش جاوا (مقدمه)

قسمت دوم آموزش جاوا (Types and Variables)

قسمت سوم آموزش جاوا (دستورات شرطی)

قسمت چهارم آموزش جاوا (آرایه‌ها)

قسمت پنجم آموزش جاوا (حلقه‌ها)

قسمت ششم آموزش جاوا (توابع)

قسمت هفتم آموزش جاوا (اشیا)

قسمت هشتم آموزش جاوا (ارث‌بری)

قسمت نهم آموزش جاوا (try and catch)

قسمت دهم آموزش جاوا (کلاس‌های abstract)

قسمت یازدهم آموزش جاوا (Interfaces)

قسمت دوازدهم آموزش جاوا (مفهوم Generic)

قسمت سیزدهم آموزش جاوا (Networking)

قسمت چهاردهم آموزش جاوا (مفهوم نخ و رشته)

آموزش جاوا- قسمت 5 (حلقه‌ها)
امتیاز دهید

دیدگاهتان را بنویسید

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