Download - BAB 4 ARRAY (LARIK)blog.binadarma.ac.id/.../2014/08/Bab-04-SDCpp-ArrayLarik.pdf · 2015. 9. 19. · BAB 4 ARRAY (LARIK) 1. Definisi Array Array merupakan kumpulan dari nilai-nilai

Transcript
  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 1

    BAB 4

    ARRAY (LARIK)

    1. Definisi Array

    Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu yang menggunakan nama yang sama. Letak atau posisi dari elemen array ditunjukkan oleh suatu index. Dilihat dari dimensinya array dapat dibagi menjadi Array dimensi satu, array dimensi dua dan array multi-dimensi. Array adalah suatu struktur data yang terdiri dari sejumlah elemen yang memiliki tipe data yang sama. Elemen-elemen array tersusun secara sekuensial dalam memori komputer. Array (Larik) adalah suatu himpunan hingga elemen, terurut dan homogen. Terurut artinya, elemen tersebut dapat diidentifikasikan sebagai elemen pertama, kedua, ketiga dan seterusnya hingga elemen ke-n. Sedang homogen artinya bahwa setiap elemen data dalam array mempunyai tipe yang sama. Posisi masing-masing komponen dalam larik dinyatakan sebagai nomor index. Array adalah kumpulan data bertipe sama yang menggunakan nama sama. Dengan menggunakan array, sejumlah variabel dapat memakai nama yang sama. Antara satu variabel dengan variabel lain di dalam array dibedakan berdasarkan subscript. Sebuah subscript berupa bilangan di dalam kurung siku atau biasa disebut dengan indek.

    Pemahaman lain mengenai array (larik) adalah sebagai berikut :

    Array adalah suatu tipe data terstuktur yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya bisa statis ataupun dinamis dan diberi suatu nama tertentu.

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 2

    Elemen-elemen array tersusun secara berderet dan sekuensial di dalam memori sehingga memiliki alamat yang bersebelahan/berdampingan.

    Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.

    Elemen-elemen array bertipe data sama tapi bisa bernilai sama atau berbeda-beda.

    Keuntungan struktur data Larik: 1. Paling mudah pengoperasiannya 2. Ekonomis dalam pemakaian memori, bila semua elemen terisi. 3. Akses ke setiap elemen memerlukan waktu yang sama.

    Kerugiannya: Memboroskan tempat jika banyak elemen yang tidak digunakan.

    2. Pengaksesan Array

    Elemen-elemen array dapat diakses oleh program menggunakan suatu indeks tertentu. Pengaksesan elemen array dapat dilakukan berurutan atau random berdasarkan indeks tertentu secara langsung. Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud.

    Dalam C, tidak terdapat error handling terhadap batasan nilai indeks, apakah indeks tersebut berada di dalam indeks array yang sudah didefinisikan atau belum. Hal ini merupakan tanggung jawab programmer. Sehingga jika programmer mengakses indeks yang salah, maka nilai yang dihasilkan akan berbeda atau rusak karena mengakses alamat memori yang tidak sesuai.

    3. Array Dimensi Satu

    Array dimensi satu tidak lain adalah kumpulan elemen-elemen identik yang tersusun dalam satu baris. Elemen-elemen tersebut memiliki tipe data yang sama, tetapi isi dari elemen tersebut boleh berbeda.

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 3

    Setiap elemen array dapat diakses melalui indeks.

    Indeks array secara default dimulai dari 0.

    Untuk mendeklarasikan Array dengan notasi sebagai berikut :

    tipe_data nama_array[ukuran]; Contoh : int bil[6]; maka dalam memori komputer akan terbentuk sederet barisan memori linier yang dialokasikan untuk variabel bilangan, yang digambarkan sebagai berikut :

    bil[0] bil[1] bil[2] bil[3] bil[4] bil[5] bil[6]

    Bil

    index 0 1 2 3 4 5 6

    Untuk memberi nilai terhadap variabel array, bisa dilakukan dengan beberapa cara, antara lain : 1. Pemberian nilai langsung serentak

    Contoh : int bil[6]={25,8,73,2,6,83};

    2. Pemberian nilai satu-satu berdasarkan nomor indexnya Contoh: bil[0]=25; bil[2]=73; bil[4]=6; bil[1]=8; bil[3]=2; bil[5]=83;

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 4

    3. Pemberian nilai melalui input data / perintah masukan Contoh : for(i=0;i

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 5

    Contoh Program Array Dimensi Satu /* Program 4.1

    Praktikum Struktur Data

    Materi : Type Data Array

    Kasus : Menentukan bilangan terbesar dari bilangan-bilangan yang

    tersimpan dalam variabel array.

    */

    #include

    #include

    void main()

    {

    int bil[15] ;

    int x,Max ;

    clrscr();

    //Memberi nilai variabel array

    bil[1]=17; bil[2]=23; bil[3]=20;bil[4]=10;bil[5]=15;

    bil[6]=5; bil[7]=33; bil[8]=95;bil[9]=8;bil[10]=88;

    // Menampilkan Bilangan dari var Array

    for(x=1;x

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 6

    4. Array 2 Dimensi Jika array satu dimensi digambarkan sebagai barisan memori linier, maka array dua dimensi digambarkan sebagai sebuah tabel. Sebuah tabel mempunyai beberapa baris dan beberapa kolom yang mana isi elemennya bertipe sama, sehingga dapat digambarkan sebagai berikut:

    0 1 2 3 4

    0 10 55 22 12 23

    1 23 33 34 54 56

    2 12 45 56 76 76

    Data diatas merupakan gambaran array dua dimensi dengan jumlah baris 3 dan jumlah kolom 5. Untuk mendeklarasikan Array dua dimensi dengan notasi sebagai berikut :

    tipe_data nama_array[m][n];

    Dimana m : jumlah baris dan n : jumlah kolom

    Penting untuk Diingat! Indek di Turbo C++ secara default dimulai dari 0 (nol). Cara mengakses array dua dimensi sama saja dengan array sati dimensi, yaitu dengan menuliskan kedua indeknya dalam kurung siku. Contoh : printf(“%d”,matrik[1][2]); artinya perintah tersebut befungsi untuk mencetak matrik pada elemen baris ke-1 dan kolom ke-2. Contoh pemberian nilai dan pengkasesan array dua dimensi dapat dilihat pada contoh program berikut :

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 7

    /* Program 4.2

    Praktikum Struktur Data

    Materi : Array Dua Dimensi

    Kasus : Operasi Matrik

    */

    #include

    #include

    void main()

    {

    int MatrikA[2][3],MatrikB[2][3],MatrikC[2][3];

    int x,y;

    clrscr();

    MatrikA[0][0]=1;

    MatrikA[0][1]=2;

    MatrikA[0][2]=3;

    MatrikA[1][0]=4;

    MatrikA[1][1]=5;

    MatrikA[1][2]=6;

    MatrikB[0][0]=11;

    MatrikB[0][1]=12;

    MatrikB[0][2]=13;

    MatrikB[1][0]=14;

    MatrikB[1][1]=15;

    MatrikB[1][2]=16;

    printf("Matrik A :\n");

    for(x=0;x

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 8

    printf("| \n");

    }

    printf("\nMatrik B :\n");

    for(x=0;x

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 9

    5. Panjang Array Panjang suatu larik/array dapat ditentukan dengan rumus sebagai berikut :

    1. Array 1 Dimensi

    L = UB – LB +1

    2. Array 2 Dimensi

    L = (UB1 – LB1 + 1) * (UB2 – LB2 + 1)

    Adapun untuk menentukan Alamat Awal (Base Address ) dari penyimpanan data dalam

    storage dirumuskan sebagai berikut :

    1. Array 1 Dimensi

    Dimisalkan array A(LB:UB), dengan Base Array = B, dan Size setiap cellnya = S

    AlamatAwal(x) = B + S(x – LB)

    2. Array 2 Dimensi

    Dimisalkan array A(LB1:UB1 , LB2:UB2), dengan Base Array = B, dan Size setiap

    cellnya = S, maka alamatnya dirumuskan sebagai berikut :

    AlamatAwal(i, j) = B+((i –LB1)*(UB2-LB2+1)*S)+((j – LB2)*S)

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 10

    Dimana L = Length Array, UB = Upper Bound (Batas Atas) , LB = Lower Bound (Batas

    Bawah) dari array yang bersangkutan.

    /* Program 4.3

    Praktikum Struktur Data

    Materi : Array

    Kasus : Program ini adalah program untuk menentukan Ukuran dan Alamat

    Awal dari penyimpanan data Array

    */

    #include

    #include

    //prototype fungsi sendiri

    void Input_Dimensi_Satu();

    void Input_Dimensi_Dua();

    void Input_Base_Location();

    void Size_Dimensi_Satu();

    void Size_Dimensi_Dua();

    void Address_Dimensi_Satu();

    void Address_Dimensi_Dua();

    const Kol = 15;

    int LowerBound, UpperBound,LowerBound1, UpperBound1,

    LowerBound2, UpperBound2, Size, Dimensi, Pilih,

    BaseLoc, BaseAddress, Alamat, SizeElemen;

    //(* Program Utama Menu Array *)

    void main()

    {

    clrscr();

    do {

    textbackground(0);

    clrscr();

    textbackground(5);

    gotoxy(Kol, 4);printf("+------------------------------------+\n");

    gotoxy(Kol, 5);printf("| MENU UTAMA DATA ARRAY |\n");

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 11

    gotoxy(Kol, 6);printf("+------------------------------------+\n");

    gotoxy(Kol, 7);printf("| 1. Size Array Satu Dimensi |\n");

    gotoxy(Kol, 8);printf("| 2. Size Array Dua Dimensi |\n");

    gotoxy(Kol, 9);printf("| 3. Address Awal Array Satu Dimensi|\n");

    gotoxy(Kol,10);printf("| 4. Address Awal Array Dua Dimensi |\n");

    gotoxy(Kol,11);printf("| 5. Selesai |\n");

    gotoxy(Kol,12);printf("+------------------------------------+\n");

    gotoxy(Kol,13);printf("| Pilihan Anda [1..5] : [ ] |\n");

    gotoxy(Kol,14);printf("+------------------------------------+\n");

    gotoxy(Kol+26,13);scanf("%d",&Pilih);

    textbackground(0);

    clrscr();

    switch (Pilih)

    {

    case 1 : Size_Dimensi_Satu();break; //(* Panggil Prosedur *)

    case 2 : Size_Dimensi_Dua();break; //(* Panggil Prosedur *)

    case 3 : Address_Dimensi_Satu();break; //(* Panggil Prosedur *)

    case 4 : Address_Dimensi_Dua();break; //(* Panggil Prosedur *)

    }

    }while(Pilih

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 12

    void Input_Base_Location()

    {

    printf("Masukkan Base Location : ");scanf("%d",&BaseLoc);

    printf("Masukkan Size Tiap Elemen : ");scanf("%d",&SizeElemen);

    }

    void Size_Dimensi_Satu()

    {

    Input_Dimensi_Satu(); // Panggil Prosedure

    //Panjang/Size/Length Array

    Size = (UpperBound - LowerBound) + 1;

    printf("Size/Length Array : %d",Size);

    getch();

    }

    void Size_Dimensi_Dua()

    {

    Input_Dimensi_Dua(); //(* Panggil Prosedur *)

    //(* Panjang/Size/Length Array *)

    Size =(UpperBound1-LowerBound1 + 1)*(UpperBound2 - LowerBound2 + 1);

    printf("\nSize/Length Array : %d",Size);

    getch();

    }

    void Address_Dimensi_Satu()

    {

    Input_Dimensi_Satu(); //(* Panggil Prosedure *)

    Input_Base_Location();

    printf("Masukkan Alamat Awal yang dicari : ");scanf("%d",&Alamat);

    BaseAddress = BaseLoc + SizeElemen * (Alamat - LowerBound);

    printf("Base Address dari Alamat %d adalah : %d",Alamat,BaseAddress);

    getch();

    }

  • Data Array dalam C++ 2010 Suyanto

    Praktikum Struktur Data dengan Turbo C++ Hal 13

    void Address_Dimensi_Dua()

    {

    int Alamat1, Alamat2;

    Input_Dimensi_Dua(); //(* Panggil Prosedure *)

    Input_Base_Location();

    printf("Masukkan Alamat Awal 1 yang dicari : ");scanf("%d",&Alamat1);

    printf("Masukkan Alamat Awal 2 yang dicari : ");scanf("%d",&Alamat2);

    BaseAddress = BaseLoc + ((Alamat1-LowerBound1)*(UpperBound2-

    LowerBound2+1)*

    SizeElemen)+((Alamat2-LowerBound2)*SizeElemen);

    printf("Base Address dari Alamat (%d , %d) adalah :

    %d",Alamat1,Alamat2,BaseAddress);

    getch();

    }