9.1 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
breakuntuk keluar dari perulangan dalam kondisi tertentu - Gunakan
continueuntuk melewati iterasi saat ini dalam kondisi tertentu - Hati-hati saat menggunakan
continuekarena bisa menyebabkan infinite loop jika counter tidak diperbarui - Gunakan do-while ketika Anda ingin memastikan bahwa blok kode dijalankan setidaknya sekali
Referensi:
- https://www.w3schools.com/c/c_while_loop.php
- https://www.w3schools.com/c/c_do_while_loop.php
- https://www.w3schools.com/c/c_while_loop_reallife.php
---EXERCISE---
Latihan: Menu Interaktif dengan Do-While Loop
Dalam latihan ini, Anda akan membuat menu interaktif yang terus berjalan sampai pengguna memilih untuk keluar, menggunakan do-while loop.
Requirements:
- Gunakan do-while loop untuk membuat menu terus berjalan
- Tampilkan menu pilihan (setidaknya 3 pilihan)
- Gunakan switch statement untuk menangani pilihan menu
- Gunakan break untuk keluar dari perulangan saat pengguna memilih keluar
- Pastikan program menangani pilihan yang tidak valid
Expected Output:
Menu:
1. Tampilkan pesan sambutan
2. Hitung jumlah angka
3. Keluar
Pilih opsi (1-3): 1
Halo! Selamat datang di program kami.
Menu:
1. Tampilkan pesan sambutan
2. Hitung jumlah angka
3. Keluar
Pilih opsi (1-3): 2
Jumlah angka dari 1 hingga 5 adalah 15.
Menu:
1. Tampilkan pesan sambutan
2. Hitung jumlah angka
3. Keluar
Pilih opsi (1-3): 3
Terima kasih telah menggunakan program kami.
Try writing your solution in the code editor below!
---EXPECTED_OUTPUT--- Menu:
- Tampilkan pesan sambutan
- Hitung jumlah angka
- Keluar Pilih opsi (1-3): 1 Halo! Selamat datang di program kami. Menu:
- Tampilkan pesan sambutan
- Hitung jumlah angka
- Keluar Pilih opsi (1-3): 2 Jumlah angka dari 1 hingga 5 adalah 15. Menu:
- Tampilkan pesan sambutan
- Hitung jumlah angka
- Keluar Pilih opsi (1-3): 3 Terima kasih telah menggunakan program kami. ---END_EXPECTED_OUTPUT---
---INITIAL_CODE--- #include <stdio.h>
int main() { int choice;
// TODO: Gunakan do-while loop untuk membuat menu interaktif
// Tampilkan menu dan tangani pilihan pengguna
return 0;
} ---END_INITIAL_CODE---
---SOLUTION_CODE--- #include <stdio.h>
int main() { int choice;
do {
printf("Menu:\\n");
printf("1. Tampilkan pesan sambutan\\n");
printf("2. Hitung jumlah angka\\n");
printf("3. Keluar\\n");
printf("Pilih opsi (1-3): ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Halo! Selamat datang di program kami.\\n");
break;
case 2: {
int sum = 0;
for (int i = 1; i <= 5; i++) {
sum += i;
}
printf("Jumlah angka dari 1 hingga 5 adalah %d.\\n", sum);
break;
}
case 3:
printf("Terima kasih telah menggunakan program kami.\\n");
break;
default:
printf("Opsi tidak valid. Silakan coba lagi.\\n");
}
// Jika bukan pilihan keluar, tambahkan baris kosong untuk pemisah
if (choice != 3) {
printf("\\n");
}
} while (choice != 3);
return 0;
} ---END_SOLUTION_CODE---