Contoh Program Switch Case pada C – Tutorial Lengkap dengan Implementasi

By | August 16, 2025

Switch case adalah salah satu struktur kontrol yang paling penting dalam bahasa pemrograman C. Dalam artikel ini, kita akan membahas contoh program switch case pada C dengan berbagai implementasi praktis yang mudah dipahami. Switch case memberikan alternatif yang lebih efisien dibandingkan multiple if-else statement untuk menangani banyak kondisi.

Apa itu Switch Case dalam C?

Switch case adalah struktur kontrol yang memungkinkan program untuk memilih salah satu dari beberapa blok kode untuk dieksekusi berdasarkan nilai dari suatu variabel atau ekspresi. Struktur ini sangat berguna ketika kita memiliki banyak kondisi yang perlu diperiksa.

  • Efisien: Lebih cepat dari multiple if-else untuk banyak kondisi
  • Readable: Kode lebih mudah dibaca dan dipahami
  • Terstruktur: Organisasi kode yang lebih baik dan teratur
  • Maintainable: Mudah untuk maintenance dan debugging
💡 Pro Tip: Sebelum mempelajari switch case, pastikan Anda sudah memahami dasar-dasar bahasa C seperti variabel, operator, dan conditional statement. Untuk panduan lengkap, ikuti tutorial bahasa c untuk pemula yang membahas fundamental programming dari nol.

Syntax Dasar Switch Case

📝 Struktur Syntax Switch Case:

switch (expression) {
    case constant1:
        // blok kode untuk constant1
        break;
    case constant2:
        // blok kode untuk constant2
        break;
    case constant3:
        // blok kode untuk constant3
        break;
    default:
        // blok kode default (opsional)
        break;
}

📋 Penjelasan Komponen:

  1. Expression: Nilai yang akan dievaluasi (harus integer atau char)
  2. Case: Label yang berisi konstanta untuk dibandingkan
  3. Break: Statement untuk keluar dari switch block
  4. Default: Blok yang dieksekusi jika tidak ada case yang cocok

Contoh Program 1: Menu Kalkulator Sederhana

Program kalkulator sederhana yang menggunakan switch case untuk memilih operasi matematika yang akan dilakukan.

🎯 Tujuan Pembelajaran:

  • Memahami implementasi dasar switch case
  • Menggunakan break statement dengan benar
  • Menangani input user dengan scanf
  • Implementasi default case untuk error handling
#include <stdio.h>

int main() {
    float num1, num2, result;
    char operator;
    
    printf("=== KALKULATOR SEDERHANA ===\n");
    printf("Masukkan angka pertama: ");
    scanf("%f", &num1);
    
    printf("Pilih operasi (+, -, *, /): ");
    scanf(" %c", &operator);  // Spasi sebelum %c untuk menghindari whitespace
    
    printf("Masukkan angka kedua: ");
    scanf("%f", &num2);
    
    printf("\n=== HASIL PERHITUNGAN ===\n");
    
    switch(operator) {
        case '+':
            result = num1 + num2;
            printf("%.2f + %.2f = %.2f\n", num1, num2, result);
            break;
            
        case '-':
            result = num1 - num2;
            printf("%.2f - %.2f = %.2f\n", num1, num2, result);
            break;
            
        case '*':
            result = num1 * num2;
            printf("%.2f * %.2f = %.2f\n", num1, num2, result);
            break;
            
        case '/':
            if(num2 != 0) {
                result = num1 / num2;
                printf("%.2f / %.2f = %.2f\n", num1, num2, result);
            } else {
                printf("Error: Pembagian dengan nol tidak diperbolehkan!\n");
            }
            break;
            
        default:
            printf("Error: Operator '%c' tidak valid!\n", operator);
            printf("Gunakan operator: +, -, *, /\n");
            break;
    }
    
    return 0;
}
⚠️ Penting! Selalu gunakan spasi sebelum %c dalam scanf untuk menghindari masalah dengan whitespace characters. Juga pastikan untuk menangani kasus pembagian dengan nol untuk mencegah runtime error.

Contoh Program 2: Sistem Grading Nilai

Program untuk mengkonversi nilai numerik menjadi grade huruf menggunakan switch case dengan range nilai.

🎯 Tujuan Pembelajaran:

  • Menggunakan switch case dengan range nilai
  • Implementasi pembagian nilai (division) untuk grouping
  • Menangani multiple case dengan fall-through
  • Validasi input dan error handling
#include <stdio.h>

int main() {
    int nilai;
    char grade;
    
    printf("=== SISTEM PENILAIAN GRADE ===\n");
    printf("Masukkan nilai (0-100): ");
    scanf("%d", &nilai);
    
    // Validasi input
    if(nilai < 0 || nilai > 100) {
        printf("Error: Nilai harus antara 0-100!\n");
        return 1;
    }
    
    // Menggunakan pembagian untuk grouping nilai
    switch(nilai / 10) {
        case 10:  // Nilai 100
        case 9:   // Nilai 90-99
            grade = 'A';
            printf("Nilai: %d\n", nilai);
            printf("Grade: %c (Excellent - Sangat Baik)\n", grade);
            printf("Keterangan: Prestasi luar biasa!\n");
            break;
            
        case 8:   // Nilai 80-89
            grade = 'B';
            printf("Nilai: %d\n", nilai);
            printf("Grade: %c (Good - Baik)\n", grade);
            printf("Keterangan: Prestasi baik, pertahankan!\n");
            break;
            
        case 7:   // Nilai 70-79
            grade = 'C';
            printf("Nilai: %d\n", nilai);
            printf("Grade: %c (Average - Cukup)\n", grade);
            printf("Keterangan: Cukup baik, tingkatkan lagi!\n");
            break;
            
        case 6:   // Nilai 60-69
            grade = 'D';
            printf("Nilai: %d\n", nilai);
            printf("Grade: %c (Below Average - Kurang)\n", grade);
            printf("Keterangan: Perlu perbaikan, belajar lebih giat!\n");
            break;
            
        default:  // Nilai 0-59
            grade = 'F';
            printf("Nilai: %d\n", nilai);
            printf("Grade: %c (Fail - Gagal)\n", grade);
            printf("Keterangan: Tidak lulus, harus mengulang!\n");
            break;
    }
    
    return 0;
}
✅ Teknik Advanced: Program ini menggunakan teknik pembagian integer (nilai/10) untuk mengelompokkan range nilai, dan fall-through case untuk nilai 100 yang masuk ke case 10 dan 9.

Contoh Program 3: Menu Sistem ATM

Program simulasi ATM dengan berbagai fitur menggunakan switch case dalam loop untuk menu yang berulang.

🎯 Tujuan Pembelajaran:

  • Implementasi switch case dalam loop
  • Menangani state management (saldo, transaksi)
  • Nested switch case untuk sub-menu
  • Input validation dan security features
#include <stdio.h>

int main() {
    int pilihan, pin, inputPin = 1234;
    float saldo = 1000000.0;
    float jumlah;
    int attempts = 0;
    
    printf("=== SELAMAT DATANG DI ATM BANK ABC ===\n");
    
    // Verifikasi PIN
    do {
        printf("Masukkan PIN Anda: ");
        scanf("%d", &pin);
        attempts++;
        
        if(pin != inputPin) {
            printf("PIN salah! Sisa percobaan: %d\n", 3 - attempts);
            if(attempts >= 3) {
                printf("Kartu diblokir!\n");
                return 1;
            }
        }
    } while(pin != inputPin && attempts < 3);
    
    printf("PIN benar! Akses diterima.\n\n");
    
    // Menu utama ATM
    do {
        printf("\n=== MENU UTAMA ATM ===\n");
        printf("1. Cek Saldo\n");
        printf("2. Tarik Tunai\n");
        printf("3. Setor Tunai\n");
        printf("4. Transfer\n");
        printf("5. Keluar\n");
        printf("Pilih menu (1-5): ");
        scanf("%d", &pilihan);
        
        switch(pilihan) {
            case 1:  // Cek Saldo
                printf("\n=== CEK SALDO ===\n");
                printf("Saldo Anda: Rp %.2f\n", saldo);
                break;
                
            case 2:  // Tarik Tunai
                printf("\n=== TARIK TUNAI ===\n");
                printf("Saldo tersedia: Rp %.2f\n", saldo);
                printf("Masukkan jumlah penarikan: Rp ");
                scanf("%f", &jumlah);
                
                if(jumlah <= 0) {
                    printf("Jumlah tidak valid!\n");
                } else if(jumlah > saldo) {
                    printf("Saldo tidak mencukupi!\n");
                } else {
                    saldo -= jumlah;
                    printf("Penarikan berhasil!\n");
                    printf("Saldo tersisa: Rp %.2f\n", saldo);
                }
                break;
                
            case 3:  // Setor Tunai
                printf("\n=== SETOR TUNAI ===\n");
                printf("Masukkan jumlah setoran: Rp ");
                scanf("%f", &jumlah);
                
                if(jumlah <= 0) {
                    printf("Jumlah tidak valid!\n");
                } else {
                    saldo += jumlah;
                    printf("Setoran berhasil!\n");
                    printf("Saldo sekarang: Rp %.2f\n", saldo);
                }
                break;
                
            case 4:  // Transfer
                printf("\n=== TRANSFER ===\n");
                printf("Masukkan jumlah transfer: Rp ");
                scanf("%f", &jumlah);
                
                if(jumlah <= 0) {
                    printf("Jumlah tidak valid!\n");
                } else if(jumlah > saldo) {
                    printf("Saldo tidak mencukupi!\n");
                } else {
                    saldo -= jumlah;
                    printf("Transfer berhasil!\n");
                    printf("Saldo tersisa: Rp %.2f\n", saldo);
                }
                break;
                
            case 5:  // Keluar
                printf("Terima kasih!\n");
                return 0;
                
            default:
                printf("Pilihan tidak valid!\n");
                break;
        }
        
    } while(pilihan != 5);
    
    return 0;
}
🚀 Advanced Features: Program ini mendemonstrasikan penggunaan switch case dalam aplikasi real-world dengan fitur security, validation, dan state management. Untuk mempelajari lebih lanjut tentang struktur data dan algoritma dalam C, ikuti kelas struktur data bahasa c yang membahas implementasi advanced data structures.

Contoh Program 4: Game Batu Gunting Kertas

Game interaktif batu gunting kertas melawan komputer dengan sistem scoring menggunakan switch case untuk menentukan pemenang.

🎯 Tujuan Pembelajaran:

  • Menggunakan switch case untuk game logic
  • Implementasi random number generation
  • Nested switch case untuk complex conditions
  • Score tracking dan game statistics
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int pilihanPemain, pilihanKomputer;
    int skorPemain = 0, skorKomputer = 0;
    char lanjut;
    
    srand(time(NULL));
    
    printf("=== GAME BATU GUNTING KERTAS ===\n");
    
    do {
        printf("\nPilih senjata:\n");
        printf("1. Batu\n");
        printf("2. Gunting\n");
        printf("3. Kertas\n");
        printf("Pilihan (1-3): ");
        scanf("%d", &pilihanPemain);
        
        if(pilihanPemain < 1 || pilihanPemain > 3) {
            printf("Pilihan tidak valid!\n");
            continue;
        }
        
        pilihanKomputer = (rand() % 3) + 1;
        
        printf("\nAnda: ");
        switch(pilihanPemain) {
            case 1: printf("Batu"); break;
            case 2: printf("Gunting"); break;
            case 3: printf("Kertas"); break;
        }
        
        printf("\nKomputer: ");
        switch(pilihanKomputer) {
            case 1: printf("Batu"); break;
            case 2: printf("Gunting"); break;
            case 3: printf("Kertas"); break;
        }
        
        // Tentukan pemenang
        if(pilihanPemain == pilihanKomputer) {
            printf("\nSERI!\n");
        } else {
            switch(pilihanPemain) {
                case 1:  // Batu
                    if(pilihanKomputer == 2) {
                        printf("\nANDA MENANG! Batu menghancurkan Gunting\n");
                        skorPemain++;
                    } else {
                        printf("\nANDA KALAH! Kertas membungkus Batu\n");
                        skorKomputer++;
                    }
                    break;
                    
                case 2:  // Gunting
                    if(pilihanKomputer == 3) {
                        printf("\nANDA MENANG! Gunting memotong Kertas\n");
                        skorPemain++;
                    } else {
                        printf("\nANDA KALAH! Batu menghancurkan Gunting\n");
                        skorKomputer++;
                    }
                    break;
                    
                case 3:  // Kertas
                    if(pilihanKomputer == 1) {
                        printf("\nANDA MENANG! Kertas membungkus Batu\n");
                        skorPemain++;
                    } else {
                        printf("\nANDA KALAH! Gunting memotong Kertas\n");
                        skorKomputer++;
                    }
                    break;
            }
        }
        
        printf("Skor - Anda: %d | Komputer: %d\n", skorPemain, skorKomputer);
        printf("Main lagi? (y/n): ");
        scanf(" %c", &lanjut);
        
    } while(lanjut == 'y' || lanjut == 'Y');
    
    printf("\n=== HASIL AKHIR ===\n");
    if(skorPemain > skorKomputer) {
        printf("ANDA JUARA!\n");
    } else if(skorKomputer > skorPemain) {
        printf("KOMPUTER JUARA!\n");
    } else {
        printf("HASIL SERI!\n");
    }
    
    return 0;
}
🎮 Game Programming: Program ini mendemonstrasikan penggunaan nested switch case untuk complex game logic dan random number generation. Untuk mempelajari lebih lanjut tentang algoritma game dan AI programming, ikuti kelas algoritma game programming yang membahas berbagai teknik game development.

Best Practices Switch Case

1. Selalu Gunakan Break Statement

❌ Kesalahan Umum:

switch(nilai) {
    case 1:
        printf("Satu");
        // Missing break - akan fall through!
    case 2:
        printf("Dua");
        break;
}
✅ Cara yang Benar:

switch(nilai) {
    case 1:
        printf("Satu");
        break;  // Selalu gunakan break
    case 2:
        printf("Dua");
        break;
}

2. Gunakan Default Case

  • Selalu sediakan default case untuk menangani nilai yang tidak terduga
  • Gunakan default untuk error handling dan validation
  • Letakkan default case di akhir untuk konvensi

3. Validasi Input

  • Selalu validasi input sebelum masuk ke switch
  • Gunakan range checking untuk nilai numerik
  • Handle edge cases dan invalid input
⚠️ Limitations Switch Case:

  • Tidak bisa menggunakan variabel dalam case label
  • Tidak mendukung range conditions (kecuali dengan trik)
  • Terbatas pada integer dan character constants
  • Tidak bisa menggunakan floating point numbers

🙋‍♂️ Frequently Asked Questions (FAQ)

Q: Kapan sebaiknya menggunakan switch case dibanding if-else?
A: Gunakan switch case ketika Anda memiliki lebih dari 3 kondisi yang membandingkan nilai yang sama dengan konstanta berbeda. Switch case lebih efisien dan readable untuk multiple equality checks, sedangkan if-else lebih fleksibel untuk complex conditions.
Q: Apa yang terjadi jika lupa menulis break statement?
A: Jika tidak ada break statement, program akan melanjutkan eksekusi ke case berikutnya (fall-through behavior). Ini bisa menyebabkan bug yang sulit ditemukan. Selalu gunakan break kecuali Anda memang ingin fall-through behavior.
Q: Bisakah menggunakan string dalam switch case di C?
A: Tidak, C tidak mendukung string dalam switch case. Anda hanya bisa menggunakan integer constants, character constants, atau enum values. Untuk string comparison, gunakan if-else dengan strcmp().
Q: Apakah default case wajib ada dalam switch statement?
A: Default case tidak wajib secara syntax, tetapi sangat direkomendasikan untuk best practice. Default case membantu menangani nilai yang tidak terduga dan membuat program lebih robust.
Q: Bagaimana cara menangani range nilai dalam switch case?
A: C tidak mendukung range secara langsung. Anda bisa menggunakan trik seperti pembagian integer (nilai/10) untuk grouping, atau gunakan if-else untuk range conditions yang kompleks.
Q: Apakah switch case lebih cepat dari if-else?
A: Ya, untuk banyak kondisi (>3-4), switch case biasanya lebih cepat karena compiler dapat mengoptimalkannya menjadi jump table. Namun untuk sedikit kondisi, perbedaannya tidak signifikan.
Q: Bisakah menggunakan variabel dalam case label?
A: Tidak, case label harus berupa compile-time constants. Anda tidak bisa menggunakan variabel atau hasil dari function call. Gunakan const int atau #define untuk konstanta.
Q: Bagaimana cara debugging program dengan switch case?
A: Gunakan printf statements di setiap case untuk trace execution, pastikan semua case memiliki break, dan test dengan berbagai input values. Debugger juga sangat membantu untuk step-through execution.

Kesimpulan

Switch case adalah struktur kontrol yang sangat powerful dalam bahasa C untuk menangani multiple conditions dengan efisien. Kelima contoh program switch case pada C yang telah kita bahas mendemonstrasikan berbagai implementasi praktis dari basic calculator hingga complex game logic.

Rangkuman pembelajaran:

  • Kalkulator: Implementasi dasar switch case dengan operator selection
  • Grading System: Penggunaan range grouping dan fall-through behavior
  • ATM System: Complex menu system dengan nested switch dan state management
  • Rock Paper Scissors: Game logic dengan nested switch dan random generation

Key takeaways:

  • Switch case lebih efisien untuk multiple equality checks
  • Selalu gunakan break statement untuk mencegah fall-through
  • Default case penting untuk error handling
  • Validasi input sebelum masuk ke switch statement
  • Gunakan if-else untuk complex conditions dan non-integer comparisons

Dengan memahami dan mempraktikkan contoh-contoh program ini, Anda akan dapat mengimplementasikan switch case dengan efektif dalam berbagai skenario programming. Ingatlah untuk selalu mempertimbangkan readability, maintainability, dan performance dalam memilih struktur kontrol yang tepat.

Selamat coding dan semoga sukses dalam perjalanan programming C Anda! 🚀

Leave a Reply

Your email address will not be published. Required fields are marked *