Dalam kehidupan sehari-hari tentu anda pernah menemukan sebuah pilihan, sebagai contoh sederhana ketika anda akan memasuki sebuah toilet umum.

Hal tersebut termasuk sebuah percabangan dengan algoritma “jika anda adalah laki-laki (True) maka masuk toilet pria, jika tidak (False) maka masuk toilet wanita”.

Jadi setiap program percabangan hanya mengenal kondisi True (benar) atau False (salah), tidak ada konsidi bisa jadi atau kondisi lainnya yang tidak ada kepastian.

Berikut pengertian dari konsep percabangan:

Percabangan adalah cara yang digunakan dalam program untuk mengambil keputusan ke salah satu kemungkinan True atau False dari beberapa kondisi.

Jadi program percabangan akan menjalankan instruksi sesuai dengan kondisi tertentu. Kondisi adalah persyaratan yang dapat bernilai benar atau salah.

Instruksi hanya dilaksanakan apabila kondisi bernilai benar.

Macam-macam Percabangan

Ada dua fungsi percabangan dalam pascal yaitu: if then else dan case of

1. Percabangan If Then Else

Bentuk struktur If…Then… adalah sebagai berikut :


If Kondisi Then Statemen;

Statemen ini digunakan untuk mengendalikan jalannya suatu program berdasarkan suatu kondisi atau syarat yang diberikan. Bila kondisi yang diseleksi terpenuhi…

…maka statemen yang mengikuti Then akan diproses, sebaliknya bila kondisi tidak terpenuhi, maka yang akan diproses statemen berikutnya.

Jika kondisi bernilai benar (TRUE) maka statemen akan dikerjakan. Jika kondisi bernilai salah maka (FALSE) maka statemen tidak akan dikerjakan.

#1 Contoh Program If Then Else Pascal


Program Lulus;
Uses crt;
Var nilai : Real;
Begin
Write ('Jumlah Nilai :');
Readln (nilai);

If nilai > 60 Then Writeln('Lulus');

Readln;
End.

Pada contoh diatas, kita akan mencetak kata “Lulus” jika nilai yang kita masukan lebih dari 60. Jika tidak maka program tidak akan mencetak apapun.

Bentuk statemen IF...THEN...ELSE.... merupakan pengembangan dari struktur IF.....THEN....... Bentuk statemen tersebut adalah sebagai berikut :


If kondisi Then
   Begin
   ……
   statemen1;
   ……
   End
Else
   Begin
   …….
   statemen2;
   …….
   End;

Perintah ini berguna untuk memilih statemen mana yang akan dikerjakan oleh komputer berdasarkan kondisi/syarat yang diberikan.

Jika kondisi bernilai benar (TRUE) maka statemen1 akan dikerjakan. Jika kondisi bernilai salah maka (FALSE) maka statemen2 yang akan dikerjakan.

PENTING: Untuk selalu menambahkan tanda titik koma (;) di akhir fungsi if.

Dari contoh diatas, mari kita sedikit memodifikasi:


Program Lulus;
Uses crt;
Var nilai : Real;
Begin
   Write ('Jumlah Nilai :');
   Readln (nilai);

   If nilai > 60 Then
      Begin
      Writeln('Lulus');
      End
   Else
      Begin
      Writeln('Tidak Lulus');
      End;

   Readln;
End.

Pada contoh kasus diatas kita akan menggukan kondisi dimana apabila nilai lebih dari 60 maka Lulus, jika tidak (kurang dari 60) maka tidak lulus.

NESTED IF (If Then Else Bersarang)


IF (kondisi 1) THEN
  begin
    (kode program 1)
    IF (kondisi 1.1) THEN
      begin
        (kode program 1.1)
      end;
  end
ELSE
  begin
    (kode program 2)
  end;

IF bersarang atau nested IF adalah penggunaan struktur IF di dalam IF. Kondisi seperti ini sering digunakan untuk kode program yang sudah cukup kompleks.

Sebagai studi kasus disini kita ingin membuat program yang menyeleksi lamaran pekerjaan dengan ketentuan laki-laki dan umur dibawah 30 tahun.


Program Loker;
Uses crt;
Var
  umur: Real;
  jenis: char;

Begin
   Write ('Jenis Kelamin (l/p) :'); Readln (jenis);
   Write ('Umur (1-100) :'); Readln (umur);

   If jenis = 'l' Then
      Begin
      If umur < 30 then
         Begin
         Writeln('Lolos');
         End;
      End
   Else
      Begin
      Writeln('Tidak Lolos');
      End;

   Readln;
End.

Demikianlah penjelasan lengkap mengenai percabangan if then else pada pascal.

#2 Contoh Program Case Of Pascal

Case Var Of atau biasa disingkat Case Of adalah salah satu fungsi pada pascal yang mirip dengan If, namun untuk penggunaan yang lebih kompleks.

Ketika anda dihadapkan dengan banyak pilihan (lebih dari dua kondisi) maka program percabangan case of sangat cocok untuk anda gunakan.

Sebagai contoh kecil ketika anda ingin menggunakan ATM.

Anda akan dihadapkan dengan banyak pilihan sekaligus, misal: transfer, tarik tunai, cek saldo, dan lain-lain. Maka dibutuhkan program case of untuk mengatasinya.

Berikut struktur penulisan percabangan case of else dalam pascal:


case (kondisi) of
   caselabel1 : Statemen;
   caselabel2 : Statemen;
   caselabelN : Statemen;

   else
     StatemenDefault;
end;

Jumlah case label dapat disesuaikan dengan kebutuhan anda. Kemudian jika semua kondisi tidak terpenuhi maka StatemenDefault-lah yang akan dijalankan.

Catatan: Jenis variabel (kondisi) yang dipakai Case Of adalah Integer atau Char.

Sebagai studi kasus, berikut saya sertakan program kelas X-MIPA-3 SMAN 1 Sidoarjo dengan fitur absensi karya M. Subhi Ahsan :


program absenkelas; 

uses
  crt;


var
  nama: array [0..35] of string;
  absen, no: integer;
  walikelas: string;


begin
  clrscr;
  walikelas := 'Dra. Sri Wahyuningtyas';
  nama[0] := 'Alfira Divana Syafitri';
  nama[1] := 'Amalika Ari Anindya';
  nama[2] := 'Ayu Oktaviasari';
  nama[3] := 'Barru Muhammad Albarado';
  nama[4] := 'Bening Nadya Sanre';
  nama[5] := 'Delphia Felita Lisanto';
  nama[6] := 'Dhia Kamila Halisa Putri';
  nama[7] := 'Elizabeth Oktavia Putri Santoso';
  nama[8] := 'Elizabeth Sondang Indah Maristela Sitanggang';
  nama[9] := 'Fajar Haikal';
  nama[10] := 'Farika Ayu Amalia';
  nama[11] := 'Fauzan Dwi Asyiraf';
  nama[12] := 'Hanadia Putri Sabatina';
  nama[13] := 'Iga Sholihati';
  nama[14] := 'Intan Aprillia Putri Erinda';
  nama[15] := 'Irgi Rangga Prayoga';
  nama[16] := 'Karina Ayu Puspita';
  nama[17] := 'Luwes Kusriyadi';
  nama[18] := 'M. Subhi Ahsan';
  nama[19] := 'Marshela Karen Gracia Tandipanjung';
  nama[20] := 'Mochamad Bayu Angga Syahputra';
  nama[21] := 'Mochammad Hammam Andare Yanuar';
  nama[22] := 'Muchammad Ikhlasul Qolbi';
  nama[23] := 'Muhammad Aliga Qudaifi';
  nama[24] := 'Muhammad Hafiz Fahamsyah';
  nama[25] := 'Muhammad Imron Catur Anoraga';
  nama[26] := 'Muhammad Nauval Nur Cholidian';
  nama[27] := 'Nalendra Ravi Kumara';
  nama[28] := 'Namira Amelia Septiarini';
  nama[29] := 'Nidya Azwa Kusuma Lazuardi';
  nama[30] := 'Putu Manik Sesa Arianthi';
  nama[31] := 'Raihan Nafi Prasetyo';
  nama[32] := 'Rezza Rizky Fachrezi Althof';
  nama[33] := 'Riftania Safitri';
  nama[34] := 'Seisha Salsabila Rosandi';
  nama[35] := 'Theresia Zoraya';
  clrscr;
  repeat 
    textcolor(cyan);
    writeln('====== Kelas X-MIPA-3 ======');
    writeln;
    textcolor(lightmagenta);
    writeln('Wali Kelas : ', walikelas);
    writeln;
    textcolor(yellow);
    writeln('1. Cari nama dengan nomor absen');
    writeln('2. Tampilan semua nama beserta nomor absen');
    writeln('3. Keluar');
    writeln;
    write('Silahkan masukkan pilihan anda : ');
    readln(no);
    case no of 
      1: 
      begin
        clrscr;
        textcolor(green);
        write('Masukkan nomor absen : ');
        readln(absen);
        writeln;
        writeln('Nomor absen ke-', absen, ' : ', nama[absen - 1]);
      end;
      2: 
      begin
        clrscr;
        textcolor(yellow);
        writeln('1. ', nama[0]);
        writeln('2. ', nama[1]);
        writeln('3. ', nama[2]);
        writeln('4. ', nama[3]);
        writeln('5. ', nama[4]);
        writeln('6. ', nama[5]);
        writeln('7. ', nama[6]);
        writeln('8. ', nama[7]);
        writeln('9. ', nama[8]);
        writeln('10. ', nama[9]);
        writeln('11. ', nama[10]);
        writeln('12. ', nama[11]);
        writeln('13. ', nama[12]);
        writeln('14. ', nama[13]);
        writeln('15. ', nama[14]);
        writeln('16. ', nama[15]);
        writeln('17. ', nama[16]);
        writeln('18. ', nama[17]);
        writeln('19. ', nama[18]);
        writeln('20. ', nama[19]);
        writeln('21. ', nama[20]);
        writeln('22. ', nama[21]);
        writeln('23. ', nama[22]);
        writeln('24. ', nama[23]);
        writeln('25. ', nama[24]);
        writeln('26. ', nama[25]);
        writeln('27. ', nama[26]);
        writeln('28. ', nama[27]);
        writeln('29. ', nama[28]);
        writeln('30. ', nama[29]);
        writeln('31. ', nama[30]);
        writeln('32. ', nama[31]);
        writeln('33. ', nama[32]);
        writeln('34. ', nama[33]);
        writeln('35. ', nama[34]);
        writeln('36. ', nama[35]);
      end;
      3: 
      begin
        writeln;
        textcolor(yellow);
        writeln('Terima kasih, created by Ahsan Code');
      end;
    end;
    writeln;
    textcolor(cyan);
    writeln('Tekan enter untuk melanjutkan');
    readln;
    clrscr;
  until (no = 3);
  clrscr 
end.

Mungkin masih ada beberapa kode yang masih membingungkan bagi anda, namun yang kita fokuskan adalah bagian case of pada program pascal diatas.

Menarik Kesimpulan

Mungkin anda muncul pertanyaan kapan kita menggunakan percabangan if then else dan kapan kita menggunakan case of. Keduanya memiliki kelebihan masing-masing.

Tapi intinya kita menggunakan if then else ketika membutuhkan kondisi dengan logika (boolean). Sebagai contoh kondisi dimana nilai > 10.

Sedangkan fungsi case of hanya digunakan untuk kondisi dengan tipe char maupun integer, artinya tidak bisa digunakan untuk logika.

Demikianlah penjelasan mengenai algoritma percabangan.

Jangan lewatkan seri belajar pascal kami.