Array & Program Modular
A. Tujuan
Setelah melakukan praktikum, diharapkan praktikan dapat :
1. Menggunakan sebuah Array berindek satu atau berindek dua untuk
mendeklarasikan sebuah variabel.
2. Menggunakan Procedure & Function dalam program pascal.
B. Teori Singkat
Array adalah suatu tipe variabel yang menyimpan data dalam
beberapa tempat, seakan-akan merupakan gabungan dari beberapa
variabel sejenis sekaligus. Untuk memakai variabel array harus ditunjukan
variabel keberapa yang akan dioperasikan.
Tata cara penulisan tipe variabel array adalah :
variabel : Array [n1..m1] Of tipe variabel;
Variabel : Array [n1..m1,n2..m2] Of tipe variabel;
dimana cara yang pertama digunakan untuk Array berindek (dimensi)
satu, sedangkan car kedua adalah untuk array berindek (dimensi) dua.
Variabel adalah nama variabel yang akan didefenisikan, n1,n2 dan
seterusnya adalah nomor awal array yang akan didefenisikan, m1,m2 dan
seterusnya adalah nomor akhir array yang didefenisikan dan tipe variabel
adalah tipe variabel isi.
Prosedur (Procedure) dan fungsi (Function) merupakan modul
suatu program yang akan dipisahkan di suatu tempat lain dan
dilambangkan dengan satu kata pada penulisan programnya.
Prosedur adalah potongan program yang akan berdiri sendiri dan
tidak bisa dioperasikan sendiri. Dalam suatu program Pascal, letak
prosedur ini setelah bagian deklarasi dan sebelum bagian program induk.
Untuk mendefenisikan suatu prosedur, anda harus memberikan kata
‘Procedure’ sebagai pengenal suatu prosedur. Kata Procedure akan diikuti
oleh nama prosedur, dan bila nama ini dipanggil, program yang terdapat
diantara Begin dan End; setelah kata Procedure yang akan dijalankan.
Fungsi merupakan suatu potongan program yang akan
memberikan suatu hasil. Karena memberikan suatu nilai, fungsi tidak
dapat berdiri sendiri melainkan memerlukan suatu tempat untuk
menampung nilai tersebut.
C. Latihan-Latihan
1. Program untuk mencari hasil perkalian matriks dimensi dua dengan
matriks dimensi satu (LATIH6A.PAS)
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
0
35
3
B
;
4
2
11
65
56
34
45
0
23
A
C = A x B
Program KaliMatrik; Uses Crt; Var A : Array [1..3,1..3] of Real; B,C : Array [1..3] of Real; I,J : Integer; Begin ClrScr;A[1,1] := 23;A[1,2] := 0; A[1,3] := 45; A[2,1] := 34;A[2,2] := 56;A[2,3] := 35; A[3,1] := 11;A[3,2] := 2; A[3,3] := 4; B[1] := 3; B[2] := 35; B[3] := 0; For I := 1 to 3 do Begin C[I] := 0; For J := 1 to 3 do Begin
C[I] := C[I] + A[I,J]*B[J]; End; End; Writeln('Matrik A3x3 :'); Writeln('---'); For I := 1 to 3 do Begin For J := 1 to 3 do Begin Write(A[I,J]:8:2,' '); End; Writeln; End;
Writeln; Writeln('Matrik B3x1 :'); Writeln('---'); For I := 1 to 3 do Begin Writeln(B[I]:8:2,' '); End; Writeln; Writeln('Matrik C3x1 :'); Writeln('---'); For I := 1 to 3 do Begin Writeln(C[I]:8:2,' '); End; End.
2. Buatlah Program untuk mencari hasil penjumlahan matrik dan simpan dengan
nama LATIH6B.PAS
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
45
2
-3
50
44
5
0
7
34
-B
;
4
2
11
65
56
34
45
0
23
A
C = A + B
3. Program Untuk menghitung Perkalian dua buah matriks dimensi dua
LATIH6C.PAS
Bentuk umum : A
M,Nx B
N,L= C
M,LContoh :
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
45
2
-3
50
44
5
0
7
34
-B
;
4
2
11
65
56
34
45
0
23
A
C = A x B Æ
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
−
=
20
98
286
325
2744
884
225
0
598
C
Program PerkalianMatriksDuaDimensi; Uses crt; Var i,j,k : byte; M,N,L : byte;A,B,C : array[1..25,1..25] of real; Begin
ClrScr;
write('Jumlah baris matriks pertama : '); readln(M);
write('Jumlah kolom baris pertama/baris matriks kedua : '); readln(N);
write('Jumlah kolom matriks kedua : '); readln(L);
{memasukkan data matriks pertama} writeln('Matriks yang pertama : '); for i:=1 to N do begin for j:=1 to N do begin write('A[',i,',',j,'] = ');readln(A[i,j]); end; writeln; end;
{memasukkan data matriks kedua} writeln('Matriks yang kedua : '); for i:=1 to N do begin for j:=1 to N do begin write('B[',i,',',j,'] = ');readln(B[i,j]); end; writeln; end; {perkalian matriks} for i:=1 to M do begin for j:=1 to N do begin C[i,j]:=0; for k:=1 to L do begin
C[i,j] := C[i,j] + A[i,j]*B[k,j]; end;
end; end;
{mencetak hasil perkalian} Clrscr;
writeln('Hasil dari perkalian matriks : '); writeln; for i:=1 to M do begin for j:=1 to L do begin write(C[i,j]:9:2); end; writeln; end; end.
4. Program untuk mencari hasil persamaan (LATIH6D.PAS)
X=Cos(w
5) dimana nilai w = 1,2,3…10
Program Trigonometri; Uses Crt;
Var
w : Integer;
Function Radian(Sudut : Real) : Real;
{ Merubah Derajat ke Radian }
Begin
Radian := (Sudut/360)*(2*Pi); End;
Function Pangkat(Dasar,Pangkat : Real) : Real; Begin Pangkat := exp((Pangkat)*ln(Dasar)); End; {Program Utama} Begin ClrScr; Writeln(' No w X '); Writeln('---'); For w:=1 to do Begin SudutRadian := Radian(Pangkat(W,5)); X := Cos(SudutRadian); Writeln(w:2,' ',w:2,' ',X:8:4); End; Writeln('---'); End.
5. Program untuk mencari hasil konversi suhu dari Reamur ke Celcius
(LATIH6E.PAS)
Program KonversiSuhu; Uses Crt; Var C,R : Real; Procedure Celcius; Begin C := 5/4 * R;Writeln('Suhu dalam Clecius = ',C:6:2); End;
{Program Utama Untuk Memanggil Procedure}
Begin ClrScr;
Write('Masukan suhu yang akan dikonversikan (R) = '); Readln(R); {Membaca harga R}
Celcius; {Memanggil Procedure Reamur} ReadLn;
End.
6. Program aplikasi menggunakan procedure dan function (LATIH6F.PAS)
Program Fungsi_Dan_Parameternya; Uses
Crt; Var
Pilihan : Char;
Procedure TullsDiXY(K,Y : Integer; Pesan : String); Begin If (X in [1..80]) and (Y in (1..25) then Begin GotoXY (X,Y); Write(Pesan); End; End; Procedure CetakMenu; Begin TulisXY(10,10,’Opeasi Aritmatika ‘); TulisXY(10,11,’--- ‘); TulisXY(10,12,’1. Jumlahkan‘); TulisXY(10,13,’2. Kalikan‘); TulisXY(10,14,’3. Kurangi‘); TulisXY(10,15,’4. Bagi‘); TulisXY(10,16,’5. Selesai‘); End; Procedure TekanSembarangTombol; Var Tombol :Char; Begin
TulisDiXY (1,25,’Tekan sembarang tombol); Tombol := ReadKey;
GotoXY (1,25) ; ClrEol;
End;
Function BacaBilangan : Real; Var
Bil : Real; Begin
GotoXY (10,17);
ClrEol;
Write(’Masukan bilangan yang akan dihitung);
Readln (Bil);
BacaBilangan := Bil; End;
Function BacaKarakter : Char; Var Ch : Char; Begin Oh : ReadKey; Write(Ch); BacaKarakter := Ch; End;
Function PilihanSalah(ChAwal ,ChAkhir:Char; Var ChPilih: Char) : Boolean; Begin
GotoXY (10,17);
ClrEol:
TullsDiXY (10,17),’Masukkan nomor operasi : ‘); ChPilih := BacaKarakter;
End;
Function Jumlahkan (A,B:Real):Real; Begin
Jumlahkan := A + B; End;
Function Kalikan (A,B:Real):Real; Begin
Kalikan := A * B; End;
Function Kurangi (A,B:Real):Real; Begin
Kurangi := A - B; End;
Function Bagilah (A,B:Real):Real; Begin
Bagilah := A I B; End;
Procedure CetakHasil (Bil:Real); Begin
GotoXY (10,17);
ClrEol;
Write (‘Hasilnya : ‘,Bil:10:2); TekanSembarangTombol; End; Procedure PilihSalah; Begin GotoXY (10,17); ClrEcl;
Write(’Pilihan tak salah !’,#7); TekanSembarangTombol; End; {Program Utama} Begin ClrScr; CetakMenu; Repeat Bil1 := BacaBilangan; Bil2 := BacaBilangan;
If PilihanSah (‘1’,’5’,Pilihan) Then Begin
Case Pilihan of
‘1’ : Hasil := Jumlahkan (Bi1l,Bil2);
‘2’ : Hasil := Kalikan (Bil1,Bil2);
‘3’ : Hasil := Kurangi (Bil1,Bil2);
‘4’ : Hasil := Bagilah (Bil1,Bil2);
‘5’ : ; End;
If Pilihan in [‘1’..’4’] Then CetakHasil (Hasil);
Else PilihanSalah;
Until PILIHAN := ‘5’; End.