Search This Blog

Tuesday 23 August 2016

Array satu dimensi

Array merupakan sesuatu yang berderet atau berbentuk barisan. Dalam pengertian ini kita dapat menyimpulkan bahwa array memiliki indeks dalam satu sama lainnya, dengan demikian array dapat terdiri dari banyak personil didalamnya. Dalam bahasa pemrograman sendiri array diartikan sebagai suatu variabel sejenis yang sedemikian rupa membentuk barisan hingga alamatnya saling menyambung atau bersebelahan, dan dapat pula dikatakan bahwa alamat tersebut berdampingan. Dapat kita ibaratkan seperti sebuah prajurit yang sedang berbaris, satu sama lainnya berdekatan dan memiliki indeks yang bersebelahan. Dan yang dimaksud dalam variabel sejenis, seperti halnya dalam barisan prajurit tersebut, mereka berada dalam baris yang sama, namun satu sama lain berbeda (bukan orang yang sama). Dalam satu array kosong dapat kita ilustrasikan seperti sebuah kolom yang menyambung dengan nomor masing-masing, dan nomor tersebut dimulai dari nol (indeks awalnya 0). Dan kolom tersebut biasa dikenal dengan sebutan elemen, cell, lokasi atau kolom array.

Array satu dimensi biasa disebut dengan vektor, karena hanya memiliki satu arah. Dengan demikian, untuk mengilustrasikan array satu dimensi cukup dengan membayangkan sebuah vektor yang dalam setiap vektor tersebut memiliki banyak isi dengan tanda pemisah disetiap isinya. Penulisannya pun tidak jauh berbeda, pada saat kita menulis sebuah vektor A={97, 24, 1}, dalam penulisan arraypun sama, hanya saja kita diharuskan untuk mendeklarasikan terlebih dahulu jumlah ruang yang akan dibutuhkan untuk menyimpan isi array tersebut. Pendeklarasian tersebut ialah dengan menuliskan nama dari variabel array dan diikuti dengan tanda kurung siku yang didalamnya terdapat hitungan jumlah ruang yang dibutuhkan si array, setelah itu diberi tanda sama dengan yang diikuti tanda kurung kurawal berikut isi array didalamnya, ditulis seperti berikut: A[3]={97,24,1}. Untuk penggunaan umum dari array satu dimensi sendiri tidak lain seperti berikut ini:

#include&ltstdio.h>
main(){
int i, A[3]={97, 24, 1};
for(i=0; i<3; i++){
printf("%3i", A[i]);
}
}
Dalam program tersebut tertulis bahwa sudah disiapkan sebuah Array A satu dimensi dengan 3 buah isi yang bertipe data integer, dimana isinya ialah angka 97, 24 dan 1. Dan kemudian ketiga angka tersebut akan dicetak dengan tipe data yang sama, yaitu integer. Pada percetakan tertulis A[i] yang berartikan A ke i. Mengapa ditulis demikian? Karena untuk mencetak isi array tersebut kita menggunakan perulangan, tidak dapat sekaligus mencetak semuanya, kita mencetak per-indeks array, dan "i" merupakan pengindeksan melalui perulangan. Maksudnya dengan perulangan tersebut kita memanfaatkan i sebagai pengindeks karena nilai yang digunakan pada inisialisasi i pun dari angka 0, dimana sesuai dengan indeks array yang dimulai dari nol. Maka saat dicetak ke layar, yang terlihat ialah:
97 24 1

Namun jika kita bicara tentang apa bedanya Array dengan pengisian biasa pada sebuah variabel? Ialah jika array dicetak per-indeks, dengan demikian pada saat mencetak, seperti halnya mencetak sebuah nama, pada variabel biasa untuk menulis (contoh) "GOOMILAR", maka kita akan mencetak semuanya secara sekaligus atau bersamaan, namun pada array kita dapat mencetak huruf-huruf tertentu yang kita inginkan atau yang kita ambil dari elemen arrray tersebut. Seperti contoh berikut ini:

#include<stdio.h>
main(){
char A[9]="GOOMILAR";
printf("%3c", A[0]);
printf("%3c", A[3]);
printf("%3c", A[5]);
}
Pada program tersebut untuk tulisan GOOMILAR sendiri tidak tercetak semuanya, namun hanya sebagian yang dipilih saja, seperti pada contoh diatas, yang dicetak hanyalah indeks ke 0 yang berisikan huruf G, indeks ke 3 yang berisikan huruf M dan indeks ke 5 yang berisikan huruf L. Maka yang akan tercetak ke layar pada saat program di compile & run ialah ketiga huruf tersebut, dengan tampilan sebagai berikut:

 G M L 
Dan bukan hanya seperti diatas, kelebihan saat menggunakan arraypun sangat banyak, seperti halnya untuk mencetak ke layar, tidak hanya seperti pada variabel biasa, untuk mencetak variabel biasa kita akan mendapatkan tampilan sesuai dengan apa yang kita isikan pada variabel tersebut, namun dalam array, kita dapat membuat banyak variasi didalamnya, seperti membuat cetakan berbentuk persegi, segitiga dan banyak lagi. Begitupun untuk menyalin isi array tersebut, kita dapat menyalinnya satu persatu isi dari array tersebut, tidak seperti pada variabel biasa yang hanya menyalin sama persis sepersi isi dari variabel yang disalinnya. Berikut ini merupakan contoh dari pencetakan isi array yang dibuat menyerupai segitiga:

#include<stdio.h>
main(){
char A[16]="ABCDEFGHIJKLMNO";
int i, j=0, k=1;
for(i=0; i<15; i++){
printf("%3c", A[i]);
j++;
if(j%k==0){
printf("\n");
j=0; k++;
}
 }
}

Merasa bingung dengan program diatas, oke, mari kita bahas satu persatu dari mulai inisialisasi nilai dari variabel j dan k. Dalam variabel j dan k, kita melihat bahwa j memiliki nilai 0 sedangkan k memiliki nilai 1. Namun pada saat setelah percetakan dan sebelum masuk pada kondisi if, terlihat ada tulisan j++, mengapa demikian? Karena dalam kondisi if, untuk meng-enterkannya harus j%k==0, yang artinya saat j dimodulus k hasilnya harus 0. Dan pada program tersebut walau nilai awal j=0, tetapi pada saat dimoduluskan nilai j sudah menjadi 1 karena sebelumnya j sudah ditambah 1 melalui perintah j++. Lalu setelah itu nilai j kembali menjadi 0 karena ada perintah j=0; yang berarti nilai j kembali menjadi 0. Maka pada perulangan perikutnya, begitu masuk pada perintah if, nilai j akan menjadi 1 dengan perintah j++ sebelum if, sedangkan nilai k sudah menjadi 2 dengan perintah k++ setelah if tadi, dan k nilainya terus bertambah tanpa ada perintah seperti j yang mengubah nilainya kembali seperti semula. Dengan demikian pada perulangan kedua tidak akan diberi baris baru karena j%k tidak sama dengan 0, j bernilai 1 dan k bernilai 2, dan dengan demikian perintah yang berada didalam if pun tidak dilaksanakan, dengan kata lain nilai j masih 1 dan k masih 2. Lalu menuju perulangan berikutnya dimana setelah mencetak  huruf A (baris baru) B C, maka akan dilaksanakan perintah dalam if, karena nilai j sebelum masuk perintah if sudah menjadi 2 dengan adanya j++, sedangkan k tidak menjadi 3 alias masih 2 karena perintah k++ dalam if tidak dilaksanakan tadi. Maka dengan demikian setelah J=2 dan k=2, program dalam if dijalankan kembali, yaitu untuk memberi baris baru, karena pada saat dimoduluskan nilainya menjadi 0, 2%2=0. Dan begitupun pada perulangan berikutnya, perintah untuk memberi baris baru hanya akan berjalan setiap nilai j dan k sama. Maka dengan demikian, yang akan Anda lihat di layar pada saat menjalankan program tersebut ialah:

A
B C
D E F
G H I J
K L M N O
Itu merupakan salah satu kelebihan dalam penggunaan array satu dimensi, dan masih banyak lagi tentunya kelebihan lain yang dimiliki array apabila dibandingkan dengan penggunaan variabel biasa (yang bukan array). Begitupun soal variasi, banyak lagi variasi percetakan dengan menggunakan array yang hanya bermodalkan kepahaman looping berikut pengondisian pada array terebut, tinggal saja disusun algoritmanya serta dipahami setiap programnya. Memang terkadang algoritma pemrograman itu menjadi keluhan, terutama bagi para programmer pemula atau yang baru mengenalnya, namun pada saat semua program tersebut dibawa asik, maka semua rasa bingung Anda akan menjadi tantangan baru yang menjadi seru dalam otak Anda. Begitupun yang diderita penulis pada saat pertama mengenal algoritma tersebut, sungguh bingung, namun setelah dicoba terus dan dipahami, sungguh semua itu asik untuk dipelajari.

Selain dari variasi membuat segitiga dengan array satu dimensi yang sudah dicontohkan tadi, ada satu hal lagi yang ingin ditambahkan disini, yaitu untuk menyalin isi array ke array lain, dimana contoh programnya adalah sebagai berikut:

*Menyalin isi array

#include<stdio.h>
main(){
 int i, j=0, A[3]={97, 24, 1}, B[3];
for(i=0; i<3; i++){
B[j]=A[i];
j++;
}
for(j=0; j<3; j++){
printf("%3i", B[j]);
}
}

1 comment:

  1. bang kalo huruf nya sampe y giman
    contoh nyan kayak gini gimana
    A
    BC
    DEF
    GHIJ
    KLMNO
    PQRS
    TUV
    WX
    Y

    ReplyDelete