Bismillah,
Dibawah ini adalah program untuk melakukan operasi pada matriks. Semoga bermanfaat
Perkalian 2 buah matriks menggunakan bahasa Pascal
program perkalian_matriks; uses crt; var M1 : array[1..20, 1..20] of longint; M2 : array[1..20, 1..20] of longint; M3 : array[1..20, 1..20] of longint; n : array[1..2] of integer; m : array[1..2] of integer; i, j, x, y, k, l : integer; begin clrscr; for k := 1 to 2 do begin write('Banyak baris matriks ke-', k, ' : '); readln(m[k]); write('Banyak kolom matriks ke-', k, ' : '); readln(n[k]); end; if (n[1] <> m[2]) then writeln('Tidak bisa dikalikan!') else begin writeln('Matriks pertama : '); y := 6; for i := 1 to m[1] do begin x := 8; for j := 1 to n[1] do begin gotoxy(x,y); readln(M1[i,j]); x := x + 8; end; y := y + 1; end; writeln('Matriks kedua : '); y := y + 1; for i := 1 to m[2] do begin x := 8; for j := 1 to n[2] do begin gotoxy(x,y); readln(M2[i,j]); x := x + 8; end; y := y + 1; end; writeln('Proses perkalian'); y := y + 1; for i := 1 to m[1] do begin x := 2; for j := 1 to n[2] do begin M3[i,j] := 0; for l := 1 to n[1] do begin; M3[i,j] := M3[i,j] + (M1[i,l] * M2[l,j]); gotoxy(x,y); write(M1[i,l], ' . ', M2[l,j]); if l < n[1] then begin write(' + '); end; x := x + 12; end; x := x + 15; end; y := y + 1; end; y := y + 1; for i := 1 to m[1] do begin x := 2; for j := 1 to n[2] do begin for l := 1 to n[1] do begin; gotoxy(x,y); write(M1[i,l] * M2[l,j]); if l < n[1] then begin write(' + '); end; x := x + 12; end; x := x + 15; end; y := y + 1; end; writeln; writeln('Perkalian Matriks : '); for i := 1 to m[1] do begin for j := 1 to n[2] do write(M3[i,j]:8); writeln; end; end; readln; end.
perkalian matriks dengan skalar menggunakan bahasa pascal
program perkalian_matriks_dg_skalar; uses crt; var M1 : array[1..20, 1..20] of integer; M2 : array[1..20, 1..20] of integer; i, j, m, n, x, y, s : integer; begin clrscr; write('Banyak baris : '); readln(m); write('Banyak kolom : '); readln(n); writeln('Matriks : '); y := 4; for i := 1 to m do begin x := 8; for j := 1 to n do begin gotoxy(x,y); readln(M1[i,j]); x := x + 8; end; y := y + 1; end; write('Skalar : '); readln(s); writeln('Proses perkalian dengan skalar'); y := 6 + m; for i := 1 to m do begin x := 8; for j := 1 to n do begin M2[i,j] := s * M1[i,j]; gotoxy(x,y); write(s, ' . ', M1[i,j]); x := x + 15; end; y := y + 1; end; writeln; writeln('Penjumlahan Matriks : '); for i := 1 to m do begin for j := 1 to n do write(M2[i,j]:8); writeln; end; readln; end.
Penjumlahan 2 buah matriks dengan bahasa pascal
program penjumlahan_matriks2; uses crt; var M1 : array[1..20, 1..20] of integer; M2 : array[1..20, 1..20] of integer; M3 : array[1..20, 1..20] of integer; i, j, m, n, x, y : integer; begin clrscr; write('Banyak baris : '); readln(m); write('Banyak kolom : '); readln(n); writeln('Matriks pertama : '); y := 4; for i := 1 to m do begin x := 8; for j := 1 to n do begin gotoxy(x,y); readln(M1[i,j]); x := x + 8; end; y := y + 1; end; writeln('Matriks kedua : '); y := 5 + m; for i := 1 to m do begin x := 8; for j := 1 to n do begin gotoxy(x,y); readln(M2[i,j]); x := x + 8; end; y := y + 1; end; writeln('Proses penjumlahan'); y := 6 + (2 * m); for i := 1 to m do begin x := 8; for j := 1 to n do begin M3[i,j] := M1[i,j] + M2[i,j]; gotoxy(x,y); write(M1[i,j], ' + ', M2[i,j]); x := x + 15; end; y := y + 1; end; writeln; writeln('Penjumlahan Matriks : '); for i := 1 to m do begin for j := 1 to n do write(M3[i,j]:8); writeln; end; readln; end.
Pengurangan 2 buah matriks dengan bahasa pascal
program pengurangan_matriks2; uses crt; var M1 : array[1..20, 1..20] of integer; M2 : array[1..20, 1..20] of integer; M3 : array[1..20, 1..20] of integer; i, j, m, n, x, y : integer; begin clrscr; write('Banyak baris : '); readln(m); write('Banyak kolom : '); readln(n); writeln('Matriks pertama : '); y := 4; for i := 1 to m do begin x := 8; for j := 1 to n do begin gotoxy(x,y); readln(M1[i,j]); x := x + 8; end; y := y + 1; end; writeln('Matriks kedua : '); y := 5 + m; for i := 1 to m do begin x := 8; for j := 1 to n do begin gotoxy(x,y); readln(M2[i,j]); x := x + 8; end; y := y + 1; end; writeln('Proses pengurangan'); y := 6 + (2 * m); for i := 1 to m do begin x := 8; for j := 1 to n do begin M3[i,j] := M1[i,j] - M2[i,j]; gotoxy(x,y); write(M1[i,j], ' - ', M2[i,j]); x := x + 15; end; y := y + 1; end; writeln; writeln('Pengurangan Matriks : '); for i := 1 to m do begin for j := 1 to n do write(M3[i,j]:8); writeln; end; readln; end.
Dibawah ini adalah contoh penyelesaain persamaan menggunakan metode crammer,
saya tulis dalam pascal, walaupun saya dalam hati lebih cinta Bahasa C, he.. hee
Semoga bermanfaat bagi para pemula yang belajar programming.
Di sini pascal memang sudah tidak umum lagi di dunia industri, tapi masih di ajarkan
di kampus-kampus sebagai pengantar pelajaran algoritma. Jadi, yang penting paham
algoritma dulu, apapun bahasa pengantar untuk itu.
jarak spasi dalam program ini 8 karakter? kenapa begitu? hee…he…, karena
saya mengkompile nya di terminal di linux dengan FPC (Free Pascal Compiler),
jadi masih tampil dengan indah di terminal saya. Adapun kalau di compile dengan
turbo pascal atau compiler lain, maka tampilan hasilnya akan berantakan, he.. hee..
akhirnya, saran saya, gunakan fpc under linux!
Walhamdulillah
{ program penyelesaian persamaan linear dengan metode crammer algoritma: 1. Masukkan matrik persamaan 2. Hitung Determinan D 3. Xn = Dn / D ditulis oleh: Muhamamd Muntaza email : m.muntaza@gmail.com lisensi : GPL v3 } program crammer_3var; uses crt; var M : array[1..20, 1..20] of longint; D : array[0..4] of integer; soal : array[1..3] of real; i, j, x, y : integer; begin clrscr; writeln('Masukkan matrik nya: '); y := 2; for i := 1 to 3 do begin x := 8; for j := 1 to 4 do begin gotoxy(x,y); readln(M[i,j]); x := x + 8; end; y := y + 1; end; writeln; {Diterminan D} writeln('Determinan D '); for i := 1 to 3 do begin for j := 1 to 3 do begin write(M[i,j]:8); end; writeln; end; writeln ('D = (', M[1,1], '.', M[2,2], '.', M[3,3], ' + ', M[1,2], '.', M[2,3], '.', M[3,1], ' + ', M[1,3], '.', M[2,1], '.', M[3,2], ')', ' - ', '(', M[1,3], '.', M[2,2], '.', M[3,1], ' + ', M[1,1], '.', M[2,3], '.', M[3,2], ' + ', M[1,2], '.', M[2,1], '.', M[3,3], ')'); writeln ('D = (', M[1,1] * M[2,2] * M[3,3], ' + ', M[1,2] * M[2,3] * M[3,1], ' + ', M[1,3] * M[2,1] * M[3,2], ')', ' - ', '(', M[1,3] * M[2,2] * M[3,1], ' + ', M[1,1] * M[2,3] * M[3,2], ' + ', M[1,2] * M[2,1] * M[3,3], ')'); writeln; writeln ('D = (', (M[1,1] * M[2,2] * M[3,3]) + (M[1,2] * M[2,3] * M[3,1]) + (M[1,3] * M[2,1] * M[3,2]), ')', ' - ', '(', (M[1,3] * M[2,2] * M[3,1]) + (M[1,1] * M[2,3] * M[3,2]) + (M[1,2] * M[2,1] * M[3,3]), ')'); D[0] := (((M[1,1] * M[2,2] * M[3,3]) + (M[1,2] * M[2,3] * M[3,1]) + (M[1,3] * M[2,1] * M[3,2])) - ((M[1,3] * M[2,2] * M[3,1]) + (M[1,1] * M[2,3] * M[3,2]) + (M[1,2] * M[2,1] * M[3,3]))); writeln ('D = ', D[0]); {D1} writeln; writeln('Determinan D1 '); for i := 1 to 3 do begin for j := 1 to 3 do begin if (j = 1) then write(M[i,j+3]:8) else write(M[i,j]:8); end; writeln; end; writeln ('D1 = (', M[1,4], '.', M[2,2], '.', M[3,3], ' + ', M[1,2], '.', M[2,3], '.', M[3,4], ' + ', M[1,3], '.', M[2,4], '.', M[3,2], ')', ' - ', '(', M[1,3], '.', M[2,2], '.', M[3,4], ' + ', M[1,4], '.', M[2,3], '.', M[3,2], ' + ', M[1,2], '.', M[2,4], '.', M[3,3], ')'); writeln ('D1 = (', M[1,4] * M[2,2] * M[3,3], ' + ', M[1,2] * M[2,3] * M[3,4], ' + ', M[1,3] * M[2,4] * M[3,2], ')', ' - ', '(', M[1,3] * M[2,2] * M[3,4], ' + ', M[1,4] * M[2,3] * M[3,2], ' + ', M[1,2] * M[2,4] * M[3,3], ')'); writeln; writeln ('D1 = (', (M[1,4] * M[2,2] * M[3,3]) + (M[1,2] * M[2,3] * M[3,4]) + (M[1,3] * M[2,4] * M[3,2]), ')', ' - ', '(', (M[1,3] * M[2,2] * M[3,4]) + (M[1,4] * M[2,3] * M[3,2]) + (M[1,2] * M[2,4] * M[3,3]), ')'); D[1] := (((M[1,4] * M[2,2] * M[3,3]) + (M[1,2] * M[2,3] * M[3,4]) + (M[1,3] * M[2,4] * M[3,2])) - ((M[1,3] * M[2,2] * M[3,4]) + (M[1,4] * M[2,3] * M[3,2]) + (M[1,2] * M[2,4] * M[3,3]))); writeln ('D1 = ', D[1]); {D2} writeln; writeln('Determinan D2'); for i := 1 to 3 do begin for j := 1 to 3 do begin if (j = 2) then write(M[i,j+2]:8) else write(M[i,j]:8); end; writeln; end; writeln ('D2 = (', M[1,1], '.', M[2,4], '.', M[3,3], ' + ', M[1,4], '.', M[2,3], '.', M[3,1], ' + ', M[1,3], '.', M[2,1], '.', M[3,4], ')', ' - ', '(', M[1,3], '.', M[2,4], '.', M[3,1], ' + ', M[1,1], '.', M[2,3], '.', M[3,4], ' + ', M[1,4], '.', M[2,1], '.', M[3,3], ')'); writeln ('D2 = (', M[1,1] * M[2,4] * M[3,3], ' + ', M[1,4] * M[2,3] * M[3,1], ' + ', M[1,3] * M[2,1] * M[3,4], ')', ' - ', '(', M[1,3] * M[2,4] * M[3,1], ' + ', M[1,1] * M[2,3] * M[3,4], ' + ', M[1,4] * M[2,1] * M[3,3], ')'); writeln; writeln ('D2 = (', (M[1,1] * M[2,4] * M[3,3]) + (M[1,4] * M[2,3] * M[3,1]) + (M[1,3] * M[2,1] * M[3,4]), ')', ' - ', '(', (M[1,3] * M[2,4] * M[3,1]) + (M[1,1] * M[2,3] * M[3,4]) + (M[1,4] * M[2,1] * M[3,3]), ')'); D[2] := (((M[1,1] * M[2,4] * M[3,3]) + (M[1,4] * M[2,3] * M[3,1]) + (M[1,3] * M[2,1] * M[3,4])) - ((M[1,3] * M[2,4] * M[3,1]) + (M[1,1] * M[2,3] * M[3,4]) + (M[1,4] * M[2,1] * M[3,3]))); writeln ('D2 = ', D[2]); {Diterminan D3} writeln('Determinan D3 '); for i := 1 to 3 do begin for j := 1 to 3 do begin if (j = 3) then write(M[i,j+1]:8) else write(M[i,j]:8); end; writeln; end; writeln ('D3 = (', M[1,1], '.', M[2,2], '.', M[3,4], ' + ', M[1,2], '.', M[2,4], '.', M[3,1], ' + ', M[1,4], '.', M[2,1], '.', M[3,2], ')', ' - ', '(', M[1,4], '.', M[2,2], '.', M[3,1], ' + ', M[1,1], '.', M[2,4], '.', M[3,2], ' + ', M[1,2], '.', M[2,1], '.', M[3,4], ')'); writeln ('D3 = (', M[1,1] * M[2,2] * M[3,4], ' + ', M[1,2] * M[2,4] * M[3,1], ' + ', M[1,4] * M[2,1] * M[3,2], ')', ' - ', '(', M[1,4] * M[2,2] * M[3,1], ' + ', M[1,1] * M[2,4] * M[3,2], ' + ', M[1,2] * M[2,1] * M[3,4], ')'); writeln; writeln ('D3 = (', (M[1,1] * M[2,2] * M[3,4]) + (M[1,2] * M[2,4] * M[3,1]) + (M[1,4] * M[2,1] * M[3,2]), ')', ' - ', '(', (M[1,4] * M[2,2] * M[3,1]) + (M[1,1] * M[2,4] * M[3,2]) + (M[1,2] * M[2,1] * M[3,4]), ')'); D[3] := (((M[1,1] * M[2,2] * M[3,4]) + (M[1,2] * M[2,4] * M[3,1]) + (M[1,4] * M[2,1] * M[3,2])) - ((M[1,4] * M[2,2] * M[3,1]) + (M[1,1] * M[2,4] * M[3,2]) + (M[1,2] * M[2,1] * M[3,4]))); writeln ('D3 = ', D[3]); writeln; writeln; writeln ('X = ', D[1], ' / ', D[0]); soal[1] := D[1] / D[0]; writeln ('X = ', soal[1]:5:3); writeln; writeln ('Y = ', D[2], ' / ', D[0]); soal[2] := D[2] / D[0]; writeln ('Y = ', soal[2]:5:3); writeln; writeln ('Z = ', D[3], ' / ', D[0]); soal[3] := D[3] / D[0]; writeln ('Z = ', soal[3]:5:3); writeln; readln; end.
Daftar Pustaka:
Utami, Ema, Dan kawan-kawan. 2007. Struktur Data Konsep & Implementasinya dalam Bahasa C & Free Pascal di GNU/LINUX. Jogjakarta: Graha Ilmu.
Salim, Yeffriansjah. 2011. Modul Praktek Pemprograman Pascal. Banjarmasin: STMIK Indonesia Banjarmasin