Bab 9
Bab 9
MATRIKS
3.1 Tujuan
Tujuan modul ini, adalah:
Praktikan bisa membuat program matriks sederhana berdasarkan algoritma
dengan memakai larik
Praktikan dapat membiasakan diri untuk membuat program secara terstruktur.
Praktikan memahami algoritma larik dan matriks
3.2 Matriks
Matriks adalah struktur penyimpanan data di dalam memori utama yang
individu elemennya diacu dengan menggunakan dua buah indeks (yang biasanya
dikonotasikan dengan baris dan kolom).
kolom
1 2 3 4
1 Elemen(2,3)
2
Baris 3
4
5
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
III-1
III-2
Kumpulan elemen yang bertipe sama. Tipe elemen matriks dapat berupa
tipe dasar (integer, real, boolean, char dan string), atau tipe terstruktur
seperti record
Setiap elemen data dapat diakses secara langsung jika indeksnya (baris dan
kolom) diketahui, yang dalam hal ini indeks menyatakan posisi relatif di
dalam kumpulannya
Merupakan struktur data yang statik, artinya jumlah elemennya sudah
dideklarasi terlebih dahulu di dalam bagian kamus dan tidak bisa diubah
selama pelaksanaan program.
Deklarasi
I, J : integer
Deskripsi
For I 1 to NBar do
For J 1 to NKol do
N[I, J] 0
Endfor
Endfor
Program Algoritma 1:
//inisialisasi matriks
#include "stdio.h"
III-4
#define NBarismaks 10
#define NKolommaks 10
typedef int Matriksint[NBarismaks+1][NKolommaks+1];
Matriksint M;
int I, J, NKol, NBar;
main(){
NBar=5;
NKol=5;
Inismatriks(&M, NBar, NKol); }
Deklarasi
I, J : integer
Deskripsi
For I 1 to NBar do
For J 1 to NKol do
III-5
Deklarasi
I, J : integer
Deskripsi
For I 1 to NBar do
For J 1 to NKol do
Write(’M[’, I, ’,’ ,J, ’] = ’)
write(M[I, J])
Endfor
Endfor
Program Algoritma 2:
//bacatulis matriks
#include "stdio.h"
#define NBarismaks 10
#define NKolommaks 10
typedef int Matriksint[NBarismaks+1][NKolommaks+1];
matriksint m;
int I, J, NKol, NBar;
main(){
printf("Masukan jumlah baris");scanf("%d", &NBar);
printf("Masukan jumlah baris");scanf("%d", &NKol);
Bacamatriks(&M, NBar, NKol);
Tulismatriks(&M, NBar, NKol);
}
for (J=1;J<=NKol;J++) {
printf("M[%d,%d]= ", I, J);scanf("%d", &(*M[I][J])); }}
}
Contoh Algoritma 3:
Procedure Jumlahduamatriks(input M : Matriksint, input A : Matriksint, output
C: Matriksint, input NBar, NKol : integer)
{menjumlahkan matriks M dan A, yaitu M+A = C}
{k.awal : matriks M dan A sudah terdefinisi elemen-elemennya}
{k.akhir : matriks C berisi hasil penjumlahan M dan A}
Deklarasi
I, J : integer
Deskripsi
For I 1 to NBar do
For J 1 to NKol do
C[I, J] = M[I, J] + A[I, J]
Endfor
Endfor
Program Algoritma 3
//jumlah dua matriks
#include "stdio.h"
#define NBarismaks 10
#define NKolommaks 10
typedef int Matriksint[NBarismaks+1][NKolommaks+1];
Matriksint M;
Matriksint A;
Matriksint C;
int I, J, NKol, NBar;
int NKol);
void Tulismatriks(Matriksint *M,int NBar, int NKol);
main(){
printf("Masukan jumlah baris");scanf("%d",&NBar);
printf("Masukan jumlah baris");scanf("%d",&NKol);
Bacamatriks(&M, &A, NBar, NKol);
Jumlahduamatriks(&M, &A, &C, NBar, NKol);
Tulismatriks(&C, NBar, NKol);
}
void Bacamatriks(Matriksint *M, Matriksint *A, int NBar, int NKol) {
for (I=1;I<=NBar;I++) {
for (J=1;J<=NKol;J++) {
printf("M[%d,%d]= ", I, J);scanf("%d",&(*M[I][J]));
printf("A[%d,%d]= ", I, J);scanf("%d",&(*A[I][J]));}
}
}
Contoh Algoritma 4:
Matriks nol adalah matriks dengan semua elemen adalah 0.
1 2 3 4
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
4 0 0 0 0
III-8
Deklarasi
I, J : integer
Zero : boolean
Deskripsi
I1
Zero true
While (I NBar) and (Zero) do
J1
While (I NKol) and (Zero) do
If A[I,J] 0 then
Zero false {bukan matriks nol. stop}
Else
J J+1 {periksa kolom berikutnya}
Endif
Endwhile
{J > NKol or not Zero}
If zero then
I I+1 {periksa baris berikutnya}
Endif
Endwhile
{I > NBar or not Zero}
Return Zero
Program Algoritma 4:
//jumlah dua matriks
#include "stdio.h"
#define NBarismaks 10
#define NKolommaks 10
typedef int Matriksint[NBarismaks+1][NKolommaks+1];
Matriksint M;
int I, J, NKol, NBar;
main(){
printf("Masukan jumlah baris");scanf("%d",&NBar);
printf("Masukan jumlah baris");scanf("%d",&NKol);
Bacamatriks(&M, NBar, NKol);
if (Nol(&M, NBar, NKol)==true)
printf("matriks nol");
else
printf("bukan matriks nol");
}
Contoh Algoritma 5:
1 2 3 4 5 6 7
1 ’a’ ’m’ ’p ’u’ ’h’
’
2 ’b’ ’a’ ’n ’d’ ’u’ ’n’ ’g’
’
3 ’a’ ’p’ ’i’
4 ’k’ ’u’ ’d ’a’
III-10
’
...
M ’l’ ’a’ ’l’ ’a’ ’t’
Deskripsi
For I 1 to M do
J 1
{telusuri elemen matriks pada baris I sampai ketemu spasi}
While (J < N) and (Word[I, J] ’ ’) do
Write(Word[I, J])
J J+1
Endwhile
{J=N or Word[I, J] = ‘ ’}
{cetak karakter terakhir jika bukan spasi}
If M[I, J] ’ ’ then
Write(M[I, J])
Endif
Endfor
Cobalah buat programnya dari algoritma berikut!
3.3 Latihan
Latihan A
1. Buatlah algoritma minimum dan maksimum dengan menggunakan larik
2. Buatlah algoritma mencari nilai x dalam suatu larik matriks
3. Buatlah algoritma untuk menghitung nilai indeks menggunakan larik dengan
ketentuan: Nilai ujian ≥ 80, maka indeks = A
70 ≤ Nilai ujian < 80, maka indeks = B
55 ≤ Nilai ujian < 70, maka indeks = C
45 ≤ Nilai ujian < 55, maka indeks = D
Nilai ujian < 45, maka indeks = E
4. Buatlah algoritma untuk menjumlahkan dua buah matriks dengan
menggunakan larik
III-11
Latihan B
Buatlah program untuk algoritma di atas.