Anda di halaman 1dari 25

BAB VI

ARRAY

Tujuan Pembelajaran:

Pada bab ini mahasiswa dikenalkan dengan struktur data array. Array atau larik
merupakan suatu struktur data dalam pemrograman yang untuk tujuan tertentu. Array
dibentuk dari tipe data atau struktur data lainnya yang ada dalam C/C++. Dalam
implementasinya, untuk dapat menggunakan array, mahasiswa terlebih dahulu perlu
memahami cara kerja looping dengan baik.
BAB VI

ARRAY

Array atau sering juga disebut dengan larik merupakan sekumpulan variabel yang
memiliki tipe data yang sama dan diidentifikasi dengan menggunakan satu nama saja. Atau,
dalam kalimat yang lain, satu nama variabel atau pengenal yang digunakan untuk sekumpulan
data yang memiliki tipe data yang sama. Artinya jika salah satu anggota array memiliki tipe
data integer maka anggota array lainnya juga bertipe integer, jika salah satu anggota array
memiliki tipe data karakter maka anggota array lainnya juga karakter.

Seperti halnya sebuah variabel, array akan menempati suatu lokasi memori tertentu di
dalam komputer. Areal memori ini biasanya saling berhubungan dan berurutan. Anggota dari
sebuah array disebut sebagai elemen array. Elemen tertentu dalam array dapat diakses melalui
indeks milik array tersebut. Setiap elemen dalam array akan memiliki nomor indeks yang
berbeda. Nomor indeks berbentuk urutan bilangan integer positif yang dimulai dari angka nol.
Ilustrasi untuk array yang memiliki enam elemen bertipe integer ditunjukkan dalam Gambar
26.

nomor indeks
alamat memory

x[0] 7 2293436
x[1] -2365 2293440
x[2] 123 2293404
x[3] 0 2293448
x[4] 234556 2293452
x[5] -542 2293456

nama array data yang tersimpan dalam


array

Gambar 26. Array dengan 6 elemen bertipe integer (4 bytes)

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 81


Dari ilustrasi pada Gambar 26 terlihat bahwa untuk array yang berisi 6 elemen,
indeksnya adalah 0, 1, 2, 3, 4 dan 5 seluruhnya berjumlah 6. Jika kemudian array diakses
dengan menggukanan angka 6 sebagai indeks maka akan memunculkan kesalahan
pemrograman. Namun pesan terjadinya kesalahan ini hanya terjadi ketika program dijalankan,
bukan pada saat dilakukan kompilasi program.

Bentuk array dapat dibedakan menurut ukuran atau dimensinya, mulai dari dimesi satu
sampai beberapa dimensi sesuai dengan kebutuhan dalam pemrograman. Secara visual, array
sering digambarkan dalam bentuk tabel. Array satu dimensi digambarkan sebagai tabel satu
kolom dengan banyak baris, array dua dimensi digambarkan sebagai tabel dengan banyak
kolom dan banyak baris, array 3 dimensi digambarkan sebagai tabel dengan banyak kolom
dan baris yang berlapis-lapis dan seterusnya.

Gambar 27. Ilustrasi array satu, dua, dan tiga dimensi

Tidak ada aturan khusus kapan array satu dimensi, dua dimensi dan seterusnya mesti
digunakan dalam sebuah program. Penggunaan ini biasanya disesuaikan dengan kebutuhan
program yang dibuat.

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 82


6.1 Array Satu Dimensi

Terkadang ada keadaan dimana kita perlu menggunakan array dalam suatu program.
Dengan memanfaatkan array, program yang dihasilkan akan menjadi lebih sederhana dan
lebih mudah untuk dipahami. Sebagai contoh misalkan kita diminta untuk membuat program
untuk membuat :

• daftar tinggi abdan siswa


• daftar berat badan siswa
• daftar nomor hp
• rata-rata suhu harian dalam sebulan dan lain-lain.

