program perkalian matriks dengan menggunakan prosedur
TRANSCRIPT
Program Perkalian Matriks Dengan menggunakan Prosedur
Teori singkat tentang perkalian matriks sudah dibahas pada artikel
sebelumnya. Kali ini, saya akan membahas perkalian matriks dengan
menggunakan prosedur. Pada prinsipnya perkalian matriks dengan prosedur
hampir sama dengan program penjumlahan matriks dengan prosedur.
Perbedaannya hanya terletak pada prosedur perkalian saja.
Program Perkalian Matrik terdiri dari prosedur :
1. ORDO untuk input data ordo matriks
2. INPUT. Untuk melakukan proses input data matriks A dan B
3. KALI untuk melakukan proses perkalian.
4. CETAK. Untuk mencetak matrik A, B, dan C.
5. Satu bagian program utama untuk memanggil prosedur
Misalnya matrik A dengan ordo mxn akan dikalikan dengan matriks B dengan
ordo pxq. Ingat bahwa syarat perkalian matriks A dan B adalah n harus
dengan p. Jika tidak sama maka perkalian tidak dapat dilakukan. Oleh sebab
itu, pada saat melakukan input ordo matriks, perlu dicek apakah p=n, jika
tidak sama maka input data ordo harus diulangi.
Listing programnya sebagai berikut :
PROGRAM HITUNG_MATRIKS;
USES Crt;
type matrix = array [1..10,1..10] of integer;
var
i,j : integer;
{Input Ukuran/Ordo Matrix A dan B}
PROCEDURE ORDO(var m,n,p,q:integer);
Begin
clrscr;
repeat
writeln('Tentukan Ordo/Ukuran Matrix ');
write('Jumlah Baris Matrik A: '); readln(m);
write('Jumlah Kolom Matrik A: '); readln(n);
write('Jumlah Baris Matrik B: '); readln(p);
write('Jumlah Kolom Matrik B: '); readln(q);
until (n=p)
End;
PROCEDURE INPUT(x,y : integer; var m : matrix);
Begin
for i:=1 to x do
for j:=1 to y do
begin
write('M[',i,',',j,'] : ');readln(m[i,j]);
end; writeln;
end;
{Procedure Untuk Proses Perkalian}
PROCEDURE KALI (x,y,z:integer; a,b :matrix;var c:matrix);
var k : integer;
Begin
for i:=1 to x do
for j:=1 to y do
Begin
C[i,j]:=0;
for k:=1 to z do
c[i,j] := C[i,j] + A[i,k]*B[k,j];
End;
End;
{Procedure Cetak}
Procedure Cetak(x,y : integer; m : matrix);
Begin
Writeln;
for i:=1 to x do
begin
for j:=1 to y do
write(M[i,j],' ');
writeln;
end;
writeln;
End;
{Program Utama}
var x,y,z,r : integer;
a,b,c : matrix;
Begin
ordo(x,y,z,r);
input(x,y,a); {panggil prosedur INPUT untuk menginput data matriks A}
input(z,r,b); {panggil prosedur INPUT untuk menginput data matriks B}
Kali(x,y,r,a,b,c); {panggil prosedur KALI untuk mengalikan A dan B}
writeln; writeln('Matriks A'); cetak(x,y,a); {Cetak Matriks A}
writeln; writeln('Matriks B'); cetak(z,r,b); {Cetak Matriks B}
writeln; writeln('Matriks C'); cetak(x,r,c); {Cetak Matriks C}
readkey;
End.
Penjelasan Program
Tipe data matrix dan var i,j dideklarasikan di awal program sebagai variabel
global karena digunakan dalam semua prosedur.
Prosedur ORDO menggunakan parameter ouput m,n,p, dan q sebagai output
dari prosedur ORDO. Nilai variabel m,n,p,q dilakukan dalam prosedur ORDO
kemudian dikirim ke dalam program utama dan diterimana oleh variabel
x,y,z,r. Dengan demikian maka nilai ordo matriks dalam program utama
disimpan dalam variabel x,y untuk matriks A dan z,r untuk matriks B.
Prosedur INPUT menggunakan parameter input x, y dan parameter output m
dengan tipe matrix. Variabel x dan y menerima nilai ordo matriks ketika
dipanggil dari program utama sedangkan variabel m mengirim data matriks
yang diinput oleh prosedur.
• Ketika menerima nilai ordo matriks A, maka prosedur INPUT akan
mengirimkan Data matriks A ke program utama yang diterima oleh
variabel a. Pernyataan untuk memanggil prosedur adalah input(x,y,a);
• Ketika menerima nilai ordo matriks B, maka prosedur INPUT akan
mengirimkan Data matriks B ke program utama yang diterima oleh
variabel b. Pernyataan untuk memanggil prosedur adalah input(z,r,b);
Prosedut KALI menggunakan parameter input z,y,z untuk menerima ordo
matriks dan parameter a, b untuk menerima data matriks A dan B yang
dikirim dari program utama. Juga menggunakan parameter output c untuk
mengirim hasil perkalian ke program utama yang diterima oleh variabel c.
Kedua variabel namanya sama yaitu c tetapi tidak saling mengenal karena
bersifat lokal.
Prosedur CETAK menggunakan parameter input x, y untuk menerima nilai
ordo matriks yang akan dicetak dan parameter input m untuk menerima data
matriks yang akan dicetak yang dikirim dari program utama.
Dengan memahami cera kerja prosedur ini, maka anda dapat
mengembangkan lagi dengan mempelajari penggunaan fungsi dalam program
pascal.
Semoga bermanfaat.
God bless you all.