JavaRush /Java Blog /Random-ID /Sementara Loop di Jawa

Sementara Loop di Jawa

Dipublikasikan di grup Random-ID

Perkenalan

Program pertama kami adalah serangkaian instruksi yang dijalankan satu demi satu. Tidak ada garpu. Ini adalah HelloWorld, yang mengeluarkan frase ucapan dan perhitungan aritmatika ke konsol. Setelah program pertama, kami belajar melakukan percabangan, yaitu program melakukan tindakan tertentu tergantung kondisi. Berikut cara memberi kode pada AC agar menyala untuk pemanasan dan pendinginan:
if (tempRoom>tempComfort)
    airConditionerOn();
if (tempRoom<tempComfort
    heaterOn();
Mari kita ambil langkah selanjutnya. Dalam kehidupan sehari-hari, kita sering melakukan tindakan yang monoton dan berulang-ulang, misalnya mengupas apel untuk dibuat pai. Proses menarik ini dapat digambarkan sebagai:
  1. Jika ada apel di baskom, ikuti langkah 1.1 hingga 1.4:

    1. 1.1. Ambil sebuah apel
    2. 1.2. Bersihkan dan potong menjadi irisan
    3. 1.3. Letakkan di dasar pai pastry di penggorengan
    4. 1.4. Mari kita kembali ke langkah 1.
Operator sementara - 2
Katakanlah Anda mempunyai 10 apel, 2 tangan dan satu pisau. Dalam hidup, Anda secara konsisten membersihkan kesepuluhnya, dipandu oleh algoritma yang sama. Bagaimana Anda bisa membuat program melakukan tindakan berulang pada setiap apel?
  • Mari kita mengikat diri kita pada jumlah apel, tetapi jika kita memiliki sedikit apel, beberapa perintah akan dieksekusi dengan sia-sia tanpa “muatan” (dan, mungkin, kita akan melukai diri kita sendiri saat mengupas apel yang tidak ada).
  • Jika jumlah apel lebih banyak dari jumlah tim pengolah kami, beberapa produk tidak akan diproses.
  • “Kode” seperti itu sulit dibaca, banyak pengulangan, dan sulit dimodifikasi.

Loop adalah operator untuk melakukan tindakan beberapa kali.

Perulangan while Java (perulangan keji) berfungsi dengan baik dalam kasus kami. Desain ini mengatur berbagai tindakan ke dalam struktur yang ringkas dan mudah dipahami. Algoritme sementara untuk mengiris apel untuk pai di Java mungkin terlihat seperti ini:
while(числоЯблокВТазике>0) {
    яблоко = тазик.взятьОчередноеЯблоко();
    положитьВПирог(яблоко.чистить().нарезать());
    числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
}
System.out.println('Apples for the pie are processed.');

Sintaks Perintah

Cara pertama untuk mendeskripsikan pernyataan while adalah sebagai berikut:
while(Логическое выражение) {
	// Loop body - periodically executed statement(s)
}
Hal ini dilakukan sebagai berikut (langkah demi langkah):
  1. Kami mengevaluasi kondisi Boolean setelah tanda kurung.
  2. Jika kondisi logikanya benar, maka operator di badan perulangan dijalankan, setelah mengeksekusi operator terakhir di badan perulangan, lanjutkan ke langkah 1
  3. Jika kondisi logikanya salah, lanjutkan ke pernyataan pertama di luar perulangan while.

Ulangi dengan prasyarat

Karena sebelum mengeksekusi badan perulangan, kita selalu menghitung terlebih dahulu ekspresi logika (kondisi untuk memasuki perulangan), jenis while ini sering disebut perulangan dengan prasyarat. Mari kita buat tabel sepuluh bilangan bulat pertama, pangkat positif dari suatu bilangan:
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++;
    }
}
Hasil keluaran konsol:
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

Ulangi dengan kondisi pasca

Jenis siklus kedua:
do {
    // Loop body - periodically executed statement(s)
}while (Логическое выражение);
Dilakukan sebagai berikut (langkah-langkah):
  1. Badan perulangan dieksekusi (segera setelah kata kunci do).
  2. Kami mengevaluasi kondisi Boolean setelah tanda kurung.
  3. Jika kondisi logisnya benar, lanjutkan ke langkah 1
  4. Jika kondisi logikanya salah, lanjutkan ke pernyataan pertama di luar perulangan while.
Dua perbedaan utama dari jenis perulangan sebelumnya: badan perulangan dieksekusi setidaknya satu kali dan kondisi logika diperiksa setelah badan perulangan dieksekusi. Oleh karena itu, perulangan while jenis ini disebut perulangan postcondition. Kali ini kami akan menampilkan tabel pangkat yang jumlahnya tidak melebihi 10000:
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
Hasil keluaran konsol:
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
Perhatikan perubahan kode, bandingkan dengan versi loop dengan prasyarat.

Fakta menarik tentang bekerja dengan loop

Perintah kontrol di badan loop

Ada dua perintah yang mempengaruhi kemajuan loop: break, fitur yang akan kita tunjukkan di bab berikutnya, dan melanjutkan.
  • lanjutkan – menghentikan eksekusi isi perulangan saat ini dan berpindah ke ekspresi logika operator while. Jika ekspresi terhitung benar, eksekusi perulangan akan dilanjutkan.
  • break – немедленно прекращает выполнение текущего цикла и осуществляет переход к первой команде за его пределами. Таким образом, выполнение текущего цикла прерывается. Подробнее мы рассмотрим её в следующей теме.
Вспомним про наш фруктовый пример. Если мы не уверены в качестве предложенных яблок, то могли бы изменить code с применением команды 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
    }
    положитьВПирог(яблоко.чистить().нарезать());
}
Конструкцию continue часто применяют, когда в теле цикла необходимо выполнять команды при наступлении некоторого условия, например, выполнить действия при срабатывании датчика в оборудовании (а иначе просто продолжить цикл считывания его показателей) or вычислить выражение только на определенных шагах цикла. Пример для последнего случая – вычисление в цикле while суммы кубов натуральных чисел, у которых квадрат меньше их количества:
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
}

Бесконечный цикл

Данные управляющие команды чаще всего находят применение в бесконечном цикле. Его так называют, потому что логическое condition выхода никогда не выполняется. В codeе он выглядит примерно How:
while(true) {
    // Loop body
}
В этом случае и пригодится применение команды break для организации выхода из него. Этот вид цикла имеет место при ожидании внешних условий, которые формируются за пределами логики тела цикла. Например, в играх, эмулирующих виртуальный мир вокруг героя (выход из цикла = выход из игры), операционных системах. Или при использовании алгоритмов, возможно, улучшающих результат с каждым последующим вызовом в цикле, но ограничивая их по времени or наступлению внешнего события (шашки, шахматы or предсказание погоды). Следует помнить, что в обычных условиях бесконечные циклы – одна из проблем неустойчивости программы. Для демонстрации вернёмся к степеням числа:
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
    }
}
Результат вывода на консоль:
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

Вложенные циклы

Вот мы и подошли к завершающей теме о наших циклах. Вспомним о яблочном пироге (надеюсь, вы не голодны в данный момент) и наш «цикл»:
  1. Если в тазике есть яблоки, выполняем шаги с 1.1 по 1.4:

    1. 1.1. Берем яблоко
    2. 1.2. Чистим и нарезаем его дольками
    3. 1.3. Помещаем на основание пирога из теста на сковороде
    4. 1.4. Возвращаемся на шаг 1.
Подробнее распишем процесс нарезания дольками:
  1. Число долек = 0
  2. Пока число долек < 12, выполнить шаги с 2.1 по 2.3

    1. 2.1. Отрезать очередную дольку от яблока
    2. 2.2. Кол-во долек ++
    3. 2.3. Возвращаемся на шаг 2
И вставим в наш кондитерский алгоритм:
  1. Если в тазике есть яблоки, то выполняем шаги с 1.1 по 1.6:

    1. 1.1. Берем яблоко
    2. 1.2. Очищаем его от кожуры
    3. 1.3. Число долек = 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 sementara - 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
Perulangan (khususnya, pernyataan while) adalah salah satu elemen dasar konstruksi program. Dengan memecahkan masalah di JavaRush, Anda akan mempelajari semua keragamannya, memahami seluk-beluk fungsinya, dan memperoleh keterampilan praktis dalam penerapannya.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION