Kamis, 20 Mei 2021

Belajar Java Pemula - While Loop dan For Loop

Tags

Java While Loop For Loop

Looping dalam bahasa pemrograman adalah fitur yang memfasilitasi eksekusi sekumpulan instruksi / fungsi secara berulang-ulang saat beberapa kondisi bernilai true. Java menyediakan tiga cara untuk menjalankan loop. Meskipun semua cara menyediakan fungsionalitas dasar yang serupa, mereka berbeda dalam sintaksis dan waktu pemeriksaan kondisinya.

1. While Loop

While Loop adalah pernyataan aliran kontrol (control flow statement) yang memungkinkan kode dieksekusi berulang kali berdasarkan kondisi Boolean tertentu. Perulangan while dapat dianggap sebagai pernyataan if yang berulang.

Sintaks:

while (boolean kondisi)
{
   pernyataan loop...
}


  • While loop dimulai dengan pemeriksaan kondisi. Jika evaluasinya bernilai true, maka pernyataan perulangan dieksekusi. Jika tidak, maka pernyataan pertama setelah perulangan akan dijalankan. Untuk alasan ini maka disebut juga Entry control loop.
  • Setelah kondisi dievaluasi menjadi true, pernyataan dalam perulangan dieksekusi. Biasanya pernyataan berisi nilai pembaruan untuk variabel yang sedang diproses untuk iterasi berikutnya.
  • Ketika kondisi menjadi salah, perulangan berakhir yang menandai akhir dari siklus hidupnya.

  • 
    // Program Java untuk menggambarkan while loop
    class whileLoopDemo
    {
        public static void main(String args[])
        {
            int x = 1;
      
            // Keluar saat x menjadi lebih besar dari 4
            while (x <= 4)
            {
                System.out.println("Nilai x:" + x);
      
                // Tingkatkan nilai x
                // iterasi berikutnya
                x++;
            }
        }
    }
    


    OUTPUT:
    
    Nilai x: 1
    Nilai x: 2
    Nilai x: 3
    Nilai x: 4
    


    2. For Loop

    For loop menyediakan cara ringkas untuk menulis struktur loop. Tidak seperti while loop, pernyataan For menggunakan inisialisasi, kondisi dan kenaikan / penurunan dalam satu baris sehingga memberikan struktur perulangan yang lebih pendek dan mudah untuk di-debug.

    Sintaks:
    
    for (kondisi inisialisasi; kondisi pengujian; increment/decrement)
    {
        pernyataan
    }
    


  • Kondisi inisialisasi: Di sini, kita menginisialisasi variabel yang digunakan. Hal ini akan menandai awal dari perulangan for. Variabel yang sudah dideklarasikan dapat digunakan atau variabel dapat dideklarasikan secara lokal hanya untuk loop saja.
  • Kondisi Pengujian: Ini digunakan untuk menguji kondisi keluar untuk sebuah loop. Ini harus mengembalikan nilai boolean dan juga merupakan entry control loop karena kondisinya diperiksa sebelum eksekusi pernyataan loop.
  • Eksekusi pernyataan: Setelah kondisi dievaluasi menjadi true, pernyataan dalam perulangan dieksekusi.
  • Increment / Decrement: Ini digunakan untuk memperbarui variabel untuk iterasi berikutnya.
  • Penghentian loop: Ketika kondisi menjadi salah, loop berhenti menandai akhir dari siklus hidupnya.

  • 
    // Program Java untuk menggambarkan for loop
    class forLoopDemo
    {
        public static void main(String args[])
        {
            // for loop dimulai ketika x = 2
            // dan berjalan sampai x <= 4
            for (int x = 2; x <= 4; x++)
                System.out.println("Nilai x:" + x);
        }
    }
    


    OUTPUT:
    
    Nilai x: 2
    Nilai x: 3
    Nilai x: 4
    


    Enhanced For loop

    Java juga menyertakan versi lain dari perulangan For yang diperkenalkan di Java 5. Perulangan For yang disempurnakan menyediakan cara yang lebih sederhana untuk melakukan iterasi melalui elemen-elemen collection atau array. Hal ini tidak fleksibel dan harus digunakan hanya jika ada kebutuhan untuk melakukan iterasi melalui elemen secara berurutan tanpa mengetahui indeks elemen yang sedang diproses.

    Juga perhatikan bahwa objek / variabel tidak dapat diubah ketika enhanced for loop digunakan yang mana hal ini untuk memastikan bahwa nilai-nilai dalam array tidak dapat dimodifikasi, sehingga dapat dikatakan sebagai read-only loop di mana kita tidak dapat memperbarui nilai, kebalikannya dari loop lainnya di mana nilai dapat dimodifikasi. Kami merekomendasikan penggunaan bentuk pernyataan For ini daripada bentuk umum jika memungkinkan. (Sesuai dokumentasi JAVA.)

    Sintaks:
    
    for (T element:Collection obj/array)
    {
        pernyataan
    }
    


    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 di array tersebut. Mari kita lihat perbedaannya dengan contoh di bawah ini:
    
    // Program Java untuk mengilustrasikan enhanced for loop
    public class enhancedforloop
    {
        public static void main(String args[])
        {
            String array[] = {"Andi", "Iwan", "Wati"};
      
            //enhanced for loop
            for (String x:array)
            {
                System.out.println(x);
            }
      
            /* for loop untuk fungsi yang sama
            for (int i = 0; i < array.length; i++)
            {
                System.out.println(array[i]);
            }
            */
        }
    }
    


    OUTPUT:
    
    Andi
    Iwan
    Wati
    


    3. Do While

    Do while loop mirip dengan while loop dengan perbedaan hanya memeriksa kondisi setelah menjalankan pernyataan, dan oleh karena itu merupakan contoh dari Exit Control Loop.

    Sintaks:
    
    do
    {
        pernyatan..
    }
    while (kondisi);
    


  • Do while loop dimulai dengan eksekusi pernyataan. Tidak ada pemeriksaan kondisi apapun untuk pertama kalinya.
  • Setelah eksekusi pernyataan, dan pembaruan nilai variabel, kondisi diperiksa untuk nilai benar atau salah. Jika dievaluasi ke true, iterasi loop berikutnya dimulai.
  • Ketika kondisi menjadi salah, perulangan berakhir yang menandai akhir dari siklus hidupnya.
  • Penting untuk dicatat bahwa loop do-while akan mengeksekusi pernyataannya setidaknya sekali sebelum kondisi apa pun diperiksa, dan oleh karena itu merupakan contoh Exit Control Loop.

  • 
    // Program Java untuk mengilustrasikan do-while loop
    class dowhileloopDemo
    {
        public static void main(String args[])
        {
            int x = 21;
            do
            {
                // Hasil akan dicetak meskipun kondisinya salah
                System.out.println("Nilai x:" + x);
                x++;
            }
            while (x < 20);
        }
    }
    


    OUTPUT:
    
    Nilai x: 21
    


    Perlu Diperhatikan Saat Menggunakan Loop

    Perulangan tak terbatas (Infinite loop): Salah satu kesalahan paling umum saat menerapkan perulangan jenis apa pun adalah bahwa ia mungkin tidak pernah keluar, yaitu perulangan berjalan untuk waktu yang tak terbatas. Ini terjadi ketika kondisi gagal karena beberapa alasan.

    Contoh:
    
    // Program Java untuk mengilustrasikan berbagai kesalahan
    public class LoopzonkDemo
    {
        public static void main(String[] args)
        {
      
            // loop tak terbatas karena kondisinya tidak tepat
            // kondisi seharusnya i> 0.
            for (int i = 5; i != 0; i -= 2)
            {
                System.out.println(i);
            }
            int x = 5;
      
            // loop tak terbatas karena pernyataan update
            // tidak disediakan.
            while (x == 5)
            {
                System.out.println("In the loop");
            }
        }
    }
    


    Perangkap lain adalah bahwa kita mungkin menambahkan sesuatu ke dalam objek koleksi melalui loop dan mengakibatkan kehabisan memori. Jika kita mencoba dan menjalankan program di bawah ini, setelah beberapa waktu akan terjadi out of memory exception.
    
    // Program Java untuk mengilustrasikan 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)
    


    EmoticonEmoticon