sinau-c/content/while_loops.md

7.8 KiB

---LESSON_INFO--- Learning Objectives:

  • Memahami konsep perulangan while dalam bahasa C
  • Belajar menggunakan perulangan while untuk iterasi
  • Mengenal struktur perulangan while
  • Memahami perbedaan antara perulangan while dan for
  • Mengenal direktif kontrol perulangan (break dan continue)

Prerequisites:

  • Pemahaman tentang variabel dan tipe data
  • Pemahaman dasar tentang kondisi dalam C

---END_LESSON_INFO---

Perulangan While dalam C

Perulangan while dalam bahasa C digunakan untuk mengulang blok kode selama kondisi tertentu masih benar. Perulangan akan terus berjalan selama ekspresi kondisi mengevaluasi ke nilai benar (non-zero).

Sintaks Perulangan While

while (kondisi) {
    // blok kode yang akan diulang
}

Contoh Dasar Perulangan While

Berikut adalah contoh sederhana dari perulangan while:

#include <stdio.h>

int main() {
    int i = 1;
    
    while (i <= 5) {
        printf("%d ", i);
        i++;
    }
    
    return 0;
}

Output:

1 2 3 4 5

Perulangan While Tak Terbatas

Jika kondisi dalam perulangan while selalu benar, maka perulangan akan berjalan selamanya (infinite loop):

while (1) {
    printf("Loop tak terbatas\\n");
    // Perulangan ini akan berjalan selamanya
}

Direktif Kontrol Perulangan

Break

Keyword break digunakan untuk keluar dari perulangan sebelum kondisi menjadi salah:

int i = 1;

while (i <= 10) {
    if (i == 5) {
        break;  // Keluar dari perulangan ketika i = 5
    }
    printf("%d ", i);
    i++;
}

Output:

1 2 3 4

Continue

Keyword continue digunakan untuk melewati iterasi saat ini dan melanjutkan ke iterasi berikutnya:

int i = 0;

while (i < 5) {
    i++;
    
    if (i == 3) {
        continue;  // Lewati iterasi ketika i = 3
    }
    
    printf("%d ", i);
}

Output:

1 2 4 5

Contoh Nyata Penggunaan While Loop

Berikut adalah contoh penggunaan perulangan while dalam situasi nyata:

#include <stdio.h>

int main() {
    int password;
    int attempts = 0;
    const int MAX_ATTEMPTS = 3;
    
    printf("Masukkan password (angka 1234): ");
    
    while (attempts < MAX_ATTEMPTS) {
        scanf("%d", &password);
        attempts++;
        
        if (password == 1234) {
            printf("Password benar! Akses diberikan.\\n");
            break;
        } else if (attempts < MAX_ATTEMPTS) {
            printf("Password salah! Coba lagi (%d kesempatan tersisa): ", MAX_ATTEMPTS - attempts);
        } else {
            printf("Terlalu banyak percobaan salah. Akses ditolak.\\n");
        }
    }
    
    return 0;
}

Perbandingan While dan For

Perulangan while dan for memiliki tujuan yang sama tetapi digunakan dalam konteks berbeda:

  • While loop: Digunakan ketika jumlah iterasi tidak diketahui sebelumnya
  • For loop: Digunakan ketika jumlah iterasi diketahui atau menggunakan counter

Contoh konversi dari for ke while:

// Menggunakan for loop
for (int i = 0; i < 5; i++) {
    printf("%d ", i);
}

// Setara dengan while loop
int i = 0;
while (i < 5) {
    printf("%d ", i);
    i++;
}

Do-While Loop

Do-while loop mirip dengan while loop, tetapi dengan satu perbedaan penting: blok kode akan dieksekusi setidaknya sekali sebelum kondisi dicek. Ini berarti bahwa kode dalam blok do akan selalu dijalankan setidaknya satu kali, bahkan jika kondisi awalnya salah.

Sintaks Do-While Loop

do {
    // blok kode yang akan diulang
} while (kondisi);

Contoh Do-While Loop

#include <stdio.h>

int main() {
    int i = 1;

    do {
        printf("%d ", i);
        i++;
    } while (i <= 5);

    return 0;
}

Output:

1 2 3 4 5

Perbedaan utama antara while dan do-while adalah bahwa dalam do-while, blok kode akan dieksekusi setidaknya sekali, meskipun kondisi awalnya salah:

int i = 10;

// While loop - tidak akan mengeksekusi blok kode
while (i < 5) {
    printf("Ini tidak akan dicetak\\n");
}

// Do-while loop - akan mengeksekusi blok kode sekali
do {
    printf("Ini akan dicetak sekali\\n");
} while (i < 5);

Contoh Nyata Penggunaan While Loop

Berikut adalah contoh penggunaan perulangan while dalam situasi nyata:

#include <stdio.h>

int main() {
    int password;
    int attempts = 0;
    const int MAX_ATTEMPTS = 3;

    printf("Masukkan password (angka 1234): ");

    while (attempts < MAX_ATTEMPTS) {
        scanf("%d", &password);
        attempts++;

        if (password == 1234) {
            printf("Password benar! Akses diberikan.\\n");
            break;
        } else if (attempts < MAX_ATTEMPTS) {
            printf("Password salah! Coba lagi (%d kesempatan tersisa): ", MAX_ATTEMPTS - attempts);
        } else {
            printf("Terlalu banyak percobaan salah. Akses ditolak.\\n");
        }
    }

    return 0;
}

Contoh Nyata Penggunaan Do-While Loop

Do-while loop sangat berguna dalam skenario interaktif di mana Anda ingin memastikan bahwa pengguna diminta setidaknya sekali:

#include <stdio.h>

int main() {
    int choice;

    do {
        printf("\\nMenu:\\n");
        printf("1. Tampilkan pesan\\n");
        printf("2. Hitung angka\\n");
        printf("3. Keluar\\n");
        printf("Pilih opsi (1-3): ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                printf("Anda memilih untuk menampilkan pesan.\\n");
                break;
            case 2:
                printf("Anda memilih untuk menghitung angka.\\n");
                break;
            case 3:
                printf("Keluar dari program.\\n");
                break;
            default:
                printf("Opsi tidak valid. Silakan coba lagi.\\n");
        }
    } while (choice != 3);

    return 0;
}

Tips:

  • Pastikan kondisi dalam while loop akan berubah sehingga perulangan tidak menjadi infinite loop
  • Gunakan break untuk keluar dari perulangan dalam kondisi tertentu
  • Gunakan continue untuk melewati iterasi saat ini dalam kondisi tertentu
  • Hati-hati saat menggunakan continue karena bisa menyebabkan infinite loop jika counter tidak diperbarui
  • Gunakan do-while ketika Anda ingin memastikan bahwa blok kode dijalankan setidaknya sekali

Referensi:

---EXERCISE---

Latihan: Mencetak Angka Ganjil dengan While Loop

Dalam latihan ini, Anda akan membuat program yang mencetak angka ganjil dari 1 hingga 20 menggunakan while loop.

Requirements:

  • Gunakan while loop untuk mencetak angka ganjil
  • Cetak angka ganjil dari 1 hingga 20
  • Gunakan kondisi untuk memeriksa apakah angka ganjil
  • Tampilkan setiap angka ganjil dengan pemisah spasi

Expected Output:

1 3 5 7 9 11 13 15 17 19

Try writing your solution in the code editor below!

---KEY_TEXT--- while printf % 2 ---END_KEY_TEXT---

---EXPECTED_OUTPUT--- 1 3 5 7 9 11 13 15 17 19 ---END_EXPECTED_OUTPUT---

---INITIAL_CODE--- #include <stdio.h>

int main() { int number = 1; // Mulai dari angka 1

// TODO: Gunakan while loop untuk mencetak angka ganjil dari 1 hingga 20
// - Kondisi: ulangi selama number kurang dari atau sama dengan 20
// - Di dalam loop: periksa apakah number ganjil, jika ya cetak, lalu tambahkan number

return 0;

} ---END_INITIAL_CODE---

---SOLUTION_CODE--- #include <stdio.h>

int main() { int number = 1; // Mulai dari angka 1

while (number <= 20) {
    if (number % 2 == 1) {  // Periksa apakah angka ganjil
        printf("%d ", number);
    }
    number++;  // Tambahkan number setiap iterasi
}

printf("\\n");
return 0;

} ---END_SOLUTION_CODE---