author Ahmad Muhardian

Belajar Pemrograman C #07: Mengenal 6 Macam Bentuk Blok Percabangan


Belajar Pemrograman C #6: Mengenal Operator pada C

Buat kamu yang belum pernah belajar pemrograman sebelumnya…

…Mungkin akan bertanya:

Apa itu percabangan dan kenapa dinamakan percabangan?

Buat yang belum pernah kuliah atau belajar tentang algoritma dan flowchart, mungkin ini istilah yang baru pertama kamu dengar.

Istilah ini sebenarnya untuk menggambarkan alur program yang bercabang.

Pada flow chart, logika “jika…maka” digambarkan dalam bentuk cabang.

Logika program jika/maka

Karena itu, ini disebut percabangan.

Selain percabangan, struktur ini juga disebut: control flow, decision, struktur kondisi, Struktur if, dsb.

Percabangan akan mampu membuat program berpikir dan menentukan tindakan sesuai dengan logika/kondisi yang kita berikan.

Pada pemrograman C, terdapat 6 bentuk percabangan yang harus kita kitahui.

Apa saja itu?

Mari kita bahas…

1. Percabangan if

Percabangan if merupakan percabangan yang hanya memiliki satu blok pilihan saat kondisi bernilai benar.

Coba perhatikan flowchart berikut ini:

Flowchart percabangan if

Flowchart tersebut dapat kita baca seperti ini:

“Jika total belanja lebih besar dari Rp 100.000, Maka tampilkan pesan Selamat, Anda dapat hadiah

Kalau di bawah Rp 100.000 bagaimana?

Ya pesannya tidak akan ditampilkan.

Mari kita coba dalam program C.

Buatlah file bernama 📄 percabangan_if.c, kemudian isi dengan kode berikut.

#include <stdio.h>

void main(){
    printf("== Program Pembayaran ==\n");
    int total_belanja = 0;

    printf("Inputkan total belanja: ");
    scanf("%i", &total_belanja);

    // menggunakan blok percabangan if
    if( total_belanja > 100000 ){
        printf("Selamat, Anda mendapatkan hadiah!\n");
    }

    printf("Terima kasih sudah berbelanja di toko kami\n\n");
}

Hasilnya:

Saat kita masukan nilai di bawah 100000.

Program Percabangan if

Saat kita masukan nilai di atas 100000.

Program Percabangan if

Sekarang mari kita perhatikan kode programnya…

Perhatikan pada bagian ini:

// menggunakan percabangan if
if( total_belanja > 100000 ){
    printf("Selamat, Anda mendapatkan hadiah!\n");
}

Inilah yang disebut blok program.

Blok program berisi sekumpulan ekspresi dan statement untuk dikerjakan oleh komputer.

Blok program pada bahasa C, selalu diawali dengan tanda buka kurung kurawal { dan akan diakhiri dengan tutup kurung kurawal }.

Apabila di dalam blok hanya terdapat satu baris ekspresi atau statement, maka boleh tidak ditulis tanda kurungnya seperti ini:

if (total_belanja > 100000)
    printf("Selamat, Anda mendapatkan hadiah!\n");

2. Percabangan if/else

Percabangan if/else merupakan percabangan yang memiliki dua blok pilihan.

Blok pilihan pertama untuk kondisi benar, dan pilihan kedua untuk kondisi salah (else).

Coba perhatikan flowchart ini:

Flowchart percabangan if/else

Ini adalah flowchart untuk mengecek password.

Apabila password benar, pesan yang ada pada blok hijau akan ditampilkan: “Selamat datang bos!”

Tapi kalau salah…

…maka pesan yang ada di blok merah yang akan ditampilkan: “Password salah, coba lagi!”

Kemudian, pesan yang berada di blok abu-abu akan tetap ditampilkan, karena dia bukan bagian dari blok percabangan if/else.

Perhatikan arah panahnya, setiap blok if/else mengarah ke sana…

Flowchart percabangan if/else

Untuk lebih jelasnya, mari kita coba dalam program.

Buatlah file baru bernama 📄 percabangan_if_else.c, kemudian isi dengan kode berikut:

#include <stdio.h>

void main(){
    // membuat array karakter untuk menyimpan password
    char password[30];

    printf("==== Program Login ====\n");
    printf("Masukan password: ");
    scanf("%s", &password);

    // percabangan if/else
    if( strcmp(password, "kopi") == 0 ){
        printf("Selamat datang bos!\n");
    } else {
        printf("Password salah, coba lagi!\n");
    }

    printf("Terima kasih sudah menggunakan aplikasi ini!\n");
}

Hasilnya:

Saat password yang diinputkan benar.

Contoh Program if/else pada C

Saat password yang diinputkan salah.

Contoh Program if/else pada C

Sekarang coba perhatikan kode programnya.

Pertama kita membuat sebuah array dari karakter dengan panjang 30 karakter untuk menyimpan password.

// membuat array karakter untuk menyimpan password
char password[30];

Setelah itu kita mengisi nilai password dengan mengambil input dari scanf().

scanf("%s", &password);

Berikutnya pada percabangan if/else, kita menggunakan fungsi strcmp() untuk membandingkan dua teks (string).

if( strcmp(password, "kopi") == 0 ){
    printf("Selamat datang bos!\n");
} else {
    printf("Password salah, coba lagi!\n");
}

Fungsi strcmp() akan menghasilkan nilai false atau nol (0) jika kedua teks yang dibandingkan sama.

Oleh sebab itu, kita menggunakan perbandingan seperti ini…

strcmp(password, "kopi") == 0

…pada blok if/else.

3. Percabangan if/else/if

Percabangan if/else/if merupakan percabangan yang memiliki lebih dari dua blok pilihan.

Coba perhatikan flowchart berikut:

Flowchart percabangan if/else/if

Perhatikan blok yang saya beri warna…

Ini adalah blok untuk percabangan if/else/if. Kita bisa menambahkan berapapun blok yang kita inginkan.

Contoh Program: 📄 program_if_else_if.c

#include <stdio.h>

void main(){
    int nilai;
    char grade;

    printf("=== Program Grade Nilai ===\n");
    printf("Inputkan nilai: ");
    scanf("%i", &nilai);

    // menggunakan percabangan if/else/if
    if (nilai >= 90) {
        grade = 'A';
    } else if (nilai >= 80) {
        grade = 'B'; // seharusnya B+
    } else if (nilai >= 70) {
        grade = 'B';
    } else if (nilai >= 60) {
        grade = 'C'; // seharusnya C+
    } else if (nilai >= 50) {
        grade = 'C';
    } else if (nilai >= 40) {
        grade = 'D';
    } else if (nilai >= 30) {
        grade = 'E';
    } else {
        grade = 'F';
    }

    printf("Nilai: %i\n", nilai);
    printf("Grade anda: %c\n", grade);
}

Hasilnya:

Program percabangan if/else/if

Perhatikan di bagian else if untuk >= 80 dan >= 60, seharusnya di sana kita mengisi variabel grade dengan B+ dan C+.

Tapi kita mengisinya dengan B dan C saja.

Ini karena variabel tersebut bertipe char dan tipe data ini hanya mampu menyimpan satu karakter saja.

Jika ingin menggunakan B+ dan C+, kita bisa pakai tipe data string.

4. Percabangan Switch/Case

Percabangan switch/case adalah bentuk lain dari percabangan if/else/if.

Strukturnya seperti ini:

switch(variabel){
    case <value>:
        // blok kode
        break;
    case <value>:
        // blok kode
        break;
    default:
        // blok kode
}

Kita dapat membuat blok kode (case) sebanyak yang diinginkan di dalam blok switch.

Pada <value>, kita bisa isi dengan nilai yang nanti akan dibandingkan dengan variabel.

Setiap case harus diakhiri dengan break. Khusus untuk default, tidak perlu diakhiri dengan break karena dia terletak di bagian akhir.

Pemberian break bertujuan agar program berhenti mengecek case berikutnya saat sebuah case terpenuhi.

Contoh:

#include <stdio.h>

void main(){

    char grade;

    printf("Inputkan grade: ");
    scanf("%c", &grade);

    switch (toupper(grade)){
        case 'A':
            printf("Luar biasa!\n");
            break;
        case 'B':
        case 'C':
            printf("Bagus!\n");
            break;
        case 'D':
            printf("Anda lulus\n");
            break;
        case 'E':
        case 'F':
            printf("Anda remidi\n");
            break;
        default:
            printf("Grade Salah!\n");
    }
}

Hasilnya:

Program percabangan Switch/Case

Perhatikan program di atas…

Kita menggunakan fungsi toupper() untuk mengubah huruf kecil menjadi huruf kapital atau huruf besar.

switch (toupper(grade)){
    ...
}

Mengapa menggunakan toupper()?

Ini karena agar kita dapat menginputkan huruf kecil dan huruf besar untuk mengecek grade.

Berikutnya coba perhatikan case 'B' dan case 'E'.

Blok case yang kosong

Kedua case ini tidak memiliki isi.

Ini artinya…dia akan mengikut pada case berikutnya.

Sebagai contoh, apabila kita inputkan B maka case C yang akan terpilih.

Begitu juga saat kita inputkan E, maka case F yang akan terpilih.

5. Percabangan dengan Operator Ternary

Percabangan menggunakan operator ternary merupakan bentuk lain dari percabangan if/else.

Bisa dibilang:

Bentuk singkatnya dari if/else.

Operator ternary juga dikenal dengan sebutan operator kondisi (conditional operator).

Bentuk strukturnya seperti ini:

(kondisi) ? true : false

Bagian kondisi dapat kita isi dengan ekspresi yang menghasilkan nilai true dan false.

Lalu setelah tanda tanya ? adalah bagian pilihan.

Jika kondisi bernilai benar, maka true yang akan dipilih. Tapi kalau salah, maka false yang akan dipilih.

Untuk lebih jelasnya, mari kita coba…

Buatlah file baru bernama 📄 ternary.c, kemudian isi dengan kode berikut:

#include <stdio.h>

void main(){

    int jawaban;

    printf("Berapakah hasil 3+4?\n");
    printf("jawab> ");
    scanf("%d", &jawaban);

    printf("Jawaban anda: %s\n", (jawaban == 7) ? "Benar" : "Salah");

}

Hasilnya:

Percabangan dengan operator ternary di C

Coba perhatikan pada baris ini:

printf("Jawaban anda: %s\n", (jawaban == 7) ? "Benar" : "Salah");

Di sana kita menggunakan operator ternary untuk membuat kondisi if/else.

Jika tidak menggunakan operator ternary, akan menjadi seperti ini:

if( jawaban == 7 ){
    printf("Jawaban anda: Benar\n");
} else {
    printf("Jawaban anda: Salah\n");
}

6. Percabangan Bersarang (Nested)

Semua bentuk blok percabangan di atas dapat kita buat di dalam percabangan yang lainnya.

Ini disebut dengan percabangan bersarang atau nested if.

Contoh: 📄 nested.c

#include <stdio.h>

void main(){
    char username[30], password[30];

    printf("=== Welcome to Awesome Program ===\n");
    printf("Username: ");
    scanf("%s", &username);
    printf("Password: ");
    scanf("%s", &password);

    if(strcmp(username, "petanikode") == 0){
        if(strcmp(password, "kopi") == 0){
            printf("Selamat datang bos!\n");
        } else {
            printf("Password salah, coba lagi!\n");
        }
    } else {
        printf("Anda belum terdaftar\n");
    }

}

Hasilnya:

Percabangan bersarang pada C++

Apa Selanjutnya?

Blok percabangan merupakan blok kode yang harus kita pahami.

Karena kita akan banyak menggunakannya dalam membuat program.

Keenam bentuk percabangan di atas, merupakan bentuk-bentuk dasar.

Karena itu, sebaiknya perbanyak latihan dengan contoh kasus yang lain agar semakin paham.

Berikutnya silakan pelajari tentang: