Program pertama kami adalah urutan instruksi yang dijalankan satu demi satu. Tidak ada garpu. Ini termasuk HelloWorld, yang menampilkan salam. Ini termasuk perhitungan aritmatika. Setelah program pertama kami, kami belajar bagaimana membuat percabangan, yaitu bagaimana membuat sebuah program melakukan tindakan yang berbeda tergantung pada kondisi tertentu. Berikut kode untuk mengontrol sistem pemanas sentral dan AC:
Katakanlah Anda memiliki sepuluh apel, dua tangan, dan satu pisau. Dalam kehidupan nyata, Anda mengupas selusin secara berurutan, mengikuti algoritme yang sama untuk setiap apel. Tapi bagaimana kita membuat program melakukan tindakan berulang untuk setiap apel?
melanjutkan.
if (tempRoom>tempComfort)
airConditionerOn();
if (tempRoom<tempComfort)
heaterOn();
Ambil langkah selanjutnya. Dalam kehidupan sehari-hari, kita sering melakukan tindakan berulang yang seragam, misalnya mengupas apel untuk dijadikan pai. Proses yang menarik ini dapat digambarkan sebagai:
-
Jika ada apel di dalam mangkuk, maka kami menjalankan langkah 1.1 hingga 1.4:
- 1.1. Ambil sebuah apel
- 1.2. Kupas dan potong-potong
- 1.3. Atur irisan apel di kulit pai dalam wajan
- 1.4. Kembali ke langkah 1.

- Kami mengikatkan diri pada jumlah apel, tetapi jika kami tidak memiliki cukup apel, maka beberapa perintah akan dieksekusi tanpa "muatan" (dan kami mungkin memotong diri sendiri saat mencoba mengupas apel yang tidak ada).
- Jika ada lebih banyak apel daripada perintah untuk dikupas, maka sebagian apel akan dibiarkan tidak dikupas.
- Kode seperti itu sulit dibaca. Ini memiliki banyak pengulangan dan sulit untuk dimodifikasi.
Loops adalah pernyataan yang memungkinkan tindakan dilakukan berulang kali
While loop Java akan bekerja dengan baik dalam kasus kami. Konstruk ini menempatkan banyak tindakan ke dalam struktur yang ringkas dan mudah dipahami. Dengan menggunakan while loop, algoritme pengiris apel untuk pai mungkin terlihat seperti ini di Java:
while (numberOfApplesInBowl > 0) {
apple = bowl.grabNextApple();
arrangeInPie(apple.peel().slice());
numberOfApplesInBow--; // "--" is the decrement operator, which reduces the number of apples by one
}
System.out.println("The apples for the pie have been processed.");
Sintaks perintah
Varian pertama dari pernyataan while adalah seperti ini:
while (Boolean expression) {
// Loop body — the statement(s) that are repeatedly executed
}
Berikut penjelasan langkah demi langkah tentang apa yang terjadi saat kode ini dijalankan:
- Kami mengevaluasi ekspresi Boolean yang ditemukan dalam tanda kurung setelah kata kunci while .
- Jika ekspresi Boolean bernilai true, maka pernyataan dalam loop body akan dieksekusi. Setelah pernyataan terakhir pada loop body dieksekusi, selanjutnya kita lanjut ke langkah 1
- Jika ekspresi Boolean bernilai salah, maka kita melompat ke pernyataan pertama setelah perulangan while .
Ulangi dengan prasyarat
Karena kita selalu mengevaluasi ekspresi Boolean (kondisi untuk memasuki perulangan) sebelum kita mengeksekusi badan perulangan, bentuk while perulangan ini sering disebut perulangan dengan precondition . Mari kita buat tabel sepuluh kekuatan pertama dari sebuah angka:
public static void main(String[] args) {
int base = 3; // The number that will be exponentiated
int result = 1; // The result of exponentiation
int exponent = 1; // The initial exponent
while (exponent <= 10) { // The condition for entering the loop
result = result * base;
System.out.println(base + " raised to the power of " + exponent + " = " + result);
exponent++;
}
}
Keluaran konsol:
3 raised to the power of 1 = 3
3 raised to the power of 2 = 9
3 raised to the power of 3 = 27
3 raised to the power of 4 = 81
3 raised to the power of 5 = 243
3 raised to the power of 6 = 729
3 raised to the power of 7 = 2187
3 raised to the power of 8 = 6561
3 raised to the power of 9 = 19683
3 raised to the power of 10 = 59049
Process finished with exit code 0
Loop dengan kondisi akhir
Inilah varian kedua dari loop ini:
do {
// Loop body — the statement(s) that are repeatedly executed
} while (Boolean expression);
Berikut penjelasan tentang apa yang terjadi saat kode ini dijalankan:
- Tubuh loop dieksekusi (segera setelah kata kunci do ).
- Kami mengevaluasi ekspresi Boolean yang ditemukan dalam tanda kurung setelah kata kunci while .
- Jika ekspresi Boolean bernilai true, maka kita lanjut ke langkah 1
- Jika ekspresi Boolean bernilai salah, maka kita melompat ke pernyataan pertama setelah perulangan while .
public static void main(String[] args) {
int base = 3; // The number that will be exponentiated
int result = base; // The result of exponentiation
int exponent = 1; // The initial exponent
do {
System.out.println(base + " raised to the power of " + exponent + " = " + result);
exponent++;
result = result * base;
} while (result < 10000); // The condition for exiting the loop
}
Keluaran konsol:
3 raised to the power of 1 = 3
3 raised to the power of 2 = 9
3 raised to the power of 3 = 27
3 raised to the power of 4 = 81
3 raised to the power of 5 = 243
3 raised to the power of 6 = 729
3 raised to the power of 7 = 2187
3 raised to the power of 8 = 6561
Process finished with exit code 0
Perhatikan perubahan kode. Bandingkan ini dengan loop dengan prasyarat.
Fakta menarik tentang bekerja dengan loop
Pernyataan percabangan di dalam tubuh loop
Ada dua pernyataan yang memengaruhi eksekusi dalam satu lingkaran: break (yang akan kita bahas lebih detail di bab berikutnya) dan- continue — melompati eksekusi sisa loop body dalam iterasi saat ini dan melompat ke evaluasi ekspresi Boolean pernyataan while. Jika ekspresi bernilai true, maka loop berlanjut.
- break — segera menghentikan eksekusi iterasi saat ini dan mentransfer kontrol ke pernyataan pertama setelah perulangan. Dengan demikian, pernyataan ini mengakhiri eksekusi loop saat ini. Kami akan mempertimbangkannya secara lebih rinci di artikel berikutnya.
while (numberOfApplesInBowl > 0) {
apple = bowl.grabNextApple();
numberOfApplesInBow--; // "--" is the decrement operator, which reduces the number of apples by one
if (apple.isBad()) { // This method returns true for rotten apples
apple.throwInGarbage();
continue; // Continue the loop. Jump to evaluation of numberOfApplesInBowl > 0
}
arrangeInPie(apple.peel().slice());
}
Pernyataan
continue sering digunakan saat pernyataan di badan loop perlu dijalankan jika kondisi tertentu terpenuhi. Misalnya, kita mungkin ingin melakukan tindakan saat sensor perangkat keras dipicu (jika tidak, cukup lanjutkan loop di mana kita mengambil pembacaan sensor) atau kita mungkin ingin menghitung ekspresi hanya pada iterasi tertentu dari sebuah loop. Contoh kasus terakhir dapat dilihat dalam penggunaan while loop untuk menghitung jumlah kubus bilangan asli yang kuadratnya lebih kecil dari jumlah bilangan. Bingung? Lihat kode berikut:
public static void main(String[] args) {
int sum = 0; // Total amount
int i = 0; // Initial number in the series
int count = 20; // Number of numbers
while (i <= count) {
i++; // Get the next number — "i++" is equivalent to "i = i + 1"
if (i * i <= count) // If the square of the number is less than
continue; // the number of numbers, then we won't calculate the sum
// Jump to the next number in the loop
sum += i * i * i; // Otherwise, we calculate the sum of the cubes of numbers
} // "sum += i * i * i" is notation that is equivalent to "sum = sum + i * i * i"
System.out.println(sum); // Print the result
}
Putaran tak terbatas
Pernyataan percabangan ini paling sering digunakan dalam loop tak terbatas. Kami menyebut loop tak terbatas jika kondisi Boolean untuk keluar dari loop tidak pernah terpenuhi. Dalam kode, tampilannya seperti ini:
while (true) {
// Loop body
}
Dalam hal ini, pernyataan
break membantu kita keluar dari loop. Jenis loop ini cocok untuk menunggu kondisi eksternal yang ditentukan di luar tubuh loop. Misalnya di sistem operasi atau game (keluar dari loop berarti keluar dari game). Atau saat menggunakan algoritme yang mencoba, dengan setiap iterasi loop, untuk meningkatkan beberapa hasil, tetapi batasi jumlah iterasi berdasarkan waktu yang berlalu atau terjadinya peristiwa eksternal (mis. catur, catur, atau prakiraan cuaca). Ingatlah bahwa dalam kondisi normal loop tak terbatas tidak diinginkan. Untuk mendemonstrasikan, mari kembali ke eksponensial:
public static void main(String[] args) {
int base = 3; // The number that will be exponentiated
int result = 1; // The result of exponentiation
int exponent = 1; // The initial exponent
while (true) {
result = result * base;
System.out.println(base + " raised to the power of " + exponent + " = " + result);
exponent++;
if (exponent > 10)
break; // Exit the loop
}
}
Keluaran konsol:
3 raised to the power of 1 = 3
3 raised to the power of 2 = 9
3 raised to the power of 3 = 27
3 raised to the power of 4 = 81
3 raised to the power of 5 = 243
3 raised to the power of 6 = 729
3 raised to the power of 7 = 2187
3 raised to the power of 8 = 6561
3 raised to the power of 9 = 19683
3 raised to the power of 10 = 59049
Process finished with exit code 0
Loop bersarang
Dan sekarang kita sampai pada topik terakhir kita tentang loop. Ingat pai apel itu (saya harap Anda tidak lapar saat ini) dan lingkaran pengupasan apel kami:-
Jika ada apel di dalam mangkuk, maka kami menjalankan langkah 1.1 hingga 1.4:
- 1.1. Ambil sebuah apel
- 1.2. Kupas dan potong-potong
- 1.3. Atur irisan apel di kulit pai dalam wajan
- 1.4. Kembali ke langkah 1.
- Jumlah irisan = 0
-
Selama jumlah irisan < 12, maka lakukan langkah 2.1 hingga 2.3
- 2.1. Potong apel lagi
- 2.2. Jumlah irisan++
- 2.3. Kembali ke langkah 2
-
Jika ada apel di dalam mangkuk, maka kami menjalankan langkah 1.1 hingga 1.6:
- 1.1. Ambil sebuah apel
- 1.2. Kupas
- 1.3. Jumlah irisan = 0
- 1.4. Selama jumlah irisan < 12, maka lakukan langkah 1.4.1 hingga 1.4.3
- 1.4.1. Potong apel lagi
- 1.4.2. Jumlah irisan++ 1.4.3. Kembali ke langkah 1.4
- 1.5. Atur irisan apel di kulit pai dalam wajan
- 1.6. Kembali ke langkah 1.
public static void main(String[] args) {
// Print the second factors in a row
System.out.println(" 2 3 4 5 6 7 8 9");
int i = 2; // Assign the first factor to the variable
while (i < 10) { // First loop: execute as long as the first factor is less than 10
System.out.print(i + " | "); // Print the first factor at the beginning of the line
int j = 2; // The starting value of the second factor
while (j < 10) { // Second loop: execute as long as the second factor is less than 10
int product = i * j; // Calculate the product of the factors
if (product < 10) // If the product is a single digit, then we print two spaces after the product
System.out.print(product + " ");
else // Otherwise, print the product and one space after it
System.out.print(product + " ");
j++; // Increment the second factor by one
} // Go to the beginning of the second loop, i.e. "while (j < 10)"
System.out.println(); // Move to the next line on the console
i++; // Increment the first factor by one
} // Go to the beginning of the first loop, i.e. "while (i < 10)"
}
Keluaran konsol:
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 blok bangunan mendasar dari perangkat lunak. Dengan menyelesaikan tugas di CodeGym, Anda akan mempelajari semua jenis loop yang berbeda, memahami seluk-beluknya, dan mendapatkan keterampilan praktis dalam menggunakannya.
GO TO FULL VERSION