Pencabangan atau Branching

Disamping looping atau pengulangan yang sudah kita pelajari bersama, dikenal juga pencabangan atau branching. Dengan pencabangan, Pascal memperbolehkan adanya pengambilan keputusan untuk mengerjakan dan tidak mengerjakan satu atau beberapa baris instruksi program. Ilustrasinya adalah sebagai berikut;
Jika hari hujan, maka saya akan memakai payung
Jika tidak, maka saya tidak memakai payung
Dua kondisi berbeda yaitu saya memakai atau tidak memakai payung akan ditentukan dari hari hujan atau tidak. Dalam hal ini, saya tidak mungkin melaksanakan keduanya, yaitu memakai dan sekaligus tidak memakai payung. Saya hanya bisa mengerjakan salah satu diantara dua pernyataan tersebut, berdasarkan hari hujan atau tidak.
Kira-kira dalam algoritma dan pemrograman juga mempunyai pengertian seperti ilustrasi di atas. Jadi dengan pencabangan, kita tidak dapat mengerjakan semua perintah, hanya perintah yang memenuhi syarat atau kondisi yang dikerjakan. Sebaliknya, perintah-perintah yang lain akan dikerjakan jika syarat atau kondisi tidak terpenuhi.
Bentuk Pencabangan yang paling sering dipakai adalah IF … THEN … ELSE …
Adapun bentuk umumnya sebagai berikut;
IF <syarat> THEN
Begin
……………………
……………………
……………………
End
Else
Begin
……………………
……………………
……………………
End;
Perhatikan, bahwa ELSE tidak harus digunakan, jadi bisa digunakan, bisa tidak. Jika kita menggunakan lebih dari satu instruksi, maka harus diapit dengan BEGIN … END jika ELSE masih digunakan, maka END yang ada di tengah-tengah tidak boleh diakhiri dengan tanda titik koma, karena masih merupakan kelanjutan dari perintah di atasnya.
Berikut ini adalah contoh program dengan pencabangan;

Uses crt;
Var
a,b:integer;
Begin
Clrscr;
a:=1;
b:=2;
If a=1 then writeln(a) else writeln(b);
End.

Mari kita perhatikan contoh program di atas;
Dua buah variabel masing-masing bertipe integer sudah berhasil dipesan ke Pascal dan masing-masing diberi nilai awal 1 dan 2. Kemudian perintah IF dituliskan di dalam satu baris perintah yaitu mencetak variabel a dan b. Coba perhatikan pada penulisan syarat atau kondisi, tanda yang digunakan adalah tanda sama dengan, yang tidak didahului dengan tanda titik dua. Mengapa? Karena tanda ini adalah sebuah operator pembanding. Jadi dapat dibedakan dengan tanda untuk pengisian nilai variabel dan tanda untuk operasi perhitungan atau matematika. Jadi perintah pencetakan variabel a dan b tidak akan pernah dicetak semua. Pascal hanya akan mencetak salah satu saja tergantung dari syarat atau kondisinya. Pada program diatas, output layar adalah mencetak variabel a = 1, bukan variabel b yang dicetak. Kalau disederhanakan, perintah IF tersebut;
Jika nilai variabel a = 1, maka cetak variabel a
Jika tidak, maka cetak variabel b
Jelaslah bahwa yang akan dicetak adalah variabel a, karena nilai variabel a = 1. Jika nilai variabel a bukan 1, maka yang dicetak adalah variabel b.
Menggabungkan Looping dengan Branching
Seperti yang sudah dibahas, di dalam membuat program, kita diberi kebebasan seluas-luasnya untuk menuliskan instruksi-instruksi program, dengan syarat masih memenuhi aturan-aturan yang ditetapkan dalam bahasa pemrograman yang bersangkutan. Hal ini membuat seorang programmer mampu membuat jutaan variasi program dengan maksud dan tujuan yang berbeda-beda, misalnya membuat program perhitungan suatu rumus matematika, membuat program database atau membuat program komputer grafik seperti game.
Berangkat dari pengertian di atas, artinya apa yang sudah kita pelajari sampai saat ini dapat digabungkan menjadi satu kesatuan program.

Coba anda perhatikan program berikut ini;
Uses crt;
Var
a,b:integer;
Begin
Clrscr;
a:=1;
b:=5;
While a<=5 do
Begin
writeln(b);
if b<=20 then b:=b+5 else b:=b+1;
a:=a+1;
End;
End.

Mari kita pelajari bersama;
Isi nilai awal variabel a dengan 1, variabel b dengan 5
* Looping I
1<=5? Benar, looping dijalankan
Cetak nilai b=5
5<=20? Benar, b = 5 + 5 = 10
a = 1 + 1 = 2
* Looping II
2<=5? Benar, looping dijalankan
Cetak nilai b=10
10<=20? Benar, b = 10 + 5 = 15
a = 2 + 1 = 3
* Looping III
3<=5? Benar, looping dijalankan
Cetak nilai b=15
15<=20? Benar, b = 15 + 5 = 20
a = 3 + 1 = 4
* Looping IV
4<=5? Benar, looping dijalankan
Cetak nilai b=20
20<=20? Benar, b = 20 + 5 = 25
a = 4 + 1 = 5
* Looping V
5<=5? Benar, looping dijalankan
Cetak nilai b=25
25<=20? Salah, b = 25 + 1 = 26
a = 5 + 1 = 6
* Looping VI
6<=5? Salah, looping berhenti
Program diatas akan mencetak isi variabel b, sedangkan variabel a hanya digunakan sebagai kontrol dari loopingnya saja. Outputnya adalah mencetak bilangan 5, 10, 15, 20, 25.