Beranda > Pemrograman > Pemilihan / Percabangan (Selection)

Pemilihan / Percabangan (Selection)

Percabangan (Selection) atau pemilihan merupakan blok kontrol yang digunakan untuk memilih statement atau aksi-aksi yang akan dilakukan, dimana pemilihan tersebut didasarkan atas nilai dari kondisi-kondisi tertentu. Suatu aksi akan dikerjakan atau dieksekusi oleh program apabila kondisi yang didefinisikan untuk aksi tersebut bernilai benar (true). Sebaliknya, bila kondisi tidak terpenuhi atau salah (false) maka program akan melakukan aksi lain (jika ada) atau langsung keluar dari blok pemilihan. Dalam bahasa Pascal, blok pemilihan dapat didefinisikan dengan dua cara, yaitu dengan menggunakan statement if atau case.

Statement if akan diikuti oleh ekspresi (sebagai kondisi yang akan diperiksa) dan selalu berpasangan dengan kata kunci then. Apabila statement yang akan dilakukan hanya satu maka tidak perlu menuliskan blok begin…..end. Namun apabila statement lebih dari satu maka blok begin…..end harus dituliskan.

1. Pernyataan if

Adakalanya sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Kondisi adalah persyaratan yang dapat bernilai benar atau salah. Dalam pemilihan dikenal beberapa struktur pemilihan, yaitu:

# If – then

Struktur pemilihan if-then hanya memberikan satu pilihan aksi bila kondisi (persyaratan) dipenuhi (bernilai benar), dan tidak memberikan pilihan aksi lain bila kondisi bernilai salah. Flowchartnya adalah :

Pada bentuk if, pernyataan hanya akan dijalankan kalau kondisi bernilai benar. Yang terpenting dari bagan alur diatas adalah kondisinya. Kondisilah yang menentukan apakah sebuah pernyataan program akan dieksekusi atau tidak. Contoh :

uses wincrt;

var suhu: integer;

begin
write ('masukan nilai suhunya : ');
read (suhu);
if suhu > 37 then
writeln ('panas');
write ('selesai')
end.

Hasilnya seperti ini.

# If-then-else
Struktur pemilihan ini memberikan dua buah aksi yang akan dikerjakan tergantung pada nilai kondisinya.

Struktur umumnya:
If kondisi then
aksi 1
else
aksi 2

Else artinya ”kalau tidak”. Bila kondisi benar, aksi 1 yang akan dikerjakan, tetapi kalau tidak, aksi 2 yang akan dikerjakan.
Contoh:

uses wincrt;

var suhu: integer;

begin
write ('masukan nilai suhunya : ');
read (suhu);
if suhu > 37 then
writeln ('panas')
else
writeln ('tidak panas');
write ('selesai')
end.

Hasilnya seperti ini.

Contoh diatas adalah untuk menentukan nilai suhu apakah panas atau tidak. Berbeda dengan if-then, pada contoh kedua ini ada pilihan lagi jika suhunya kurang dari 37.

Contoh lain :

– Program untuk mengetahui apakah nilai yang diinput merupakan bilangan genap atau ganjil.

uses wincrt;

var a:integer;

begin
 write ('masukan sebuah bilangan : ');
 readln (a);
 if (a mod 2 = 0) then
 writeln (a, ' bilangan genap')
 else
 writeln (a, ' bilangan ganjil')
end.

Hasilnya seperti ini.

# If-then-else if
Apabila pilihan aksi yang dilakukan lebih dari dua buah, maka struktur pilihannya menjadi lebih rumit, biasanya untuk pemilihan seperti ini disebut pemilihan bersarang (nested).
Contoh:

– Menentukan bilangan terbesar dari tiga buah bilangan: x, y dan z

uses wincrt;
var x, y, z : real;

begin
write ('Masukkan bilangan pertama : ');
readln (x);
write ('Masukkan bilangan kedua : ');
readln (y);
write ('Masukkan bilangan ketiga : ');
readln (z);

if x > y then
if x > z then
write ('Bilangan terbesar : ',x:5:2)
else
write ('Bilanga terbesar : ',z:5:2)
else
if y > z then
write ('Bilangan terbesar :',y:5:2)
else
write ('Bilangan terbesar : ',z:5:2);
end.

Hasilnya seperti ini.

Program diatas dapat dikerjakan pula dengan algoritma yang lebih sederhana, yaitu menggunakan if-then :

program bilanganterbesar;

uses wincrt;

var a,b,c,bt:integer;

begin
 writeln ('MENGURUTKAN 3 BUAH BILANNGAN');
 write ('Masukan bilangan 1 : ');
 readln (a);
 write ('Masukan bilangan 2 : ');
 readln (b);
 write ('Masukan bilangan 3 : ');
 readln (c);
 bt:=a;

 if b>bt then
 bt:=b;
 if c>bt then
 bt:=c;

 writeln ('Bilangan terbesar = ',bt)
end.

Hasilnya seperti ini.

Contoh lain :

– Program untuk mencari diskon harga buku

uses wincrt;

var jb, hb : real;

begin
 write ('masukan jumlah buku : ');
 readln (jb);
 if jb >= 50 then
 begin
 hb:=jb*0.8*2500;
 writeln ('Total Harga : ',hb:10:2);
 end

 else
 if jb >= 35 then
 begin
 hb:=jb*0.85*2500;
 writeln ('Total Harga : ',hb:10:2);
 end

 else
 if jb >= 20 then
 begin
 hb:=jb*0.9*2500;
 writeln ('Total Harga : ',hb:10:2);
 end

 else
 begin
 hb:=jb*2500;
 writeln ('Total Harga : ',hb:10:2);
 end
end.

Hasilnya seperti ini.

2. Pernyataan Case

Pernyataan Case digunakan untuk menyederhanakan konstruksi if…else…if yang terlalu banyak. Sebagai contoh, program berikut:

– Program untuk mengetahui nilai yang diinput

uses wincrt;
var x : integer;
begin
Write ('Masukkan sebuah nilai [0...3] : ');
readln (x);
If ( x = 0) then
Writeln('X bernilai 0')
Else
if (x = 1) then
Writeln('X bernilai 1')
Else
if (x = 2) then
Writeln('X bernilai 2')
Else
if (x = 3) then
Writeln('X bernilai 3')
Else
Writeln('X tidak bernilai 0, 1, 2, ataupun 3');
end.

Hasilnya seperti ini.

Program diatas dapat diganti menjadi lebih ringkas dan mudah dibaca dengan program berikut:

uses wincrt;
var x : integer;
begin
Write ('Masukkan sebuah nilai [0...3] : ');
readln (x);
Case (x) of
0 : Writeln('X bernilai 0');
1 : Writeln('x bernilai 1');
2 : Writeln('X bernilai 2');
3 : Writeln('X bernilai 3');
else
Writeln('X tidak bernilai 0, 1, 2, ataupun 3');
end;
end.

Hasilnya seperti ini.

Contoh program Case of yang lain seperti ini:

– Program untuk mengetahui nama hari

uses wincrt;

var a:integer;

begin
write ('masukan salah satu angka 0-6 : ');
readln (a);
case (a) of
0:writeln ('Minggu');
1:writeln ('Senin');
2:writeln ('Selasa');
3:writeln ('Rabu');
4:writeln ('Kamis');
5:writeln ('Jumat');
6:writeln ('Sabtu');
else
writeln ('Hari tidak valid')
end
end.

Hasilnya seperti ini.

Contoh program lain yang menggunakan percabangan/selection antara lain :

– Mencari nilai mutlak

program nilaimutlak;

uses wincrt;

var a:real;

begin
 writeln ('MENCARI NILAI MUTLAK');
 write ('masukan nilai x : ');
 read (a);
 if a>=0 then
 write ('nilai mutlak = ',a:8:2)
 else
 write ('nilai mutlak = ',-a:8:2)
end.

Hasilnya seperti ini.

– Mencari akar-akar persamaan kuadrat :

program akar2persamaankuadrat;

uses wincrt;

var a,b,c,d,x,x1,x2:real;

begin
 writeln ('MENGHITUNG AKAR-AKAR PERSAMAAN KUADRAT aX2+bX+c');
 write ('masukan nilai a : ');
 read (a);
 write ('masukan nilai b : ');
 read (b);
 write ('masukan nilai c : ');
 read (c);
 d:=sqr (b)-4*a*c;
 if d>0 then
 begin
 x1:=(-b+sqrt (sqr (b) - 4*a*c))/(2*a);
 writeln ('akar 1 = ',x1:4:2);
 x2:=(-b-sqrt (sqr (b) - 4*a*c))/(2*a);
 writeln ('akar 2 = ',x2:4:2)
 end
 else
 if d=0 then
 begin
 x:=-b/(2*a);
 write ('akar-akarny sama x1=x2= ',x:4:2)
 end
 else
 begin
 write ('akar-akarnya kompleks')
 end

end.

Hasilnya seperti ini.

  1. Rychan
    1 Januari 2010 pukul 10:49 AM

    mo ngucapin selamat tahun baru mas….semoga ditahun baru ini kita semua mendapat kesuksesan….amiin…salam smile dari Cilacap 🙂

  2. 1 Januari 2010 pukul 9:10 PM

    @Rychan :
    Amiin….
    Selamat tahun baru juga mas….

  3. Rychan
    11 Januari 2010 pukul 4:34 PM

    Maaf melenceng dari isi, mohon keblog saya dan memberikan dukungan. Allahu akbar!!

  1. No trackbacks yet.

Tinggalkan komentar