Berasumsi jika dalam satu kelas terdiri dari 20 orang siswa yang akan dicatat tinggi
badannya. Artinya dalam program akan diperlukan 20 variabel yang masing-masing akan
menyimpan data untuk satu orang siswa. Misalkan tinggi badan dicatat dalam satuan cm dan
selalu berupa bilangan bulat, maka variabel yang digunakan dapat dideklarasikan sebagai
berikut:

int tgSiswa1, tgSiswa2, tgSiswa3, tgSiswa4, tgSiswa5;


int tgSiswa6, tgSiswa7, tgSiswa8, tgSiswa9, tgSiswa10;
int tgSiswa11, tgSiswa12, tgSiswa13, tgSiswa14, tgSiswa15;
int tgSiswa16, tgSiswa17, tgSiswa18, tgSiswa19, tgSiswa20;

dapat dibayangkan kesulitan yang akan muncul jika jumlah data siswa yang akan dicatat
diubah misalnya menjadi 100 orang atau lebih. Namun hal ini bisa dengan mudah diatasi
dengan menggunakan array. Array untuk mencatat data 20 orang siswa dapat dideklarasikan
sebagai:

int tgSiswa[20];

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 83


Seperti halnya sebuah variabel, sebelum dapat digunakan, array terlebih dahulu harus
dideklarasikan dengan cara yang sama dengan pendeklarasian variabel. Penamaan sebuah
array memiliki aturan yang sama dengan penamaan variabel. Aturan pendeklarasian array satu
dimensi adalah sebagai berikut:

tipe_data nama_array[jumlah_elemen];

jadi, array dideklarasikan dalam tipe data dimana tipe data ini adalah salah satu tipe data yang
dikenal dalam C/C++. Kemudian nama array yang cara penamaannya sama dengan penamaan
variabel dan jumlah elemen dari array yang ditulis diantara tanda kurung siku ( [...] ). Jumlah
elemen array ini adalah bilangan bulat positif.

contoh deklarasi array

int tgSiswa[20]; //bertipe integer terdiri dari 20 elemen


float suhu[30]; //bertipe float terdiri dari 30 elemen
char huruf[26]; //bertipe char terdiri dari 26 elemen

Dalam C/C++, isi memory tidak dibersihkan dari penggunaan sebelumnya ketika
variabel atau array baru dideklarasikan/diciptakan. Oleh karena itu, dalam prakteknya
sebaiknya melakukan inisialisasi untuk semua variabel yang digunakan termasuk array.

Ada dua cara untuk melakukan inisialisasi pada array. Pertama adalah ketika
melakukan deklarasi dan yang kedua setelah deklarasi array. Pada cara pertama yaitu dengan
memberikan suatu nilai tertentu yang dipisahkan dengan tanda koma untuk setiap elemen
array. Deretan nilai ini diletakkan dalam kurung kurawal.

int tgSiswa[5] = {0,1,2,3,4};

setiap nilai dalam tanda kurung kurawal yang berada di sebelah kanan tanda sama dengan
akan menjadi nilai awal untuk elemen array yang bersesuaian. Artinya tgSiswa[0] akan disi

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 84


dengan 0, tgSiswa[1] akan disi dengan 1, tgSiswa[2] akan disi dengan 2, tgSiswa[3]
akan disi dengan 3 dan tgSiswa[4] akan disi dengan 4.

Cara deklarasi array lainnya untuk memberikan nilai awal adalah dengan memberikan
nilai default yang sama untuk semua elemen array. Misalkan untuk contoh sebelumnya,
seluruh elemen pada tgSiswa diberi nilai awal 0, maka deklarasinya dapat ditulis sebagai:

int tgSiswa[5] = {0};

cara deklarasi kedua ini dapat dengan lebih cepat dilakukan karena berapapun jumlah elemen
dari array, cukup diberikan satu nilai tunggal dalam kurung kurawal disebelah tanda sama
dengan. Maka seluruh elemen array akan memiliki nilai awal yang diberikan tersebut.

Cara pemberian nilai awal yang lainnya adalah dengan menggunakan looping,
misalnya for() loop. Perhatikan program berikut:

#include <stdio.h>

