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.

Bandingkan dengan program perkalian tanpa prosedur yang telah dibahas sebelumnya. Dengan memahami cera kerja prosedur ini, maka anda dapat mengembangkan lagi dengan mempelajari penggunaan fungsi dalam program pascal. Jika ada tanggapan yang positip atau pertanyaan, silakan tuliskan pada kolom komentar di bawah. Terima kasih.

Semoga bermanfaat.
God bless you all.






Tidak ada komentar:

Posting Komentar

Silakan memberikan komentar dan pertanyaan yang sifatnya positif.