pa 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.
Isitilah ini sebenarnya untuk menggambarkan alur program yang bercabang.
Pada flow chart, logika โjikaโฆmakaโ digambarkan dalam bentuk cabang.
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 tersebut dapat kita baca seperti ini:
โJika total belanja lebih besar dari Rp 100.000, Maka tampilkan pesan Selamat, Anda dapat hadiahโ
Kalau dibawah Rp 100.000 bagaimana?
Ya pesannya tidak akan ditampilkan.
Mari kita coba dalam program C++.
Buatlah file bernama if.cpp
, kemudian isi dengan kode berikut.
#include <iostream>
using namespace std;
int main(){
cout << "=== Program Pembayaran ===" << endl;
unsigned int total_belanja;
cout << "Masukan total belanja: ";
cin >> total_belanja;
// menggunakan percabangan if
if(total_belanja > 100000){
cout << "Selamat! anda dapat hadiah" << endl;
}
cout << "Terimakasih sudah berbelanja di toko kami" << endl;
return 0;
}
Kompilasi kode tersebut dengan perintah:
g++ if.cpp -o if
Lalu eksekusi dengan perintah:
./if
Hasilnya:
Perhatikan pada bagian ini:
// menggunakan percabangan if
if(total_belanja > 100000){
cout << "Selamat! anda dapat hadiah" << endl;
}
Inilah yang disebut blok program.
Blok program berisi sekumpulan ekpresi dan statement untuk dikerjakan oleh komputer.
Blok program pada 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.
if (total_belanja > 100000)
cout << "Selamat! anda dapat hadiah" << endl;
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:
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โฆ
Untuk lebih jelasnya, mari kita coba dalam program.
Buatlah file baru bernama if_else.cpp
, kemudian isi dengan kode berikut:
#include <iostream>
using namespace std;
int main(){
string password;
cout << "========= Login =========" << endl;
cout << "Masukan password: ";
cin >> password;
// percabangan if/else
if (password == "kopi"){
cout << "Selamat datang bos!" << endl;
} else {
cout << "Password salah, coba lagi!" << endl;
}
cout << "Terimakasih sudah menggunakan aplikasi ini!" << endl;
return 0;
}
Hasilnya:
3. Percabangan if/else/if
Percabangan if/else/if merupakan percabangan yang memiliki lebih dari dua blok pilihan.
Coba perhatikan flowchart berikut:
Perhatikan blok yang saya beri warnaโฆ
Ini adalah blok untuk percabangan if/else/if. Kita bisa menambahkan berapapun blok yang kita inginkan.
Contoh Program:
#include <iostream>
using namespace std;
int main(){
int nilai;
string grade;
cout << "=== Program Grade Nilai ===" << endl;
cout << "Inputkan nilai akhir: ";
cin >> nilai;
// menggunakan percabangan if/esle/if
if (nilai >= 90) {
grade = "A";
} else if (nilai >= 80) {
grade = "B+";
} else if (nilai >= 70) {
grade = "B";
} else if (nilai >= 60) {
grade = "C+";
} else if (nilai >= 50) {
grade = "C";
} else if (nilai >= 40) {
grade = "D";
} else if (nilai >= 30) {
grade = "E";
} else {
grade = "F";
}
cout << "Grade anda: " << grade << endl;
return 0;
}
Hasilnya:
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 mermbuat blok kode (case
) sebanyak yang diinginkan di dalam blok switch.
Pada <value>
, kita bisa isi dengan nilai yang nanti akan dibandingkan dengan varabel
.
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 <iostream>
using namespace std;
int main(){
char grade;
cout << "Inputkan grade: ";
cin >> grade;
switch (toupper(grade)){
case 'A':
cout << "Luar biasa!" << endl;
break;
case 'B':
case 'C':
cout << "Bagus!" << endl;
break;
case 'D':
cout << "Anda lulus" << endl;
break;
case 'E':
case 'F':
cout << "Anda remidi" << endl;
break;
default:
cout << "Grade Salah!" << endl;
}
return 0;
}
Hasilnya:
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'
.
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 Opertor Ternary
Percabangan menggunakan opreator 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 setlah 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.cpp
, kemudian isi dengan kode berikut:
#include <iostream>
using namespace std;
int main(){
int jawaban;
cout << "Berapakah hasil 3+4?" << endl;
cout << "jawab> ";
cin >> jawaban;
string hasil = (jawaban == 7) ? "Benar" : "Salah";
cout << "Jawaban anda: " << hasil << endl;
return 0;
}
Hasilnya:
6. Percabangan Bersarang (Nested)
Kita juga dapat membuat blok percabangan di dalam percabangan. Ini disebut percabangan bersarng atau nested if.
Contoh: ๐ nested.cpp
#include <iostream>
using namespace std;
int main(){
string username, password;
cout << "=== Welcome ===" << endl;
cout << "Username: ";
cin >> username;
cout << "Password: ";
cin >> password;
if (username == "petanikode"){
if (password == "kopi"){
cout << "Selamat datang bos!" << endl;
} else {
cout << "Password salah, coba lagi!" << endl;
}
} else {
cout << "Anda tidak terdaftar" << endl;
}
return 0;
}
Hasilnya: