Search This Blog

Friday 2 September 2016

Menyalin isi array 2 dimensi ke 2 dimensi dan 1 dimensi

Menyalin isi array 2 dimensi dapat dilakukan dengan array 2 dimensi pula maupun dengan array satu dimensi. Namun terdapat sedikit perbedaan antara penyalinan pada sesama array dua dimensi dengan penyalinan yang dilakukan pada/dari array satu dimensi. Jika dalam penyalinan pada sesama array dua dimensi tinggal disisipkan A[x][y]=B[x][y] didalam perulangan, namun pada penyalinan yang dilakukan dengan array satu dimensi ditambahkan lagi variabel lain untuk pengindeksan array satu dimensinya. Bagaimana caranya? Dengan menambahkan satu variabel baru yang dideklarasi dan diberi nilai awal terlebih dahulu. Misal pada deklarasi dituliskan n=0, dan pada perulanganpun ditambahkan n++, karena n lah yang akan mengindeks si array satu dimensi tersebut. Dengan demikian, penulisan perintah dalam perulangan untuk proses penyalinannya pun dapat dituliskan A[n]=B[x][y] ataupun sebaliknya sesuai dengan penyalinan yang dilakukan. Mari perhatikan contoh berikut ini:

#include<stdio.h>
main(){
int R[2][3]={97,1,24,22,1,97}, T[2][3], r, t ;

printf("Isi variabel R:\n\n");

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

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

printf("\n\n\n\n\nHasil pemindahan ke variabel T:\n\n");

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

Pada contoh program diatas, terlihat sebuah code program yang isinya merupakan perintah untuk menyalin isi array dua dimensi ke array dua dimensi tanpa adanya perintah input yang dilakukan, dengan kata lain yang disalin ialah apa yang ada pada nilai awal variabel. Pada prosesnya, yang pertama sudah pasti dilakukan ialah deklarasi, deklarasi dilakukan untuk penamaan variabel yang nantinya akan dijadikan sebagai patokan dalam pengolahan program. Didalam tahap deklarasi terdapat beberapa variabel yang disajikan, yang mana ada dua variabel array dengan 2 baris dan 3 kolom, serta satu diantaranya sudah diberi nilai awal, karena isi variabel array tersebut kemudian akan disalin pada variabel array yang kosong. Selain itu ada dua variabel biasa yang nantinya akan membantu proses perulangan, karena untuk mencetak, menginput, menyalin atau beberapa program yang menggunakan array dua dimensi maka akan menggunakan 2 perulangan pada prosesnya. Perulangan pertama untuk mengindeks baris dan perulangan kedua untuk mengindeks kolomnya. Setiap kali perulangan dalam indeks baris maka didalamnya akan terjadi proses perulangan yang mengindeks kolom. Dengan kata lain, kolom-kolom tersebut berada dalam baris, atau setiap baris terdiri dari beberapa kolom. Dibawah deklarasi, kita melihat ada perintah cetak ke layar, namun itu bukanlah percetakan isi array, melainkan hanya cetak keterangan pada layar untuk nilai awal yang sudah tersedia. Setalah itu ada perulangan dimana dalam perulangan tersebut ada perulangan lagi, dan didalamnya ada perintah untuk mencetak isi array yang sudah terisi dengan nilai awal saat deklarasi. Proses percetakan tersebut ialah perbaris, dimana pada setiap baris akan mencetak beberapa kolom didalamnya, setelah itu barulah akan diberi baris baru sebelum menuju percetakan beris kedua dengan beberapa kolom didalamnya. Seperti biasa, pada perulangan pertama pada saat r=0 maka akan terjadi perulangan didalamnya dari mulai t=0, t=1, t=2 dengan pengindeksan [0][0], [0][1] dan [0][2], dan dalam ketiga indeks tersebut kita mendapatkan angka 97 1 24. Setelah angka tersebut selesai, maka akan diberi baris baru dengan perintah \n yang mana akan melanjutkan pada r=1 atau dengan kata lain baris kedua. Pada r=1 akan terjadi perulangan kembali kolom yang ada didalamnya, ialah pada t=0, t=1 dan t=2 dengan pengindeksan [1][0], [1][1] dan [1][2] yang berisikan deret angka 22 1 97. Sehingga proses perulangan tersebut dapat dikatakan selesai. Namun bukan berarti program sudah selesai bertugas, karena masih ada next instruction atau instruksi berikutnya setelah perulangan tersebut. Terlihat ada perulangan lagi dibawahnya. Nah inilah proses yang sebenarnya bertugas untuk menyalin isi array tersebut ke array lain, dimana didalamnya terdapat perintah T[r][t]=R[r][t] yang berarti isi variabel array T baris ke r dan kolom ke t akan diisikan dengan isi dari variabel array R baris ke r dan kolom ke t. Proses perulangannya sama saja, ialah pada r ke 0 akan melakukan proses didalamnya ialah perulangan untuk mengindeks kolom. Pada saat r=0 dan t=0 maka isi variabel array R baris ke 0 kolom ke 0 akan disalin ke variabel array T baris ke 0 kolom ke 0, dan akan berakhir pada t ke 2 atau urutan ke 3 dalam elemen array tersebut. Setelah selesai maka akan keluar dari perulangan tersebut, namun bukan berarti akan sepenuhnya keluar dari semua perulangan tersebut, tetapi akan diberi baris baru dan melanjutkan pada r=1. Pada r=1 akan dilakukan kembali perulangan untuk indeks kolom dimana pada saat r=1 dan t=0 maka isi variabel R baris ke 1 kolom ke 0 akan disalin ke variabel T baris ke 1 kolom ke 0, hingga berakhir pada t=2 atau deret terakhir dari elemen array tersebut. Dan setelah itu program akan keluar dari perulangan sepenuhnya dan melanjutkan pada instruksi berikutnya. Terlihat ada perintah cetak ke layar lagi, namun perintah cetak itu hanya keterangan yang diberikan untuk user ke layar, sehingga user akan mengerti pada saat terdapat beberapa percetakan yang sama antara yang disalin dengan hasil salinan. Setelah itu terdapat perulangan lagi, dimana perulangan tersebut ialah perulangan untuk mencetak isi dari variabel T yang tadinya kosong dan telah diisi dengan hasil salinan dari variabel R. Perhatikan saja, perbedaannya hanya pada perintah didalam perulangan tersebut, yang mana jika dibandingkan dengan perulangan pertama tertulis printf("%5i", R[r][t]); sedangkan pada perulangan tersebut ialah printf("%5i", T[r][t]); yang mana hanya berbeda satu huruf antara R dengan T.

Penjelasan diatas hanya menjelaskan tentang penyalinan isi array 2 dimensi ke array 2 dimensi, dan kali ini akan diberikan sedikit contoh untuk menyalin isi array dua dimensi ke satu dimensi ataupun menyalin isi array satu dimensi ke dua dimensi, yang mana seperti telah dikatakan diatas bahwa penyalinan ini memiliki perbedaan dengan proses penyalinan ke sesama array dua dimensi maupun ke sesama array satu dimensi. Dimana pada penyalinan ini membutuhkan bantuan satu variabel lagi ialah variabel untuk mengindeks isi dari variabel array satu dimensi, mengapa demikian? Karena array dua dimensi memiliki dua penunjuk, maka pengindeksannya pun berbeda dengan array satu dimensi, maka dengan demikian walau kedua jenis array tersebut diletakan dalam sebuah perulangan yang sama, namun pengindeksannya tetap masing-masing, dimana pada array dua dimensi menggunakan proses indeks dengan memanfaatkan proses perulangan yang didalamnya terdapat perulangan lagi sebagai penunjuk antara baris dengan kolom, sedengkan array satu dimensinya sendiri menggunakan variabel lain yang tidak tercantum dalam perulangan tersebut. Perhatikan contoh berikut:

#include<stdio.h>
main(){
int R[6]={97,1,24,22,1,97}, T[2][3], r, t, n=0;
printf("Isi variabel R:\n\n");

for(t=0; t<6; t++){
printf("%5i", R[t]);
}

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

printf("\n\n\n\n\nHasil pemindahan ke variabel T:\n\n");

for(r=0; r<2; r++){
for(t=0; t<3; t++){
printf("%5i", T[r][t]);
}
printf("\n");
 }
}
Jika dibandingkan dengan penyalinan sesama array dua dimensi, contoh program diatas hanya memiliki sedikit perbedaan, sesuai dengan penjelasan singkat diatas program tersebut, hanya pada tahapan deklarasi yang menambahkan satu variabel baru sebagai pengindeks array satu dimensi dengan nilai awalnya. Mengapa diberi nilai awal? Karena didalam perulangannya terdapat n++, maka dengan demikian diperlukan nilai awal. Seperti biasa, bahkan sama seperti dalam perulangan, saat mengindeks, maka diberi nilai awal terlebih dahulu agar program tahu harus dari mana ia mulai mengindeks. Selain pemberian nilai awal, seperti yang sudah dikatakan bahwa perbedaannya ialah pada pengindeksan, terlihat ada perintah penyalinan dengan code T[r][t]=R[n]; yang mana untuk pengindeksan array dua dimensi memanfaatkan proses perulangan sedangkan untuk array satu dimensinya sendiri menggunakan bantuan dari variabel lain yang tadi diberi nilai awal diluar perulangan. Selain itu ada perintah n++ dimana indeks akan terus bergerak ditambah satu, maka dengan demikian pengindeksan yang dilakukan pada array satu dimensi menyesuaikan dengan indeks pada array dua dimensi. Dengan demikian proses penyalinan dapat dikatakan selesai. dan perhatikan sedikit menyenai percetakan ke layar, untuk perulangan pertama hanya dilakukan dengan 1 perulangan karena hanya mencetak isi array satu dimensi, namun pada perulangan terakhir karena mencetak isi array dua dimensi maka dilakukan perulangan dengan perulangan lagi didalamnya. Jadi dengan kata lain percetakannya pun tetap dilakukan sesuai dengan jenis array masing-masing, walau sebelumnya array dua dimensi tersebut mendapatkan nilai dari salinan array satu dimensi.

No comments:

Post a Comment