Percabangan adalah istilah umum dalam pemrograman.
Kenapa disebut percabangan? Karena memang istilah ini merujuk ke sebuah blok perintah yang memiliki dua kemungkinan atau lebih yang akan terjadi, sehingga blok perintah itu seperti bercabang-cabang. Cabang mana yang akan terjadi, itu diatur oleh sebuah kondisi yang telah ditentukan programmer. Menentukan kondisi akan berkaitan dengan
operasi logika dan nilai
True atau
False.
Sebelum lanjut membahas, pastikan kamu sudah mengenal apa itu variabel dan tipe data dasar, jika belum lihat artikel
Pascal - Apa itu variabel dan tipe data? Pastikan kamu juga sudah mempunyai dan tahu cara menggunakan FreePascal atau sejenisnya, jika belum lihat artikel
FreePascal - Alat Belajar Pascal. Jangan-jangan kamu belum tahu juga apa itu input dan output, lihat di artikel
Kenalan dengan Pascal - Input dan Output.
Percabangan dapat diumpamakan seperti ini:
Pada suatu hari, Budi diminta ibunya untuk pergi ke warung membeli telur dan beberapa barang lain. Ibunya berkata, "Budi, jika di warung ada 5 telur, beli juga 2 botol susu. Jika di warung ada 10 telur atau lebih, beli juga 1 kg gula. Jika di warung hanya ada telur berjumlah kurang dari 5, beli juga sendal jepit."
Nah, perintah ibu Budi menggambarkan sebuah percabangan. Disitu saya tekankan pada kata "Jika", kemudian yang saya beri warna oranye dan biru. Warna oranye dinamakan kondisi dan warna biru adalah akibat yang terjadi. Penekanan ada pada kata "jika", dan bahasa inggris jika adalah if, nah if ini adalah perintah pada Pascal untuk melakukan percabangan. Pola programnya akan seperti ini:
if (kondisi) then
begin
....... <kumpulan perintah> ........
end else
begin
....... <kumpulan perintah> ........
end;
Kode end else disana bisa juga dihilangkan jika tidak perlu. Sekarang, kita langsung coba membuat programnya. Buat program baru di FreePascal, beri nama testusia.pas.
uses wincrt;
var
usia : integer;
BEGIN
writeln('Hai aku Pascal!');
write('Berapa usiamu (isi dengan angka)? '); readln(usia);
if (usia < 20) then
begin
writeln(usia,' tahun?');
writeln('Itu masih muda.');
end else
begin
writeln(usia,' tahun?');
writeln('Itu sudah dewasa.');
end;
readln;
END.
Pada percabangan di program tadi, kondisinya adalah nilai usia. Jika usia kurang dari 20, Pascal akan berkata, "itu masih muda". Jika usia lebih atau sama dengan 20, Pascal akan berkata, "itu sudah dewasa". Pasti kamu dapat memahaminya.
Tapi, sebenarnya. Program tadi dapat disederhanakan, sehingga tidak perlu bercabang dua. Mau tahu? Lihat programnya.
uses wincrt;
var
usia : integer;
katakan : string;
BEGIN
writeln('Hai aku Pascal!');
write('Berapa usiamu (isi dengan angka)? '); readln(usia);
katakan := 'Itu sudah dewasa.';
if (usia < 20) then
katakan := 'Itu masih muda.';
writeln(usia,' tahun?');
writeln(katakan);
readln;
END.
Dalam percabangan disitu, ada satu kalimat yang berbeda, bukan? Yaitu pada saat Pascal mengatakan muda atau dewasa. Kalimat itu masukan sebagai nilai dari variabel string. Sebelum operasi if, isi variabel katakan dengan nilai yang kita sebut default. Nah, jika kondisi pada operasi if menyatakan benar, makan nilai dari variabel katakan akan berubah. Output nantinya akan menampilkan isi dari variabel katakan.
Mungkin kamu bingung, kenapa pada percabangan diatas, tidak diawali begin setelah then? Karena perintahnya hanya satu, tidak berupa kumpulan perintah (lebih dari 1). Perintah di dalam blok perintah if hanya mengganti nilai variabel katakan. Tapi, perlu diingat, jika bercabang dua dan menggunakan else, tetap harus menggunakan pembuka begin, karena else dihitung sebagai satu blok dengan if, sehingga berarti ada lebih dari 1 perintah di dalam blok.
Got it?
Yuk, kita buat yang agak rumit. Kita akan buat program dari kasus Budi dan ibunya tadi. Percabangannya akan bercabang 4. Buat program baru dengan nama budijajan.pas.
uses wincrt;
var
telur : integer;
BEGIN
writeln('Budi ke warung beli telur, tapi.....'); writeln;
writeln('- Kalau ada 3 telur atau kurang, beli juga gula.');
writeln('- Kalau ada 5 telur atau kurang, beli juga obat sakit kepala.');
writeln('- Kalau ada 10 telur atau kurang, beli juga sendal jepit.');
writeln('- Kalau ada lebih dari 10 telur, jangan beli apa-apa lagi.'); writeln;
writeln('Saat Budi di warung.......');
write('Ada berapa telur disana (isi dengan angka)? '); readln(telur);
if (telur <= 3) then
begin
writeln('Budi membeli ',telur,' telur dan gula.');
end else if (telur <= 5) then
begin
writeln('Budi membeli ',telur,' telur dan obat sakit kepala.');
end else if (telur <= 10) then
begin
writeln('Budi membeli ',telur,' telur dan sendal jepit.');
end else
writeln('Budi hanya membeli ',telur,' telur saja.');
readln;
END.
Wow....! Seru ya! Gimana? Berhasil tidak? Teliti lagi ya kalau gagal. Jangan putus asa! Error dalam program itu adalah hal yang sangat biasa dalam ngoding (memprogram).
Coba kamu lihat cabang terakhir saat Budi hanya membeli telur saja. Disana tidak diawali dengan begin, kenapa? Itu karena tidak ada else lagi setelahnya, jadi pada blok cabang terakhir hanya ada 1 perintah. Oh iya kenapa di cabang terakhir tidak diakhiri end; sebagai penutup operasi if? Itu karena operasi if tidak perlu ditutup dengan end, kecuali dibuka dengan begin. Ingat ya, end hanya berpasangan dengan begin, bukan dengan if dan lain-lain. Ternyata end itu pasangan yang setia ya..... Ha Ha Ha >_<
Satu hal lagi, apakah kamu bingung kenapa saat telur lebih dari 10, tidak perlu menggunakan if dan kondisi lagi? Jawabannya, karena tidak ada kondisi lain lagi jika semua cabang salah, kecuali telur lebih dari 10. Benar bukan?
Mesin Membaca Program dari Atas
Kode dalam program itu selalu dibaca dari atas oleh mesin. Hal ini juga mencerminkan bagaimana mesin membaca percabangan if. Kita ambil contoh program yang barusan kita buat:
Jika cabang 1 salah, maka cabang 2 akan dicek kondisinya, dan jika benar, maka cabang selanjutnya dan seterusnya tidak akan diperiksa. Cabang terakhir saat budi hanya membeli telur saja tidak menggunakan kondisi lagi, berarti jika semua cabang salah, maka cabang terakhir adalah pilihan terakhir yang pasti akan dijalankan. Tapi, jika pada cabang terakhir diberikan kondisi, maka jika kondisinya tidak memenuhi, tidak akan ada perintah yang dijalankan. Got it?
Ekperimen
Ada suatu eksperimen untuk membuktikan bahwa mesin membaca program dari atas. Coba cabang ketiga pada program Budi, dipindahkan menjadi cabang pertama. Coba jalankan program dan isi nilai telur dengan nilai kurang dari 3 atau kurang dari 5. Pasti cabang 2 dan 3 (setelah dirubah) tidak akan berjalan, hanya cabang 1.
Sudah cukup ya penjelasannya. Selain membahas percabangan if, nanti kita akan membahas percabangan dengan case. Percabangan yang lebih efektif dari pada if, jika cabangnya banyak. Semoga artikel ini dapat bermanfaat bagi sobat.
Program Akhir
Biasanya, saya selalu memberikan program akhir disetiap akhir tutorial, untuk kali ini saya harap kamu yang bereksperimen sendiri. Tapi, saya tetap punya tantangan untuk sobat.
Coba hitung ada berapa kata "Jika" di artikel ini!
Jawab di komentar!
Hehehe......
like your artikel and very helpful
BalasHapusBlog