modul 2bru 03
TRANSCRIPT
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 :
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
If kondisi then pernyataan
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
Kondisi
Pernyataan
Ya
Tidak
b. STRUKTUR IF-THEN-ELSE
Bentuk Umum :
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;
PEMROGRAMAN PASCAL 29
If kondisi then pernyataan1
Else pernyataan2;
Kondisi
Pernyataan1
Ya
Tidak
Pernyataan2
Contoh 2 :
Flowchart :
PEMROGRAMAN PASCAL 30
Kondisi
Ket ‘Lulus’
Ya
Tidak
Ket ‘Tidak lulus’
Mulai
Selesai
Nilai_ujian
Ket
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 :
Atau
Contoh 3 :
PEMROGRAMAN PASCAL 31
If kondisi1 then
If kondisi2 then pernyataan1
Else pernyaaan2;
If kondisi1 then
Begin
End.
If kondisi2 then pernyataan1
Else pernyaaan2;
Indeks D
Indeks C
Indeks B
Indeks A
Flowchart :
PEMROGRAMAN PASCAL 32
Mulai
UTS,UAS,TGS
NA 0.35*UTS+0.4*UAS+0.25*TGS
NA≥85
Tidak
NA≥66
Tidak
NA≥56
Tidak
NA≥41
Ya
Ya
Ya
Ya
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
Indeks E
Selesai
Tampilkan NA
Tidak
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 :
Contoh 4 :(Bentuk struktur If pada contoh 3 dapat dikonstruksi dengan struktur Case)
PEMROGRAMAN PASCAL 37
Case ungkapan OfDaftar case_label 1 : pernyataan 1;
Daftar case_label 2 : pernyataan 2; Daftar case_label n : pernyataan n;End;
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 :
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
Case ungkapan OfDaftar case_label 1 : pernyataan 1;
Daftar case_label 2 : pernyataan 2; Daftar case_label n : pernyataan n;Else pernyataan m;End;
{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