Search This Blog

Saturday 3 September 2016

Menghitung total, menjumlah dan mengali

Pada topik kali ini penulis ingin membahas sedikit mengenai cara menghitung total isi array dua dimensi dengan sebuah contohnya, namun untuk penjelasannya sendiri penulis tidak ingin berpanjang lebar karena tidak jauh berbeda dengan cara menghitung total isi array satu dimensi, dengan demikian penjelasan lebih lanjut dapat dipahami melalui pembahasan array satu dimensinya pada halaman lain di blog penulis. Selain itu penulis juga ingin membahas mengenai cara menjumlahkan dua buah isi array dua dimensi dengan sebuah contohnya pula, dan yang satu inipun tidak akan banyak dibahas karena tidak jauh berbeda prosesnya dengan penjumlahan pada array satu dimensi. Nah selain kedua itu, pada topik kali ini penulis ingin pula membahas mengenai cara mengalikan dua buah isi array dua dimensi yang mana sedikit berbeda cara pengaliannya dengan array satu dimensi. Apa perbedaannya? Jika kita lihat dari bentuknya sendiri antara array dua dimensi dengan satu dimensi sudah jelas berbeda, jika array satu dimensi kita dapat samakan dengan sebuah vektor, nah untuk array dua dimensi sendiri dapat kita samakan dengan sebuah matriks, dimana terdapat baris dan kolom. Dan jika kita membahas mengenai matriks sendiri, sudah jelas kita ketahui bahwa bentuk matriks ialah seperti berikut:

a11 a12 a13 a1n
 a21 a22 a23 a2n
...............
 am1 am2 am3 amn
Dengan bentuk matriks yang seperti demikian, maka pengaliannya pun jelas tidak sama dengan pengalian pada dua buah vektor yang mana hanya tinggal mengalikan sesama indeks dari kedua vektor tersebut. Nah kali ini kita sedikit mengulas pelajaran matematika yang pernah diajarkan pada masa sekolah dulu. Untuk pengalian matriks terdapat proses kali yang dijumlahkan didalamnya. Bagaimana maksudnya? Masih ingat dengan istilah baris x kolom? Ya itulah cara mengalikan dua buah matriks, dimana baris pada matriks A dikalikan dengan kolom pada matriks B. Jika pada matriks A isinya:
1 2 3
4 5 6
Dikalikan dengan matrik B dengan isi:
1 2 3
3 4 5
5 6 7
Maka untuk proses pengaliannya ialah indeks baris pada matriks A akan dikalikan dengan indeks kolom pada matriks B, dan semua hasilnya akan digabungkan untuk sebuah indeks baru sebagai total. Mari kita coba hitung untuk contoh tersebut, jika dikalikan maka hasilnya ialah:
C11=(1x1)+(2x3)+(3x5) C12=(1x2)+(2x4)+(3x6) C13=(1x3)+(2x5)+(3x7)
 C21=(4x1)+(5x3)+(6x5) C12=(4x2)+(5x4)+(6x6) C13=(4x3)+(5x5)+(6x7)

Sehingga akan menghasilkan matriks baru dengan nilai:

22 28 34
49 64 79
Mengapa hasil / cara hitungnya demikian? Ya karena untuk perkalian yang mengandung baris dan kolom tidak cukup dengan mengalikan antar indeks yang sama, namun baris dikalikan dengan kolom, dan itu memang sudah rumusnya. Untuk pemrograman sendiri, bukan berarti memang dari sananya sudah tersedian untuk rumus tersebut, justru seorang programmer harus menyesuaikan algoritmanya dengan rumus yang sudah tersedia, terkecuali jika memang ada rumus lain yang dapat memberikan hasil yang serupa. Dan jika ditanya mengapa yang tadinya matriks tersebut terdiri dari A= 2x3 dan B=3x3 dapat menghasilkan matriks baru dengan ukuran 2x3, itu karena jika sebuah matriks A dikalikan dengan matriks B, maka C ialah terdiri dari jumlah baris=matriks A dan jumlah kolom=matriks B. karena pada dasarnya untuk perkalian matriks sendiri syaratnya ialah jumlah kolom matriks 1 harus sama dengan jumlah baris matriks 2. Dan jika kita lihat kembali contoh diatas, terlihat disana bahwa matriks A memiliki 3 kolom, begitupun dengan matriks B yang memiliki 3 baris. Dengan demikian kedua matriks tersebut dapat dikalikan. Dan untuk pemrograman c yang akan dilakukan ialah bagaimana kita membuat rumus yang dapat mengalikan kedua matriks seperti pada ketentuan yang disebutkan diatas, yang paling sulit untuk dipikirkan, bagaimana membuat program yang dapat mengalikan baris dengan kolom. Jika memang menggunakan bantuan perulangan, seperti apa bentuk perulangan yang dapat membantu mengalikan baris dengan kolom, sedangkan itu sudah ketentuan bahwa barisnya harus dikalikan dengan kolom, tidak seperti pada array satu dimensi yang cukup dengan satu perulangan lalu perkalian tersebut dapat dilakukan. Okay dengan demikian mari kita bahas satu persatu, seperti yang sudah dikatakan diatas, yang pertama akan dibahas ialah untuk menghitung total isi array. Mari perhatikan contoh berikut:

