Search This Blog

Friday 2 September 2016

Array 2 dimensi - cetak dan input

Array dua dimensi tidak jauh berbeda dengan array satu dimensi, namun array dua dimensi sendiri dapat dikatakan sebagai gabungan dari array satu dimensi. Seperti dalam bentuknya, jika kita menyiapkan dua buah array satu dimensi dengan A[3]={1,2,3} dan B[3]={1,9,7}, maka dengan bantuan array 2 dimensi, dapat dituliskan dengan C[2][3]={1,2,3,1,9,7}. Dan tampilan yang tadinya
A
1 2 3

B
1 9 7
Tampilan tersebut akan berubah/bergabung menjadi satu variabel, sehingga tampilan pada layar akan menjadi
C
1 2 3
1 9 7
Namun dengan bantuan baris baru pada perulangannya. Jika tidak diberi baris baru maka akan tetap saja menjadi 1 2 3 1 9 7 (secara tampilannya). Namun bedanya untuk memberi baris baru sendiri pada array dua dimensi ini jika dibandingkan dengan pada array satu dimensi ialah lebih mudah, karena menggunakan dua perulangan. Jika dalam array satu dimensi akan dituliskan for(i=0; i<6; i++){ printf("%i", C[i]); if(i==2){ printf("\n");}} namun untuk array dua dimensi cukup menuliskan prtintah baris barunya saja, tidak perlu disertai dengan kondisi if() seperti pada array satu dimensi tersebut. Jika dituliskan perintah baris baru pada array 2 dimensi, cukup ditulis dalam perulangan yang pertama (bukan perulangan yang ada dalam perulangan). Sebagai contoh, Anda dapat menuliskannya sebagai berikut: for(i=0; i<2; i++){ for(j=0; j<3; j++){ } printf("\n"); }.

Jika dilihat dari bentuknya sendiri, perbedaan array dua dimensi dengan array satu dimensi ialah dari barisnya. Jika pada array satu dimensi hanya terdiri dari kumpulan kolom (hanya terdapat satu baris saja), namun pada array dua dimensi terdapat baris dan kolom (beberapa baris dan beberapa kolom). Jumlah baris dan kolom ditentukan sesuai dengan kebutuhan, jadi Anda dapat menentukan sendiri jumlah baris dan kolom yang ingin Anda buat. Jika array 2 dimensi tersebut diilustrasikan sebagai sebuah bangunan, maka terdapat 2 lantai dengan 3 ruangan di setiap lantainya. Serta alasan mengapa array tersebut disebut dua dimensi, ialah karena pada saat Anda ingin mengunjungi sebuah ruangan, maka Andapun harus mengetahui nomor lantai berikut nomor ruangannya. Dengan kata lain alasan disebut dua dimensi ialah karena menggunakan 2 penunjuk. Dan bagaimana untuk menunjuk alamatnya pada pemrograman c? Tidak jauh berbeda dengan pada array 1 dimensi, jika pada array satu dimensi kita menuliskan A[0], maka pada array dua dimensi dapat dituliskan A[0][0]. Begitupun dengan alamat lainnya, Anda dapat menunjuk alamat yang Anda tuju sesuai dengan indeks dari elemennya sendiri. Pada penulisan A[0][0], mengapa ditulis demikian, kembali pada yang sudah disebutkan sebelumnya, bahwa pada array dua dimensi terdapat baris dan kolom, dengan demikian baris dan kolom tersebut harus disebutkan dengan jelas saat menunjuknya. A[baris][kolom] begitulah formasinya. Mari perhatikan contoh berikut:

#include<stdio.h>
main(){
int A[2][3]={24,1,97,22,1,97}, i,j;

for(i=0;i<2; i++){

for(j=0; j<3; j++){
printf("%3i", A[i][j]);
}

printf("\n");
}

}

Pada contoh program diatas, terlihat yang pertama dilakukan ialah seperti pada umumnya, deklarasi dan inisialisasi. Dan pada contoh diatas, inisialisasi langsung dilakukan pada array dua dimensinya, inisialisasi tersebut dilakukan tak lain karena tidak ada proses input dari user, dan nilai yang ada didalamnya akan diproses sebagai contoh dalam program ini. Pada deklarasi tertulis variabel array A dengan 2 baris dan 3 kolom, dengan demikian ada 6 elemen yang terkandung dalam variabel A. Dan dalam contoh tersebut tertulis A[2][3]={24,1,97,22,1,97}, dan jika dipisah berdasarkan baris akan menjadi 24 1 97 dan 22 1 97. Dengan nilai indeks 24 pada indeks ke [0][0], angka 1 pada baris pertama akan berada pada indeks [0][1] dan angka 97 pada baris pertama akan berada pada indeks [0][2]. Mengapa tidak ada indeks 3 sedangkan kolomnya ada 3? Ya, karena indeks pertamanya adalah 0, maka setiap perhitungan indeks dikurangi 1 / dengan kata lain menyesuaikan indeks pertama. Kemudian angka 22 terdapat pada indeks [1][0], angka 1 pada baris kedua tersebut akan berada pada indeks [1][1] serta angka 97 yang terakhir akan menempati indeks [1][2]. Selain deklarasi array 2 dimensi, terdapat juga deklarasi pada variabel i dan j, dimana variabel i akan digunakan untuk mengindeks perbaris array pada perulangan dan variabel j akan membantu perulangan untuk mengindeks perkolom. Perulangan untuk indeks perkolom akan dilakukan didalam perulangan baris, karena jika diibaratkan sebuah ruangan maka sebelum mencari nomor ruang, terlebih dahulu kita mencari nomor lantainya.

Dalam contoh program diatas terlihat sebuah perulangan yang didalamnya terdapat perulangan pula. Seperti yang sudah dikatakan sebelumnya bahwa perulangan pertama ialah untuk mengindeks perbaris array dan perulangan kedua akan mengindeks tiap kolom didalamnya. Untuk prosesnya sendiri, yang pertama (pada perulangan pertama) maka program akan masuk pada perulangan yang terdapat didalamnya dengan melakukan 3x perulangan sesuai dengan perintah yang diberrikan dan mencetak isi array ke layar. Setelah 3x perulangan tersebut selesai maka program akan melanjutkan proses berikutnya ialah mengerjakan yang diluar perulangan tersebut namun tidak bekum keluar dari perulangan yang diluarnya, dan dibawah perulangan yang ada didalam tersebut tertulis perintah memberi baris baru, dan setelah itu program akan melakukan perulangan sekali lagi, karena perulangan yang diluarnya dilakukan sebanyak 2x. Dan seperti sebelumnya, didalam perulangan ini terdapat sebuah perulangan lagi yang bertugas untuk mencetak ke layar isi dari variabel array. Dan setelah perulangan selesai akan kembali mencetak baris baru. Setelah perulangan yang diluarnya selesai dilaksanakan, maka program akan melanjutkan pada next instruction / instruksi berikutnya. Namun dikarenakan dalam program tersebut tidak ada perintah lain lagi setelah perulangan, maka program sudah selesai dalam memproses semua perintah didalamnya.

Untuk sedikit tambahan, untuk input sendiri tidak jauh berbeda penulisan perintahnya dengan percetakan ke layar, dimana perintahnya dituliskan dalam dua buah perulangan. Hanya saja bedanya tidak perlu lagi ditambahkan perintah memberi baris baru pada perulangan barisnya, karena pada inputan, program akan dengan otomatis memberikan baris baru pada setiap menekan tombol enter. Dan tetap saja untuk menginput isi array 2 dimensi membutuhkan 2 penunjuk yaitu baris dan kolomnya, apapun yang berkaitan dengan array 2 dimensi, untuk menjunjuk indeksnya harus dengan jelas, karena array dua dimensi memiliki 2 penunjuk. Untuk menginput nilai pada array dua dimensi jika dilihati dari contoh program diatas tinggalah mengedit sedikit perintah didalamnya, ialah mengganti tulisan printf dengan scanf, lalu A[i][j] ditambah karakter &. Maka akan menjadi &A[i][j]. Dengan demikian proses input tersebut sudah dapat berjalan dengan semestinya. Dan sebaiknya perintah printf() dibawahnya yang mengandung tulisan \n atau dengan kata lain perintah untuk memberi baris baru tersebut dihapus saja. Sehingga perintah untuk menginput dapat dituliskan sebagai berikut:

for(i=0;i<2; i++){
for(j=0; j<3; j++){
scanf("%3i", &A[i][j]);
}
}
Namun jika memang Anda bertujuan untuk menginput dan selanjutnya akan dicetak, maka kedua program diatas (program cetak dengan input) diposisikan yang sesuai, dimana tulisan program untuk menginput ditulis terlebih dahulu (lebih atas) daripada perintah untuk mencetak ke layar. Karena jika program untuk mencetak terlebih dahulu ditulis daripada untuk menginput, maka yang akan dicetak ke layar hanyalah nilai awal dari array tersebut, dan hasil inputnya sendiri tidak akan tercetak ke layar. Terkecuali jika memang setelah inputnya pun dituliskan kembali perintah untuk mencetak hasil inputan tersebut (array tersebut), dengan demikian maka yang akan tercetak ke layar nantinya ialah 2 kali, antara nilai awal dengan hasil inpputan. Dan posisi cetakan ialah terlebih dahulu mencetak nilai awal, lalu akan meminta inputan, setelah itu akan dilakukan proses cetak hasil inputan. Demikianlah yang akan terjadi jika penulisan program seperti itu. Maka sesuaikanlah penulisan program dengan kebutuhan untuk membuat progam itu sendiri, karena program hanya akan berjalan sesuai dengan perintah-perintah yang disisipkan, tidak otomatis semua berjalan sesuai keinginan.

1 comment: