6 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
2 ‘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) ⎡23 0 45⎤ ⎡3⎤ ⎢ ⎥ A = ⎢34 56 65⎥ ; B = ⎢⎢35⎥⎥ ⎢⎣11 2 4 ⎥⎦ ⎢⎣ 0 ⎥⎦ C=AxB 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; [Drs. Efrizon, MT. – 2008]
3 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 0 ⎤ ⎡23 0 45⎤ ⎡- 34 7 ⎢ ⎥ ⎢ A = ⎢34 56 65⎥ ; B = ⎢ 5 44 − 50⎥⎥ ⎢⎣11 2 4 ⎥⎦ ⎢⎣ 3 - 2 45 ⎥⎦ C = A + B 3. Program Untuk menghitung Perkalian dua buah matriks dimensi dua LATIH6C.PAS Bentuk umum : AM,N x BN,L = CM,L Contoh : 0 ⎤ ⎡23 0 45⎤ ⎡- 34 7 ⎢ ⎥ ⎢ A = ⎢34 56 65⎥ ; B = ⎢ 5 44 − 50⎥⎥ ⎢⎣11 2 4 ⎥⎦ ⎢⎣ 3 - 2 45 ⎥⎦ 0 − 225⎤ ⎡ − 598 ⎢ C = A x B Æ C = ⎢ − 884 2744 − 325⎥⎥ ⎢⎣− 286 98 − 20 ⎥⎦ 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); writeln; [Drs. Efrizon, MT. – 2008]
4 {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(w5) dimana nilai w = 1,2,3…10 Program Trigonometri; Uses Crt; Var SudutRadian,X : Real; [Drs. Efrizon, MT. – 2008]
5 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; Hasil, Bil1, Bil2 : Real; [Drs. Efrizon, MT. – 2008]
6
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; PilihanSah := ChPilih in [ChAwal..ChAkhir]; [Drs. Efrizon, MT. – 2008]
7 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.
D. Tugas-Tugas Buatlah program pascal dengan metode modul program menggunakan procedure untuk menghitung tahanan total dua resistor yang terhubung secara seri dan paralel, dan simpan dengan nama TUGAS6.PAS [Drs. Efrizon, MT. – 2008]