Memahami Switch-Case dalam C: Sintaks, Contoh, dan Praktik Terbaik
Apa itu Pernyataan Switch dalam C?
Konstruk switch mengevaluasi satu ekspresi dan mengarahkan alur program ke label case yang cocok. Jika tidak ada kecocokan yang ditemukan, blok default opsional dijalankan. Alat pengambilan keputusan ini sangat berguna saat menangani nilai diskrit konstan seperti opsi menu, kode kesalahan, atau pilihan pengguna.
Setiap case secara unik diidentifikasi oleh ekspresi konstan. Ketika nilai ekspresi cocok dengan label case, blok pernyataan yang sesuai dieksekusi, dan eksekusi keluar dari switch (kecuali break diabaikan, yang menyebabkan fall-through).
ekspresi harus mengevaluasi ke tipe integral atau enum.
Label case adalah nilai konstan; duplikasi menciptakan ambigu dan harus dihindari.
Setiap case diakhiri dengan titik dua dan diikuti oleh blok kode.
Gunakan break untuk mengakhiri case; tanpa itu, eksekusi melanjutkan ke case berikutnya (fall-through).
Blok default opsional dan dijalankan hanya ketika tidak ada case yang cocok.
Bagaimana Pernyataan Switch Bekerja
Flowchart berikut menggambarkan proses pengambilan keputusan untuk pernyataan switch:
Contoh 1: Switch Dasar
#include <stdio.h> int main() { int num = 8; switch (num) { case 7: printf("Nilai adalah 7"); break; case 8: printf("Nilai adalah 8"); break; case 9: printf("Nilai adalah 9"); break; default: printf("Di luar jangkauan"); break; } return 0; }
Output:
Nilai adalah 8
Contoh 2: Menggunakan Default
#include <stdio.h> int main() { int language = 10; switch (language) { case 1: printf("C#\n"); break; case 2: printf("C\n"); break; case 3: printf("C++\n"); break; default: printf("Bahasa pemrograman lainnya\n"); } return 0; }
Output:
Bahasa pemrograman lainnya
Contoh 3: Case Gabungan
#include <stdio.h> int main() { int number = 5; switch (number) { case 1: case 2: case 3: printf("Satu, Dua, atau Tiga.\n"); break; case 4: case 5: case 6: printf("Empat, Lima, atau Enam.\n"); break; default: printf("Lebih dari Enam.\n"); } return 0; }
Output:
Empat, Lima, atau Enam.
Switch Bersarang
Switch dapat disusun bersarang, memungkinkan pengambilan keputusan hierarkis. Contoh berikut menunjukkan alur autentikasi sederhana:
#include <stdio.h> int main() { int ID, password; printf("Masukkan ID Anda:\n"); scanf("%d", &ID); switch (ID) { case 500: printf("Masukkan kata sandi Anda:\n"); scanf("%d", &password); switch (password) { case 0: printf("Selamat datang Programmer\n"); break; default: printf("Kata sandi salah\n"); } break; default: printf("ID salah\n"); } return 0; }
OUTPUT:
Masukkan ID Anda: 500 Masukkan kata sandi Anda: 000 Selamat datang Programmer
Mengapa Switch Lebih Digemai dari If-Else yang Luas
Meskipun rantai if‑else dapat mencapai logika yang sama, mereka menjadi tidak teratur seiring bertambahnya opsi. Pernyataan switch menawarkan sintaks yang lebih jelas, keterbacaan yang lebih baik, dan dapat dioptimalkan oleh kompiler menjadi tabel lompat untuk ekspresi konstan.
Aturan Penggunaan Switch
Ekspresi pengontrol harus berupa tipe integral atau enum.
Label case harus berupa nilai konstan yang unik.
Setiap label case diakhiri dengan titik dua.
Gunakan break untuk mencegah fall-through yang tidak disengaja.
Hanya satu label default yang diizinkan.
Switch bersarang diizinkan dan sering berguna.
Poin Utama
Switch adalah alat pengambilan keputusan yang kuat untuk nilai diskrit.
Selalu sertakan break (kecuali fall-through sengaja).
Tetapkan label case unik dan konstan.
Blok default opsional tetapi disarankan untuk penanganan kesalahan.
Switch bersarang menyediakan logika pengambilan keputusan berlapis.