Rabu, 01 Mei 2013

Array 2 Dimensi Pada Pemrograman C

Selamat datang bulan Mei... :) Oke, artikel PintarCoding.com kali ini akan membahas tentang array 2 dimensi pada bahasa pemrograman C, dan bagaimana penerapan dari array 2 dimensi pada matrix 2 dimensi.

Pada Artikel sebelumnya kita sempat mempelajari mengenai array, yang mana array tersebut mempunyai tipe (int, float, char) dan mempunyai jumlah data yang dapat ditampung. Bagaimana dengan array 2 dimensi??? ya hampir mirip dengan artikel seblumnya namun dalam array 2 dimensi terdapat array didalam array. Contoh lain apakah teman-teman pernah mendapatkan materi Matrix pada saat SD, SMP, SMA, atau Kuliah, atau waktu TK... ya array 2 dimensi dapat diibaratkan dengan matrix dua dimensi yang biasanya diajarkan di sekolah-sekolah... seperti apa bentuknya, yuks mari kita lihat penjelasan dan ilustrasi dibawah...


Misal kita ingin membuat matrix dengan dimensi 2 x 3, seperti berikut :

| 1 2 3 |
| 4 5 6 |

Kalo cuma nulis gitu aja sih gampang, aku juga bisa :), cara definisikan di variabel array-nya dong gimana... :) hayo gimana hayo???... gini caranya...

Dalam matrix 2 x 3 tersebut biasanya di-index-kan seperti berikut:
posisi (1, 1) isinya 1
posisi (1, 2) isinya 2
posisi (1, 3) isinya 3
posisi (2, 1) isinya 4
posisi (2, 2) isinya 5
posisi (2, 3) isinya 6

Bagaimana dengan array, hampir mirip penulisan index tersebut namun karena array indexnya dimulai dari 0, sehingga penulisannya sebagai berikut:
int x[2][3]; // pendeklarasian dimensi dari array

x[0][0] = 1; // posisi (1, 1)
x[0][1] = 2; // posisi (1, 2)
x[0][2] = 3; // posisi (1, 3)
x[1][0] = 4; // posisi (2, 1)
x[1][1] = 5; // posisi (2, 2)
x[1][2] = 6; // posisi (2, 3)
Cara lain untuk mengisi nilainya adalah diisi saat variable tersebut dideklarasikan, seperti berikut:
int x[2][3] = {{1, 2, 3}, {4, 5, 6}};
Kira-kira posisi baris dan kolom dari matrix tersebut jika digambarkan adalah sebagai berikut:
Bagaimana cara Matrix tersebut agar bisa menampilkan data dalam bentuk seperti berikut:

1 2 3
4 5 6

berikut sourcodenya, terdapat 2 kali perulangan, for didalam for:
#include <stdio.h>

int main() {
    int x[2][3] = {{1, 2, 3}, {4, 5, 6}}; // insialisasi data
    int i, j;
    
    for (i=0; i<2; i++) { // for yang pertama
        for (j=0; j<3; j++) { // for yang kedua
            printf("%d ", x[i][j]); // mencetak isi array
        }
        printf("\n"); // mencetak enter pada baris terakhir.
    }
    return 0;   
}
dan jreng jreng... Hasil perintah diatas dapat teman-teman liat di hasil compile pada codepad berikut ini. Oke sedikit menjelaskan sourcode diatas,
  1. int x[2][3], tentu teman-teman sudah tau apa yang dilakukan pada baris ini. ya benar mendeklarasi dan mengisi data array pada variable x.
  2. int i, j, baris ini digunakan untuk menginisialisasi variable i dan j yang digunakan pada kedua for.
  3. FOR yang pertama, digunakan untuk pencacahan baris, hhhmmm... pencacahan apa ya jika di bahasa indonesiakan... mungkin semacam penghitungan misal dari baris 1 kemudian baris 2, baris 3, baris 4 dan seterusnya.
  4. FOR yang ke dua, digunakan untuk pencacahan colom, karena dalam hal ini terdapat 2 baris dan 3 kolom. karena setiap baris terdapat array dengan panjang data 3 sehinga pada FOR ini akan menghitung dari 0 sampai 2 untuk baris pertama, kemudian hal yang sama akan dilakukan pada baris yang ke 2.
  5. printf("%d ", x[i][j]), ini digunakan untuk mencetak isi dari array pada posisi i, j, yang mana i menandakan posisi baris, sedangkan j menandakan posisi kolom
  6. printf("\n"), digunakan untuk melakukan pemindahan baris jika semua data pada array baris tersebut sudah berhasil di print.
Trus apakah ada cara lain dalam mencetaknya tanpa perulangan, ya ada dengan cara manual, namun ini tidak disarankan untuk digunakan, karena sudah ada for yang sangat amat memudahkan dan mempersingkat waktu kita untuk menulis sourcecode, code ini hanya sebagai contoh untuk lebih memahami jalannya perintah for diatas:
#include <stdio.h>

int main() {
    int x[2][3] = {{1, 2, 3}, {4, 5, 6}}; // insialisasi data
    int i, j;

    // for untuk mencetak data pada baris pertama
    printf("%d ", x[0][0]); // mencetak posisi (0, 0)
    printf("%d ", x[0][1]); // mencetak posisi (0, 1)
    printf("%d ", x[0][2]); // mencetak posisi (0, 2)

    printf("\n"); // mencetak enter

    // for untuk mencetak data pada baris kedua
    printf("%d ", x[1][0]); // mencetak posisi (1, 0)
    printf("%d ", x[1][1]); // mencetak posisi (1, 1)
    printf("%d ", x[1][2]); // mencetak posisi (1, 2)
    
    return 0;   
}
Oke saya rasa sudah terlalu panjang penjelasannya... :) Artikel berikut akan membahas tentang kasus perkalian matrix antara matrix 2x2 dengan matrix 2x1, seperti berikut:

| 0 1 |     | 2 |
| 1 0 |  x  | 3 |

Sampai jumpa diartikel berikut, Terima Kasih, Semoga Bermanfaat. :)

2 komentar:

  1. posting anda luar biasa, sangat bisa di pahami.
    tengkyu ^_^

    BalasHapus