Archive for the ‘Bahasa Pascal’ Category

Modul VI

MODUL VI

Tujuan :
• Mahasiswa memahami tentang Array
• Mahasiswa memahami tentang Record
• Pengenalan Prosedur dan Fungsi

1. Array
Coba anda perhatikan perbedaan program di bawah ini :
Program TanpaArray; {Program A}
Uses Crt;
Var
Data1,Data2,Data3,Data4,Data5,
Data6,Data7,Data8,Data9,Data10,
Jlh,Rata : Real;
Begin
Clrscr;
Write(‘Input Data Ke 1 : ‘);readln(Data1);
Write(‘Input Data Ke 2 : ‘);readln(Data2);
Write(‘Input Data Ke 3 : ‘);readln(Data3);
Write(‘Input Data Ke 4 : ‘);readln(Data4);
Write(‘Input Data Ke 5 : ‘);readln(Data5);
Write(‘Input Data Ke 6 : ‘);readln(Data6);
Write(‘Input Data Ke 7 : ‘);readln(Data7);
Write(‘Input Data Ke 8 : ‘);readln(Data8);
Write(‘Input Data Ke 9 : ‘);readln(Data9);
Write(‘Input Data Ke 10 : ‘);readln(Data10);
Jlh:=0;
Jlh:=Jlh+Data1+Data2+Data3+Data4+Data5+
Data6+Data7+Data8+Data9+Data10;
Rata:=Jlh/10;
Writeln(‘Jumlah Data : ‘);readln(Jlh);
Writeln(‘Rata-Rata : ‘);readln(Rata);
Write(‘Tekan Tombol Apa Saja’);
Readkey;
End. Program DenganArray; {Program B}
Uses Crt;
Var
Data,Jlh,Rata2 : Array[1..10] Of Real;
I : 1..10;
Begin
Clrscr;Jlh:=0;
For I:= 1 To 10 Do
Begin
Write(‘Masukkan Data Ke ‘,I,’ : ‘);readln(Data[I]);
Jlh:=Jlh+Data[I];
End;
Rata2:=Jlh/10l;
Writeln(‘Jumlah Data : ‘);readln(Jlh);
Writeln(‘Rata-Rata : ‘);readln(Rata);
Write(‘Tekan Tombol Apa Saja’);
Readkey;
End.

Bila pada program A tiap variabel hanya dapat menampung satu data, maka pada program B terlihat bahwa satu variabel dapat menampung beberapa data. Variabel-variabel yang sama dengan indeks yang berbeda disebut dengan array.

Berikut ini merupakan analogi array dengan lemari arsip (filling cabinet) :

Array Lembari Arsip
Data[1]

Data[2]

Data[3]

Data[4]

Data[5]

Deklarasi Array 1 Dimensi
B.U : Pengenal : Array : [NA..NK] Of TipeData;
Ket :
Pengenal : Pengenal array
NAw : Nilai Awal Indeks. NAw harus lebih kecil dari NAk
NAk : Nilai Akhir Indeks.
TipeData : Tipe data pengenal : real, string, integer, record.

Berikut ini beberapa cara mendeklarasikan array:
* Deklarasi di bagian Var
Var
NamaMhs : Array[1..1000] Of String[25];
JlhPenduduk : Array[1..1000] Of Longint;
* Deklarasi di bagian Type dan penggunaannya di bagian Var
Type
Mahasiswa = Array [1..1000] Of String[25];
Penduduk = Array[1..1000] Of LongInt;
Var
NamaMhs : Mahasiswa;
JlhPenduduk : Penduduk;
* Deklarasi di bagian Const
Const
Mahasiswa : Array[1..5] of String = (‘Budi’,’Andi’,’Rita’,’Ahmad’,Susan’);
Data : Array[1..10] of Real = (100,150,12.5,150.76,50,89,99,120,85,65);
* Deklarasi di indeks di Const penggunaan di bagian Var
Const
NA1=1;
NB1:=5;
NA2:=1;
NB2:=5;
Var
Nilai : Array[NA1..NB1,NA2..NB2] Of Real;

Deklarasi Array Lebih Dari 1 Dimensi
BU : Pengenal : Array : [NAw..NK, NAw..NK, NAw..NAk] Of TipeData;
NAw : Nilai Awal Indeks. NAw harus lebih kecil dari NAk
NAk : Nilai Akhir Indeks.
TipeData : Tipe data: real, string, integer, record, pointer

Misalkan Anda ingin menjumlahkan dua buah matrik, yaitu :

A = 2 5 B= 5 7 Brs
4 5 9 8 Brs

Klm Klm

Maka hasil perjumlahan matrik Amxn+Bmxn adalah
C = Amxn + Bmxn
Dimana A : Matrik A
B : Matrik B
C : Matrik C
m : baris
n : kolom
ctt : syarat penjumlahan matrik adalah jumlah baris dan dan jumlah kolom matrik yang dijumlahkan harus sama.

Berikut ini adalah kode program untuk menjumlahkan matrik Amxn+Bmxn.

Program JumlahMatrikAB;
Uses Crt;
Ukuran = Array[1..2,1..2] Of Byte; {Deklarasi Array 2 Dimensi}
Var
MatrikA,MatrikB,MatrikC : Ukuran;
I,J : 1..2;
Begin
Clrscr;
Writeln(‘Data Matrik A ‘);
For I:= 1 To 2 Do
Begin
For J:= 1 To 2 Do
Write(‘MatrikA [‘,I,J,’] : ‘);
Readln(MatrikA[I,J]);
End;
Writeln;Writeln;
Writeln(‘Data Matrik B ‘);
For I:= 1 To 2 Do
Begin
For J:= 1 To 2 Do
Write(‘MatrikB [‘,I,J,’] : ‘);
Readln(MatrikB[I,J]);
End;
Writeln;
{Penjumlahan Matrik A + Matrik B}
For I:= 1 To 2 Do
Begin
For J:= 1 To 2 Do
MatrikC[I,J]:=MatrikA[I,J]+MatrikB[I,J]);
End;
Writeln;
Writeln(‘Hasil Perjumlahan Adalah : ‘);
For I:= 1 To 2 Do
Begin
For J:= 1 To 2 Do
Write(MatrikC[I,J]:5);
Writeln;
End;
Readln;
End.

2. Record
Mungkin Anda pernah mengetik data di MS-Word seperti di bawah ini :

Nim Nama Alamat Telp

001 Betra Jln. Kaliurang No. 12 02740011

002 Andi Klebengan CT. VIII No. 8 081230092

003 Surianto Pogung III No. 15 081950015

004 Supriadi Pogung IV No. 1 081909011

005 Julianti Jln. Janti No. 15 081573455

Field Nim Field Nama Field Alamat Field Telp

Digit : 0 atau 1
Byte : 8 digit
1 Karakter : 1 byte
Himpunan dari karakter-karakter membentuk field
Field disebut juga kolom ataupun attribut
Kumpulan dari beberapa nilai field membentuk suatu rekord/tuple/baris
Kumpulan dari record-record membentuk file/arsip
Bila data file di atas mau kita bentuk rekordnya di program pascal, maka terlebih dahulu deklarasikan di bagian Type, selanjutnya buat suatu pengenal di bagian Var yang tipenya telah dideklarasikan di bagian Type.

Program InputDataMhs;
Uses Crt;
Type Mhs = Record
Nim : String[3]
Nama : String[25];
Alamat : String[35];
Telp : String[12];
End;
Var
DataMhs1,DataMhs2,DataMhs3,
DataMhs4,DataMhs5 : Mhs;
Begin
Clrscr;
Writeln(‘Data Mhs1 ‘);
Write(‘Nim : ‘);readln(DataMhs1.Nim);
Write(‘Nama :);readln(DataMhs1.Nama);
Write(‘Alamat : );readln(DataMhs1.Alamat);
Write(‘Telepon : ‘);readln(DataMhs1.Telp);
Writeln;
Writeln(‘Data Mhs2 ‘);
Write(‘Nim : ‘);readln(DataMhs2.Nim);
Write(‘Nama :);readln(DataMhs2.Nama);
Write(‘Alamat : );readln(DataMhs2.Alamat);
Write(‘Telepon : ‘);readln(DataMhs2.Telp);
Writeln(‘Data Mhs3 ‘);
Write(‘Nim : ‘);readln(DataMhs3.Nim);
Write(‘Nama :);readln(DataMhs3.Nama);
Write(‘Alamat : );readln(DataMhs3.Alamat);
Write(‘Telepon : ‘);readln(DataMhs3.Telp);
Writeln(‘Data Mhs4 ‘);
Write(‘Nim : ‘);readln(DataMhs4.Nim);
Write(‘Nama :);readln(DataMhs4.Nama);
Write(‘Alamat : );readln(DataMhs4.Alamat);
Write(‘Telepon : ‘);readln(DataMhs4.Telp);
Writeln(‘Data Mhs5 ‘);
Write(‘Nim : ‘);readln(DataMhs5.Nim);
Write(‘Nama :);readln(DataMhs5.Nama);
Write(‘Alamat : );readln(DataMhs5.Alamat);
Write(‘Telepon : ‘);readln(DataMhs5.Telp);
Writeln;clrscr;
Writeln(‘Daftar Mahasiswa’);
Writeln(‘Nim Nama Alamat Telp’);
Writeln(DataMhs1.Nim,DataMhs1.Nama,
DataMhs1.Alamat,DataMhs1.Telp);
Writeln(DataMhs2.Nim,DataMhs2.Nama,
DataMhs2.Alamat,DataMhs2.Telp);
Writeln(DataMhs3.Nim,DataMhs3.Nama,
DataMhs3.Alamat,DataMhs3.Telp);
Writeln(DataMhs4.Nim,DataMhs4.Nama,
DataMhs4.Alamat,DataMhs4.Telp);
Writeln(DataMhs5.Nim,DataMhs5.Nama,
DataMhs5.Alamat,DataMhs5.Telp);
Readln;
End. Program InputDataMhs2;
Uses Crt;
Type Mhs = Record
Nim : String[3]
Nama : String[25];
Alamat : String[35];
Telp : String[12];
End;
Var
DataMhs : Array[1..5] OF Mhs;
I : 1..5;
Begin
Clrscr;
For I:= 1 To 5 Do
Begin
With DataMhs[I] Do
Begin
Write(‘Nim : ‘);
readln(Nim);
Write(‘Nama :);
readln(Nama);
write(‘Alamat : ‘);
readln(Alamat);
write(‘Telepon : ‘);
readln(Telp);
End;
clrscr;
writeln(‘Daftar Mahasiswa’);
For I:= 1 To 5 Do
Begin
With DataMhs[i] Do
Write(Nim,Nama,Alamat,Telp);
End;
Readln;
End.

Record Bervariasi (Variant Record)
Pascal juga memungkinan untuk mendeklarasikan field yang nilainya dapat berubah-ubah. Maksudnya adalah nilai yang dikandung suatu field dapat berbeda-beda. Untuk mendeklarasikan record yang berbeda, terlebih dahulu kita tentukan apa pembeda nilai field tersebut.
Misalkan kita ingin menentukan tunjangan pegawai PT. XYZ, dimana tunjangan ditentukan dari status. Kasus tersebut akan kita coba selesaikan dengan record bervariasi.
Tabel Daftar Gaji Pokok PT.XYZ
Status Tunjangan
single Tjabat = 1000000
Menikah Tjabat=1000000 dan Tistri=200000
Program PTXYZ;
Uses crt
Type
status = (single,menikah); {tipe enumerasi}
Data = Record
Nip : String[5];
Nama : String[25];
Alamat : String[35];
JlhAnak : 0..10;
Case TGaji : Status Of {Tag Field}
Single : (tjab: Real);
Menikah : (tjabat,tistri : Real);
End; {Akhir Deklarasi Rekord}
Var
Pegawai : Data;
Begin
Clrscr;
Writeln(‘PT XZY’);
Writeln(‘Perhitungan Tunjangan Pegawai’);
With Pegawai Do
Begin
Write(‘NIP : ‘);readln(Nip);
Write(‘Nama : ‘);readln(Nama);
Write(‘Alamat : ‘);readln(Alamat);
Write(‘Jlh Anak : ‘);readln(JlhAnak);
Pegawai.TGaji:=single;
If Tgaji.status=single then
Begin
Tjabl:=1000000;
Writeln(‘Tunjangan : ‘,Tjab);
End
Else
Begin
Tjabat:=1000000;
Tistri:=200000l
Writeln(‘Tunjangan : ‘,Tjabat+Tistri);
End;
End;
Readln;
End.

3. Pengenalan Prosedur dan Fungsi
Prosedur
Prosedur adalah kumpulan pernyataan-pernyataan yang dibentuk untuk menyelesaikan suatu tugas. Nilai pengembalian prosedur dari parameter-parameter yang ada di prosedur tersebut bila terdapat parameter. Sedangkan nilai pengembalian prosedur tanpa parameter berasal dari pernyataan yang terdapat di blok prosedur. Nilai yang dihasilkan prosedur bisa menghasilkan lebih dari satu nilai.

Berikut adalah beberapa cara mendeklarasikan prosedur :
* Prosedur tanpa parameter
Procedure Judul;
Begin

End;
* Prosedur dengan parameter nilai (Parameter tidak diawali kata Var)
Procedure Judul(Pengenal1 : Tipe; Pengenal2 : Tipe);
Begin

End;

* Prosedur dengan paramater acuan (Parameter diawali kata Var)
Procedure Judul(Var Pengenal1 : Tipe; Pengenal2 : Tipe);
Begin

End;

Misalkan Anda ingin mencetak kalimat :
SELAMAT DATANG DI TOKO ABADI JAYA
Jln. Brigjen Katamso No. 15 Yogyakarta
Telp. 02741156789
dengan menggunakan prosedur, maka programnya dapat sepeti di bawah ini :

Program JudulToko;
Uses Crt;
Procedure Judul;
Begin
Writeln(‘SELAMAT DATANG DI TOKO ABADI JAYA’);
Writeln(‘Jln. Birgjen Katamso No. 15 Yogyakarta’);
Writeln(‘Telp. 02741156789’);
End;
Begin
Clrscr;
Judul; {Panggil Prosedur Judul}
Writeln;
Judul; {Panggil Prosedur Judul}
Readln;
End.

Prosedur-prosedur seperti : clrscr, readln,writeln merupakan contoh prosedur yang telah banyak kita gunakan dalam program. Perusahaan Borland sebagai pencipta Turbo Pascal juga mendefenisikan prosedur seperti yang telah dinyatakan di atas. Berikut ini adalah beberapa contoh cara pendeklarasian prosedur yang telah disediakan Pascal.
* Readln
Procedure Readln([Var F : Text;] V1 [V2,V3,…,Vn] );
Begin

End;
* clrscr
Procedure Clrscr;
Begin
End;
* writeln;
Procedure writeln ([Var F : Text;] V1 [V2,V3,…Vn] );

Fungsi
Fungsi adalah kumpulan pernyataan-pernyataan yang dibentuk untuk menyelesaikan suatu tugas. Hasil dari fungsi adalah nama fungsi. Hasil fungsi hanya menghasilkan satu nilai.
Berikut adalah beberapa cara mendeklarasikan fungsi :
* Fungsi tanpa parameter
Function Judul :TipeHasil;
Begin

End;
* Fungsi dengan parameter nilai (Parameter tidak diawali kata Var)
Function Judul(Pengenal1 : Tipe; Pengenal2 : Tipe) : TipeHasil;
Begin

End;
* Fungsi dengan paramater acuan (Parameter diawali kata Var)
Function Judul(Var Pengenal1 : Tipe; Pengenal2 : Tipe) : TipeHasil;
Begin

End;

Misalkan Anda ingin membentuk suatu fungsi absolute suatu bilangan, kode programnya dapat seperti berikut ini :

Program AbsoluteBilangan;
Uses Crt;
Function ABSO(X:Real) : Real;
Begin
ABSO:=-X;
End;
Begin
Clrscr;
Writeln(‘Absolute -8 adalah ‘,Abso(-8));
Writeln(‘Absolute 80 adalah ‘,Abso(80));
Readln;
End.

Fungsi yang telah disediakan oleh Pascal seperti : Readkey, Upcase, Chr, Ord dalam pembentukannya juga mengikuti aturan di atas. Berikut ini contoh-contoh deklarasi dari fungsi Readkey, Upcase, Chr dan Ord yang diambil dari Help Turbo Pascal Language Manual Reference.
* Readkey
Function Readkey : Char
* Upcase
Function Upcase (Ch : Char) : Char;
* Chr
Function Chr(B : Byte) : Char;
* Ord
Function Ord(Ch : Char) : Longint;

Tugas :
1. PT. Asuransi Jaya beralamat di Jln. Mangkubumi No. 7 Yogyakarta ingin membuat suatu sistem informasi penggajian pegawai. Banyaknya pegawai di perusahaan tersebut adalah 400 orang. Aturan untuk menentukan gaji berdasarkan golongan dan tunjangan. Total gaji di atas Rp.2.000.000 dikenakan pph sebesar 8% sedangkan yang lebih kecil dari itu dikenakan pph 5%. Buatlah program pascal dengan memanfaatkan array dan record untuk menghasilkan output seperti berikut ini :
PT. Asuransi Jaya
Jln. Mangkubumi No. 7 Yogyakarta
No Nama Alamat JlhAnak Gol Gaji Pokok Tunjangan Gaji Kotor Pph GajiBersih Ttd

Tabel Gaji Berdasarkan Golongan
Gol Gaji Pokok
I
II
III
IV Rp. 2000000
Rp. 2500000
Rp. 3000000
Rp. 4000000

Tabel Tunjangan Berdasarkan JlhAnak
JlhAnak Tunjangan Per Anak
1-3
3 … 100000
3 * 100000

2. Dengan memanfaatkan array buatlah segitiga pascal seperti berikut ini :
1——————————————–1
1 1————————————-2
1 2 1——————————3
1 3 3 1———————–4
1 4 6 4 1—————-5
1 5 10 10 5 1———6
…..…….>7
……..….>N
Sebagai input data adalah N.
3. Buatlah program untuk mengurutkan data penduduk Desa Wonosari dari tahun 1995 s/d 2005 di bawah ini secara menaik (ascending) dan menurun (descending).

Tahun 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005
Jlh 2012 1912 2500 2400 2390 2200 2555 2400 2699 3001 2989

4. Diketahui matrik A dan B seperti berikut ini :

A = 2 5 B= 5 7 Brs
4 5 9 8 Brs

Klm Klm

Buatlah program untuk menentukan :
• Anm – Bnm
• Anm * Bmk

Ctt :
• Matrik yang dapat dikurangi bila jumlah kolom dan baris kedua matrik sama
• Matrik yang dapat dikalikan bila jumlah kolom matrik A sama dengan jumlah baris matrik B

Modul V

MODUL V

Tujuan
• Mahasiswa memahami penggunaan pernyataan FOR
• Mahasiswa memahami penggunaan pernyataan WHILE
• Mahasiswa memahami penggunaan pernyataan REPEAT

Ada kalanya Anda ingin mengulangi pernyataan yang sama lebih dari satu kali. Sebagai contoh misalkan Anda ingin mencetak kalimat STTI RESPATI sebanyak 10 kali, maka pernyataan yang yang mungkin Anda tulis seperti berikut ini :
Kode Program Keterangan
Begin
Writeln(‘STTI RESPATI STTI RESPATI ‘+
‘STTI RESPATI STTI RESPATI’+
‘STTI RESPATI STTI RESPATI’+
‘STTI RESPATI STTI RESPATI’+
‘STTI RESPATI STTI RESPATI’);
End. Awal program
Cetak string STTI RESPATI 10 x

Akhir program

Atau
Kode Program Keterangan
Begin
Writeln(‘STTI RESPATI’);
Writeln(‘STTI RESPATI’);
Writeln(‘STTI RESPATI’);
Writeln(‘STTI RESPATI’);
Writeln(‘STTI RESPATI’);
Writeln(‘STTI RESPATI’);
Writeln(‘STTI RESPATI’);
Writeln(‘STTI RESPATI’);
Writeln(‘STTI RESPATI’);
Writeln(‘STTI RESPATI’);
End. Awal program
Cetak STTI RESPATI 1x

Cetak STTI RESPATI 10x
Akhir program

Misalkan Anda disuruh mencetak kata STTI RESPATI sebanyak 1000x, Apa yang mesti Anda lakukan ? Apakah mengetik kata STTI RESPATI sebanyak 1000x ? Masalah di atas dapat diatasi dengan menggunakan pernyataan perulangan (loop) : FOR, WHILE atau REPEAT yang telah disediakan Pascal.

1. Pernyataan FOR
Pernyataan perulangan For digunakan untuk mengulangi dengan lompat-lompat satu. Lompatan bisa ke positip (nilai naik satu) ataupun negatip (nilai turun satu).
a. Pernyataan FOR Menaik
B.U : For := NilaiAwal To NilaiAkhir Do

Ket : For : kata cadang
Pengenal : pengenal yang telah dideklarasikan di bagian Var dan harus bertipe Integer (integer, byte, shortInt, word ataupun Longint)
Nilai Awal : Nilai Awal perulangan. Nilai awal dapat dalam bentuk ekspresi asal bernilai Integer. Bila Nilai Awal lebih besar dari Nilai Akhir maka pernyataan tidak akan dikerjakan.
Nilai Akhir : Nilai Akhir perulangan. Nilai akhir dapat dalam bentuk ekspresi asal bernilai Integer.
Pernyataan : Pernyataan yang akan diulang. Bila pernyataan lebih dari satu baris, maka pernyataan harus diawali kata cadang begin dan diakhiri kata cadang end.

Kasus I. Dari permasalahan sebelumnya, maka untuk mecetak STTI RESPATI sebanyak 10x dapat kita gunakan pernyataan FOR positip seperti kode berikut ini:
Kode Program Keterangan
Program CetakSTTI10x;
Uses Crt;
Var
L : Byte;
Begin
Clrscr;
For L:= 1 To 10 Do
Writeln(‘STTI RESPATI’);
Readln;
End. Judul program
Deklarasi unit crt
Deklarasi variabel

Awal program
Bersihkan layar output
Ulangi L mulai dari 1 s/d 10
Cetak STTI RESPATI
Tunggu penekanan tombol Enter
Akhir program

b. Pernyataan For Menurun
B.U : For := NilaiAwal DownTo NilaiAkhir Do

Ket : For : kata cadang
Pengenal : pengenal yang telah dideklarasikan di bagian Var dan harus bertipe Integer (integer, byte, shortInt, word ataupun LongInt)
Nilai Awal : Nilai Awal perulangan. Nilai awal dapat dalam bentuk ekspresi asal bernilai Integer. Bila Nilai Awal lebih kecil dari Nilai Akhir maka pernyataan tidak akan dikerjakan.
Nilai Akhir : Nilai Akhir perulangan. Nilai akhir dapat dalam bentuk ekspresi asal bernilai Integer.
Pernyataan : Pernyataan yang akan diulang. Bila pernyataan lebih dari satu baris, maka pernyataan harus diawali kata cadang begin dan diakhiri kata cadang end.

Kasus II. Dari permasalahan sebelumnya, maka untuk mecetak STTI RESPATI sebanyak 10x dapat kita gunakan pernyataan FOR negatip seperti kode berikut ini:
Kode Program Keterangan
Program CetakSTTI10x;
Uses Crt;
Type
Cacah = 1..10;
Var
L : Cacah;
Begin
Clrscr;
For L:= 10 DownTo 1 Do
Writeln(‘STTI RESPATI’);
Readln;
End. Judul program
Deklarasi unit crt
Deklarasi tipe

Deklarasi variabel

Awal program
Bersihkan layar output
Ulangi L mulai dari 10 s/d 1
Cetak STTI RESPATI
Tunggu penekanan tombol Enter
Akhir program

Kasus III. Anda disuruh memasukkan suatu Angka. Angka yang Anda masukkan menyatakan banyaknya karakter * yang akan dicetak.
Kode Program Keterangan
Program Cetak*;
Uses Crt;
Label
Ulangi;
Var
Cacah,L : LongInt;
Jawab : Char;
Begin
Ulangi:
Clrscr;
Write(‘Banyak karakter * yang dicetak : ‘);
Readln(Cacah);
For L:=1 To Cacah Do
Writeln(L,’*’);
Writeln;
Write(‘Cetak karakter Lagi : ‘);
Readln(Jawab);
IF Upcase(Jawab)=’Y’ Then Goto Ulangi;
End. Judul program
Deklarasi unit crt
Deklarasi label

Deklarasi variabel

Awal program
Label ulangi
Bershihkan layar output
Input Cacah

Ulangi mulai dari 1 s/d Cacah

Cetak baris baru

Input Jawab
Jika Jawab = Y locat ke label Ulangi
Akhir program

Kasus IV. Tabel di bawah ini adalah data penduduk pulau XXX mulai tahun 2000 s/d 2005.
Tahun Jumlah Penduduk
2000
2001
2002
2003
2004
2005 200000
230000
240000
250000
300000
350000

Anda disuruh untuk membuat diagram batang horizontal seperti gambar di bawah ini :

JUMLAH PENDUDUK PULAU XXX
THN. 2000 s/d 2005

Tahun
2000 : ░░░░░░░░░░░░░░░░░░░░
2001 : ░░░░░░░░░░░░░░░░░░░░░░░
2002 : ░░░░░░░░░░░░░░░░░░░░░░░░
2003 : ░░░░░░░░░░░░░░░░░░░░░░░░░
2004 : ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
2005 : ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

Ket : ░ 10000 Jiwa

Langkah – Langkah penyelesaian kasus di atas dapat seperti berikut ini :
1. Mulai
2. I = 2000
3. Tentukan JlhPenduduk. Mis JlhPenduduk= 200000
4. Skala = JlhPenduduk Div 10000
5. For I:= 1 To Skala Do
Cetak ░
6. I = I +1
7. Jika I := NilaiAwal To NilaiAkhir Do
For :=NilaiAkhir DownTo NilaiAwal Do

2. For := NilaiAwal To NilaiAkhir Do
Begin
For :=NilaiAkhir DownTo NilaiAwal Do
Begin

End;

:= NilaiAwal To NilaiAkhir Do
Begin
For :=NilaiAkhir DownTo NilaiAwal Do
Begin

For := NilaiAwal To Nilai Akhir Do

End;

Do

Ket :
: ekspresi yang menghasilkan nilai boolean (true/false)
: pernyataan yang akan dikerjakan bila kondisi bernilai benar. Bila pernyataan lebih dari 1 baris, maka pernyataan tersebut harus diapit kata cadang begin dan end.

Kasus VI. Menampilkan bilangan genap atau ganjil dari 1 s/d 100.
Kode Program Keterangan
Program GenapGanjil;
Uses Crt;
Const
Ganjil =’Bilangan Ganjil 1 s/d 100’;
Genap=’Bilangan Genap 1 s/d 100’;
Var
I : Byte;
Jawab : Char;
Begin
Clrscr;
Jawab=’’;
While Not (Jawab In [‘P’,’p’,’L’,’l’]) Do
Begin
Write(‘Tampilkan Bilangan Gena[p]/Ganji[l] ? ’);
Readln(Jawab);
End;
If Upcase(Jawab)=’P’ Then
Begin
Writeln(Genap);
I:=1;
While I 0) Then
Write(I:5)
Inc(I);
End;
End;
End; Judul program
Deklarasi unit
Deklarasi konstanta

Deklarasi variabel

Awal program
Bersihkan layar output
Jawab = ‘’
Bila tidak Jawab bernilai P p L l maka
Awal blok while
Cetak string
Input jawab
Akhir blok while
Jika jawab diubah menjadi huruf besar nilainya P maka
Awal blok P
Cetak konstanta genap
I =1
Bila I Do
While Do
While Do

Ket :
: ekspresi yang menghasilkan nilai boolean (true/false)
: pernyataan yang akan dikerjakan bila kondisi bernilai benar. Bila pernyataan lebih dari 1 baris, maka pernyataan tersebut harus diapit kata cadang begin dan end.

Seperti nested for , maka dengan pernyataan while juga Pascal memungkinkan kita membuat nested while (while di dalam while). Penggunaan while di dalam while tergantung dari permasalahan yang dijumpai. Hal mendasar yang penting diingat bahwa while yang terdalam akan dikerjakan terlebih dahulu sampai selesai.

Kasus VII. Selama Anda tidak menekan suatu tombol, tampilkalah teks berjalan STTI RESPATI YOGYAKARTA Jurusan Sistem Informasi Dari Kanan Layar Ke Kiri Layar Output.
Kode Program Keterangan
Program TeksJalan;
Uses Crt;
Const
Teks =’STTI RESPATI Yogyakarta Jurusan Sistem Informasi’;
Selesai =’Tekan Sembarang Tombol –> Keluar’;
Var
I : 0..79;
J,PjgTeks : Byte;
Sem : String[100];
Begin
TextBackGround(Blue);
clrscr;
TextColor(white);
GotoXY(80-Length(Selesai),24);
write(Selesai);
PjgTeks:=Length(Teks);
While Not KeyPressed Do
Begin
J:=1; I:=79;
While Not KeyPressed Do
Begin
IF J

Until

Kasus VIII. Tentukanlah jumlah deret berikut ini :

Kode Program Keterangan
Program Deret1;
Uses crt;
Var
I : Byte;
Jlh : Real;
Begin
Clrscr;
Write(‘Masukkan N : ‘);
Readln(N);
I:=1;
Jlh:=0;
Repeat
Jlh:=Jlh+1/I;
Inc(I);
Until (I>N)
Writeln(‘Jumlah Deret Adalah : ‘,Jlh:8:4);
ReadKey;
End. Judul program
Deklarasi unit
Deklarasi variabel

Awal program
Bersihkan layar output
Cetak string
Masukkan nilai N
I =1
Jlh = 0
Ulangi
Jlh = jlh + 1/I
I = I + 1
Sampai nilai I > N
Cetak Jlh
Tunggu penekanan sembarang tombol
Akhir program

b. Repeat Di Dalam Repeat (Nested Repeat)
B. U : Repeat

Repeat

Until

Until

4. Gabungan For, While atau Repeat
Bentuk-bentuk penggabungan pernyataan For, While maupun Repeat harus mengikuti aturan dasar pada bahasan sebelumnya. Dengan demikian bila terdapat pernyataan For di dalam While maka harus jelas akhir dari pernyataan For tersebut. Berikut ini beberapa bentuk penggabungan pernyataan For, While maupun Repeat.
1. For := NAW To NAK Do
Begin
While Do
Begin

Repeat

Until
End;
End;

2. While Do
Begin
While Do
Begin
For := NAK DownTo NAW Do
Begin

Repeat

Until
End;
End;
End;

5. Beberapa Prosedur Yang Berkaitan Dengan Pernyataan Perulangan
a. Break  keluar dari pernyataan perulangan tempat prosedur break berada
Pada keadaan normal, semua perulangan akan dikerjakan dari awal sampai akhir. Namun, bila suatu saat kita menginginkan mengakiri perulangan tersebut dapat digunakan prosedur break. Selain dari pada prosedur break ini sebenarnya kita juga dapat menggunakan pernyataan goto, tetapi penggunaan pernyataan ini tidak dianjurkan
Kode Program Keterangan
Program KeluarPaksa;
Uses crt;
Var
K,l : Byte;
Begin
For k:= 1 To 5 Do
Begin
For l:= 1 to k Do
Begin
If l = 3 then break;
Write(‘*’);
End;
Writeln;
End;
End. Judul program
Pengarah kompiler
Deklarasi variabel

Awal program
Ulangi k dari 1 s/d 5
Awal blok perulangan k
ulangi l dari 1 s/d k
Awal blok perulangan l
Jika l = 3 maka keluar dari blok perulangan l
cetak karakter * tanpa ganti baris
ganti baris
akhir blok perulangan l
akhir blok perulangan k
akhir program

b. Continue  kembali ke kondisi pernyataan berulangan tempat prosedur continue berada
Kode Program Keterangan
Program KembaliKeKondisi;
Uses crt;
Var
K : Byte;
Begin
For k:= 1 To 100 Do
Begin
If (k mod 2 = 0) then continue;
Writeln(i:5);
End;
End. Judul program
Pengarah kompiler
Deklarasi variabel

Awal program
Ulangi k dari 1 s/d 100
Awal blok perulangan k
Jika K dibagi 2 sisa baginnya 0 (bil. Genap) maka kembali ke for k
Cetak I dengan lebar tempat 5 karakter
Akhir blok perulangan l
akhir program
Tugas

1. Buatlah program untuk menentukan deret fibonacci berikut ini :
1 1 2 3 5 8 13 21 …
2. Tentukanlah jumlah deret berikut ini dimana N = 100

3. Buatlah program dengan memanfaatkan perulangan untuk menampilkan sekilas info tentang STTI RESPATI Yogyakarta Jurusan Sistem Informasi. Program harus memberikan informasi yang jelas serta tampilan animasi yang baik. Program akan berhenti bila pengguna menekan tombol karakter B (Berhenti). Dan bila tidak ada tombol ditekan selama 5 detik maka program aktif kembali.

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

Modul III

MODUL III
Tujuan :
• Memahami ciri umum program komputer
• Memahami pengertian deklarasi lebih lanjut
• Memahami pengertian ekspresi
• Memahami pengertian pernyataan sederhana dan pernyataan majemuk
• Memahami input dan output

3.1. Ciri Program Komputer
Umumnya setiap program komputer memiliki ciri-ciri berikut ini :
• dijalankan secara berurutan (sequence) dari atas ke bawah (awal dan akhir)
• memiliki pernyataan bersyarat (IF …. Then, IF .. Then .. Else…, Case… OF) dan
• memiliki pernyataan berulangan (For… Do, While….Do, Repeat … Until)

Untuk membentuk ke tiga syarat tersebut program memiliki tahap-tahap :
• Input
• Proses
• Output
Sistem Kerja Komputer Sistem Kerja Program

Anda perhatikan kembali modul I hal 1, diagram alir (flow chart) menjumlahkan dua buah bilangan seperti gambar di bawah ini :

Program Menjumlahkan(A,B);
Var
A, B : Integer;
Begin
A:=5;
B:=15;
C:=A+B;
Writeln(C);
End.

3.1. Kode Program dan Flow Chart Menjumlahkan Dua Buah Bilangan Integer
3.2. Deklarasi
Di modul II kita telah mempelajari pengenal (identifier). Mengapa kita mesti menggunakan pengenal ? Karena program Pascal mewajibkan kita mendeklarasikan pengenal sebelum digunakan. Pengenal dideklarasikan (dinyatakan) dibagian mana saja ? Pengenal dapat kita nyatakan di ketiga blok program pascal, yaitu : bagian judul, deklarasi, dan pernyataan.
Baiklah, untuk lebih memahami kapan harus mendeklarasikan suatu pengenal kita ambil contoh menghitung nilai akhir seorang mahasiswa, yang mana nilai akhir dinyatakan dengan rumus:
NA = ((3*NT+3*NM+4*NS)/100), dimana NA : Nilai Akhir
NT : Nilai Tugas
NM : Nilai Mid
NS : Nilai Semester
Menurut Anda, kira-kira apa yang harus kita inputkan untuk mendapatkan nilai akhir seorang mahasiswa ? Ya, jawaban yang pasti adalah Nilai Akhir, Nilai Tugas dan Nilai Mid. Dan Anda mungkin bertanya lagi apakah Nama, Nim, Alamat, Nama Orang Tua, Asal SMA, E-Mail dari mahasiswa tersebut tidak perlu diinput ? Bisa saja. Data-data pendukung tersebut bisa saja digunakan, tergantung dari informasi yang ingin kita sampaikan kepada pengguna/pembaca program kita. Misalkan untuk kasus di atas data nim ataupun ditambah Nilai Tugas, Nilai Mid, Nilai Semester dan Nilai Akhir mungkin sudah cukup. Kemudian apakah data Nilai Akhir tidak perlu diinput ? Tidak. Bila Nilai Akhir Anda input, maka sebenarnya fungsi komputer untuk membantu mempercepat pengolahan data tidak Anda manfaatkan denga benar. Lagi pula berdasarkan rumus, bahwa Nilai akhir merupakan perhitungan dari ketiga nilai input. Untuk itu, kita gunakan komputer untuk melakukan perhitungan tersebut. Namun yang jelas walaupun Nilai akhir tidak diinput, jika dia digunakan sebagai penampung hasil perhitungan, maka Nilai Akhir tersebut juga harus dideklarasikan.

3.2.1. Deklarasi Variabel
Data yang Anda inputkan mungkin puluhan, ratusan bahkan ribuah mahasiswa dengan menggunakan program yang sama. Karena tiap data mahasiswa selalu berubah, maka pengenal untuk data mahasiswa tersebut harus Anda deklarasikan di bagian Var (Variabel).
Deklarasi Variabel diletakkan setelah judul program. Bila terdapat pernyataan Uses maka deklarasi variabel juga diletakkan setelah deklarasi Uses (unit). Selain dari pada kedua aturan sebelumnya deklarasi variabel dapat Anda ubah-ubah posisinya dengan deklarasi constata, type, label, prosedur dan fungsi.
Berikut ini adalah kode program menghitung nilai akhir mahasiswa yang pengenalnya kita deklarasikan di bagian var (variabel) karena nilai pengenal tersebut akan berubah-ubah selama program berjalan (run).
Cara menyatakan pengenal di bagian Var adalah sebagai berikut : bila pengenal lebih dari satu maka antar pengenal harus dipisahkan oleh koma diikuti, kemudian diikuti karakter titik dua, tipe data dan harus diakhiri dengan karakter titik koma.
Kode Program Keterangan
{Program Hitung Nilai Akhir
Nama File : ProgNA
Oleh : Betra Ginting
Nim : 08133245
Tgl : 13 Oktober 2005
Sekolah : STTI Respati}

Program HitungNilaiAkhir;
Var
Nim : String[9];
Nama : String[25];
NT, NM, NS, NA : Real;
Begin
Write(‘Nim : ‘);readln(Nim);
Write(‘Nama : ‘);readln(Nama);
Write(‘Nilai Tugas : ‘);readln(NT);
Write(‘Nilai Mid : ‘);readln(NT);
Write(‘Nilai Semester : ‘);readln(NT);
NA:=((3*NT+3*NM*4*NS)/100);
Writeln(‘Nilai Akhir : ‘,NA);
End. Setiap karakter diantara kurung kurawal buka dan kurung kurawal tutup dianggap komentar. Komentar tidak diterjemahkan oleh penterjemah (compiler) pascal.

Judul program
Deklarasi variabel
Nim dengan tipe string dan panjang max.9 karakter
Nama dengan tipe string dan pajang max 25
NT, NM, NS, NA bertipe real (bilangan desimal)

Masukkan data Nim
Masukkan data Nama
Masukkan nilai Tugas
Masukkan nilai Mid
Masukkan nilai Tugas
Hitung Nilai Akhir
Cetak nilai akhir.

Gambar 3.2. Kode Program Menentukan Nilai Akhir-1

Di atas telah kita nyatakan bahwa, apakah perlu memasukkan data Nim dan Nama dala kode program ? Coba kita deklarasi Nim dan nama beserta input datanya di blok pernyataan, maka kode program sebelumnya akan terlihat seperti di bawah ini :

Kode Program
Keterangan
{Program Hitung Nilai Akhir
Nama File : ProgNA
Oleh : Betra Ginting
Nim : 081332445
Tgl : 13 Oktober 2005
Sekolah : STTI Respati}

Program HitungNilaiAkhir;
Var
NT, NM, NS, NA : Real;
Begin
Write(‘Nilai Tugas : ‘);readln(NT);
Write(‘Nilai Mid : ‘);readln(NT);
Write(‘Nilai Semester : ‘);readln(NT);
NA:=((3*NT+3*NM*4*NS)/100);
Writeln(‘Nilai Akhir : ‘,NA);
End. Setiap karakter diantara kurung kurawal buka dan kurung kurawal tutup dianggap komentar. Komentar tidak diterjemahkan oleh penterjemah (compiler) pascal.

Judul program
Deklarasi variabel
NT, NM, NS, NA bertipe real (bilangan desimal)

Masukkan nilai Tugas
Masukkan nilai Mid
Masukkan nilai Tugas
Hitung Nilai Akhir
Cetak nilai akhir.

Gambar 3.3. Kode Program Menentukan Nilai Akhir-2

Dimana letak perbedaan antara Gambar 3.3 dan Gambar 3.3 yang Anda perolah ? Kode program mana yang lebih jelas memberikan informasi ? Apakah kita juga perlu memasukan data orang tua, asal SMA ? :)
Bagaimana kalau nilai tugas tidak diinput ? Bila Nilai Akhir diinput apakah ada masalah ?
Bila nilai tugas tidak diinput tentu saja program yang kita buat salah, karena nilai tugas perlu diinput untuk tiap orang mahasiswa. Bila nilai akhir diinput tentu saja tidak masalah, tetapi program Anda tentu tidak efektif, karena Anda telah menyia-nyiakan kemanfaatan dari komputer, yakni : pengolahan data. :)

3.2.2. Deklarasi Konstanta
Bila suatu saat Anda ingin agar pengenal yang Anda deklarasikan tidak berubah-ubah selama program dijalankan (run), maka pengenal tersebut lebih baik Anda deklarasikan di bagian Const (konstanta). Kita ambil contoh nilai π (phi) = 3.14. Misalkan kita ingin menghitung keliling dan luas suatu lingkaran, maka rumus yang digunakan adalah :
K = 2πr
L = π r2, dimana K : Keliling lingkaran
L : Luas Lingkaran
π : nilai phi = 3.14 r
r : jari-jari lingkaran

Menurut Anda apa yang mesti kita input ? mungki saja jawaban Anda adalah phi dan jari-jari. Jawaban tersebut memang masuk akal, tetapi karena nilai phi telah kita ketahui adalah nilai konstata (tetap), maka nilai phi tersebut tidak perlu lagi kita input sewaktu program berjalan (run). Dengan demikian phi kita nyatakan di deklarasikan Const (konstata).
Deklarasi Const Anda deklarasikan setelah judul program bila tidak terdapat deklarasi Uses. Bila terdapat deklarasi Uses, maka deklarasi Const harus Anda lettakkan setelah dekalarasi Uses. Setelah kedua aturan urutan deklarasi yang lainnya (variabel, type, prosedur, fungsi, label) tidak menjadi permasalahan.
Bila dalam deklarasi variabel pengenal lebih dari satu dapat memiliki tipe yang sama, maka dalam deklarasi konstata diwajibkan bahwa hanya satu pengenal mewakili satu nilai. Nilai yang diwakili konstata dapat dalam bentuk ekspresi karena ekspresi menghasilkan nilai.
Deklarasi konstanta ditandai dengan kata cadang Const diikuti oleh pengenalnya kemudian tanda sama dengan dan nilai ataupun ekspresi. Berikut ini adalah kode program untuk menghitung keliling dan luas dari lingkaran.

Kode Program Keterangan
Program HitungKelilingDanLuasLingkaran;
Uses crt;
Const
Phi = 3.14;
Var
Jari2,K,L : Real;
Begin
Clrscr;
Write(‘Jari – Jari Lingkaran : ‘);readln(Jari2);
K:=2*phi*Jari2;
L:=phi*Jari2*Jari;
Writeln(‘Keliling Lingkaran : ‘,K);
Writeln(‘Luas Lingkaran : ‘,L);
Readln;
End. Judul program
Deklarasi unit crt (chatode ray tube)
Deklarasi konstata phi = 3.14

Deklarasi variabel

Mulai
Prosedur Clrscr yang terdapat di dalam unit Crt. Fungsinya untuk membersihkan output. di layar.
Masukkan nilai jari-jari
Hitung keliling
Hitung luas
Cetak keliling lingkaran
Cetak luas lingkaran
Readlan adalah suatu prosedur. Prosedur ini terdapat di dalam unit system. Fungsinya adalah menunggu penekanan tombol Enter.
Akhir
Gambar 3.4. Kode Program Menghitung Keliling dan Luas Lingkaran

3.2.3. Deklarasi Label
Aturan nomor satu dari ciri program adalah bahwa urutan program harus dari atas ke bawah, namun dalam keadaan tertentu ciri tersebut dapat kita langgar (mis: untuk kasus keluar dari perulangan terdalam dalam suatu perulangan dalam perulangan / nested loop).
Pada saat masa awal berkembangnya pemrograman tingkat tinggi sekitar tahun 1970 (seperti : Basic, Cobol, Fortran) masih banyak menggunakan statement goto (loncat) ke suatu nomor statement yang lainnya. Lompatan ke suatu nomor tidak dibatasi. Karena keleluasaan ini dalam perawatannya banyak memakan waktu karena untuk penganalisaannya membutuhkan ketelitian. Coba Anda perhatikan statement berikut ini :

Kode Program Qbasic Output Keterangan
5 print “Mulai”
10 A = 5
15 B = 10
20 Goto 35
25 print C,“Selesai”
30 End
35 C = A + B
40 Goto 25 5
10
15
35

25

30 Cetak mulai
Nilai A = 5
Nilai B = 10
Lompat ke baris 35
Hitung nilai C = A+B (C = 5 + 10, C = 15)
Lompat ke baris 25
Cetak C dan string Selesai
Selesai

Gambar 3.5. Kode Program Label Dengan QBasic (Quick Basic)

Hal seperti di atas juga bisa kita lakukan di program Pascal, tetapi dengan syarat nomor lompatan (label) harus kita deklarasikan terlebih dahulu setelah kata Label diikuti oleh pengenal label. Pengenal label dapat dalam pengenal diawali huruf ataupun angka (pengecualian ini hanya berlaku untuk pengenal label). Angka yang dapat Anda tentukan bagi pengenal angka maksimum dapat terdiri dari 4 digit (9999).
Deklarasi Label harus dideklarasikan setelah deklarasi setelah judul program bila Ada atau setelah dekalrasi Uses (unit) diikuti oleh pengenal. Bila pengenal label lebih dari satu, maka antara pengenal tersebut harus ada tanda koma. Label tidak memiliki tipe.
Bila setelah judul program atau deklarasi unit antara label dengan deklarasinya lainnya (var, fungsi, prosedur, constanta, type) dapat Anda tukar-tukar.
Kode program dengan Qbasic di atas akan kita ubah ke program Pascal, seperti di bawah ini.

Kode Program Keterangan
Program Lompat2;
Uses Crt;
Label
Awal,Akhir,35,25;
Var
A, B : Integer;
Begin
Clrscr;
Awal :
writeln(‘Mulai’);
A:=5;
B:=10;
Goto 35;
25 :
Writeln(C,’Selesai’);
Exit;
35 :
C:=A+B;
Goto 25;
End. Judul Program
Deklarasi Unit Crt
Dekalrasi Label

Deklarasi Variabel

Mulai
Prosedur Clrscr yang terdapat di dalam unit Crt. Fungsinya untuk membersihkan output. di layar.
Label Awal
Cetak string mulai
Nilai A = 5
Nilai B = 10
Loncat Ke Label 35
C= A+ B (C = 5 + 10, C = 15)
Loncat ke Label 25
Cetak C (15) dan string Selesai
Exit adalah prosedur yang fungsinya untuk keluar dari blok program terdalam (begin .. end atau prosedur atau fungsi)

Gambar 3.6. Kode Program Contoh Deklarasi Label

Apa kesimpulan Anda tentang program 3.6. ? :) Coba Anda bandingkan dengan kode program 3.1. !. Kesimpulan Anda …?

3.2.4. Deklarasi Type
Pascal mengizinkan Anda untuk membuat tipe data yang baru. Untuk melakukan hal tersebut dapat Anda lakukan di bagian deklarasi Type. Tipe baru yang Anda nyatakan di bagian Type, selanjutnya suatu pengenal dengan tipe baru tersebut dapat Anda nyatakan di bagian konstanta, variabel, prosedur, dan fungsi.
Kode Program Dengan Deklarasi Type Keterangan
Program InputUmur;
Type
BatasUmur = 1..125;
Var
Umur : BatasUmur;
Begin
Write(‘Masukkan Umur Anda : ‘);
Readln(umur);
End. Judul program
Deklarasi Type denga nama pengenal BatasUmur dan batasan nilai yang dapat dimuatnya 0 s/d 125
Deklarasi variabel dengan nama pengenal Umur dengan tipe data BatasUmur, berarti pengenal Umur dapat menampung data antara 0 s/d 125.
Kode Program Dengan Deklarasi Variabel Keterangan
Program InputUmur;
Var
Umur : ShortInt;
Begin
Write(‘Masukkan Umur Anda : ‘);
Readln(umur);
End. Judul program
Deklarasi variabel Umur dengan tipe shorInt. Tipe ShortInt dapat menampung data antara -127 s/d +128. Anda perhatikan bahwa pengenal umur dapat menerima bilangan negatif, sedangkan seperti kita ketahui umur seseorang haruslah lebih besar dari 1. Memang kode program ini tidak salah hanya saja kurang tepat.
Kode Program Deklarasi Type Keterangan
Type
Rumah = (Mewah, Menengah, RS, RSS);
Phiku = 3.14;
Nilai = 0..100;
Const
Phi = Phiku;
Var
JenisRumah : Rumah;
NilaiUjian : Nilai;
Begin
Writeln(Ord(Menengah));
Writeln(Phiku);
NilaiUjian := 70;
Writeln(NilaiUjian);
End. Deklarasi Type
Tipe data terbilang (enumerated)
Tipe data bilangan desimal (real)
Tipe dengan jenis data subjangkauan (subrange)
Kode Program Deklarasi Type Keterangan
Type
Mahasiswa = Record
Nim : String[9];
Nama : String[25];
IPK : Real;
End;
Var
DafMahasiswa : Mahasiswa;
Begin
Mahasiswa.Nim:=’08122456’;
Mahasiswa.Nama:=’Esron Barus’;
Mahasiswa.IPK:=2.75;
Writeln(Mahasiswa.Nim,Mahasiswa.Nama,
Mahasiswa.IPK);
Readln;
End. Deklarasi Type
Tipe data rekord
Field nim dengan tipe string
Field nama dengan tipe string
Field ipk dengan tipe real

Deklarasi variabel DafMahasiswa dengan tipe Mahasiswa.

Data field record dimasukkan dengan mengetikkan terlebih dahulu pengenal record diikuti titik dan field.

Gambar 3.7. Beberapa Contoh Penggunaan Deklarasi Type

3.2.5. Deklarasi Prosedur
Clrscr (Clear Screen) adalah salah satu controh prosedur yang telah disediakan oleh Pascal (built in), yang gunakan untuk memebersihkan output di layar dan meletakkan posisi kursor di absis (X) 0 dan ordinat (Y) 0. Prosedur clrscr; merupakan salah satu contoh prosedur yang tidak memiliki parameter (nilai yang dilewatkan ke prosedur tersebut), namun adakalanya bahwa prosedur memiliki parameter (nilai yang mesti dinyatakan pada saat pemanggilan prosedur tersebut).
Prosedur dapat anda deklarasikan setelah judul program ataupun setelah deklarasi unit. Deklarasi prosedur diawali kata cadang procedure diikuti oleh pengenal prosedur bila tidak Ada parameter maka setelah pengenal Anda cukup menambang karakter titik koma. Bila parameter dibutuhkan maka setelah pengenal prosedur Anda harus memulainya dengan kurung buka dan dikuti parameter beserta tipenya dan diakhiri dengan kurung tutup. Setelah deklarasi judul prosedur berikutnya pernyataan yang Anda tulis di harus diantara begin dan end, layaknya seperti blok pernyataan. Di dalam prosedur dapat juga anda dekalrasikan prosedur, yang disebut dengan prosedur tersarang (nested procedure).

Berikut adalah contoh prosedur tanpa parameter.
Contoh prosedur tanpa parameter Keterangan
Program CetakUcapan;
Uses crt;
Procedure Cetak;
Begin
Writeln(‘=========================’);
Writeln(‘Selamat Datang di STTI Respati’);
Writeln(‘=========================’);
End;
Begin
Clrscr;
Cetak;
Cetak;
Cetak;
Cetak;
End. Judul program
Deklarasi unit CRT
Deklarasi prosedur tanpa parameter
Awal prosedur
Cetak string
Cetak string
Cetak string
Akhir prosedur
Awal program utama
Bersihkan layar
Panggil prosedur cetak
Panggil prosedur cetak
Panggil prosedur cetak
Panggil prosedur cetak
Akhir program utama
Contoh prosedur tanpa parameter Keterangan
Program JumlahBilAB;
Uses crt;
Var
C : Real;
Procedure InputAB(Var A,B : Real);
Begin
Write(‘Nilai A ‘);readln(A);
Write(‘Nilai B ‘);readln(B);
End.

Prosedur JumlahAB(A,B : Real);
Begin
C:=A+B;
End.

Var
A,B : Real;
Begin
Clrscr;
InputAB(A,B);
Jumlah(A,B);
Writeln(A,’ + ‘,B,’ = ‘,C);
Readln;
End. Judul program
Deklarasi unit CRT
Deklarasi variabel global. Deklarasi global adalah deklarasi yang diletakkan di atas deklarasi yang lainnya dan pengenal dengan variabel global akan dikenal oleh seluruh statement di bawahnya.
Deklarasi prosedur InputAB berparameter A,B dengan tipe real
Awal prosedur
Input A
Input B
Akhir prosedur

Deklarasi prosedur JumlahAB berparameter A,B dengan tipe real
Awal prosedur
Hitung C=A+B
Akhir prosedur

Deklerasi variabel yang akan dikenal di seluruh blok setelah pendeklarasiannya.
Awal program utama
Bersihkan layar
Panggil prosedur InputAB dengan parmeter A,B
Panggil prosedur JumlahAB dengan paramter A,B
Cetak pengenal A,B, dan C
Tungguk penekanan tombol enter
Akhir program utama
Gambar 3.8. Beberapa Contoh Penggunaan Deklarasi Prosedur

3.2.6. Deklarasi Fungsi
Contoh fungsi seperti : Sin, Cos, Length, dan lain-lain. Fungsi-fungsi tersebut telah didefenisikan oleh program Pascal, karena itu kita tinggal pakai saja. Ciri umum suatu fungsi adalah memiliki nilai keluaran. Nilai keluaran daripada fungsi langsung diberikan kenama fungsi . Pendeklarasian fungsi sama dengan dekalrasi prosedur hanya saja didahulu dengan kata cadang Function diikuti parameter (bila ada) dan diikuti titik dua dan tipe keluaran dari fungsi tersebut. Perhatikan contoh fungsi sederhana berikut ini :
Contoh fungsi tanpa parameter Keterangan
Program Jawab;

Funtion BS : Boolean;
Begin
BS:=True;
End.

Var
Jawaban : Boolean;
Begin
Jawaban:=BS;
IF Jawaban Then
Writeln(‘Anda Benar’);
End. Judul program

Deklarasi fungsi dengan nama pengenal BS tanpa parameter dan hasil keluaran fungsi adalah Boolean (TRUE atau FALSE).
Awal fungsi
Nama fungsi diberi nilai TRUE
Akhir fungsi

Deklarasi variabel Jawaban dengan tipe Boolean

Awal program utama
Pengenal jawaban memanggil fungsi BS
Jika jawaban TRUE maka cetak string Anda Benar

Akhir program
Gambar 3.9. Beberapa Contoh Penggunaan Deklarasi Fungsi

3.2.6. Deklarasi Unit
Unit merupakan kumpulan dari konstata, tipe data, variabel-variabel, prosedur-prosedur dan fungsi-fungsi. Sebelumnya kita telah menggunakan unit CRT dibagian deklarasi Uses Crt. Sebenarnya terdapat 9 unit standard yang disediakan oleh Turbo Pascal pada saat Anda merancang program. Unit-unit tersebut adalah :
 Crt
 Dos
 Graph
 Graph3
 Overlay
 Printer
 System
 Turbo3
 WinDos

Unit CRT
Unit CRT dapat digunakan untuk mengontrol mode layar, kode keyboard diperluas (extended keyboard codes), warna, window dan suara.
CRT hanya dapat digunakan dalam program yang berjalan di sistem operasi IBM PC, AT, PS/2s, dan yang sesuai (compatible).
Berikut ini adalah beberapa controh prosedur dan fungsi pada unit crt :
Nama Fungsi/Prosedur Keterangan
AssignCrt Proc Menghubungkan suatu file text dengan layar CRT
ClrEol Proc Menghapus semua karakter mulai dari posisi kursor
ClrScr Proc Menghapus layar dan mengembalikan kursor ke posis 0,0 (kiri atas)
Delay Proc Menunggu waktu yang ditentukan dalam millisecond (1/1000 detik).
DelLine Proc Menghapus baris tempat kursor berada.
GotoXY Proc Memindahkan kursor ke posisi X,Y di layar
HighVideo Proc Memiliki karakter berintensitas tinggi.
InsLine Proc Menyisipkan baris kosong pada posisi kursor
KeyPressed Func Menentukan apakan suatu tombol telah ditekan di keyboard.
LowVideo . Proc Memiliki karakter berintensitas rendah
NormVideo Proc Memilih attribut awal teks mulai dari posisi kursor
NoSound Proc Menonaktifkan speaker internal komputer.
ReadKey Func Membaca satu karakter dari keyboard.
Sound Proc Memulai speakter internal komputer
TextBackground Proc Memilih warna latar belakang
TextColor Proc Memilih warna huruf
TextMode Proc Memilih mode teks
WhereX Func Mengembalikan koordinat X dari posis kursor yang aktif
WhereY Proc Mengembalikan koordinat Y dari posisi kursor yang aktif
Window Proc Membuat suatu window teks di layar

Unit DOS
Unit Dos digunakan untuk implementasi sistem operasi dan prosedur/funsi penanganan file.
Beberapa controh Unit DOS
Nama Prosedur/Fungsi Keterangan
GetDate Proc menghasilan tanggal yang aktif dari sistem operasi..
GetFTime Proc menghasilkan waktu dan tanggal file terakhir kali ditulisi.
GetTime Proc menghasilkan waktu yang aktif dari sistem operasi
PackTime Proc mengubah record DateTime kedalam 4 byte yang digunakan oleh prosedur SetFTime
SetDate Proc menentukan tanggal yang aktif dari sistem operasi
SetFTime Proc menentukan tanggal dan waktu file yang terakhir ditulisi
SetTime Proc menentukan waktu yang aktif dari sistem operasi
UnpackTime Proc menubah 4 byte yang dihasilkan prosedur GetFTime, FindFirst, FindNext kedalam rekord DateTime

Graph : unit untuk penanganan grafik
Graph3 : unit untuk penyesuaian dengan Turbo Pascal V.3
Overlay : unit untuk penanganan overlay
Printer : unit untuk penangan pencetakan
System : unit untuk penangan sistem
Turbo3 : unit untuk penyesuaian dengan Turbo Pascal v.3
WinDos : unit untuk penanganan sistem windows dan dos

Berikut ini adalah beberapa controh penggunaan unit.
Kode Program Keterangan
Program UnitCrtDos;
Uses Crt,Dos; Judul program
Deklarasi unit menggunakan unit Crt dan Dos
Program UnitCrtDosGraph;
Uses Crt,Dos,Graph; Judul program
Deklarasi unit menggunakan unit Crt, Dos dan Graph.
Gambar 3.10. Beberapa Contoh Penggunaan Deklarasi Unit

3.3. Ekspresi (Expressions)
Ekspresi adalah suatu pernyataan yang menghasilkan suatu nilai. Berikut ini adalah beberapa contoh ekspresi.
Ekspresi Keterangan
JlhBeli : Byte; Deklarasi JlhBeli tipe Byte dengan nilai antara 0 s/d +255
Total:=125; pengenal Total bernilai 125
Rata_Rata:=Jumlah(X)/N Pengenal rata-rata memanggil fungsi jumlah dan membanginya dengan nilai N
A=5+5*10/5 Pengenal A melakukan perkalian 5*10, membaginya dengan 5 dan menambah dengan 5 = 15.

Anda perhatikan ekspresi berikut ini :
X = 2 + 5;

Ket :
X merupakan pengenal yang akan menampung penjumlahan angka 2 dan 5.
Angka 2 disebut operand satu
Angka 5 dsebut operand dua
Symbol + disebut operator

Bila anda perhatikan bahwa operator tambah (+) menggunakan dua buah operand. Operator yang menggunakan dua buah operand disebut operator binary, sedangkan operator yang menggunakan satu buah operand disebut unary. Dan bila operator menggunakan dua tiga operand disebut ternary, dst.

X = +5

3.4. Pernyataan (Statement)
Pernyataan adalah himpunan dari symbol-symbol yang memiliki suatu pengertian bagi penterjemah komputer (compiler). Symbol-symbol dapat berupa satu karakter ataupun lebih dari satu karakter. Symbol satu karakter bisa saja berupa operator unary (+, -), himpunan dari karakter-karakter dapat membentuk reserved word (begin, end, var), himpunan dari karakter-karakter dapat ekspresi (JlhBeli*Harga).

3.4.1. Pernyataan Sederhana
Pernyataan sederhana adalah pernyataan yang hanya berisikan satu baris kode program. Antara pernyataan satu dengan pernyataan lainnya dipisahkan dengan tanda titik koma.

Kode Program Keterangan
Program Menjumlahkan(A,B);
Uses crt;
Var
A, B : Integer;
Begin
Clrscr;
A:=5;
B:=15;
C:=A+B;
Writeln(C);
End. Satu pernyataan dipisahkan oleh titik koma
Satu pernyataan
Satu pernyataan

Awal program
Satu pernyataan
Satu pernyataan
Satu pernyataan
Satu pernyataan
Satu pernyataan
Akhir program
Gambar 3.11. Contoh Penggunaan Pernyataan Sederhana

3.4.2. Pernyataan Majemuk
Pernyataan majemuk adalah pernyataan yang lebih dari satu pernyataan. Pernyataan majemuk dapat ditandai dari :
1. semua pernyataan diantara begin dan end
2. pernyataan if
3. pernyataan perulangan

Kode Program Keterangan
Program Menjumlahkan(A,B);
Uses crt;
Var
A, B : Integer;
Begin
Clrscr;
A:=5;
B:=15;
C:=A+B;
Writeln(C);
End. Satu pernyataan dipisahkan oleh titik koma
Satu pernyataan
Satu pernyataan

Awal program

Akhir program
Program Kelulusan;
Var
Nim : String[9];
IPK : Real;
JlhSks : Byte;
Begin
Write(‘Nim : ‘);readln(Nim);
Write(‘IPK : ‘);readln(IPK);
Write(‘JlhSKS : ‘);readln(JlhSks);
If IPK > 2.5 and JlhSks>120 Then
Writeln(‘Anda Lulus’)
Else
Writeln(‘Anda Tidak Lulus’);
End.

Var
I : integer;
Begin
For i:= 1 to 10 Do
Writeln(1,’* ‘,I,’ = ‘,1*i);
End.

Begin
While not KeyPressed Do
Writeln(‘Press A Key’);
End.

Var
I : Integer;
Begin
I:=I;
Repeat
Writeln(‘Aku’);
Writeln(‘Suka’);
Writeln(‘Kamu’);Inc(I,1);
Until I>10;
End.

Gambar 3.12. Beberapa Contoh Penggunaan Pernyataan Majemuk
3.5. Input dan Output
3.5.1. Input Data
3.5.1.1. Readln
Sampai saat ini setiap kali kita memasukkan suatu data anda menggunakan statement Readln. Readln merupakan prosedur yang terdapat di dalam unit system. Unit system secara otomatis ditambahkan oleh penterjemah pascal pada saat Anda mengcompile program pascal Anda (tidak seperti unit Crt yang harus Anda deklarasikan) dan Anda tidak diperkenankanuntuk mendeklarasikannya ulang di deklarasi unit.
Berikut ini adalah beberapa bentuk dari prosedur readln yang sampai saat ini telah pernah kita gunakan.
• readln;  menunggu penekanan tombol enter
• readln(x);  menerima input data yang akan disimpan di pengenal X dan menunggu penekanan tombol enter untuk lanjut.
• readln(a,b,c,d)  menerima input yang akan disimpan di pengenal a,b,c,d. Bila pengenal di readln lebih dari 1 maka antara nilai pengenal harus dipisahkan oleh (spasi = ASCII 32, tab = ASCI = 8, Enter = Ascii 13 dan 10)
Berikut ini contoh penggunaan prosedur readln.

Kode program Keterangan
Begin
Readln;
End. Menunggu penekanan tombol enter
Begin
Readln;readln;
Readln;readln;
End. Menggunggu penekanan tombol enter empat kali
Var
A,B,C : real;
Begin
Readln(A,B);
Writeln(A*B);
End.
Deklarasi variabel

Awal
Karena pengenal lebih dari satu, maka pada saat penginputan data antara pengenal harus ada spasi putih.
Cetak A kali B
Selesai
Gambar 3.13. Beberapa Contoh Penggunaan Prosedur Readln

3.5.1.2. Read
Pernyataan read juga berfungsi untuk membaca suatu input data dari keyboard. Beda Antara statement Read dan Readln adalah dengan statemen Readln berarti setelah pembacaan kursor gantri baris (Readln, Read = Baca, Ln = Line New), sedangkan dengan pernyataan readl kursor tidak ganti bari setelah membaca suatu input. Namun, dalam aplikasi program kedua statemen ini tidak akan jauh berbeda dan dapat dikatakan sama walaupun dari nama kedua prosedur berbeda.
Berikut ini contoh penggunaan prosedur readln.
Kode program Keterangan
Begin
Read;
End. Tidak menunggu penekanan tombol enter
Begin
Read;read;
Read;read;
End. Tidak menunggu penekanan tombol enter
Var
A,B,C : real;
Begin
Read(A,B,C);
Writeln(A*B/C);
End. Deklarasi variabel

Awal
Karena pengenal lebih dari satu, maka pada saat penginputan data antara pengenal harus ada spasi putih.
Cetak A kali B dibagi C
Selesai
Gambar 3.14. Beberapa Contoh Penggunaan Prosedur Read

3.5.1.3. Readkey
Readkey adalah fungsi. Readkey berfungsi untuk membaca satu karakter dari keyboard. Hasil pengembalian fungsi adalah suatu karakter atau suatu extended scan code. Karakter hasil tidak ditampilkan di layar.

uses Crt;
var
C: Char;
begin
Writeln(‘Please press a key’);
C := Readkey;
Writeln(‘ You pressed ‘, C, ‘, whose ASCII value is ‘, Ord(C), ‘.’);
end.
Deklarasi Unit Crt
Deklarasi variabel

Awal
Cetak Please press a key
Karakter yang ditekan disimpan di variabel C
Cetak karakter yang ditekan dan kedudukannya di tabel ASCII
Akhir
Gambar 3.15. Beberapa Contoh Penggunaan Fungsi Readkey

3.5.1.4. KeyPressed
KeyPressed adalah fungsi. Keypressed fungsinya menentukan apakah suatu tombol sudah ditekan (True) atau belum (False). Tombol yang ditekan dapat dibaca dari fungsi Readkey.

uses Crt;
begin
repeat
Write(‘STTI RESPATI’);
until KeyPressed;
end. Deklarasi unit crt
Awal
Ulangi
Cetak STTI RESPATI
Hingga ada tombol Ditekan
Akhir
Gambar 3.16. Contoh Penggunaan Fungsi KeyPressed

3.5.2. Output
Setiap program tentu memiliki output (keluaran). Output program dapat berupa hasil tampilan di layar ataupun cetakan ke printer. Untuk menata tampilan output Anda juga harus mempertimbangan dari pihak pemakai (user), Apakah output yang Anda buat telah sesuai dengan informasi yang dibutuhkan oleh pemakai program Anda ? Bila tidak berarti Anda harus menata kembali tampilan output program Anda.

3.5.2.1. Output di layar
Output dilayar digunakan untuk menentukan tata letak hasil tampilan program di layar monitor. Coba Anda perhatikan output program berikut ini :
Kode Program Output di Layar Keterangan
Begin
Writeln(‘Selamat Datang’);
Writeln(‘Di STTI Respati’);
End. Awal program
Cetak Selamat Datang di layar kemudian kursor turun
Cetak Di STTI Respati di layar kemudian kursor turun
Akhir program
Kode Program Format Output di layar Keterangan
Begin
Writeln(5:5);
Writeln(5/10:4:2);
End. Awal program
Cetak angka 5 dengan luas posisi 5 karakter
Cetak hasil 5/10 dengan luas posisi seluruhnya 4 dan dua dibelakang koma.

Format Integer : Pengenal:N
Perhatikan kembali kode program berikut ini
Kode Program Keterangan Output
begin
Writeln(5)
End. Luas posisi hanya 1 karakter 5

begin
Writeln(5:5);
End. 5

Var A,B : Integer;
Begin
A:=1000;
B:=5;
Writeln(A*B:6);
End.

Luas posisi A*B enam karakter 5 0 0 0

Format Desimal: Pengenal:N:M

Kode Program Keterangan Output
begin
Writeln(5/1)
End. Luas posisi 17 digit 5 . 0 0 0 0 0 0 0 0 0 0 E + 0 0

begin
Writeln(5/1:8);
End. Luas posisi 8 digit 5 . 0 E + 0 0

begin
Writeln(-5/1:8);
End. Luas posisi 8 digit - 5 . 0 E + 0 0

Begin
Writeln(-5/1:8:2) Luas posisi 8 digit dan 2 di belakang desimal - 5 . 0 0

Begin
Writeln(100:8.4);
End. Luas posisi 8 digit dan 2 di belakang desimal 8 . 0 0 0 0

3.5.2.2. Output Di Printer
Untuk mencetak output ke printer, Anda harus menggunakan deklarasi unit printer. Selanjutnya pada pernyataan yang ingin dicetak anda harus mendahuluinya dengan mengetikkan lst diikuti tanda koma dan daftar ekspresi.
Kode Program Output di Printer Keterangan
Uses Printer;
Begin
Writeln(lst,’Selamat Datang’);
Writeln(lst,’Di STTI Respati’);
End. Gunakan unit printer bila ingin mencetak ke printer
Awal program
Cetak diawali kata lst (list) dipisahkan koma dan diikuti ekspresi

Akhir program
Kode program output di layar dan printer Keterangan
Program LayarDanPrinter;
Uses Crt,Printer;
Var
A, B, C : Integer;
Begin
Clrscr;
Write(‘Nilai A : ‘);readln(A);
Write(‘Nilai B : ‘);readln(B);
C:=A+B;
Writeln(lst,A,’ + ‘,B,’ = ‘,C);
End. Judul program
Deklarasi unit crt dan printer
Deklarasi variabel

Awal program
Bersihkan layar
Input nilai A
Input nilai B
Hitung C = A + B
Cetak ke printer A + B = C
Akhir program

Tugas :
1. PT. ABC yang bergerak di bidang garmen memiliki aturan tersendiri dalam penggajian karyawannya. Gaji diberikan berdasarkan gaji pokok + gaji lembur. Gaji pokok ditentukan berdasarkan lama kerja pegawai bersangkutan, sedangkan gaji lembur ditentukan berdasarkan besarnya jam lembur * 10000. Manajemen menetapkan aturan gaji pokok pegawai berdasarkan lama kerja seperti tabel berikut:
Lama Kerja GP
> 15 Thn Rp. 2.500.000
10>LK LK 2, maka didapat 2 akar real yang berbeda
D = 2, maka didapat 2 akar real yang sama
D

Modul II

MODUL II

Tujuan :
• Mahasiswa dapat memahami struktur program Pascal serta dapat mengimplementasikannya dalam kode program
• Memahami elemen-elemen pembentuk program pascal

2.1. Pengantar
Dalam Modul I Anda telah mencoba membuat program Pascal pertama Anda. Mungkin Anda bertanya ‘Mengapa harus mengetik program Pascal seperti itu ? Adakah cara lain? Apa hak dan kewajiban yang mesti dilakukan dalam membuat program Pascal ?.” Mungkin masih banyak pertanyaan lainnya yang muncul di benak kita.
Seperti kita ketahui, program Pascal diciptakan oleh Prof. Niclaus Wirth, yang dibuatnya pada tahun 1971. Dia menciptakannya untuk tujuan pembelajaran dengan berbagi tata cara permainan (aturan-aturan : syntax, semantic dan struktur program). Aturan dan struktur tersebut dibuatnya secara terstruktur. Kemudian, pada tahun 1983, perusahaan Borland Internasional merevisi laporan pascal standard yang dibuat Prof. Nicalus Wirth dan Jansen yang diberi nama Borland Turbo Pascal 1.0. Aturan dan struktur tersebut terus dikembangkan perusahaan Borland hingga akhirnya pada tahun 1993 dikeluarkannya Borland Turbo Pascal 7.0. Kita dapat bayangkan, perkembangan aturan-aturan dan struktur program pascal selama 10 tahun, meskipun banyak perubahan secara umum konteksnya sama. Aturan-aturan dan struktur tersebutlah yang mesti kita kuasai, agar kita dapat membuat program pascal yang baik. Satu hal penting yang diperhatikan bahwa turbo pascal prinsipnya upward competible (program jalan bila versi yang lebih rendah dijalankan pada versi yang lebih tinggi).
Seorang guru bahasa Inggris berkata kepada muridnya “Menguasai 16 tenses adalah salah satu cara menguasai bahasa Inggris”. Benarkah demikian ? “Menguasai struktur dan aturan program pascal adalah salah satu cara menguasai bahasa Pascal”. Kalau salah satu cara sudah kita kuasai, pasti ada cara lainnya untuk lebih menguasainya.  Bila 16 tenses telah kita hapal, tentu kita tinggal mempraktekkannya. Analoginya, bila aturan dan struktur program pascal telah kita kuasai, dengan mempraktekkanya akan lebih menguasainya. Jadi dapat kita simpulkan kunci memahami pemograman Pascal adalah baca teorinya dan langsung mempraktekkannya di depan komputer.
2.2. Struktur Program Pascal
Baiklah kita buka kembali program pascal Pertama kita, yang isinya seperti terlihat seperti di bawah ini. Nomor baris sengaja ditambah untuk lebih memudahkan pembahasan.

Gambar 2.1. Contoh Program Pascal

Kalau Anda perhatikan yang ditebali adalah keywords artinya kata – kata yang telah ditetapkan sedemikian rupa (dalam keadaan default/standard penampilannya di layar editor berwarna putih). Keywords tidak dapat dijadikan sebagai pengenal (identifier).

Program Pascal paling sederhana
Mungkin Anda bertanya ‘Bagaimana sih program pascal yang paling sederhana? ?’. Coba anda ketikkan program berikut ini di layar editor Pascal. Program Pascal yang paling sederhana seperti gambar berikut :

Gambar 2.2. Program Pascal Paling Sederhana

Bila kita menekan tombol F9 (Compile) dan selanjutnya Ctrl + F9 (Run), program tersebut di atas tidak akan menghasilkan apa-apa. Alasannya kita tidak menyuruh Pascal melakukan apa-apa. Kita hanya mengikuti aturannya saja.
Struktur program pascal terdiri atas tiga blok, yaitu : judul (heading), deklarasi (declaration) dan utama (body) seperti terlihat pada gambar 1.1

Gambar 2.3. Struktur Program Pascal
2.2. Elemen-Elemen Pembentuk Program Pascal
1. Karakter
Bila kita perhatikan bahwa elemen dasar dari pembentuk program Pascal adalah karakter. Karakter-karakter yang dapat kita gunakan adalah karakter-karakter yang berada dalam tabel ASCII (American Standard Code For Information Interchange).
Karakter-karakter dalam tabel ASCII dapat berupa :
1. Huruf A..Z , a..z
2. Anga 0..9
3. Simbol Khusus (@ # $ ^ * ( ) – + [ ] , . ; / \)
4. Spasi
5. Karakter kontrol (karakter dengan nilai ASCII di bawah 32, misalnya Tab dan Backspace)
6. Karakter ASCII tidak standar pada PC (karakter dengan nilai ASCII antara 128 hingga 255)

2. String
String merupakan rangkaian daripada karakter-karakter. Karakter-karakter yang dirangkai harus termuat di tabel ASCII. Penggunaan string harus diawali oleh tanda kutip tunggal dan diakhiri oleh tanda kutip tunggal. Bila Anda ingin memasukkan suatu kutip tunggal di dalam suatu string maka di dalam string tersebut harus termuat duabuah kutip tunggal. Maksimum string yang dapat Anda masukkan dalam suatu pengenal adalah 255 karakter. Bila lebih dari 255 karakter maka karakter ke 256 dan seterusnya akan diabaikan. Tiap karakter string memiliki index di string tersebut, sehingga bila kita tulis Nama[2], maka kita mengambil indeks yang ke dua dari Nama.
Berikut ini adalah contoh-contoh penggunaan string dalam program.

Suatu string juga bisa dirangkai dengan kontrol karakter. Kontrol karakter ini ditandai dengan lambang # diikuti oleh nomor kode ASCIInya. Berikut ini adalah contoh pemakaiannya.

Anda perhatikan bahwa kontrol karakter #13 merupakan carriage return (mengembalikan posisi kursor ke awal) sedangkan #10 adalah line-feed (Membuat baris baru). Dengan demikian hasil akhir program di atas adalah :

3. Bilangan
Bentuk bilangan yang dapat Anda masukkan dalam suatu program bisa dalam bentuk desimal, oktal maupun heksadesimal. Coba Anda perhatikan contoh berikut ini:
Symbol Bilangan Contoh
+ atau - Desimal 10
$ Heksadesimal $A

Selain daripada itu untuk bilangan berpangkat mis : 2*105 dapat Anda tuliskan di program 2E+05 atau 2E05. Berikut adalah contoh-contoh lainnya.

Contoh Keterangan
+5 Bilangan integer positip 5
5 Bilangan integer positip 5
-5 Bilangan integer negatip 5
5000 Bilangan integer 5000
5E03 Bilangan integer 5000
0.2E-06 Bilangan integer 2*10-5
1E6 Bilangan integer 2*106
$F Bilangan integer positip 15
-$F Bilangan integer negatip 15

4. Reserved Words (kata tercadang)
Pada gambar 2.3. Anda perhatikan kata yang ditulis tebal, seperti : program, uses, const, var, begin, end. Kata-kata ini merupakan kata-kata kunci (keywords). Bagi bahasa Pascal keyword-keyword ini keberadaannya mesti dijaga (tidak bisa diubah-ubah) sehingga disebut sebagai kata tercadang (reserved words).
Tabel 2.1. mendaftar kata-kata tercadang yang dapat Anda gunakan pada saat membentuk program Pascal.

Tabel 2.1. Daftar Kata-Kata Tercadang
and
asm
array
begin
case
const
constructor
destructor
div
do
downto
else
end Exports
file
for
function
goto
if
implementation
in
inherited
inline
interface
label
library mod
nil
not
object
of
or
packed
procedure
program
record
repeat
set
shl shr
string
then
to
type
unit
until
uses
var
while
with
xor

Penggunaan dari reserved word ini di dalam program Pascal telah ditentukan aturannya, sehingga aturan-aturan tersebutlah yang akan kita bahas di keseluruhan buku ini.

5. Pengenal (Identifier)
Pada program 2.1. kata Program_Kenalan_Pascal merupakan contoh pengenal. Selain pada nama program, pengenal juga dapat Anda gunakan untuk mendefenisikan suatu konstanta, variabel, prosedur, fungsi, unit, dan lain-lain. Berikut ini contoh suatu program yang banyak menggunakan pengenal .

Gambar 2.4. Penulisan Pengenal (Identifier) Dalam Kode Program Pascal
Dari contoh kode program di atas, dapat dikatakan bahwa pengenal digunakan diseluruh blok program pascal. Adapun Syarat-syarat pemberian nama suatu pengenal adalah :
7. karakter pertama harus dimulai oleh alphabet (A..Z atau z..z) atau garis bawah ( _ )
8. setelah alphabet atau garis bahwa nama pengenal dapat diikuti oleh alphabet, garis bawah
9. pengenal tidak boleh memuat karakter-karakter khusus : @ # $ ^ * ( ) – + [ ] , . ; / \
10. pengenal tidak boleh memuat spasi
11. maksimum panjang nama pengenal 63 karakter. Bila nama pengenal lebih dari 63 karakter, maka karakter 64 dan seterusnya tidak dipertimbangkan.
12. Bila pengenal lebih dari satu kata, usahakan tiap kata huruf besar. Dan usahakan nama pengenal mewakili nilai yang dikandungnya.
Contoh-contoh pengenal
Pengenal Keterangan
1Celcius Salah, karena pengenal diawali angka
Fah renheit Salah, karena pengenal memuat spasi
DerajatReamur Benar, pengenal dua kata usahakan tiap kata huruf besar
S32 Benar
_NilaiA Benar
%Bunga Salah, karena memuat karakter khusus %

Pascal merupakan case – insensitive, maksudnya bahwa program pascal tidak membedakan penulisan huruf besar maupun huruf kecil. Dengan demikian penulisan kata program, Program, PROGRAM, ataupun PrOgRam sama saja. Aturan ini berlaku bagi seluruh elemen-elemen program Pascal. Satu hal yang perlu diingkat pada saat penulisan kode program bahwa suatu saat kode program yang Anda buat akan dibaca orang lain, untuk itu usahakan penulisannya sebaik mungkin.
Kedua kode program berikut hasilnya sama. Tetapi, dalam hal gaya (style) penulisan kodenya jauh berbeda.

Gambar 2.5. Gaya (Style) Penulisan Program Pascal
6. Tipe Data
Pada gambar 2.4 baris 3 Anda perhatikan kata Integer. Kata Integer menunjukkan bahwa variabel A dan B bertipe Integer. Bila suatu pengenal bertipe Integer maka jangkauan nilainya harus antara -32768 s/d +32767. Selain dari tipe Integer masih banyak terdapat tipe-tipe data lainnya dalam pascal seperti : byte, shortint, longint, record, set, dan lain-lain.

Gambar 2.6. Tipe Data di Turbo Pascal 7.0
a. Tipe data sederhana
Tipe data sederhana adalah tipe data yang bila suatu pengenal didefenisikan dengan tipe data ini, maka pengenal teresebut hanya dapat berisi satu data.
Tipe data sederhana terbagi atas 2, yaitu :
1. tipe data ordinal
Tipe data ordinal merupakan tipe data yang urutan nilai dapat diketahui secara jelas. Misalkan tipe data Shortint dengan jangkauan nilai antara -128 .. 127 berarti nilai pengenal yang dideklarasikan dengan tipe shortint nilainya harus : -128, -127, -126, …, 127. Tiga fungsi yang biasanya dapat dipaka pada setiap tipe data ordinal adalah ORD (ordinal), PRED (Predecessor), SUCC (Successor).
Contoh : ORD (‘A’) = 65, artinya urutan huruf A di tabel ASCII
PRED(‘Z’) = Y, artinya urutan sebelum huruf Z di tabel ASCII
SUCC(‘X’) = Y, artinya urutan sesudah huruf X di tabel ASCII
i. Tipe Data Integer
Tipe data integer adalah tipe data yang hanya menampung bilangan bulat.
Tipe data Jangkauan Ukuran Di Memory
Shortint -128..127 8 bit (1 byte)
Byte 0.255 8 bit (1 byte)
Integer -32768..32767 16 bit (2 byte)
Longint -2147483648..2147483647 32 bit (4 byte)
Word 0..65635 16 bit (2 byte)

.

Dalam pendeklarasian Tipe juga Anda telah mempertimbangkan kemungkinan jangkauan terbesar dari suatu pengenal. Coba Anda perhatikan kode program berikut:

Deklarasi variabel Umur dengan tipe Longint kuranglah tepat. Kita tahu tipe longint dapat menampung data antara -2147483648..2147483647, sedangkan umur yang Anda masukkan tidak akan pernah sebesar jangkauan maksimum tipe data longint tersebut. Hal tersebut memang tidak salah, hanya KurangTepat. . Dari satu sisi dengan tipe longint Anda menggunakan memory 4 byte, sedangkan dengan tipe Byte Anda cukup memakai 1 byte memory. Bila Hal tersebut Anda lakukan sampai puluhan atau bahkan ratusan kali dalam suatu program yang komplek, dengan cepat memory Anda akan habis terpakai dengan sia-sia. 
ii. Tipe Boolean
Tipe data boolean adalah tipe data yang hanya memiliki nilai TRUE atau FALSE. Keempat tipe data boolean di bawah ini dapat Anda gunakan sesuai dengan sistem yang Anda gunakan. Misalkan kalau sistem operasi Anda tidak mendukung operasi 32 bit, maka Anda tidak dapat menggunakan tipe data LongBool. Tetapi bila sistem operasi Anda bekerja di 32 bit dan Anda memakai tipe data boolean 8 bit (Boolean), hal tersebut tidak masalah.

Tipe data Ukuran Di Memory
Boolean 8 bit (1 byte)
WordBool 16 bit (2 byte)
LongBool 32 bit (4 byte)
ByteBool 8 bit (1 byte)

iii. Tipe Enumerated
Tipe enumerated merupakan tipe data yang didefenisikan sendiri di bagian deklarasi type dan selanjutnya dapat dipakai dibagian program dibawah deklarasinya.

iv. Tipe SubRange
Tipe subrange sama seperti tipe enumerated yang juga didefenisikan di bagian deklarasi type dan selanjutnya dapat dipakai di bagian program di bawah deklarasinya.

2. Tipe data real
Untuk menampung data yang bukan bilangan bulat, kita dapat menggunakan tipe data Real. Tipe data Real juga termasuk tipe data sederhana tetapi tidak termasuk tipe data ordinal. Mengapa ? Karena tipe data real tidak dapat disebutkan secara pasti urutan dari nilainya. Kita ambil contoh 50.2, 50,21, 50,211, 50,211 dan seterusnya sampai tidak terhingga.

Tipe data Jangkauan Digit di Belakang Koma Ukuran Di Memory
Real 2.9e-39..1.7e38 11-12 48 bit (6 byte)
Single .5e-45..3.4e38 7-8 32 bit (4 byte)
Double 5.0e-324..1.7e308 15-16 64 bit (8 byte)
Extend 3.4e-4932..1.1e4932 19-20 80 bit (10 byte)
Comp -9.2e18..9.2e18 19-20 64 bit (8 byte)

7. Operator
Kasus. Misalkan kita ingin menjumlahkan dua buah bilangan bulat : A dan B. Misalkan A bernilai 5 dan B bernilai 6. Untuk menjumlahkan bilangan A dan B kita melakukannya dengan menulis A+B. A+B disebut ungkapan ataupun ekspresi, tanda + operator, A dan B disebut operand. Karena operator + menggunakan dua buah operand, maka operator + sering disebut juga operator biner (binary operator). Bila kasus 1 kita tulis di program pascal, bentuknya dapat seperti berikut :

Gambar 2.7. Program menjumlahkan dua buah bilangan

Termasuk operator apakah operator + ?. Berikut ini akan diuraikan jenis-jenis operator dalam Pascal.

a.Operator pengerjaan (assignment operator)
Bila Anda perhatikan gambar 2.4. baris 6 dan 7. terdapat ekspresi (ungkapan) sebagai berikut :
3. A:=5
4. B:=6
Tanda := disebut operator pengerjaan. Maksud dari ekspresi A:=5 adalah masukkan bilangan 5 ke pengenal A. Pengenal A dideklarasikan di bagian var, maka pengenal A disebut juga variabel A.

b. Operator aritmatika
Operator aritmatika merupakan operator yang digunakan untuk melakukan penjumlahan, pengurangan, perkalian, dan pembagian.

Operator
Tipe Data Hasil
+ (Penjumlahan) Integer + Integer
Integer + Real
Real + Real Integer
Real
Real
- (Pengurangan) Integer – Integer
Integer – Real
Real – Integer
Real – Real Integer
Salah
Benar
Real
* (Perkalian) Integer * Integer
Integer * Real
Real * Real Integer
Real
Real
/ (Pembagian) Integer / Integer
Integer / Real
Real / Real Real
Real
Real
Div (Pembagian Bulat) Integer Div Integer Integer
Mod (Sisa Bagi) Integer Mod Integer Integer

c.Operator relasional
Kasus. Misalkan anda disuruh membuat program menentukan pelamar lulus masuk PNS atau tidak. Syarat masuk PNS harus berumur minimal 17 tahun. Berarti tahun sekarang dikurangi tahun lahir peserta harus lebih besar atau sama dengan 17 tahun. Bila hal ini dipenuhi maka Dia berhak masuk PNS dan bila tidak dipenuhi dia tidak berhak masuk PNS. Bagaimana caranya kita menyatakan hal tersebut di program Pascal? Coba Anda perhatikan kode program Pascal berikut ini:

Gambar 2.8. Contoh Program Penggunaan Operator Relasional

Pernyataan if Umur >= 7 Then merupakan suatu pernyataan bersyarakat. Pernyataan tersebut dapat kita terjemahkan ‘jika umur lebih besar atau sama dengan 17 maka’. Ekspresi Umur>=17 menggunakan operator >=. Operator >= inilah yang disebut dengan operator relasional. Dari pernyataan tersebut juga kita lihat operator >= menggunakan dua buah operand maka operator tersebut juga operator biner.

Operator Tipe Data Hasil
= (sama dengan) Kedua operand harus bertipe sama True/False
(Lebih besar dari) Kedua operand harus bertipe sama True/False
= (Lebih besar dari atau sama dengan) Kedua operand harus bertipe sama True/False

d.Operator Bitwise
Kasus. Berapakah hasil bila angka 65 di OR kan dengan angka 32. Untuk menyelesaikan kasus tersebut, terlebih dahulu kita mesti mengetahui representasi dari angka-angka di memory. Suatu angka di memory direpresentasikan dengan bit-bit.
Operator bitwise merupakan operator yang berhubungan dengan bit-bit dari suatu pengenal yang bertipe integer. Perlu Anda ketahui bahwa representasi dari suatu tipe integer menggunakan susunan 16 bit. Coba Anda perhatikan gambar berikut :
Most Significant Bit (Bit paling berpengaruh) Less Significant Bit (bit paling kecil pengaruhnya)

15
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
215 214 213 212 211 210 29 28 27 26 25 24 23 22 21 20

Misalkan kita ambil contoh representasi angka 65 dalam bit-bit.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1

0000000001000001(2) = 1* 20 + 0*21 + 0 * 22 + 0 * 23 + 0 * 24 + 0 * 25 + 1 * 26
= 1 + 0 + 0 + 0 + 0 + 0 + 64
= 65

Representasi Angka 32 dalam bit-bit
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0

Bila Angka 65 kita OR kan dengan angka 32, maka hasilnya

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 1
0
0
0
0
0
1

OR
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
Hasil
0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1

Hasil :
0000000001100001(2) = 1* 20 + 0*21 + 0 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26
= 1 + 0 + 0 + 0 + 0 + 32 + 64
= 97
Pembandingan bit-bit dari suatu angka berdasarkan pada tabel berikut ini :

Tabel Bitwise OR
Bit A Bit B Bit A Or B
1 1 1
1 0 1
0 1 1
0 0 1
Tabel Bitwise AND
Bit A Bit B Bit A And B
1 1 1
1 0 0
0 1 0
0 0 0

Tabel Bitwise XOR
Bit A Bit B Bit A Xor B
1 1 0
1 0 1
0 1 1
0 0 0

Tabel Bitwise Not
Bit A Not A
1 0
0 1

Bila kasus di atas kita terapkan di program Pascal, bentuknya dapat seperti berikut ini :

Gambar 2.7. Program Operasi Bit Dengan Operator OR

Selain operator OR, AND dan XOR, untuk operasi Bit pascal juga menyediakan operator pergeseran bit, yaitu : SHR (Shift Right/Geser Kekanan) dengan operator >> dan SHL (Shift Left/Geser Kekiri) dengan operator 2.0. Misalkan kita ambil contoh dengan data mahasiswa berikut:
No Cek Syarat Keterangan
1 Nama Eri Rianto Sembiring Bisa Wisuda
Jurusan Teknik Informatika
KKN Ya TRUE
IPK 2,5 TRUE
2 Nama Ahmad Belum Bisa Wisuda
Jurusan Komputer Akuntansi
KKN Tidak FALSE
IPK 2,1 TRUE
3 Nama Julian Belum Bisa Wisuda
Jurusan Sistem Informasi
KKN Ya TRUE
IPK 1,9 FALSE
4 Nama Aprillia Belum Bisa Wisuda
Jurusan Sistem Informasi
KKN Tidak FALSE
IPK 1,5 FALSE

Dari Kasus, kedua syarat harus dipenuhi. Dengan demikian, operator logika yang tepat digunakan adalah AND. Berdasarkan tabel operator logika AND di atas, maka pernyataan akan benar bila seluruh kondisi bernilai benar (seperti contoh no.1). Bila salah satu saja kondisi salah, maka pernyataan salah. Berikut adalah cara menuliskan kasus tersebut kedalam kode program Pascal.

Gambar 2.10. Penggunaan Operator Logika AND

f. Operator Set (Himpunan)
Set merupakan himpunan dari karakter-karakter yang termuat dalam tabel ASCII. Himpunan karakter yang termuat dalam tabel ASCII sebanyak 256, dengan demikian banyaknya anggota himpunan dari suatu set adalah 256.
Berikut operator-operator yang dapat diberikan pada saat melakukan operasi terhadap data set.
Operator Keterangan
In Menyeleleksi keanggotaan set
+ Menggabungkan dua buah set
- Mengurangkan dua buah set
* Perkalian dua buah set
= Superset (super himpunan dari)
= Kesamaan himpunan
Ketitdaksamaan himpunan

Operasi Set di Pascal sama dengan operasi himpunan di matematika. Berikut adalah diagram Ven yang menggambarkan hubungan dua buah himpunan, yaitu A dan B. Himpunan A adalah himpunan 5 bilangan prima pertama. Himpunan B adalah himpunan bilangan bulat positip dari 0 s/d 9. Bila kedua himpunan tersebut kita tulis dengan cara mendaftar, maka hasilnya seperti berikut ini :

A = {2,3,7,11,13}
B = {0,1,2,3,4,5,6,7,8,9}

Dalam Matematika terdapat operasi himpunan seperti : penggabungan, irisan dan pengurangan.
Dari gambar di atas, operasi-operasi tersebut dapat dituliskan :
A U B = {0,1,2,3,4,5,6,7,8,9,11,13}
A ∩ B = {2,3,7}
A – B = {0,1,4,5,6,8,9}
B – A = {11,13}
Bila operasi-operasi himpunan tersebut kita tulis dalam kode program Pascal bentuknya dapat seperti berikut:

Gambar 2.11. Program Operasi Set (Himpunan) Pada Program Pascal

operator set IN digunakan untuk menguji keanggotaan dari suatu Set. Misalkan kita ingin menguji suatu tombol keyboard yang kita ketikkan apakah Angka atau tidak, maka bentuknya dapat seperti kode berikut.

Gambar 2.12. Program Keanggotaan Set Dengan Operator IN

g. Operator Alamat
Operator pointer merupakan operator yang digunakan untuk mengakses alamat dan isi dari suatu pengenal pointer. Operator yang berhubungan dengan pointer adalah:
Operator Keterangan
@ Alamat dari suatu pengenal pointer di memory
^ Isi dari pengenal pointer
= Kesamaan alamat
Ketidak samaan alamat
- Pengurangan alamat
+ Penjumlahan alamat

Misalkan Anda ingin mengetahui alamat variabel pekerjaan yang bertipe pointer di memory, berikut ini adalah kode programnya.

Gambar 2.13. Program Mendapatkan Alamat Suatu Variabel di Memory

h. Operator String
Untuk menggabungkan dua atau lebih string digunakan operator + (tambah). Anda perhatikan kode program berikut ini:

Urutan Pengerjaan Operator
Bila dalam kode program Pascal Anda terdapat banyak operator, maka Pascal telah mengatur prioritas pengerjaan suatu statement. Coba Anda perhatikan kode program berikut ini :

Berapakah hasil dari program di atas ? Coba kita perhatikan statement-statement program di atas.
A=5;
B =6;
C = A+ B * 10
C = 5 + 6 * 10
C = 5 + 60
C = 56
Ternyata operator + dikerjakan terakhir oleh Pascal. Bagaimana halnya seandainya kita menginginkan agar operator + tersebut dikerjakan terlebih dahulu daripada operator *. Caranya adalah dengan menutup ekspresi A + B dengan tanda kurung, sehingga kode program Pascalnya dapat seperti berikut ini.

Coba Anda jalankan kembali program ini. Berapakah hasilnya ? Bila hasilnya adalah 110, maka urutan pengerjaan dari ekspresi di atas telah benar.

Berikut ini adalah prioritas pengerjaan operator-operator dalam Pascal bila tidak dilakukan perubahan di dalam program.

Operator Prioritas
@ Not ^ 1
* / and Div Mod 2
= > >=

Follow

Get every new post delivered to your Inbox.