main()
{
int i, tgSiswa[5];

for(i=0; i<5; i++)


tgSiswa[i] = 0;
}

Pada program ini terlihat variabel yang dideklarasikan adalah i yang digunakan sebagai
indeks dan array tgSiswa yang memiliki 5 elemen. Loop i yang berfungsi sebagai indeks
array yang memiliki nilai berturut-turut 0, 1, 2, 3 dan 4 yang seluruhnya berjumlah 5, sesuai
dengan jumlah elemen array. Kemudian setiap elemen array diisi dengan nilai 0.

Selanjutnya, untuk mencetak seluruh isi dari array juga diperlukan sebuah looping
lainnya. Berikut adalah modifikasi dari program sebelumnya untuk melakukan pemberian
nilai dan pencetakan isi semua elemen array.

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 85


//dalam C
#include <stdio.h>

main()
{
int i, tgSiswa[5];

//pemberian nilai elemen array


for(i=0; i<5; i++)
tgSiswa[i] = i*2;

//Mencetak isi array


for(i=0; i<5; i++)
printf("isi pada indeks ke-%d : %d\n", i, tgSiswa[i]);
}

//dalam C++
#include <iostream>
using namespace std;

main()
{
int i, tgSiswa[5];

//pemberian nilai elemen array


for(i=0; i<5; i++)
tgSiswa[i] = i*2;

//Mencetak isi array


for(i=0; i<5; i++)
cout<<"isi pada indeks ke-"<<i<< " : "<<tgSiswa[i]<<endl;
}

Berbeda dengan program sebelumnya dimana seluruh elemen array diisi dengan nilai 0, pada
program ini elemen array diisi dengan nilai indeks dikalikan dengan 2 yang ditunjukkan
dengan perintah tgSiswa[i] = i*2; sehingga output dari program ini jika dijalankan
adalah:

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 86


Bagaimana jika inisialisasi atau pemberian nilai awal tidak dilakukan terhadap array?
Seperti sudah disampaikan sebelumnya bahwa dalam C/C++, isi memory tidak dibersihkan
dari penggunaan sebelumnya, artinya mungkin sekali area memory yang digunakan untuk
variabel atau array sudah berisi nilai tertentu. Perhatikan program berikut, dimana setelah
dideklarasikan tanpa inisialisasi nilai awal, langsung dilakukan pencetakan untuk semua
elemen array.

//dalam C
#include <stdio.h>

