JavaRush /Java blogi /Random-UZ /Java-da while loop

Java-da while loop

Guruhda nashr etilgan

Kirish

Bizning birinchi dasturlarimiz ketma-ket bajariladigan buyruqlar ketma-ketligi edi. Vilkalar yo'q. Bu konsolga salomlashish iborasi va arifmetik hisoblarni chiqaradigan HelloWorld. Birinchi dasturlardan so'ng biz tarmoqlanishni o'rgandik, ya'ni dastur shartlarga qarab ma'lum harakatlarni amalga oshirdi. Konditsionerni isitish va sovutish uchun yoqish uchun qanday kodlash mumkin:
if (tempRoom>tempComfort)
    airConditionerOn();
if (tempRoom<tempComfort
    heaterOn();
Keling, keyingi qadamga o'taylik. Kundalik hayotda biz ko'pincha monoton, takroriy harakatlar qilamiz, masalan, pirog uchun olma tozalaymiz. Ushbu qiziqarli jarayonni quyidagicha ta'riflash mumkin:
  1. Agar havzada olma bo'lsa, 1.1 dan 1.4 gacha bo'lgan bosqichlarni bajaring:

    1. 1.1. Olma oling
    2. 1.2. Uni tozalang va tilimga kesib oling
    3. 1.3. Qovurilgan idishdagi qandolat pirogining asosiga qo'ying
    4. 1.4. Keling, 1-bosqichga qaytaylik.
Operator - 2
Aytaylik, sizda 10 ta olma, 2 ta qo'l va bitta pichoq bor. Hayotda siz doimo bir xil algoritmga amal qilgan holda butun o'ntasini tozalaysiz. Qanday qilib dasturni har bir olma bilan takroriy amalni bajarishga majbur qilishingiz mumkin?
  • Keling, olmalar soniga o'zimizni bog'laymiz, lekin agar bizda ularning soni kam bo'lsa, ba'zi buyruqlar "foydali" bo'lmasdan behuda bajariladi (va, ehtimol, biz mavjud bo'lmagan olmani tozalaganda o'zimizni kesib tashlardik).
  • Agar bizning qayta ishlash guruhlarimizdan ko'proq olma bo'lsa, ba'zi mahsulotlar qayta ishlanmagan bo'lar edi.
  • Bunday "kod" ni o'qish qiyin, ko'p takrorlashlarni o'z ichiga oladi va o'zgartirish qiyin.

Looplar amallarni bir necha marta bajarish uchun operatorlardir.

Java while tsikli (yomon halqa) bizning holatlarimizda yaxshi ishlaydi. Ushbu dizayn bir nechta harakatlarni qisqacha va tushunarli tuzilishga tashkil qiladi. Java-da pirog uchun olma kesish algoritmi bir muncha vaqt o'xshash bo'lishi mumkin:
while(числоЯблокВТазике>0) {
    яблоко = тазик.взятьОчередноеЯблоко();
    положитьВПирог(яблоко.чистить().нарезать());
    числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
}
System.out.println('Apples for the pie are processed.');

Buyruqlar sintaksisi

while iborasini tasvirlashning birinchi usuli quyidagicha:
while(Логическое выражение) {
	// Loop body - periodically executed statement(s)
}
Bu quyidagicha amalga oshiriladi (bosqichma-bosqich):
  1. Qavslar ichidagi vaqtdan keyingi mantiqiy shartni baholaymiz.
  2. Agar mantiqiy shart rost bo'lsa, sikl tanasidagi gaplar bajariladi, sikl tanasidagi oxirgi gap bajarilgandan so'ng 1-bosqichga o'ting.
  3. Agar mantiqiy shart noto'g'ri bo'lsa, while siklidan tashqaridagi birinchi iboraga o'ting.

Old shart bilan halqa

Ilovaning tanasini bajarishdan oldin biz doimo mantiqiy ifodani (siklga kirish sharti) oldindan hisoblab chiqamiz, chunki bu turdagi while ko'pincha old shartli tsikl deb ataladi. Birinchi o'nta butun son, musbat darajalar jadvalini tuzamiz:
public static void main(String[] args) {
    int number = 3; // Number to be raised to a power
    int result = 1; // Result of exponentiation
    int power = 1; // Initial exponent
    while(power <= 10) { // loop entry condition
        result = result * number;
        System.out.println(number + "to the extent" + power + " = " + result);
        power++;
    }
}
Konsol chiqishi natijasi:
3 в степени 1 = 3
3 в степени 2 = 9
3 в степени 3 = 27
3 в степени 4 = 81
3 в степени 5 = 243
3 в степени 6 = 729
3 в степени 7 = 2187
3 в степени 8 = 6561
3 в степени 9 = 19683
3 в степени 10 = 59049
Process finished with exit code 0

Postshart bilan tsikl

Ikkinchi turdagi tsikl:
do {
    // Loop body - periodically executed statement(s)
}while (Логическое выражение);
Quyidagi tarzda amalga oshiriladi (qadamlar):
  1. Loopning tanasi bajariladi (do kalit so'zidan keyin darhol).
  2. Qavslar ichidagi vaqtdan keyingi mantiqiy shartni baholaymiz.
  3. Agar mantiqiy shart rost bo'lsa, 1-bosqichga o'ting
  4. Agar mantiqiy shart noto'g'ri bo'lsa, while siklidan tashqaridagi birinchi iboraga o'ting.
Oldingi turdagi sikldan ikkita asosiy farq: sikl tanasi kamida bir marta bajariladi va mantiqiy shart tsiklning tanasi bajarilgandan so'ng tekshiriladi. Shuning uchun bu turdagi while sikli postshartli sikl deb ataladi. Bu safar biz 10000 dan oshmaydigan raqamlarning kuchlar jadvalini ko'rsatamiz:
public static void main(String[] args) {
    int number = 3;// Number to be raised to a power
    int result = number;// Result of exponentiation
    int power = 1;// Initial exponent
    do {
        System.out.println(number + "to the extent" + power + " = " + result);
        power++;
        result = result * number;
    }while (result < 10000); // loop exit condition
Konsol chiqishi natijasi:
3 в степени 1 = 3
3 в степени 2 = 9
3 в степени 3 = 27
3 в степени 4 = 81
3 в степени 5 = 243
3 в степени 6 = 729
3 в степени 7 = 2187
3 в степени 8 = 6561
Process finished with exit code 0
Koddagi o'zgarishlarga e'tibor bering, uni oldingi shart bilan halqa versiyasi bilan taqqoslang.

Looplar bilan ishlash haqida qiziqarli ma'lumotlar

Loop tanasidagi boshqaruv buyruqlari

Loopning borishiga ta'sir qiluvchi ikkita buyruq mavjud: break, uning xususiyatlarini keyingi bobda ko'rsatamiz va davom eting.
  • davom - joriy sikl tanasining bajarilishini to'xtatadi va while operatorining mantiqiy ifodasiga o'tadi. Agar hisoblangan ifoda rost bo'lsa, tsiklning bajarilishi davom etadi.
  • break - joriy tsiklning bajarilishini darhol to'xtatadi va undan tashqaridagi birinchi buyruqqa o'tadi. Shunday qilib, joriy tsiklning bajarilishi to'xtatiladi. Buni keyingi mavzuda batafsil ko'rib chiqamiz.
Keling, meva misolimizni eslaylik. Agar biz taqdim etilgan olma sifatiga ishonchimiz komil bo'lmasa, biz kodni buyruq yordamida o'zgartirishimiz mumkin continue:
while(числоЯблокВТазике>0) {
    яблоко = тазик.взятьОчередноеЯблоко();
    числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
    if (яблоко.плохое()) {  // method will return true for rotten, etc. apples
        яблоко.выкинутьВМусор();
        continue; // continue the loop, go to the condition number ofApplesIn the Basin>0
    }
    положитьВПирог(яблоко.чистить().нарезать());
}
Konstruktsiya continueko'pincha halqa tanasida ma'lum bir holat yuzaga kelganda buyruqlarni bajarish kerak bo'lganda ishlatiladi, masalan, uskunadagi sensor ishga tushganda harakatlarni bajarish (aks holda uning ko'rsatkichlarini o'qish tsiklini davom ettirish) yoki ifodani faqat tsiklning ma'lum bosqichlarida hisoblash uchun. Oxirgi holatga misol qilib, kvadrati ularning sonidan kichik bo'lgan natural sonlar kublari yig'indisini while siklida hisoblash mumkin:
public static void main(String[] args) {
    int sum = 0;    // total amount
    int i = 0;      // starting number of the row
    int count = 20; // amount of numbers
    while(i<=count) {
        i++;        // take the next number, i++ is equivalent to i=i+1
        if (i*i<=count)  // if the square of the number is less
            continue;   // number of numbers - do not count the sum
                        // move on to the next number in the loop
        sum += i*i*i; // otherwise, we calculate the sum of cubes of numbers
    } // sum += i*i*i - notation similar to sum = sum + i*i*i
    System.out.println(sum);// print result
}

Cheksiz tsikl

Ushbu boshqaruv buyruqlari ko'pincha cheksiz tsiklda qo'llaniladi. Mantiqiy chiqish sharti hech qachon qondirilmagani uchun shunday deb ataladi. Kodda u shunday ko'rinadi:
while(true) {
    // Loop body
}
breakBunday holda, undan chiqishni tashkil qilish uchun buyruqdan foydalanish foydali bo'ladi . Ushbu turdagi halqa halqa tanasining mantig'idan tashqarida hosil bo'lgan tashqi sharoitlarni kutishda sodir bo'ladi. Misol uchun, qahramon atrofidagi virtual dunyoni taqlid qiladigan o'yinlarda (loopdan chiqish = o'yindan chiqish), operatsion tizimlar. Yoki algoritmlardan foydalanganda, ehtimol, tsikldagi har bir keyingi qo'ng'iroq bilan natijani yaxshilash, lekin ularni vaqt yoki tashqi hodisa (shashka, shaxmat yoki ob-havo prognozi) bilan cheklash. Shuni esda tutish kerakki, oddiy sharoitlarda cheksiz tsikllar dasturning beqarorligi muammolaridan biridir. Ko'rsatish uchun, keling, raqamlarning kuchlariga qaytaylik:
public static void main(String[] args) {
    int number = 3; // Number to be raised to a power
    int result = 1; // Result of exponentiation
    int power = 1; // Initial exponent
    while(true) {
        result = result * number;
        System.out.println(number + "to the extent" + power + " = " + result);
        power++;
        if (power>10)
            break; // exit from the loop
    }
}
Konsol chiqishi natijasi:
3 в степени 1 = 3
3 в степени 2 = 9
3 в степени 3 = 27
3 в степени 4 = 81
3 в степени 5 = 243
3 в степени 6 = 729
3 в степени 7 = 2187
3 в степени 8 = 6561
3 в степени 9 = 19683
3 в степени 10 = 59049
Process finished with exit code 0

O'rnatilgan halqalar

Mana biz tsikllarimiz haqidagi yakuniy mavzuga keldik. Keling, olma pirogi (umid qilamanki, siz hozir och emassiz) va bizning "loopimiz" haqida o'ylab ko'raylik:
  1. Agar havzada olma bo'lsa, 1.1 dan 1.4 gacha bo'lgan amallarni bajaring:

    1. 1.1. Olma oling
    2. 1.2. Uni tozalang va tilimga kesib oling
    3. 1.3. Qovurilgan idishdagi qandolat pirogining asosiga qo'ying
    4. 1.4. Keling, 1-bosqichga qaytaylik.
Keling, bo'laklarga kesish jarayonini batafsilroq tasvirlab beraylik:
  1. Bo'laklar soni = 0
  2. Bo'laklar soni < 12 bo'lsa-da, 2.1 dan 2.3 gacha bo'lgan bosqichlarni bajaring

    1. 2.1. Olmadan yana bir bo'lakni kesib oling
    2. 2.2. Bo'laklar soni ++
    3. 2.3. 2-bosqichga qayting
Va uni qandolatchilik algoritmimizga kiriting:
  1. Agar havzada olma bo'lsa, 1.1 dan 1.6 gacha bo'lgan bosqichlarni bajaring:

    1. 1.1. Olma oling
    2. 1.2. Uni tozalang
    3. 1.3. Bo'laklar soni = 0
    4. 1.4. Пока число долек < 12, выполнить шаги с 1.4.1 по 1.4.3
      1. 1.4.1. Отрезать очередную дольку от яблока
      2. 1.4.2. Кол-во долек ++
      3. 1.4.3. Возвращаемся на шаг 1.4
    5. 1.5. Помещаем дольки на тестовое основание пирога из теста на сковороде
    6. 1.6. Возвращаемся на шаг 1.
Получor цикл в цикле. Подобные конструкции весьма частые. Для завершающего примера построим таблицу умножения, которые школьники 90-х видели на обложках тетрадей в младших классах.
Operator - 3
public static void main(String[] args) {
    // Display the values ​​of the second multiplier in the line
    System.out.println("    2  3  4  5  6  7  8  9");
    int i = 2;      // first multiplier, assign starting value
    while(i<10) {   // First loop, execute while the first multiplier is less than 10
        System.out.print(i + " | ");// Display the first multiplier at the beginning of the string
        int j = 2;                  // second multiplier, starting value
        while (j<10) { // Second loop, execute while the second multiplier is less than 10
            int mul=i*j; // Calculate the product of factors
            if (mul<10)  // If it contains one digit, print two spaces after it
                System.out.print(mul + "  ");
            else   // otherwise output the product and after it - one space
                System.out.print(mul + " ");
            j++;     // Increase the second multiplier by one,
        }            // Go to the beginning of the second loop (while (j<10 ).... )
        System.out.println(); // Move to the next line of output
        i++;                  // Increase the first multiplier by one,
    }                         // Go to the beginning of the first loop (while ( i<10 ) ....
}
Результат вывода на консоль:
2  3  4  5  6  7  8  9
2 | 4 6 8 10 12 14 16 18
3 | 6 9 12 15 18 21 24 27
4 | 8 12 16 20 24 28 32 36
5 | 10 15 20 25 30 35 40 45
6 | 12 18 24 30 36 42 48 54
7 | 14 21 28 35 42 49 56 63
8 | 16 24 32 40 48 56 64 72
9 | 18 27 36 45 54 63 72 81
Process finished with exit code 0
Циклы (в частности, оператор while) – один из фундаментальных кирпичиков построения программ. Решая задачи на JavaRush, вы изучите все их разнообразие, разберёте тонкости функционирования и получите практические навыки их применения.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION