Anda di halaman 1dari 21

MODUL

PENYELEKSIAN KONDISI

TUJUAN
Setelah melakukan pratikum , diharapkan dapat:
1. Memahami algoritma seleksi (selection) yakni mengerjakan suatu
instruksi atau proses jika persyaratannya terpenuhi dengan dua pilihan
atau lebih.
2. Menggunakan statement If…Then…Else..., dan If …Then bertingkat
untuk percabangan bersyarat dalam program.
3. Menggunakan statement case-of-Else untuk melakukan percabangan.

PENDAHULUAN
Hampir setiap program yang komplek mengandung suatu penyeleksian
kondisi. Dengan menyeleksi suatu kondisi, program dapat menentukan tindakan apa
yang harus dikerjakan, tergantung dari hasil kondisi yang diseleksi tersebut. Untuk
menyeleksi suatu kondisi, di dalam bahasa Pascal dapat dipergunakan statement If
dan statemen Case.

1. STATEMEN IF
a. Struktur IF-Then
Bentuk Umum :

If kondisi then pernyataan

Kondisi = pernyataan Boolean (true/false)


Jika kondisi bernilai benar (true) maka pernyataan akan diproses,
sebaliknya jika kondisi bernilai salah (false) maka akan dijalankan
pernyataan baris berikutnya.
Pernyataan = bentuk tunggal dari perintah pascal atau sekumpulan perintah
pascal yang diapit oleh Begin dan End.

PEMROGRAMAN PASCAL 27
Ya
Kondi
si
Pernyataan
Tidak

Contoh 1:

- Algoritma
i. Mulai
ii. Set ket ‘tidak lulus’
iii. Masukkan nilai_ujian
iv. Jika nilai_ujian > 60 maka tulis ket ‘Lulus’
v. Tampilkan hasil
vi. Selesai
-Buat flowchartnya !
-Simpan contoh 1 pada E:\PK\Sesi_Kelas\CTH2_1

PEMROGRAMAN PASCAL 28
b. STRUKTUR IF-THEN-ELSE
Bentuk Umum :

If kondisi then pernyataan1

Else pernyataan2;

Pada bentuk ini :


 Pernyataan1 hanya akan dijalankan kalau kondisi bernilai benar (true)
 Pernyataan2 hanya akan dijalankan kalau kondisi bernilai salah (false)
Catatan :
 Dalam menuliskan pernyataan If-Else tidak diperkenankan pemakaian tanda
titik koma di belakang pernyataan sebelum Else.
 Pernyataan1 maupun pernyataan2 bisa berupa sebuah pernyataan tunggal
ataupun pernyataan majemuk(banyak), jika pernyataan tersebut majemuk
maka apitlah pernyataan tersebut dengan Begin – End;

Ya
Kondi
si

Tidak Pernyataan1

Pernyataan2

PEMROGRAMAN PASCAL 29
Contoh 2 :

Flowchart :
Mulai

Nilai_ujia
n

Ya
Kondi
si

Tidak Ket ‘Lulus’

Ket ‘Tidak lulus’

Ket

Selesai

PEMROGRAMAN PASCAL 30
Dari contoh 2 buat algoritmanya !
Simpan contoh 2 pada E:\PK\Sesi_Kelas\CTH2_2

c. STRUKTUR IF TERSARANG
Struktur If tersarang (nested If) merupakan bentuk dari suatu statemen If
berada di dalam lingkungan statemen If lainnya.
Bentuk Umum :
If kondisi1 then
If kondisi2 then pernyataan1
Else pernyaaan2;

Atau
If kondisi1 then
Begin
If kondisi2 then pernyataan1
Else pernyaaan2;

End.
Contoh 3 :

PEMROGRAMAN PASCAL 31
Flowchart :

Mulai

UTS,UAS,TG
S
NA 0.35*UTS+0.4*UAS+0.25*TGS

Ya
NA≥8 Indeks A
5
Tidak
Ya
NA≥6 Indeks B
6
Tidak
Ya
NA≥5 Indeks C
6
Tidak
Ya
NA≥4 Indeks D
1
PEMROGRAMAN PASCAL 32
Tidak

Indeks E

Tampilkan NA

Selesai

Buatlah algoritma!
Simpan contoh 3 pada E:\PK\Sesi_Kelas\CTH2_3
CONTOH-CONTOH STRUKTUR IF
1. Buatlah program membaca sebuah bilangan bulat yang diinput dari keyboard,
lalu mencetak pesan “BILANGAN GENAP” jika bilangan tersebut adalah genap.
Program Genap;
{Mencetak pesan "bilangan genap"}
Var x : integer;
Begin
Write('Ketikkan sebuah bilangan : ');readln(x);
If x mod 2 = 0 then write('BILANGAN GENAP');
readln;
End.

2. Buatlah program untuk menentukan nilai mutlak dari sebuah bilangan riil (x),
dimana bilangan (x) diinput dari keyboard.
Program Nilai_Mutlak;
Var x : real;
Begin
Write('Masukkan nilai x : '); readln(x);
If x<0 then x:= -x;
Writeln('Nilai Mutlaknya adalah ',x);
readln;
end.

PEMROGRAMAN PASCAL 33
3. Buatlah program membaca dua buah bilangan bulat yang diinput dari keyboard,
lalu tentukan bilangan yang terbesar dari kedua bilangan tersebut.
Program Mencari_Bilangan_Terbesar;
Var A,B : integer;
Begin
Write('Ketikkan bilangan pertama : ');readln(A);
Write('Ketikkan bilangan kedua : ');readln(B);
If A>B then write ('Bilangan terbesar : ',A) TIDAK ADA (;)
Else write('Bilangan terbesar : ',B);
Readln;
End.
Catatan : Sebelum statemen Else tidak menggunakan tanda (;)

4. Buatlah program yang membaca angka tahun masehi dari keyboard, lalu
tentukan apakah tahun tersebut adalah tahun kabisat. Suatu tahun disebut tahun
kabisat jika memenuhi salah satu syarat berikut :
i.) Habis dibagi 4 tetapi tidak habis dibagi 100
ii.) Habis dibagi 400
Program Tahun_Kabisat;
{Menentukan apakah suatu tahun merupakan tahun kabisat atau
bukan}
Var tahun : integer;
Begin
Write('Masukkan tahun masehi : ');readln(tahun);
If ((tahun mod 4=0) and (tahun mod 100<>0)) or(tahun mod
400=0) then Write('Tahun Kabisat')
Else
Write('Bukan Tahun Kabisat');
Readln;
End.

5. Buatlah program membaca titik P(x,y) di bidang kartesian dimana titik tersebut
diinput dari keyboard, lalu tentukan di kuadran mana letak titik tersebut.
Ilustrasi kasus :
Kasus 1 : jika x>0 dan y>0, maka P(x,y) terletak di kuadran I
Kasus 2 : jika x<0 dan y>0, maka P(x,y) terletak di kuadran II
Kasus 3 : jika x<0 dan y<0, maka P(x,y) terletak di kuadran III
Kasus 4 : jika x>0 dan y<0, maka P(x,y) terletak di kuadran IV

PEMROGRAMAN PASCAL 34
Kasus 5 : selain kasus 1,2,3,dan 4, maka P(x,y) tidak terletak di kuadran
manapun.
Program Kuadran_Titik;
{Menentukan kuadran titik P(x,y) di bidang kartesian}
Var x,y : real;
Begin
Write('Masukkan titik x : ');readln(x);
Write('Masukkan titik y : ');readln(y);
If (x>0) and (y>0) then write('KUADRAN I')
Else If (x<0) and (y>0) then write('KUADRAN II')
Else If (x<0) and (y<0) then write('KUADRAN III')
Else If (x>0) and (y<0) then write('KUADRAN IV')
Else write('TIDAK TERLETAK DI KUADRAN MANAPUN');
readln;
End.