main()
{
int i, tgSiswa[10];

//Mencetak isi array


for(i=0; i<10; i++)
printf("isi pada indeks ke-%d : %d\n", i, tgSiswa[i]);

//dalam C++
#include <iostream>
using namespace std;
main()
{
int i, tgSiswa[10];

//Mencetak isi array


for(i=0; i<10; i++)
cout<<"isi pada indeks ke-"<<i<< " : "<<tgSiswa[i]<<endl;

output dari program ini adalah

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 87


disini tampak bahwa setiap elemen array sudah berisi nilai tertentu meskipun tidak dilakukan
pemberian nilai awal. Karena alasan inilah maka inisialisasi sebaiknya dilakukan sebelum
array digunakan yang bertujuan untuk menghindari terjadinya kesalahan.

Perhatikan, Kesalahan yang umum terjadi dalam penggunaan array adalah karena tidak
memperhitungkan indeks ke-0. Kesalahan pemrograman ini sering disebut sebagai off-by-one
error, yang terjadi karena program mengakses data diluar batasan yang disediakan. Misalkan
kita memiliki array dengan 5 elemen, kemudian statemen mengakses array tersebut dengan
angka indeks 5, maka saat itulah kesalahan program terjadi. Hal ini terjadi karena indeks
terakhir untuk array dengan 5 elemen adalah 4.

Off-by-one error biasanya terjadi ketika program dijalankan dan tidak ditemui pada saat
kompilasi program. Hal ini terjadi karena off-by-one error merupakan kesalahan pada logika
program, bukan kesalahan dalam penulisan sintak.

Contoh kasus:

Buatlah sebuah program untuk mencatat rata-rata suhu harian selama dua minggu, kemudian
hitunglah suhu terendah dan tertinggi serta rata-rata suhu dua mingguannya. Data suhu dicatat
dalam bilangan pecahan dan dimasukkan melalui keyboard. Bentuk output yang ditampilkan
adalah:
1. Data suhu selama 2 minggu
2. Suhu minimum dan maksimum
3. Suhu rata-rata selama 2 minggu

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 88


Algoritma:

1. Definisikan variabel yang diperlukan untuk data suhu, suhu minimum, suhu maksimum,
serta variabel pendukung lainnya
2. Masukkan data suhu harian selama 2 minggu
3. Periksa suhu terendah dan tertinggi
4. Jumlahkan seluruh suhu harian
5. Hitung suhu rata-rata dua mingguan
6. Cetak suhu minimal, maksimal dan rata-rata
7. Selesai

Flowchart untuk penyelesaian contoh kasus ini ditunjukkan pada Gambar 28. Data
suhu harian disimpan dalam array suhu[] dan dimasukkan dengan menggunakan looping
for() dimana variabel j digunakan sebagai indeks. Setelah semua data dimasukkan, beri
nilai awal untuk variabel suhuMin dan suhuMax dengan data pertama yang dimasukkan
tadi yaitu suhu[0] serta variabel jumlah diberi nilai awal 0.

Selanjutnya dengan memanfaatkan looping, lakukan penjumlahan semua data suhu


serta periksa jika suhuMin lebih besar dari suhu[j] maka simpanlah nilai suhu[j] ke
dalam suhuMin. Kemudian periksa jika suhuMax lebih kecil dari suhu[j] maka
simpanlah nilai suhu[j] ke dalam suhuMax. Dengan demikian akan diperoleh nilai suhu
terendah, tertinggi dan jumlah semua suhu untuk mencari nilai rata-ratanya. Terakhir, hasil
proses dicetak ke layar untuk menampilkan hasilnya.

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 89


Start A

j=0; j<14; j++ j=0; j<14; j++

Input
suhuMin >
suhu[ j ] true suhuMin = suhu[ j ]
suhu[ j ]

suhuMax <
suhuMin = suhu[ 0 ] true suhuMax = suhu[ j ]
suhu[ j ]

suhuMax = suhu[ 0 ]
jumlah += suhu[ j ]

jumlah = 0
j

A B B C

Cetak
xRata = jumlah/14
suhuMin

j=0; j<14; j++ Cetak


suhuMax

Cetak
suhu[ j ]
Cetak
xRata
j

C End

Gambar 28. Flowchart perhitungan min, max dan rata-rata suhu dua mingguan

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 90


Program dalam bahasa C/C++ yang dibuat berdasarkan flowchart pada Gambar 28 adalah:

//dalam C
#include <stdio.h>

main()
{
float suhu[14]={0};
float suhuMin, suhuMax, jumlah, xRata;
int j;

for(j=0; j<14; j++)


{
printf("Masukkan suhu ke-%d: ", j+1);
scanf("%f", &suhu[j]);
}

suhuMin = suhu[0];
suhuMax = suhu[0];
jumlah = 0.0;

for(j=0; j<14; j++)


{
//mencari suhu minimum
if(suhuMin > suhu[j])
suhuMin = suhu[j];

//mencari suhu maksimum


if(suhuMax < suhu[j])
suhuMax = suhu[j];

//menjumlahkan semua data suhu


jumlah += suhu[j];
}

//nilai rata-rata suhu dua mingguan


xRata = jumlah / 14;

//pencetakan
printf("\n\nData suhu yang dimasukkan adalah:\n");
for(j=0; j<14; j++)
printf("%4.2f\t", suhu[j]);

printf("\n\nSuhu minimum : %4.2f", suhuMin);


printf("\nSuhu maksimum : %4.2f", suhuMax);
printf("\nSuhu rata-rata: %4.2f", xRata);

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 91


//dalam C++
#include <iostream>
using namespace std;

main()
{
float suhu[14]={0};
float suhuMin, suhuMax, jumlah, xRata;
int j;

for(j=0; j<14; j++)


{
cout<< "Masukkan suhu ke-" << j+1 << " : ";
cin >> suhu[j];
}

suhuMin = suhu[0];
suhuMax = suhu[0];
jumlah = 0.0;

for(j=0; j<14; j++)


{
//mencari suhu minimum
if(suhuMin > suhu[j])
suhuMin = suhu[j];

//mencari suhu maksimum


if(suhuMax < suhu[j])
suhuMax = suhu[j];

//menjumlahkan semua data suhu


jumlah += suhu[j];
}

//nilai rata-rata suhu dua mingguan


xRata = jumlah / 14;

//pencetakan
cout<<"\n\nData suhu yang dimasukkan adalah:\n";
for(j=0; j<14; j++)
cout << suhu[j] << "\t";

cout<< "\n\nSuhu minimum : " << suhuMin;


cout<< "\nSuhu maksimum : " << suhuMax;
cout<< "\nSuhu rata-rata: " << xRata;

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 92


Jika program ini dijalankan, kemudian data yang dimasukkan berturut-turut: 23, 24.5, 20.75,
29, 30, 31, 31.5, 24.75, 26, 22, 34, 21.25, 25 dan 27, maka output dari program tersebut adalah:

6.2 Array Dua Dimensi

Cara termudah untuk memahami array dua dimensi adalah dengan


memvisualisasikannya sebagai tabel yang terdiri dari baris dan kolom. Array dua dimensi
dibuat atau dideklarasikan dengan cara yang sama dengan membuat array satu dimensi, hanya
saja pada array dua dimensi elemennya dibagi menjadi dua kelompok yang masing-masing
mewakili jumlah baris dan jumlah kolom. Deklarasi array dua dimensi mengikuti aturan:

tipe_data nama_array[jumlah_baris][jumlah_kolom];

sehingga

int aDua[3][3];

berarti mendeklarasikan array bertipe integer dengan nama aDua yang memiliki 9 elemen
yang terdiri dari 3 baris dan 3 kolom. Gambar 29 menunjukkan ilustrasi untuk array aDua
yang memiliki 9 elemen tersebut.

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 93


Gambar 29. Ilustrasi array dua dimensi

Pada Gambar 29 terlihat bahwa array memiliki 3 baris yaitu baris ke-0, ke-1 dan ke-2
serta 3 kolom yaitu kolom ke-0, ke-1 dan ke-2. Untuk mengakses elemen array adalah dengan
menyebutkan nama array beserta indek baris dan kolomnya. Sehingga aDua[0][0] berarti
elemen pada baris ke-0 kolom ke-0, aDua[0][1] berarti elemen pada baris ke-0 kolom ke-
1, aDua[1][0] berarti elemen pada baris ke-1 kolom ke-0 dan seterurnya hingga
aDua[2][2] yang berarti elemen pada baris ke-2 kolom ke-2 yang merupakan elemen
terakhir dari array aDua.

Seperti halnya dengan array satu dimensi, pada array dua dimensi juga perlu dilakukan
inisialisasi atau pemberian nilai awal sebelum array tersebut digunakan. Untuk melakukan
inisialisasi dapat dilakukan secara langsung ketika array dideklarasikan atau dengan
menggunakan looping. Dalam hal penggunaan mekanisme looping, diperlukan dua buah loop
yang masing-masing bertindak sebagai indeks baris dan sebagai indeks kolom pada array.

int aDua[3][3]={{0, 1, 2}, {0, 1, 2}, {0, 1, 2}};

Setiap kelompok nilai dalam kurung kurawal merupakan nilai awal untuk setiap baris dalam
array. Dalam hal ini aDua[0][0] diberi nilai 0, aDua[0][1] diberi nilai 1 dan
aDua[0][2] diberi nilai 2. Secara lengkap nilai awal untuk setiap elemen array aDua dapat
dilihat pada Tabel 18.

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 94


Tabel 18. Nilai setiap elemen array setelah inisialisasi

Elemen Nilai
aDua[0][0] 0
aDua[0][1] 1
aDua[0][2] 2
aDua[1][0] 0
aDua[1][1] 1
aDua[1][2] 2
aDua[2][0] 0
aDua[2][1] 1
aDua[2][2] 2

Jika menggunakan looping, struktur looping yang digunakan untuk menangani array
dua dimensi adalah nested looping dengan dua buah loop. Satu loop digunakan sebagai indeks
baris dan satu loop untuk indeks kolom. Berikut adalah contoh penggalan program untuk
menangani array dua dimensi.

//inisialisasi array mengggunakan struktur nested looping

int aDua[3][3];
int i, j;

for(i=0; i<3; i++)


for(j=0; j<3; j++)
aDua[i][j] = j;

Pada contoh ini nested looping digunakan untuk melakukan pemberian nilai awal elemen
array aDua. Variabel i digunakan sebagai indeks baris dan variabel j digunakan sebagai
indeks kolom. Sedangkan nilai yang diberikan untuk setiap elemen array adalah sama dengan
j. Jika program ini dijalankan maka isi setiap elemen array aDua sesuai urutan pengisian
nilainya adalah seperti ditunjukkan pada Tabel 19.

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 95


Tabel 19. Nilai elemen array, inisialisasi dengan looping

Elemen Nilai
aDua[0][0] 0
aDua[0][1] 1
aDua[0][2] 2
aDua[1][0] 0
aDua[1][1] 1
aDua[1][2] 2
aDua[2][0] 0
aDua[2][1] 1
aDua[2][2] 2

Jika struktur looping pada potongan program sebelumnya digunakan kembali tetapi dengan
mempertukarkan fungsi baris kolomnya sehingga variabel i yang tadinya merupakan indeks
baris digunakan sebagai indeks dan variabel j yang tadinya merupakan indeks kolom
digunakan sebagai indeks baris. Untuk mengaplikasikan hal ini cukup dengan mengganti
perintah

aDua[i][j] = (i+j);

menjadi
aDua[j][i] = (i+j);

Setelah modifikasi kecil ini dilakukan, maka isi setiap elemen array aDua sesuai urutan
pengisian nilainya adalah seperti ditunjukkan pada Tabel 20.

Tabel 20. Nilai elemen array setelah pertukaran indeks baris/kolom

Elemen Nilai
aDua[0][0] 0
aDua[1][0] 1
aDua[2][0] 2
aDua[0][1] 0

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 96


Elemen Nilai
aDua[1][1] 1
aDua[2][1] 2
aDua[0][2] 0
aDua[1][2] 1
aDua[2][2] 2

Perhatikan Gambar 30 yang mengilustrasikan perbedaan isi elemen array aDua sesuai Tabel
19 dan Tabel 20.

Gambar 30. Ilustrasi perbedaan isi array aDua

6.3 Operasi Penjumlahan Matriks

Dalam matematika kita mengenal matriks yang merupakan kumpulan bilangan,


simbol atau ekspresi yang secara visual berbentuk persegi panjang yang disusun menurut baris
dan kolom. Bilangan-bilangan yang terdapat pada suatu matriks disebut dengan elemen atau
anggota matriks. Ukuran atau ordo matriks biasanya ditulis dalam format m x n, dimana m
menunjukkan jumlah baris dan n menunjukkan jumlah kolom. Sebagai contoh, matrik 2x2
berarti memiliki 2 baris dan 2 kolom. matrik 3x4 berarti memiliki 3 baris dan 4 kolom, dan
seterusnya.

Matriks biasanya ditulis dengan menggunakan kurung siku atau kurung kurawal.
Misalkan A adalah matriks ordo 3x3, maka matriks dapat ditulis sebagai:

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 97


=

a11 adalah elemen matrik A pada baris pertama kolom pertama, a12 adalah elemen matriks A
pada baris pertama kolom kedua, a21 adalah elemen matriks A pada baris kedua kolom pertama
dan seterusnya hingga a33 yang merupakan elemen baris ketiga kolom ketiga.

Seperti halnya sebuah bilangan atau variabel, operasi matematika seperti penjumlahan,
pengurangan dan perkalian juga dapat dilakukan pada matrik. Namun karena terdiri dari
banyak elemen maka untuk melakukan operasi matematika terdapat beberapa aturan yang
harus diikuti.

Misalkan kita memiliki dua buah matriks A dan B. Operasi penjumlahan matrik A dan
B baru bisa dilakukan jika memenuhi syarat matrik A dan B memiliki ordo yang sama. Artinya
jika A adalah matrik 3x3 maka B juga harus 3x3. Jika ordo matrik A berbeda dengan matrik
B maka operasi penjumlahan atau pengurangan tidak dapat dilakukan.

Penjumlahan atau pengurangan matriks A dan B akan menghasilkan matrik C sebagai


matriks hasil penjumlahan atau pengurangan. Penjumlahan atau pengurangan dua buah
matriks dapat dinotasikan dengan A ± B = C. Setiap elemen pada matriks C merupakan hasil
penjumlahan atau pengurangan dari matriks A dan B pada posisi elemen yang bersesuian.
Proses penjumlahan atau pengurangan matriks A dan B diilustrasikan pada Gambar 31.

11 12 13 11 12 13 11 + 11 12 + 12 13 + 31
21 22 23 + 21 22 23 = 21 + 21 22 + 22 23 + 32
31 32 33 31 32 33 31 + 31 32 + 32 33 + 33

11 12 13 11 12 13 11 − 11 12 − 12 13 − 31
21 22 23 − 21 22 23 = 21 − 21 22 − 22 23 − 32
31 32 33 31 32 33 31 − 31 32 − 32 33 − 33

Gambar 31. Penjumlahan dan pengurangan matriks

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 98


Dari Gambar 31 terlihat bahwa elemen c11 adalah hasil penjumlahan/penguranan
elemen a11 dan b11, elemen c12 adalah hasil penjumlahan/penguranan elemen a12 dan b12, dan
seterusnya. Jika kita menggunakan i sebagai indeks baris dan j sebagai indeks kolom, maka
notasi untuk operasi penjumlahan atau pengurangan dapat disederhanakan menjadi:

aij + bij = cij

Dalam pemrograman, matriks diimplementasikan sebagai array. Ordo matriks


diterjemahkan sebagai ukuran dari array. Matriks A dengan ordo 3x3 dapat diterjemahkan
sebagai array A[3][3]. Perbedaannya hanyalah pada perlakukan indeks yang digunakan, jika
pada matriks indeks selalu dimulai dengan angka 1 maka dalam array dalam bahasa C/C++
selalu dimulai dengan 0. Gambar 32 menunjukkan perbandingan indeks matriks 3x3 menjadi
array [3][3].

 a 11 a 12 a 13 
a a 22 a 23 
 21
 a 31 a 32 a 33 

Gambar 32. Perbandingan indeks matriks dan array

Flowchart program untuk operasi penjumlahan matriks 3x3 ditunjukkan pada Gambar 33.

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 99


Start
A

i=0; i<3; j++ i=0; i<3; j++

j=0; j<3; j++ j=0; j<3; j++

Input
C[ i ][ j ] = A[ i ][ j ] + B[ i ][ j ]
A[ i ][ j ]

j j

i i

i=0; i<3; j++ i=0; i<3; j++

j=0; j<3; j++ j=0; j<3; j++

Input Cetak
B[ i ][ j ] C[ i ][ j ]

j j

i i

A
End

Gambar 33. Flowchart penjumlahan matriks

Pada flowchart Gambar 33 terlihat bahwa terdapat empat buah nested loop, masing-masing
untuk input data matriks A, input data matriks B, operasi penjumlahan matriks A dan matriks

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 100


B serta yang terakhir untuk mencetak matriks C sebagai matriks hasil penjumlahan. Contoh
program yang dibuat berdasarkan flowchart tersebut adalah:

//Dalam C
#include <stdio.h>

main()
{
int i, j, A[3][3], B[3][3], C[3][3];

//Input elemen matriks A


printf("Masukkan nilai elemen matriks A\n");
for(i=0; i<3; i++)
for(j=0;j<3; j++)
{
printf("A[ %d ][ %d ] : ", i, j);
scanf("%d", &A[i][j]);
}

//Input elemen matriks B


printf("\nMasukkan nilai elemen matriks B\n");
for(i=0; i<3; i++)
` for(j=0;j<3; j++)
{
printf("B[ %d ][ %d ] : ", i, j);
scanf("%d", &B[i][j]);
}

//Penjumlahan matriks A dan B


for(i=0; i<3; i++)
for(j=0;j<3; j++)
C[i][j] = A[i][j] + B[i][j];

//Cetak matriks C
printf("\nHasil penjumlahan matriks A dan B:\n");
for(i=0; i<3; i++)
{
for(j=0;j<3; j++)
printf("%5d", C[i][j]);

printf("\n");
}
}

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 101


//Dalam C++
#include <iostream>
using namespace std;

main()
{
int i, j, A[3][3], B[3][3], C[3][3];

//Input elemen matriks A


cout<< "Masukkan nilai elemen matriks A" <<endl;
for(i=0; i<3; i++)
for(j=0;j<3; j++)
{
cout<<"A[ " << i << " ][ " << j <<" ] : ";
cin >> A[i][j];
}

//Input elemen matriks B


cout<< "\nMasukkan nilai elemen matriks B" <<endl;
for(i=0; i<3; i++)
for(j=0;j<3; j++)
{
cout<<"B[ " << i << " ][ " << j <<" ] : ";
cin >> B[i][j];
}

//Penjumlahan matriks A dan B


for(i=0; i<3; i++)
for(j=0;j<3; j++)
C[i][j] = A[i][j] + B[i][j];

//Cetak matriks C
cout<< "\nHasil penjumlahan matriks A dan B:" <<endl;
for(i=0; i<3; i++)
{
for(j=0;j<3; j++)
cout << C[i][j] << "\t";

cout << "\n";


}
}

Bentuk output dari program ini jika dijalankan dan data yang dimasukkan berturut-turut 3, 5,
6, 7, 8, 9, 3, 4, 6, 6, 8, 6, 4, 9, 9, 10, 12, 17 adalah:

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 102


6.4 Array Multi Dimensi

Dalam bahasa C/C++ dimungkinkan untuk menggunakan array yang lebih besar dari
dua dimensi. Bentuk umum untuk mendeklarasikan array multi dimensi adalah:

tipe_data nama_array[jml_1][jml_2] [jml_3] . . . [jml_n];

Namun demikian array lebih dari tiga dimensi relatif jarang digunakan. Selain alasan
kompleksitas dalam penanganan indeksnya, jumlah memory komputer yang digunakan juga
menjadi pertimbangan. Sebagai contoh, array empat dimensi dengan tipe data integer dengan
ukuran [10][6][9][4] akan membutuhkan ruang memori sebesar 10*6*9*4*4 atau 4320 byte
jika diasumsikan tipe data integer menggunakan memory sebesar 4 byte. Jika array dengan
ukuran yang sama tetapi dengan tipe data double maka jumlah memory yang dibutuhkan
adalah 17280 byte, dengan asumsi bahwa tipe data double menggunakan 8 byte memory.
Ruang memory yang digunakan untuk array akan meningkat secara eksponensial menurut
jumlah dimensinya.

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 103


Dalam hal penggunaan looping, jumlah dimensi array akan berbanding lurus dengan
jumlah loop yang digunakan sebagai indeks. Artinya, array satu dimensi memerlukan satu
buah loop, array dua dimensi memerlukan 2 buah loop, array lima dimensi memerlukan lima
buah loop, dan seterusnya.

Pemrograman Dasar, Rihartanto, Arief Bramanto W. P. 104

Anda mungkin juga menyukai