fbpx

تعلم لغة الجافا – الدرس الخامس الحلقات Loops



هناك نوعان من الحلقات في جافا هما for وwhile.

For

تحتوي الحلقة for على ثلاثة أقسام:

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

يتم تشغيل القسم الأول مرة واحدة عندما ندخل الحلقة.

القسم الثاني ، إذا تم إرجاع true ، نقوم بتشغيل العبارات في الحلقة ، إذا أرجعت false ، فإننا نخرج من الحلقة. يتم تشغيله مباشرة بعد القسم الأول للمرة الأولى ، ثم في كل مرة يتم فيها الانتهاء من الحلقة وتشغيل القسم الثالث.

القسم الثالث هو البيان النهائي الذي سيتم تشغيله في كل مرة يتم فيها تشغيل الحلقة.

لذا في الحالة التي رأيناها للتو ، ستعمل الحلقة 3 مرات. فيما يلي ترتيب الأوامر:

int i = 0;
i < 3 // 0 < 3 = true
// داخل الحلقة
i++ // i is now 1
i < 3 // 1 < 3 = true
// داخل الحلقة
i++ // i is now 2
i < 3 // 2 < 3 = true
// داخل الحلقة
i++ // i is now 3
i < 3 // 3 < 3 = false
// تم الانتهاء من التكرار ...

يمكننا حذف القسم الأول والثالث من الحلقة (على الرغم من أنها ستكون غريبة) ، وستظل الحلقة تعمل:

for (;i < 5;) {}

بالنسبة للحالات التي نريد فيها استخدام حلقة تبدو هكذا ، فإننا نستخدم حلقة while

While

بناء الجملة يشبه إلى حد كبير الصيغة السابقة حيث نظرنا إلى:

while (condition) {}

سيتم تشغيل الحالة لأول مرة عند الدخول وفي كل مرة يتم تنفيذ الحلقة. إذا أرجعت خطأ ، فلن يتم تشغيل الحلقة.

إذا أردنا أن تعمل الحلقة دائمًا على الأقل واحدة ، فيمكننا استخدام المهام

do {

} while(condition);

لاحظ ال ; في نهاية الفترة.

Foreach

نسخة أخرى من for ، هي foreach. الكلمة الرئيسية التي نستخدمها لا تزال موجودة ، ولكن عندما نريد تكرار العناصر الموجودة داخل مصفوفة ، يمكننا ببساطة استخدامها:

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

هذه نسخة قصيرة وتعادل:

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

لاحظ أنه إذا كنت تريد استخدام فهرس العنصر داخل الحلقة ، فعليك استخدام الإصدار الأطول ولا يمكنك استخدام foreach.

break و continue

تساعدنا هاتان الكلمتان الرئيسيتان في التحكم في الحلقة من الداخل. break سيتسبب في توقف الحلقة ويذهب مباشرة إلى العبارة التالية بعد الحلقة:

int i;
for (i = 0; i < 5; i++) {
    if (i >= 2) {
        break;
    }
    System.out.println("Yuhu");
}
System.out.println(i);
// انتاج:
// Yuhu
// Yuhu
// 2

continue ستوقف التكرار الحالي وستنتقل إلى المرحلة التالية. لاحظ أنه داخل حلقة for ، ستستمر في تشغيل القسم الثالث.

int i;
for (i = 0; i < 5; i++) {
    if (i >= 3) {
        break;
    }
    System.out.println("Yuhu");
    if (i >= 1) {
        continue;
    }
    System.out.println("Tata");
}
System.out.println(i);
// انتاج
// Yuhu
// Tata
// Yuhu
// Yuhu
// 3

تمرين

قم بالمرور عبر جميع الأرقام الزوجية وطباعتها ، كل منها في سطر منفصل ، من قائمة الأرقام بنفس الترتيب الذي تم استلامها به. لا تطبع أي أرقام تأتي بعد 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};

// رمزك هنا    }

}

الحل

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};
        
        for (int i = 0; i < numbers.length; i++) {
            int el = numbers[i];

            if (el == 237) {
                break;
            }

// باستخدام عامل الباقي القسمة٪
            if (el % 2 == 0) {
                System.out.println(el);
            }

        }
    }
}

سنحصل على النتيجة التالية عند التشغيل

402
984
360
408
980
544
390
984
592
236
942
386
462
418
344
236
566
978
328
162
758
918

الدرس السادس






Leave a Reply