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

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: