Difference between revisions of "JAVA: Loop di Java"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 66: | Line 66: | ||
Flowchart: | Flowchart: | ||
− | |||
− | Initialization condition: | + | [[File:Loop2.png|center|300px|thumb]] |
− | Testing Condition: | + | |
− | Statement execution: | + | * '''Initialization condition:''' Di sini, kita menginisialisasi variabel yang digunakan. Ini menandai awal dari for loop. Variabel yang sudah dideklarasikan dapat digunakan atau variabel dapat dideklarasikan, hanya lokal untuk loop. |
− | Increment/ Decrement: | + | * '''Testing Condition:''' Ini digunakan untuk menguji kondisi keluar untuk sebuah loop. Testing Condition harus return nilai boolean. Testing Condition juga merupakan '''Entry Control Loop''' karena kondisi akan di cek sebelum menjalankan perintah dalam loop. |
− | Loop termination: | + | * '''Statement execution:''' Setelah kondisi dievaluasi adalah true, perintah di badan loop di jalankan. |
+ | * '''Increment/ Decrement:''' Ini digunakan untuk memperbarui variabel untuk iterasi berikutnya. | ||
+ | * '''Loop termination:''' Ketika kondisi adalah false, loop berhenti menandai akhir dari loop. | ||
+ | |||
// Java program to illustrate for loop. | // Java program to illustrate for loop. | ||
Line 90: | Line 92: | ||
Value of x:3 | Value of x:3 | ||
Value of x:4 | Value of x:4 | ||
− | |||
− | Java | + | ===Enhanced For loop=== |
− | + | ||
− | + | Java juga menyertakan versi lain dari for loop yang diperkenalkan di Java 5. Enhanced for loop menyediakan cara yang lebih sederhana untuk beralih melalui elemen collection atau array. Ini tidak fleksibel dan harus digunakan hanya ketika ada kebutuhan untuk mengulangi elemen secara berurutan tanpa mengetahui indeks elemen yang sedang diproses. | |
+ | |||
+ | Perhatikan juga bahwa objek/variabel tidak dapat diubah ketika loop yang ditingkatkan untuk digunakan yaitu memastikan bahwa nilai-nilai dalam array tidak dapat dimodifikasi, sehingga dapat dikatakan sebagai read-only loop di mana kita tidak dapat memperbarui nilai-nilai yang berlawanan dengan loop lain di mana nilai dapat dimodifikasi. | ||
+ | |||
+ | Sebaiknya gunakan bentuk pernyataan for berikut daripada bentuk umum jika memungkinkan. (sesuai JAVA doc.) | ||
Syntax: | Syntax: | ||
Line 103: | Line 108: | ||
} | } | ||
− | + | Mari kita ambil contoh untuk mendemonstrasikan bagaimana enhanced for loop dapat digunakan untuk menyederhanakan pekerjaan. Misalkan ada array nama dan kita ingin mencetak semua nama dalam array tersebut. Mari kita lihat perbedaan antara dua contoh berikut ini. | |
− | Enhanced for loop | + | |
+ | Enhanced for loop menyederhanakan pekerjaan sebagai berikut- | ||
// Java program to illustrate enhanced for loop | // Java program to illustrate enhanced for loop | ||
Line 134: | Line 140: | ||
==do while:== | ==do while:== | ||
− | do while loop | + | |
+ | do while loop mirip dengan while loop dengan perbedaan hanya memeriksa kondisi setelah mengeksekusi pernyataan, dan karena itu merupakan contoh Exit Control Loop. | ||
Syntax: | Syntax: | ||
Line 145: | Line 152: | ||
Flowchart: | Flowchart: | ||
− | |||
− | do while loop | + | [[File:Loop3.png|center|300px|thumb]] |
− | + | ||
+ | do while loop dimulai dengan menjalankan perintah. Tidak ada pemeriksaan kondisi apa pun untuk pertama kalinya. | ||
+ | Setelah eksekusi pernyataan, dan pembaruan nilai variabel, kondisi diperiksa untuk nilai true atau false. Jika dievaluasi true, iterasi loop berikutnya dimulai. | ||
+ | |||
+ | Ketika kondisi menjadi false, loop berakhir yang menandai akhir dari siklus hidup loop. | ||
+ | Penting untuk dicatat bahwa perulangan do-while akan mengeksekusi pernyataannya setidaknya sekali sebelum kondisi apapun diperiksa, dan oleh karena itu merupakan contoh dari exit control loop. | ||
− | |||
− | |||
// Java program to illustrate do-while loop | // Java program to illustrate do-while loop | ||
Line 175: | Line 184: | ||
==Infinite loop:== | ==Infinite loop:== | ||
− | + | ||
+ | Salah satu kesalahan paling umum saat menerapkan segala jenis perulangan adalah bahwa loop tersebut mungkin tidak pernah keluar, yaitu perulangan berjalan untuk waktu yang tak terhingga. Ini terjadi ketika kondisi gagal karena suatu alasan. | ||
+ | |||
Contoh: | Contoh: | ||
Line 202: | Line 213: | ||
} | } | ||
− | + | Perangkap lain adalah kita mungkin menambahkan sesuatu ke objek collection kita melalui loop dan kita bisa kehabisan memori. Jika kita mencoba dan menjalankan program di bawah ini, setelah beberapa waktu, out of memory exception akan dikeluarkan. | |
+ | |||
//Java program for out of memory exception. | //Java program for out of memory exception. | ||
Line 227: | Line 239: | ||
at java.util.ArrayList.add(Unknown Source) | at java.util.ArrayList.add(Unknown Source) | ||
at article.Integer1.main(Integer1.java:9) | at article.Integer1.main(Integer1.java:9) | ||
− | |||
==Referensi== | ==Referensi== | ||
* https://www.geeksforgeeks.org/loops-in-java/ | * https://www.geeksforgeeks.org/loops-in-java/ |
Latest revision as of 10:52, 4 May 2022
Looping dalam bahasa pemrograman adalah fitur yang memfasilitasi eksekusi serangkaian instruksi/fungsi berulang kali sementara beberapa kondisi bernilai benar.
Java menyediakan tiga cara untuk mengeksekusi loop. Sementara semua cara menyediakan fungsionalitas dasar yang serupa, mereka berbeda dalam sintaks dan waktu pemeriksaan kondisi.
while loop:
Loop while adalah pernyataan aliran kontrol yang memungkinkan code dieksekusi berulang kali berdasarkan kondisi Boolean yang diberikan. Perulangan while dapat dianggap sebagai pernyataan if yang berulang.
Syntax :
while (boolean condition) { loop statements... }
Flowchart:
While loop dimulai dengan pengecekan kondisi. Jika bernilai true, maka body perintah perulangan akan di jalankan jika tidak, pernyataan pertama setelah perulangan akan di jalankan. Untuk alasan ini juga disebut Entry control loop
Setelah kondisi dievaluasi ke true, pernyataan di badan loop di jalankan. Biasanya pernyataan berisi nilai yang di update untuk variabel yang sedang diproses untuk iterasi berikutnya.
Ketika kondisi menjadi false, loop berakhir yang menandai akhir dari siklus loop tersebut.
// Java program to illustrate while loop class whileLoopDemo { public static void main(String args[]) { int x = 1; // Exit when x becomes greater than 4 while (x <= 4) { System.out.println("Value of x:" + x); // Increment the value of x for // next iteration x++; } } }
Output:
Value of x:1 Value of x:2 Value of x:3 Value of x:4
for loop:
for loop menyediakan cara ringkas untuk menulis struktur loop. Tidak seperti perulangan while, pernyataan for menggunakan inisialisasi, kondisi, dan kenaikan/penurunan dalam satu baris sehingga memberikan struktur perulangan yang lebih pendek dan mudah di-debug.
Syntax:
for (initialization condition; testing condition; increment/decrement) { statement(s) }
Flowchart:
- Initialization condition: Di sini, kita menginisialisasi variabel yang digunakan. Ini menandai awal dari for loop. Variabel yang sudah dideklarasikan dapat digunakan atau variabel dapat dideklarasikan, hanya lokal untuk loop.
- Testing Condition: Ini digunakan untuk menguji kondisi keluar untuk sebuah loop. Testing Condition harus return nilai boolean. Testing Condition juga merupakan Entry Control Loop karena kondisi akan di cek sebelum menjalankan perintah dalam loop.
- Statement execution: Setelah kondisi dievaluasi adalah true, perintah di badan loop di jalankan.
- Increment/ Decrement: Ini digunakan untuk memperbarui variabel untuk iterasi berikutnya.
- Loop termination: Ketika kondisi adalah false, loop berhenti menandai akhir dari loop.
// Java program to illustrate for loop. class forLoopDemo { public static void main(String args[]) { // for loop begins when x=2 // and runs till x <=4 for (int x = 2; x <= 4; x++) System.out.println("Value of x:" + x); } }
Output:
Value of x:2 Value of x:3 Value of x:4
Enhanced For loop
Java juga menyertakan versi lain dari for loop yang diperkenalkan di Java 5. Enhanced for loop menyediakan cara yang lebih sederhana untuk beralih melalui elemen collection atau array. Ini tidak fleksibel dan harus digunakan hanya ketika ada kebutuhan untuk mengulangi elemen secara berurutan tanpa mengetahui indeks elemen yang sedang diproses.
Perhatikan juga bahwa objek/variabel tidak dapat diubah ketika loop yang ditingkatkan untuk digunakan yaitu memastikan bahwa nilai-nilai dalam array tidak dapat dimodifikasi, sehingga dapat dikatakan sebagai read-only loop di mana kita tidak dapat memperbarui nilai-nilai yang berlawanan dengan loop lain di mana nilai dapat dimodifikasi.
Sebaiknya gunakan bentuk pernyataan for berikut daripada bentuk umum jika memungkinkan. (sesuai JAVA doc.)
Syntax:
for (T element:Collection obj/array) { statement(s) }
Mari kita ambil contoh untuk mendemonstrasikan bagaimana enhanced for loop dapat digunakan untuk menyederhanakan pekerjaan. Misalkan ada array nama dan kita ingin mencetak semua nama dalam array tersebut. Mari kita lihat perbedaan antara dua contoh berikut ini.
Enhanced for loop menyederhanakan pekerjaan sebagai berikut-
// Java program to illustrate enhanced for loop public class enhancedforloop { public static void main(String args[]) { String array[] = {"Ron", "Harry", "Hermoine"}; //enhanced for loop for (String x:array) { System.out.println(x); } /* for loop for same function for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } */ } }
Output:
Ron Harry Hermoine
do while:
do while loop mirip dengan while loop dengan perbedaan hanya memeriksa kondisi setelah mengeksekusi pernyataan, dan karena itu merupakan contoh Exit Control Loop.
Syntax:
do { statements.. } while (condition);
Flowchart:
do while loop dimulai dengan menjalankan perintah. Tidak ada pemeriksaan kondisi apa pun untuk pertama kalinya. Setelah eksekusi pernyataan, dan pembaruan nilai variabel, kondisi diperiksa untuk nilai true atau false. Jika dievaluasi true, iterasi loop berikutnya dimulai.
Ketika kondisi menjadi false, loop berakhir yang menandai akhir dari siklus hidup loop. Penting untuk dicatat bahwa perulangan do-while akan mengeksekusi pernyataannya setidaknya sekali sebelum kondisi apapun diperiksa, dan oleh karena itu merupakan contoh dari exit control loop.
// Java program to illustrate do-while loop class dowhileloopDemo { public static void main(String args[]) { int x = 21; do { // The line will be printed even // if the condition is false System.out.println("Value of x:" + x); x++; } while (x < 20); } }
Output:
Value of x: 21 Pitfalls of Loops
Infinite loop:
Salah satu kesalahan paling umum saat menerapkan segala jenis perulangan adalah bahwa loop tersebut mungkin tidak pernah keluar, yaitu perulangan berjalan untuk waktu yang tak terhingga. Ini terjadi ketika kondisi gagal karena suatu alasan.
Contoh:
//Java program to illustrate various pitfalls. public class LooppitfallsDemo { public static void main(String[] args) { // infinite loop because condition is not apt // condition should have been i>0. for (int i = 5; i != 0; i -= 2) { System.out.println(i); } int x = 5; // infinite loop because update statement // is not provided. while (x == 5) { System.out.println("In the loop"); } } }
Perangkap lain adalah kita mungkin menambahkan sesuatu ke objek collection kita melalui loop dan kita bisa kehabisan memori. Jika kita mencoba dan menjalankan program di bawah ini, setelah beberapa waktu, out of memory exception akan dikeluarkan.
//Java program for out of memory exception. import java.util.ArrayList; public class Integer1 { public static void main(String[] args) { ArrayList<Integer> ar = new ArrayList<>(); for (int i = 0; i < Integer.MAX_VALUE; i++) { ar.add(i); } } }
Output:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.ArrayList.grow(Unknown Source) at java.util.ArrayList.ensureCapacityInternal(Unknown Source) at java.util.ArrayList.add(Unknown Source) at article.Integer1.main(Integer1.java:9)