# Perulangan / looping

Looping pada bahasa pemrograman digunakan untuk mengeksekusi suatu statement/baris program secara berulang. Proses perulangan ini memiliki pengecekan kondisi untuk menentukan apakah proses eksekusi akan masuk ke dalam looping atau tidak.

Terdapat 2 jenis looping, yaitu Entry Controlled Loop dan Exit Controlled Loop. Pada Entry Controlled Loop, kondisi di cek terlebih dahulu sebelum masuk ke dalam looping. Contoh looping jenis ini adalah while loop dan for loop. Pada Exit Controller Loop, kondisi looping dicek pada akhir loop, sehingga setidaknya statement dari looping akan dieksekusi satu kali sebelum kondisi loop diperiksa. Contoh looping jenis ini adalah do-while loop.

## while loop

Pengecekan kondisi dilakukan pada saat akan memasuki looping. Apabila kondisi terpenuhi, maka proses akan masuk ke dalam looping dan dilakukan secara berulang hingga kondisi menghasilkan nilai false.

```
while(boolean condition) {
    loop statements...
}
```

![Flowchart while loop](/files/-LJwIl7OEnWpV-nr5TtV)

Contoh source code proses looping

```csharp
class WhileLoopDemo {
    public static void Main() {
        int x = 1;
        while (x<=4) {
            Console.WriteLine("GeeksforGeeks");
            x++;
        }
    }
}
```

Output hasil eksekusi bisa dilihat pada gambar berikut

![Hasil eksekusi proses whie loop](/files/-LJwJCuaEa5VXiWJk1DB)

## for loop

For loop memiliki fungsi yang mirip dengan while loop tetapi dengan syntax yang berbeda. For loop lebih disarankan untuk digunakan apabila jumlah perulangan (looping) sudah diketahui sebelumnya. Pada for loop, inisialisasi variable looping, pengecekan kondisi looping dan proses increment/decrement dari looping di lakukan pada satu baris.

```
for(loop variable initialization; testing condition; increment/decrement) {
    // statement to be executed
}
```

![Flowchart proses for loop](/files/-LJwJmG6yDCfJzBaBsnM)

```csharp
class forLoopDemo {
    public void Main() {
        for(int x=1; x<=4; x++) {
            Console.WriteLine("GeeksforGeeks");
        }
    }
}
```

Output hasil eksekusi dapat dilihat pada gambar dibawah:

![Hasil eksekusi proses for loop](/files/-LJwK3Kc6f-Obiu2bENp)

## do-while loop

do-while loop mirip dengan while-loop, perbedaannya adalah pada while-loop pengecekan dilakukan diawal proses sebelum masuk ke dalam looping. Pada do-while-loop pengecekan dilakukan di akhir proses looping. Dengan demikian, pada do-while loop, statement di dalam loop akan dieksekusi setidaknya satu kali sebelum proses pengecekan kondisi dilakukan.

```
do {
  // statements...
} while(condition)
```

![Flowchart do-while loop](/files/-LJwKJD1pAypk3VMj1ql)

```csharp
class doWhileLoopDemo {
    public static void Main() {
        int x = 21;
        do {
            Console.WriteLine("GeeksforGeeks");
            x++;
        } while(x < 20);
    }
}
```

Output hasil eksekusi proses loping diatas dapat dilihat pada gambar dibawah:

![Output hasil proses do while loop](/files/-LJwK_Yu5ao-TM7T7DbX)

## Infinite Loop

Inifinite loop, merupakan sebuah proses looping yang terjadi terus menerus dikarenakan hasil pengecekan kondisi-nya tidak pernah menghasilkan nilai false. Infinite loop ini tidak akan berhenti hingga dipaksa berhenti dari luar.

```csharp
class infiniteLoop {
    public static void Main() {
        for(;;)
            Console.WriteLine("This is printed inifinite times");
    }
}
```

![Output hasil eksekusi proses looping](/files/-LJwKu6eLL_SVk2z8IYB)

## Nested Loop

Nested loop merupakan looping yang berada di dalam looping yang lain.

```csharp
class nestedLoops {
    public static void Main() {
        for(int i=2; i<3; i++)
            for(int j=1; j<i; j++)
                Console.WriteLine("GeeksforGeeks");
    }
}
```

![Hasil output proses nested loop](/files/-LJwLGVwmbhS95vaNQV9)

## Continue Statement

Continue statement digunakan untuk melanjutkan proses looping tanpa perlu memproses seluruh baris statement di dalam looping.

![Flowchart untuk continue statement](/files/-LJwLPdUBlQ1KmDzYIGb)

```csharp
class continueStatementDemo {
    public static void Main() {
        for(int i=1; i<3; i++) {
            if(i==2)
                continue;
            
            Console.WriteLine("GeeksforGeeks");
        }
    }
}
```

![Output hasil eksekusi](/files/-LJwLeTVzb_Aku65XOX6)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://amn.gitbook.io/training/dasar-pemrograman/perulangan-looping.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