#include<stdio.h>
main(){
int R[2][3]={1,9,7,3,4,6}, total=0, r, t ;
for
(r=0; r<2; r++){
for(t=0; t<3; t++){
total=total+R[r][t];
}
}

printf("Total isi variabel array adalah:\n\n");
printf("%5i", total);
}
Pada contoh diatas kita dapat melihat contoh untuk menghitung jumlah dari suatu array dua dimensi, sama prosesnya dengan penghitungan jumlah pada array satu dimensi, hanya saja berbeda pada proses deklarasi/inisialisasi (jelas karena berbeda jenis arraynya) serta perulangannya, jika pada array satu dimensi kita menggunakan satu perulangan saja, pada array dua dimensi ini kita menggunakan perulangan dalam perulangan seperti biasanya untuk mengindeks array dua dimensi. Tetapi untuk proses perhitungannya sendiri sama saja, sama-sama menggunakan perintah total=total+R[..][..] atau total+=R[..][..]. Tetapi perlu sedikit diingatkan, untuk percetakannya sendiri tidak perlu menggunakan perulangan, karena yang namanya total berarti sebuah nilai tunggal yang cukup dicetak satu kali, karena indeksnya pun hanya satu. Selain menghitung total isi array 2 dimensi, penulis ingin memberikan sedikit contoh untuk menjumlahkan 2 buah array 2 dimensi, yang mana sama seperti pada penghitungan total isi array dimana prosesnya tidak jauh berbeda antara array dua dimensi dengan satu dimensi. Namun ya sama pula prosesnya, ialah jika pada array satu dimensi hanya menggunakan satu perulangan, pada array dua dimensi kita menggunakan bantuan perulangan dalam perulangan, dimana perulangan tersebut merupakan proses pengindeksan isi array yang sudah disesuaikan. Namun untuk penjumlahan sendiri, walau sifatnya penjumlahan pada dua buah array, tetapi tidak perlu menjumlahkannya dengan menjumlah baris dengan kolom yang mana hasilnya akan digabungkan menjadi satu indeks baru pada array seperti pada proses perkalian. Untuk matriks sendiri, dalam penjumlahan cukup dengan menjumlahkan sesama indeks, dimana a11 akan ditambahkan dengan b11 dan menghasilkan c11 pula. Jadi prosesnya tidak terlalu sulit dengan hanya menggunakan bantuan perulangan dalam perulangan (seperti biasa) sebagai pengindeks kedua array tersebut, yang penting jumlah baris dan kolomnya sama. Okay, pada contoh berikut ini sesuai dengan apa yang sudah disebutkan diatas, hanya saja penulis tidak menggunakan 3 array, hanya 2 array yang dijumlahkan dan hasilnya disimpan dalam salah satu array yang dijumlahkan tersebut, mari perhatikan:

#include<stdio.h>
main(){
int R[2][3]={1,2,3,4,5,6}, T[2][3]={9,8,7,6,5,4}, r, t;

for(r=0; r<2; r++){
for(t=0; t<3; t++){
T[r][t]+=R[r][t];
}
}

printf("Hasil penjumlahan kedua variabel array:\n\n");

for(r=0; r<2; r++){
for(t=0; t<3; t++){
printf("%5i", T[r][t]);
}
printf("\n");
 }
}
Seperti yang sudah dijelaskan diatas, bahwa prosesnya tidak jauh berbeda dengan array satu dimensi, hanya saja memiliki perbedaan dalam perulangannya yang dikarenakan perbedaan jenis array. Serta sedikit mengingatkan, mengapa untuk percetakan kali ini menggunakan perulangan (tidak sama dengan penghitungan total isi array diatas) ialah karena untuk menjumlahkan dua buah array akan menghasilkan sebuah array baru dengan indeks yang sama dengan array yang dijumlahkannya. Dan agar tidak terlalu banyak basa basi serta menghindari php pada pembaca karena sebelumnya sudah membahas panjang lebar mengenai perkalian matriks, berikut contoh program untuk mengalikan 2 buah matriks / array dua dimensi:

#include<stdio.h>
main(){
int R[2][3]={1,2,3,4,5,6}, T[3][5]={9,8,7,6,5,4,3,2,1,2,3,4,5,6,7}, A[2][5], r, t, f;

for(r=0; r<2; r++){
for(t=0; t<5; t++){
A[r][t]=0;
for(f=0; f<3; f++){
A[r][t]=A[r][t]+R[r][f]*T[f][t];
}
}
}

printf("Hasil perkalian kedua variabel array:\n\n");

for(r=0; r<2; r++){
for(t=0; t<5; t++){
printf("%5i", A[r][t]);
}
printf("\n");
}
}

Silahkan disesuaikan dengan penjelasan mengenai perkalian diatas. Dan sedikit tambahan, mengapa perulangan tersebut ada 3, ialah karena indeks yang dibutuhkan ada 3 antara lain indeks untuk baris variabel R / baris variabel A (variabel r), kolom variabel R / baris variabel T (variabel f) serta kolom variabel T / kolom variabel A (variabel t). Semua itu dapat dilihat dari perulangannya, for() yang pertama menggunakan variabel r yang mana kondisinya r

No comments:

Post a Comment