Modul IV

MODUL IV

Tujuan
• Mahasiswa memahami penggunaan pernyataan bersyarat IF
• Mahasiswa memahami penggunaan pernyataan bersyarat CASE

Pada umumnya kode program akan dikerjakan mulai dari pernyataan ke 1 s/d pernyataan ke n. Namun dalam beberapa hal kode program akan dikerjakan bila syarat yang kita maksudkan terpenuhi.
Kode Program Umum Kode Program Bersyarat
Begin
Pernyataan 1
Pernyataan 2
Pernyataan 3
……
Pernyataan N
End. Begin
Pernyataan 1
IF Then Pernyataan 1
Pernyataan 2
……
Pernyataan N
End.

Untuk membentuk pernyataan bersyarat di kode program Pascal dapat digunakan pernyataan IF ataupun CASE.

1. Pernyataan Bersyarat IF
Statement bersyarat IF digunakan bila Anda ingin setiap syarat yang Anda tentukan diperiksa oleh compiler. Di dalam IF bisa juga terdapat IF yang lainnya, yang disebut IF bersarang (nested IF).

1.1. IF Then
Ket :  Syarat digunakan untuk menentukan ekspresi yang Anda nyatakan. Hasil dari ekspresi harus bernilai Boolean (True atau False). Di dalam ekspresi dapat digunakan operator relasional, logika, bitwise, pointer dan aritmatika.
 Pernyataan yang akan dieksekusi. Bila pernyataan yang akan dieksekusi lebih dari satu baris, maka Anda harus mengawali pernyataan tersebut dengan kata cadang begin dan diakhiri kata cadang end.

Kasus I. Misalkan syarat kelulusan seorang mahasiswa bila IPK>2.5. Berikut ini adalah kode program untuk menentukan kelulusan mahasiswa tersebut.
Kode Program Keterangan
Program Kelulusan;
Var
Nim : String[9];
IPK : Real;
Begin
Write(‘Nim : ‘);readln(nim);
Write(‘IPK : ‘);readln(IPK);
IF (IPK>2.5) Then writeln (‘Lulus’);
End. Judul program
Deklarasi variabel

Awal program
Input Nim
Input IPK
Jika IPK > 2.5 maka akan menghasillan TRUE (Benar). Bila TRUE maka dicetak kata Lulus, jika tidak maka kata lulus tidak dicetak.
Program OK;
Begin
IF True Then
Begin
Writeln(‘Ok’);
Writeln(‘Trims’);
End.
End. Judul program
Awal program
Karena true maka
Mulai
Cetak OK
Cetak Trims
Selesai
Akhir program

1.2. IF Then Else
Ket :  Syarat digunakan untuk menentukan ekspresi yang Anda nyatakan. Hasil dari ekspresi harus bernilai Boolean (True atau False). Di dalam ekspresi dapat digunakan operator relasional, logika, bitwise, pointer.
 Pernyataan yang akan dieksekusi. Bila pernyataan yang akan dieksekusi lebih dari satu baris, maka Anda harus mengawali pernyataan tersebut dengan kata cadang begin dan diakhiri kata cadang end.

Kasus II. Berikut ini adalah rumus untuk menentukan nilai akhir mata kuliah yang diampu seorang mahasiswa :
NA = (NT*30 + NM * 30 + NS * 40)/100
Selanjutnya nilai akhir mahasiswa tersebut dikonversi ke nilai huruf seperti berikut ini :
NA > 85, NH = A
75 85) Then
NH:=’A’
Else IF (NA>75) and (NA65) and (NA55) and (NA : ’);readln(Lagi);
If Upcase(Lagi)=’Y’ Then
Goto Ulangi;
End. Judul program
Deklarasi unit crt
Deklarasi tipe

Deklarasi konstanta

Deklarasi label

Dekalarasi variabel

Awal program
Label ulang

Hitung nilai akhir
Jika NA > 85 maka NH adalah A

Jika NA > 75 dan NA 65 dan NA 55 dan NA Then
IF Then

Else

IF Then
IF Then

Else

Else

IF Then
IF Then

Else IF Then

Else IF Then

Else

Else IF Then

Else IF Then

Else

Kasus III. Misalkan kita ingin mencari bilangan terbesar diantara tiga buah bilangan (A,B,C). Dengan menggunakan pernyataan IF, maka kode programnya dapat seperti berikut ini:
Kode Program Keterangan
{Tgl Dibuat 15 Oktober 2005}
Var
A,B,C : Real;
Begin
Write(‘Nilai A : ‘);readln(A);
Write(‘Nilai B : ‘);readln(B);
Write(‘Nilai C : ‘);readln(C);
IF (A>B) Then
IF (A>C) Then
Writeln (A:6:2,’Terbesar’)
Else
Writeln (C:6:2,’Terbesar’);
Else IF (B>C)
Writeln(B:6:2,’ Terbesar’)
Else
Writeln(C:6:2,’ Terbesar’)
Readln;
End. Komentar
Deklarasi variabel

Awal program
Input A
Input B
Input C
Jika A > B maka
Jika A > C maka
A Terbesar
Jika A C maka
Cetak B Terbesar
Jika B Of : End.
Case Of
Syarat1 : Pernyataan1
Syarat2 : Pernyataan2
Syarat3 : Pernyataan3
………
SyaratN : PernyataanN
End.
Ket : Ekspresi  Ekspresi harus bertipe ordinal (Integer (Integer, ShorInt, Byte, LongInt, Word), char, set, enumerated, subrange). Operator, fungsi maupun prosedur dapat Anda gunakan pada ekspresi asalkan bertipe ordinal.
Syarat  nilai dari ekspresi yang memenuhi. Nilai dapat dalam bentuk subrange, terbilang, set. Bila nilai ataupun himpunan nilai lebih dari satu maka antara nilai harus dipisahkan oleh koma.
Pernyatan  Bila pernyataan lebih dari satu, maka awal pernyataan tersebut harus didahului kata cadan begin dan diakhiri kata cadang end.

Kasus IV. Misalkan kita ingin membuat program pascal menentukan kelulusan mahasiswa. Syaratlulus bila Jumlah SKS yang telah ditempuh lebih besar daripada 120, bila tidak maka mahasiswa tersebut tidak lulus.
Kode Program Keterangan
Program Nilai;
Uses Crt;
Type
RangeSKS = 0..160;
Const
Sekolah=’STTI RESPATI’;
Jurusan =’Jurusan Sistem Informasi’;
Label
Ulangi;
Var
Nim : String[9];
Ket : String[12];
JlhSks : RangeSks;
Lagi : Char;
Begin
Ulangi :
Clrscr;
Write(Sekolah);
Write(Jurusan);writeln;
Write(‘Nim Mahasiswa : ‘);readln(Nim);
Write(‘SKS telah ditempuh : ‘);readln(JlhSks);
Case JlhSks Of
120..160 : Ket :=’Lulus’
0..120 : Ket :=’Tidak Lulus’;
End;
Writeln(‘Mahasiswa Dinyatakan : ‘,Ket);
Writeln;
Write(‘Coba Lagi : ’);readln(Lagi);
If Upcase(Lagi)=’Y’ Then
Goto Ulangi;
End. Judul program
Deklarasi unit crt
Deklarasi tipe

Deklarasi konstanta

Deklarasi label

Deklarasi variabel

Awal program
Label Ulangi
Bersihkan layar output

Bila JlhSks adalah
120 s/d 160 maka Ket = Lulus
0 s/d 120 maka Ket= Tidak Lulus
Akhir Case
Cetak Ket
Cetak baris kosong
Input Lagi
Jika Lagi = Y maka
lompat ke label Ulangi
Akhir program

Kasus V. Sebuah Toserba menawarkan berbagi barang dagangan, mulai dari baju, celana, tas, peralatan rumah tangga, peralatan kantor. Untuk menarik pelanggan, manajemen perusahaan menetapkan kebijakan potongan harga sebagai berikut :
Total Harga Potongan
>5000000 15%
3 jt s/d 5 jt 10%
1 jt s/d 3 jt 5%
Di bawah 1 jt 0%
Anda disuruh untuk membuat program pascal untuk menentukan jumlah harga yang harus dibayar tiap pelanggan berdasarkan total belanjanya.
Program Nilai;
Uses Crt;
Const
NamaToko=’TOSERBA ISTIMEWA;
Alamat =’Jln. Kaliurang;
Label
Ulangi;
Var
KdPelanggan : String[9];
Ket : String[12];
Lagi : Char;
TotalHarga, Disc,JumlahBayar : Real;
Begin
Ulangi :
Clrscr;
Write(NamaToko);
Write(Alamat);writeln;
Write(‘Kode Pelanggan : ‘);readln(kdpelanggan);
Write(‘Total Harga : ‘);readln(TotalHarga);
Case TotalHarga Of
5000001..15000000 : Disc:=0.15;
3000001..5000000 : Disc:=0.1;
1000001..3000000 : Disc:=0.05;
0..1000000 : Dics:=0;
TotalBayar:=TotalHarga -TotalHarga*Disc;
Writeln(‘Total Bayar : ‘,TotalBayar:12:4);
Writeln;
Write(‘Coba Lagi : ’);readln(Lagi);
If Upcase(Lagi)=’Y’ Then
Goto Ulangi;
End. Judul program
Deklarasi unit crt
Deklarasi konstanta

Deklarasi label

Deklarasi variabel

Awal program
Label ualngi
Bersihkan layar output

Bila TotalHarga adalah
5000001 s/d 15000000 maka Disc=0.15;
3000001 s/d 5000000 maka Disc=0.1;
1000001 s/d 3000000 maka Disc=0.05;
0 s/d 1000000 maka Dics=0;
Hitung TotalBayar
Cetak TotalBayar
Cetak baris baru
Input lagi
Jika lagi =Y maka
Lompat ke label ulangi
Akhir program

2.2. Case Of : Else End.
Case Of
Syarat1 : Pernyataan1
Syarat2 : Pernyataan2
Syarat3 : Pernyataan3
……
SyaratN : PernyataanN

Else
PernyataanN+1
End.

Kode program berikut ini adalah masih menggunakan kasus V, hanya untuk kondisi yang terakhir digunakan pernyataan ELSE.
Program Nilai;
Uses Crt;
Const
NamaToko=’TOSERBA ISTIMEWA;
Alamat =’Jln. Kaliurang;
Label
Ulangi;
Var
KdPelanggan : String[9];
Ket : String[12];
Lagi : Char;
TotalHarga, Disc,JumlahBayar : Real;
Begin
Ulangi :
Clrscr;
Write(NamaToko);
Write(Alamat);writeln;
Write(‘Kode Pelanggan : ‘);readln(kdpelanggan);
Write(‘Total Harga : ‘);readln(TotalHarga);
Case TotalHarga Of
5000001..15000000 : Disc:=0.15;
3000001..5000000 : Disc:=0.1;
1000001..3000000 : Disc:=0.05;
Else
Dics:=0;
TotalBayar:=TotalHarga -TotalHarga*Disc;
Writeln(‘Total Bayar : ‘,TotalBayar:12:4);
Writeln;
Write(‘Coba Lagi : ’);readln(Lagi);
If Upcase(Lagi)=’Y’ Then
Goto Ulangi;
End. Judul program
Deklarasi unit crt
Deklarasi konstanta

Deklarasi label

Deklarasi variabel

Awal program
Label ualngi
Bersihkan layar output

Bila TotalHarga adalah
5000001 s/d 15000000 maka Disc=0.15;
3000001 s/d 5000000 maka Disc=0.1;
1000001 s/d 3000000 maka Disc=0.05;
Kondisi di atas tidak terpenuhi maka
Dics=0;
Hitung TotalBayar
Cetak TotalBayar
Cetak baris baru
Input lagi
Jika lagi =Y maka
Lompat ke label ulangi
Akhir program

2.3. Case Bersarang (Nested Case)
Case Of
Syarat1 : Case Of
Syarat1 : Pernyataan1
Syarat2 : Pernyataan2
Syarat3 : Pernyataan3
……
SyaratN : PernyataanM
Else
PernyataanM+1
End;
Syarat2 : Pernyataan2
Syarat3 : Pernyataan3
……
SyaratN : PernyataanN
Else
PernyataanN+1
End.

Kasus VII. Tentukan banyaknya alphabet, huruf hidup (vokal), huruf mati(konsonan), spasi, enter, karakter spesial dari suatu kalimat yang Anda masukkan dari keyboard.

Kode Program Keterangan
{Sekolah : STTI Respati
Tgl : 15 Oktober 2005}
Program StatistikKarakter;
Uses Crt;
Type
PjngKalimat = Sting[200];
Label
Ulangi, Cetak;
Var
JlhHuruf, JlhVokal,JlhKonsonan, JlhSpasi,
JlhEnter, JlhSpesial,JlhLain : Byte;
Karakter : Char;
Panjang : Byte;
Begin
Clrscr;
Writeln(‘Ketik # untuk Keluar’);
Ulangi :
Read(Karakter);
Case Karakter Of
‘A’..’Z’,’a’..’z’ : Case Upcase(Karakter) OF
‘A’,’E’,’I’,’O’,’U’ : Inc(JlhVokal)
Else
Inc(JlhKonsonan);
End; {Akhir Case}
#32 : Inc(JlhSpasi);
#13 : Inc(JlhEnter);
‘~’,’!’,’@’,’#’,$’,’%’,’^’,’&’,’*’,’(‘,’)’,’_’,’+’,
‘|’,’{‘,’}’,’:’,’”’,’’,’?’ : Inc(JlhSpesial)
Else
Inc(JlhLain);
End; {Akhir Case}
Inc(JlhKarakter);
IF karakter =’#’ Then Goto Cetak;
Goto Ulangi;
Cetak:
Write(‘Jumlah Karakter : ‘,JlhKarakter);
Write(‘Jumlah Vokal : ‘,JlhVokal);
Write(‘Jumlah Konsonan :’,JlhKonsonan);
Write(‘Jumlah Spasi :’,JlhSpasi);
Write(‘Jumlah Enter :’,JlhEnter);
Readln;
End. Komenter

Judul program
Deklarasi unit crt
Deklarasi tipe

Deklarasi label

Deklarasi variabel

Awal program

Label Ulangi
Baca karakter
Bila Karakter adalah
Alphabet maka
Bila alphabet huruf hidup maka Inc(JlhVokal)
Bila alphabet konsonan maka Inc(jlhKonsonan)

Spasi maka Inc(jlhSpasi)
Enter maka Inc(JlhEnter)
Spesial maka Inc(Spesial)

Jika kondisi di atas tidak terpenuhi maka
Inc(JlhLain)

Inc(JlhKarakter) sama dengan Jlhkarakter:=JlhKarakter+1;
Jika karakter # maka loncat ke cetak
Jika tidak loncat ke Ulangi
Label cetak
Cetak JlhKarakter
Cetak JlhVokal
Cetak JlhKonsonan
Cetak JlhSpasi
Cetak JlhEnter
Tunggu penekanan tombol enter
Akhir program

Kasus VIII. Menggerakakan karakter * di layar output dengan tombol panah atas, bawah, kiri, kanan, home dan end.

Kode Program Keterangan
{Program Menggerakakan Karakter * Dengan :
Panah Atas : Satu Baris Ke Atas
Panah Bawah : Satu Baris Ke Bawah
Panah Kiri : Satu Karakter Ke Kiri
Panah Kanan : Satu Karakter Ke Kanan
Oleh : Betra Ginting
Sekolah : STTI Respati Yogyakarta
Tanggal : 15 Oktober 2005}.

Program Gerak;
Uses Crt;
Label
Ulangi;
Const
PA=#72;
PB=#80;
PKi=#75;
PKa=#77;
Awal=#71;
Akhir=#79;

var
Tombol,Kar : Char;
Brs,Klm : Byte;
Begin
TextBackGround(Green);
clrscr;
{Buat Window Status}
TextBackGround(White);
TextColor(Red);
Window(1,25,80,25);
Clrscr;
write(‘Tombol : Panah Atas, Bawah, Kiri, Kanan, Home dan End | Q->Exit’);
{Lettakkan Karakter Di Tengah-Tengah Layar}
TextBackGround(Blue);
TextColor(Yellow);
Window(1,1,80,24);
Clrscr;
Klm:= 80 Div 2;
Brs:= 25 Div 2;
gotoxy(Klm,Brs);write(‘*’);
Ulangi:
Kar:=ReadKey;
IF Upcase(Kar)=’Q’ Then Exit;
Case Kar OF
#0 :Begin
Kar:=ReadKey;
Case Kar OF
PA : Begin
GoToXy(Klm,Brs);Delline;
Dec(Brs);
IF Brs24 Then Brs:=1;
GotoXy(Klm,Brs);write(‘*’);
End;
PKi : Begin
GoToXy(Klm,Brs);Delline;
Dec(Klm);
IF Klm80 Then Klm:=1;
GotoXy(Klm,Brs);write(‘*’);
End;
Awal : Begin
GoToXy(Klm,Brs);Delline;
Klm:=1;
GotoXy(Klm,Brs);write(‘*’);
End;
Akhir : Begin
GoToXy(Klm,Brs);Delline;
Klm:=80;
GotoXy(Klm,Brs);write(‘*’);
End;
End;
End;
End;
Goto Ulangi;
End. Komentar

Judul program
Deklarasi unit crt
Deklarasi label

Deklarasi konstanta
#72 kode ASCII extended untuk panah atas
#80 kode ASCII extended untuk panah bawah
#75 kode ASCII extended untuk panah kiri
#77 kode ASCII extended untuk panah kanan
#71 kode ASCII extended untuk home
#79 kode ASCII extended untuk end

Deklarasi variabel

Awal program
Warna layar belakang hijau
Bersihkan layar output

Buat window
Bersihkan window

Buat window
Bersihkan layar
Klm = 80 div 2 = 40
Brs = 25 div 2 = 12
Cetak karakter * di tengah-tengah layar
Label ulangi
Baca Satu Karakter Tetapi Karakter Tidak Ditampilkan
Jika tombol terbaca Q maka program berhenti
Bila tombol adalah
Extended Code (Kode Kunci Perluasan) maka
Ambil karakter kedua
Bila kode scan (scan kode) adalah
Panah atas
hapus karakter di posisi klm,baris
Brs:=Brs-1
Jika baris 24 maka baris = 1
Cetak karakter di kolom,baris baru

Panah kiri
hapus karakter di posisi klm,baris
klm:=klm-1
Jika klm 80 maka klm = 1
Cetak karakter di kolom,baris baru

Home
hapus karakter di posisi klm,baris
klm:=1
Cetak karakter di klm,baris baru

End
hapus karakter di posisi klm,baris
klm:=80
Cetak karakter di klm,baris baru

Loncat ke label Ulangi
Akhir program

Anda juga dapat menggabung pernyataan IF dengan pernyataan CASE, asalkan pernyataan-pernyataan yang dibentuk tidak bertentangan dengan aturan yang telah ada. Gabungan pernyataan IF dan CASE dapat saja berbentuk seperti di bawah ini :

IF Then
Case of
Nilai1 :
Nilai2 :
…………………………
NilaiN :
End;
Else IF Then
Case of
Nilai :
Nilai2 :
…………………………
NilaiO :
Else
PernyataanO+1
End
Else

TUGAS :
1. Buatlah program untuk menggerakkan karakter * mengelilingi layar monitor Anda mulai dari sudut kiri atas, kemudian ke kanan, kebawah dan kembali ke kiri atas. Bila anda menekan tombol Spasi menandakan stop, C lanjut dan Q keluar dari program.

2. Buatlah program untuk menggerakkan teks :
 STTI RESPATI YOGYAKARTA dari kiri kenanan
 JURUSAN SISTEM INFORMASI dari kanan ke kiri
 SEMESTER III dari kiri kekanan
 2005/2006 dari kanan ke kiri
Secara bersamaan.

Extended code (Kode Kunci Perluasan) adalah kode yang dibangkitkan oleh sebuah atau lebih kunci. Kode diawali oleh karakter Null (#0) dan karakter kedua adalah scan kode dari karakter tersebut. Berikut ini adalah daftar beberapa kode kunci perluasan:
Kode Fungsi
15
16-25
30-38
44-50
59-68
71
72
73
75
77
79
80
81
82
83 Shift-Tab
Alt+ [Q,W,E,R,T,Y,U,I,O,P]
Alt + [A,S,D,F,G,H,J,K.L
Alt + [Z,X,C,V,B,N,M]
F1,F2,F3,F4,F5,F6,F7,F8,F9,F10
Home
Panah Atas
PgUp
Panah Kiri
Panah Kanan
End
Panah Bawah
PgDn
Ins
Del

No comments yet

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: