Kamis, Juli 16, 2015

Programming in C - Part 12: Array (satu dimensi) dalam bahasa C

 Array adalah sekumpulan/ sederetan object yang bertipe sama. Misalnya sebuah array bertipe integer berarti sederetan data yang berjenis integer.

contoh array bertipe integer : 1 2 3 4 5 6 4 6 7 8 5 4 3 4
contoh array bertipe char    : 's' 'a' 's' 't' 'r' 'a' 'w' 'a' 'n'


jika array hanya terdiri dari satu deretan saja, maka disebut array 1 dimensi. Tetapi jika memiliki beberapa deret seperti pada tabel maka itu adalah array 2 dimensi dst.

Contoh array 2 dimensi

11    12    13    14    15
21    22    23    24    25
31    32    33    34    45


Deklarasi dan inisiasi array


Deklarasi array dapat dilakukan dengan cara sbb :

tipe namaArray[ukuranArray];
 

contoh :

int deretAngka[5] ;

perintah ini akan mencadangkan sederet tempat dimemori yang dapat ditempati oleh 5 buah bilangan integer. Jika setiap bilangan integer menempati ruang ukuran 4 byte, maka total memory yang dialokasikan untuk menampung array deretAngka ini adalah 5 x 4 = 20 bytes !.

Sekarang cobalah hitung berapa byte memory yang dicadangkan pada perintah berikut ini:

char     deretHuruf[10] ;
double   deretDesimal[10] ;


Jika tidak ingin menentukan panjang array di awal, maka dapat digunakan deklarasi berikut ini:

int deretAngka[] ; // tanda kurung siku dibiarkan kosong.

Mengisi Array.


Setelah diinisiasi, array dapat diberikan nilai (inisiasi). Untuk memberikan nilai dapat digunakan pola berikut :

namaArray[indeks] = nilaiYangDiberikan ; 
contoh :

deretAngka[0] = 1 ;

Perlu diketahui bahwa penomoran indeks dalam suatu array dimulai dari 0, bukan 1. jadi perintah :

deretAngka[1] = 5 ;


akan memberi nilai 5 pada deretAngka indek 1, yaitu deretan nomor 2

perhatikan contoh berikut ini:

/* =======================================
 * Contoh Array dalam C
 * Created by: Sastrawan
 * Topik : Membuat dan menggunakan array
 * ========================================
 */
 
 #include<stdio.h>

 int main( int argc, char *argv[])
 {
    int deretAngka[5];  //deklarasi array ukuran 5
  
    deretAngka[0] = 10 ;
    deretAngka[1] = 11 ;
    deretAngka[2] = 12 ;
    deretAngka[3] = 13 ;
    deretAngka[4] = 14 ;
  
    printf("elemen deretAngka yang pertama = %d \n", deretAngka[0]);
    printf("elemen deretAngka yang kedua = %d \n", deretAngka[1]);
    printf("elemen deretAngka yang ketiga = %d \n", deretAngka[2]);


    printf("Mengisi elemen array deretAngka yang ke 3 dengan 30 \n");
    deretAngka[2]= 30 ;
  
    printf("elemen deretAngka yang ketiga = %d \n\n", deretAngka[2]);

     
       // Mencetak isi array
       int panjang = sizeof(deretAngka);        //Menghitung jumlah byte  yang
                          //dibutuhkan untuk arrayIntY.
                          //ingat integer membutuhkan 4 byte
                         //jadi banyak elemen dalam array ini = jumlahmemory/4
     
       printf("Banyaknya memory deretAngka adalah %d Bytes\n", panjang);
       printf("Banyaknya elemen deretAngka adalah %d \n\n", panjang/4);
     
       int i ;
     
       for(i=0; i<(panjang/4) ; i++) {
      
        printf("elemen ke deretAngka %d adalah %d \n",i,deretAngka[i]);
    }

 return 0 ;
 }



Outputnya adalah sbb :

elemen deretAngka yang pertama = 10
elemen deretAngka yang kedua = 11
elemen deretAngka yang ketiga = 12
Mengisi elemen array deretAngka yang ke 3 dengan 30
elemen deretAngka yang ketiga = 30

Banyaknya memory deretAngka adalah 20 Bytes
Banyaknya elemen deretAngka adalah 5

elemen ke deretAngka 0 adalah 10
elemen ke deretAngka 1 adalah 11
elemen ke deretAngka 2 adalah 30
elemen ke deretAngka 3 adalah 13
elemen ke deretAngka 4 adalah 14



Untuk mempersingkat penulisan, anda juga dapat menggunakan teknik berikut untuk mendeklarasikan dan menginisasi array sekaligus sbb :

    int deretAngka[5] = {10,11,12,13,14};  //deklarasi dan inisiasi
   int deretAngka[]  = {10,11,12,13,14,15,16,17}

  
Perhatikan contoh berikut ini akan menghasilkan output yang indentik dengan output sebelumnya

/* =======================================
 * Contoh Array dalam C
 * Created by: Sastrawan
 * Topik : Membuat dan menggunakan array
 * ========================================
 */
  
 #include<stdio.h>

 int main( int argc, char *argv[])
 {
    int deretAngka[5] = {10,11,12,13,14};  //deklarasi array ukuran 5
  
  
    printf("elemen deretAngka yang pertama = %d \n", deretAngka[0]);
    printf("elemen deretAngka yang kedua = %d \n", deretAngka[1]);
    printf("elemen deretAngka yang ketiga = %d \n", deretAngka[2]);


    printf("Mengisi elemen array deretAngka yang ke 3 dengan 30 \n");
    deretAngka[2]= 30 ;
  
    printf("elemen deretAngka yang ketiga = %d \n\n", deretAngka[2]);

     
       // Mencetak isi array
       int panjang = sizeof(deretAngka);        //Menghitung jumlah byte  yang
                             //dibutuhkan untuk arrayIntY.
                            //ingat integer membutuhkan 4 byte
                            //jadi banyak elemen dalam array ini = jumlahmemory/4
     
       printf("Banyaknya memory deretAngka adalah %d Bytes\n", panjang);

       printf("Banyaknya elemen deretAngka adalah %d \n\n", panjang/4);
     
       int i ;
     
       for(i=0; i<(panjang/4) ; i++) {
      
        printf("elemen ke deretAngka %d adalah %d \n",i,deretAngka[i]);
    }
     
 return 0 ;
 }
 

Bagaimana dengan array tipe lain ?. Tentu saja sama. Anda hanya perlu berhati-hati dengan formatnya. Misalnya untuk mencetak character maka anda perlu menggunakan placeholder %c, integer %d, dst. Perhatikan contoh berikut ini :

/* =======================================
 * Contoh Array dalam C
 * Created by: Sastrawan
 * Topik : Membuat dan menggunakan arraystring
 * ========================================
 */
  
 #include<stdio.h>

 int main( int argc, char *argv[])
 {
    char deretHuruf[] = {"Sastrawan Zakariya"};  //deklarasi array ukuran 5
    //perhatikan bahwa inisasi langsung seperti diatas harus menggunakan
    // tanda petik GANDA
  
  
    printf("elemen deretHuruf yang pertama = %c \n", deretHuruf[0]);
    printf("elemen deretHuruf yang kedua = %c \n", deretHuruf[1]);
    printf("elemen deretHuruf yang ketiga = %c \n", deretHuruf[2]);

    //contoh cara mengisi elemen array bertipe char menggunakan ''
    printf("Mengisi elemen array deretHuruf yang ke 3 dengan S \n");
    deretHuruf[2]= 'S' ;
    deretHuruf[3]= 'T' ;
    deretHuruf[4]= 'R' ;
  
    printf("elemen deretHuruf yang ketiga = %c \n\n", deretHuruf[2]);
     
       // Mencetak isi array
       int panjang = sizeof(deretHuruf);        //Menghitung jumlah byte  yang
                                //dibutuhkan untuk arrayIntY.
                                //ingat integer membutuhkan 4 byte
                                //jadi banyak elemen dalam array ini = jumlahmemory/4
       //perintah berikut ini akan menghasilkan panjang elemen di tambah
       // ditambah 1 karena untuk tipe string, C akan menambahkan
       // satu karakter \0 (null) yang menandai akhir string.
       printf("Banyaknya memory deretHuruf adalah %d Bytes\n", panjang);

       // satu char membutuhkan 1 byte
       printf("Banyaknya elemen deretHuruf adalah %d \n\n", panjang/1);
            
       int i ;
     
       for(i=0; i<(panjang) ; i++) {
      
        printf("elemen ke deretHuruf %d adalah %c \n",i,deretHuruf[i]);
    }
     
   //mencetak semuanya secara berurut
 
     for(i=0; i<(panjang) ; i++) {
      
        printf("%c",deretHuruf[i]);
    }
     

 return 0 ;
 }


OUTPUTNYA :

elemen deretHuruf yang pertama = S
elemen deretHuruf yang kedua = a
elemen deretHuruf yang ketiga = s
Mengisi elemen array deretHuruf yang ke 3 dengan S
elemen deretHuruf yang ketiga = S

Banyaknya memory deretHuruf adalah 19 Bytes
Banyaknya elemen deretHuruf adalah 19

elemen ke deretHuruf 0 adalah S
elemen ke deretHuruf 1 adalah a
elemen ke deretHuruf 2 adalah S
elemen ke deretHuruf 3 adalah T
elemen ke deretHuruf 4 adalah R
elemen ke deretHuruf 5 adalah a
elemen ke deretHuruf 6 adalah w
elemen ke deretHuruf 7 adalah a
elemen ke deretHuruf 8 adalah n
elemen ke deretHuruf 9 adalah 
elemen ke deretHuruf 10 adalah Z
elemen ke deretHuruf 11 adalah a
elemen ke deretHuruf 12 adalah k
elemen ke deretHuruf 13 adalah a
elemen ke deretHuruf 14 adalah r
elemen ke deretHuruf 15 adalah i
elemen ke deretHuruf 16 adalah y
elemen ke deretHuruf 17 adalah a
elemen ke deretHuruf 18 adalah
SaSTRawan Zakariya


Perhatikan hasil akhirnya. pada elemen ke 18 berisi NULL yang merupakan tanda akhir dari sebuah string. Demikian juga huruf S T R yang berubah menjadi huruf besar karena sudah diubah secara manual dengan menggunakan indek dan tanda kutip tunggal ''

Dari penjelasan ini kita dapat melihat bahwa sebenarnya STRING adalah ARRAY of CHARACTER. Inilah alasannya mengapa saya tidak membahas data bertipe string pada pembahasan sebelumnya. Saya menunggu sampai pembahasan mengenai array ini dibuat sekaligus dengan membahas data tipe string.

Sekali lagi sekedar mempertegas bahwa STRING ADALAH ARRAY CHARACTER yang pada ujungnya ditambahkan karakter NULL secara otomatis oleh compiler C. Dengan demikian ukuran array ini selalu jumlah character di tambah 1.

jadi string "puasa" adalah sebenarnya array 'p','u','a','s','a','\0'
dengan panjang 6 bytes ( 5 huruf puasa + 1 NULL)

0 comments:

Posting Komentar

Write your comment here