6 .Buatlah program yang membaca sudut (S) dalam satuan derajat dari keyboard,
lalu tentukan apakah sudut tersebut sudut lancip, sudut siku-siku, sudut tumpul,
atau sudut lurus
Ilustrasi kasus :
Kasus 1 : Jika S < 90 derajat maka sudut lancip
Kasus 2 : Jika S = 90 derajat maka sudut siku-siku
Kasus 3 : Jika 90<S<180 derajat maka sudut tumpul
Kasus 4 : Jika S = 180 derajat maka sudut lurus
Kasus 5 : Jika S>180 derajat maka masukkan nilai sudut yang baru. Gunakan
deklarasi label.

Program Jenis_Sudut;
Uses crt;
Label ulang;
Var S : integer;
Begin
Clrscr;
Ulang:
Write('Masukkan nilai sudut : '); readln(S);
If S<90 then Write('SUDUT LANCIP');
If S=90 then Write('SUDUT SIKU-SIKU');
If ((S>90) and (S<180)) then Write('SUDUT TUMPUL');
If S=180 then Write('SUDUT LURUS');
If S>180 then goto ulang;
Readln;
End.

PEMROGRAMAN PASCAL 35
7. Buatlah program mencari factor-faktor prime dari bilangan bulat N.
Algoritma :
i. Mulai
ii. Masukkan bilangan bulat (N)
iii. Set P 2 dan Q 1
iv. Jika N tidak habis dibagi P maka
Set P sebagai jumlah dan Q
Set Q 2 dan ulang langkah (iv)
v. Jika N habis dibagi P maka
Cetak nilai P sebagai factor prime
Set N sebagai hasil bagi bulat N dengan P
Jika N 1 maka selesai, jika tidak ulang langkah (iv)
vi. Tampilkan factor-faktor prime
vii. Selesai.

Program Faktor_Prima_Bilangan_Bulat;
Uses crt;
Label ulang;
Var N,P,Q : integer;
Begin
Clrscr;
Write('Masukkan nilai N : ');readln(N);
P:=2;
Q:=1;
Writeln('Faktor Prime dari ',N,' adalah : ');
Ulang:
If N mod P <> 0 then
Begin
P:=P+Q;
Q:=2;
Goto ulang;
End
Else
Begin
Write(P);
N:=N div P;
If N <> 1 then goto ulang;
End;
Readln;
End.

PEMROGRAMAN PASCAL 36
2. STRUKTUR CASE
a. STRUKTUR CASE-OF
Struktur Case-Of mempunyai suatu ungkapan logika yang disebut
dengan selector dan sejumlah pernyataan yang diawali dengan label
permasalahan (Case Label) yang mempunyai tipe yang sama dengan selector.
Perbedaan dengan struktur If adalah bila pernyataan If menyeleksi
suatu kondisi dan terpenuhi, setelah memproses pernyataan dalam lingkungan
yang terpenuhi tersebut, proses penyeleksian masih dilakukan terhadap
pernyataan If berikutnya yang lain. Sedangkan pada struktur Case-Of bila
salah satu kondisi terpenuhi (nilai Case Label sama dengan nilai selector) dan
pernyataan tersebut telah diproses, selanjutnya pernyataan-pernyataan yang
lainnya dalam lingkungan Case tidak akan diseleksi lagi.

Bentuk Umum :

Case ungkapan Of
Daftar case_label 1 : pernyataan 1;
Daftar case_label 2 : pernyataan 2;

Daftar case_label n : pernyataan n;
End;

Contoh 4 :(Bentuk struktur If pada contoh 3 dapat dikonstruksi dengan struktur Case)

PEMROGRAMAN PASCAL 37
Catatan : Perintah Round, digunakan untuk membulatkan data tipe real ke data tipe
longint.
Sintaks : Round (x);
Keterangan : Jika nilai pecahan < 0.5 maka dibulatkan ke bawah
Jika nilai pecahan > 0.5 maka dibulatkan ke atas.

b. STRUKTUR CASE-OF-ELSE
Struktur Case-Of-Else merupakan pengembangan dari struktur Case-
Of. Pada struktur Case Of bila tidak ada kondisi yang terpenuhi berarti tidak
ada pernyataan dalam lingkungan Case-Of yang diproses. Dengan struktur
Case-Of-Else, bila tidak ada kondisi yang terpenuhi, maka pernyataan yang
akan diproses di dalam lingkungan Case-Of adalah pernyataan yang ada di
Else.

PEMROGRAMAN PASCAL 38
Bentuk Umum :
Case ungkapan Of
Daftar case_label 1 : pernyataan 1;
Daftar case_label 2 : pernyataan 2;

Daftar case_label n : pernyataan n;
Else pernyataan m;
End;

Contoh 5:

CONTOH-CONTOH STRUKTUR CASE :


1. Buatlah program Kalkulator Sederhana, dimana operand-operand merupakan
bilangan bulat yang diinput dari keyboard dan operator merupakan karakter
{'+','-','*','/'}.

Program Kalkulator_Sederhana;

PEMROGRAMAN PASCAL 39
{Mensimulasikan kalkulator sederhana, yaitu menghitung hasil
operasi aritmatika}
Var op1,op2 : integer; {OPERAND}
oprt : char; {'+','-','*','/' adalah OPERATOR}
Hasil : real;
Begin
Write('Masukkan operand1 = ');readln(op1);
Write('Masukkan operand2 = ');readln(op2);
Write('Masukkan operator = ');readln(oprt);
Case oprt of
'+' : Hasil :=op1+op2;
'-' : Hasil :=op1-op2;
'*' : Hasil :=op1*op2;
'/' : If op2<>0 then Hasil :=op1/op2
Else write('ERROR');
End;
Writeln(op1,oprt,op2,' = ',Hasil:8:2);
readln;
end.

2. Buat program menampilkan menu pilihan untuk menghitung luas atau keliling
persegi panjang.
Program Menu_Pilihan_Menghitung_Persegi_Panjang;
Var NoMenu : integer;
p,l,luas,klng : real;
Begin
{CETAK MENU}
Writeln('Menu Persegi Panjang : ');
Writeln('1.Luas Persegi Panjang');
Writeln('2.Keliling Persegi Panjang');
Writeln('Masukkan pilihan anda (1 atau 2)');readln(NoMenu);
writeln;
Case NoMenu of
1: Begin
Write('Nilai panjang = ');readln(p);
Write('Nilai lebar = ');readln(l);
luas := p*l;
Write('Nilai Luas = ',luas:5:3);
End;
2: Begin
Write('Nilai panjang = ');readln(p);
Write('Nilai lebar = ');readln(l);
klng := 2*p*l;
Write('Nilai Keliling = ',klng:5:3);
End;
end;
readln;
end.

PEMROGRAMAN PASCAL 40
3. Buatlah program membaca sebuah bilangan bulat yang nilainya terletak antara 1
sampai 4, lalu mencetak tulisan angka tersebut. Misalkan bila dibaca 1, maka
tercetak tulisan “satu”, bila dibaca 2 maka tercetak tulisan “2”,dst. Jika angka
yang dimasukkan selain 1 sampai 4, tuliskan pesan bahwa angka yang
dimasukkan salah.
Program Konversi_Angka_Ke_Teks;
Var angka : integer;
Begin
Write('Masukkan angka yang akan dikonversi : ');
readln(angka);
Case angka of
1 : Write('SATU');
2 : Write('DUA');
3 : Write('TIGA');
4 : Write('EMPAT');
Else Write('ANGKA YANG DIMASUKKAN SALAH');
End;
Readln;
End.

4. Buat program dengan output sebagai berikut :

#### BANGUN DATAR ####


------------------------------------
1. Lingkaran

2. Persegi panjang

3. Dll

Silahkan pilih pokok bahasannya? [Pilih nomor]

Dengan ketentuan sebagai berikut :

 Jika pilih nomor 1 maka lakukan :

1. Input jari-jari

2. Hitung Luas dan keliling lingkaran

PEMROGRAMAN PASCAL 41
3. Tampilkan nilai luas dan keliling

 Jika pilih nomor 2 maka lakukan :

1. Input panjang dan lebar

2. Hitung Luas dan keliling persegi panjang

3. Tampilkan nilai luas dan keliling

 Jika pilih nomor 3 maka tampilkan “ANDA SALAH PILIH”

5. Buatlah sebuah program untuk menentukan keterangan kelulusan seorang


mahasiswa dengan ketentuan sebagai :

 Deklarasikan sebuah konstanta mata kuliah adalah pemrograman


komputer

 Input nama, NPM, nilai

 Jika nilai 56, maka pernyataan keterangan kelulusan adalah


“LULUS”
Jika tidak pernyataan keterangan kelulusan adalah “GAGAL”

 Buat program sekreatif mungkin dengan output sebagai berikut :


<<< Menentukan Kelulusan Mahasiswa >>>
-------------------------------------------------------
NPM : ........................
Nama : ........................
Matakuliah : ........................

Nilai Angka : ........................


Keterangan : ........................
LATIHAN :
1. Tulislah algoritma dengan menggunakan kalimat dan flowchart serta program
untuk membaca tiga buah bilangan bulat, lalu mengurutkan tiga buah bilangan
tersebut dari nilai yang kecil ke nilai yang besar. Keluaran (output) adalah tiga
buah bilangan yang terurut.

PEMROGRAMAN PASCAL 42
2. Berdasarkan algoritma berikut, buatlah program untuk mencari nilai akar
persamaan kuadrat Ax2+Bx+C.
Algoritma :
i. Mulai
ii. Input nilai A,B dan C
iii. Hitung diskriminan B2-4AC
iv. Jika diskriminan = 0 maka
 Hitung x1 -B/2A
 Hitung x2 x1
 Tampilkan tulisan ‘Persamaan kuadrat memiliki akar
kembar’ dan tampilkan nilai x1 dan x2.
Jika diskriminan > 0 maka

 Hitung x1 (-B+ )/(2A)

 Hitung x2 (-B- )/(2A)


 Tampilkan tulisan ‘Persamaan kuadrat memiliki akar
berbeda’ dan tampikan nilai x1 dan x2.
Jika diskriminan < 0 maka
 Tampilkan tulisan ‘Persamaan kuadrat memiliki akar
imajiner’.
v. Selesai.

3. Buatlah algoritma menggunakan kalimat, flowchat dan program membaca


sebuah bilangan positif lalu menentukan apakah bilangan tersebut merupakan
kelipatan 4?
4. Misalkan karyawan PT ABC dikelompokkan berdasarkan golongannya. Upah
perjam tiap karyawan bergantung pada golongannya. Jumlah jam kerja normal
selama seminggu adalah 48 jam. Kelebihan jam kerja dianggap lembur dengan
upah lembur adalah Rp.3000/jam untuk semua golongan karyawan. Buatlah

PEMROGRAMAN PASCAL 43
program yang membaca nama, golongan dan jumlah jam kerjanya selama
seminggu dari keyboard, lalu hitung upah total mingguannya.
a. Ilustrasi kasus menentukan upah per jam berdasarkan golongannya.
Kasus 1 : Jika golongan =’A’, maka upah perjam = 4000
Kasus 2 : Jika golongan =’B’, maka upah perjam = 5000
Kasus 3 : Jika golongan =’C’, maka upah perjam = 6000
Kasus 4 : Jika golongan =’D’, maka upah perjam = 7000
b. Selanjutnya ilustrasi kasus untuk menentukan upah total.
Jika jumlah jam kerja ≤ jam kerja normal maka :
Upah total jumlah jam kerja * upah perjam
Jika jumlah jam kerja > jam kerja normal maka :
Jam lembur jumlah jam kerja – jam kerja normal
Upah total jam kerja normal*upah perjam+jam lembur*upah lembur

5. Buatlah program untuk menentukan nilai mutlak dari sebuah bilangan riil (x),
dimana bilangan (x) diinput dari keyboard.
Program Nilai_Mutlak;
Var x : real;
Begin
Write('Masukkan nilai x : '); readln(x);
If x<0 then x:= -x;
Writeln('Nilai Mutlaknya adalah ',x);
readln;
end.

6. Buatlah program yang membaca angka tahun masehi dari keyboard, lalu
tentukan apakah tahun tersebut adalah tahun kabisat. Suatu tahun disebut
tahun kabisat jika memenuhi salah satu syarat berikut :
i.) Habis dibagi 4 tetapi tidak habis dibagi 100
ii.) Habis dibagi 400
Program Tahun_Kabisat;
{Menentukan apakah suatu tahun merupakan tahun kabisat
atau bukan}
Var tahun : integer;
Begin

PEMROGRAMAN PASCAL 44
Write('Masukkan tahun masehi : ');readln(tahun);
If ((tahun mod 4=0) and (tahun mod 100<>0))
or(tahun mod 400=0) then Write('Tahun Kabisat')
Else
Write('Bukan Tahun Kabisat');
Readln;
End.

7. Buatlah program yang membaca sudut (S) dalam satuan derajat dari keyboard,
lalu tentukan apakah sudut tersebut sudut lancip, sudut siku-siku, sudut tumpul,
atau sudut lurus.
Ilustrasi kasus :
Kasus 1 : Jika S < 90 derajat maka sudut lancip
Kasus 2 : Jika S = 90 derajat maka sudut siku-siku
Kasus 3 : Jika 90<S<180 derajat maka sudut tumpul
Kasus 4 : Jika S = 180 derajat maka sudut lurus
Kasus 5 : Jika S>180 derajat maka masukkan nilai sudut yang baru. Gunakan
deklarasi label.
Program Jenis_Sudut;
Uses crt;
Label ulang;
Var S : integer;
Begin
Clrscr;
Ulang:
Write('Masukkan nilai sudut : '); readln(S);
If S<90 then Write('SUDUT LANCIP');
If S=90 then Write('SUDUT SIKU-SIKU');
If ((S>90) and (S<180)) then Write('SUDUT TUMPUL');
If S=180 then Write('SUDUT LURUS');
If S>180 then goto ulang;
Readln;
End.

8. Buatlah program membaca sebuah bilangan bulat yang nilainya terletak antara
1 sampai 4, lalu mencetak tulisan angka tersebut. Misalkan bila dibaca 1, maka
tercetak tulisan “satu”, bila dibaca 2 maka tercetak tulisan “2”,dst. Jika angka
yang dimasukkan selain 1 sampai 4, tuliskan pesan bahwa angka yang
dimasukkan salah.

PEMROGRAMAN PASCAL 45
Program Konversi_Angka_Ke_Teks;
Var angka : integer;
Begin
Write('Masukkan angka yang akan dikonversi : ');
readln(angka);
Case angka of
1 : Write('SATU');
2 : Write('DUA');
3 : Write('TIGA');
4 : Write('EMPAT');
Else Write('ANGKA YANG DIMASUKKAN SALAH');
End;
Readln;
End.

9. Buatlah program mencari factor-faktor prime dari bilangan bulat N.


Algoritma :
viii. Mulai
ix. Masukkan bilangan bulat (N)
x. Set P 2 dan Q 1
xi. Jika N tidak habis dibagi P maka
Set P sebagai jumlah dan Q
Set Q 2 dan ulang langkah (iv)
xii. Jika N habis dibagi P maka
Cetak nilai P sebagai factor prime
Set N sebagai hasil bagi bulat N dengan P
Jika N 1 maka selesai, jika tidak ulang langkah (iv)
xiii. Tampilkan factor-faktor prime
xiv. Selesai.
Program Faktor_Prima_Bilangan_Bulat;
Uses crt;
Label ulang;
Var N,P,Q : integer;
Begin
Clrscr;
Write('Masukkan nilai N : ');readln(N);
P:=2;
Q:=1;
Writeln('Faktor Prime dari ',N,' adalah : ');
Ulang:
If N mod P <> 0 then

PEMROGRAMAN PASCAL 46
Begin
P:=P+Q;
Q:=2;
Goto ulang;
End
Else
Begin
Write(P);
N:=N div P;
If N <> 1 then goto ulang;
End;
Readln;
End.

PEMROGRAMAN PASCAL 47

Anda mungkin juga menyukai