Friday, February 7, 2014

Array


Array

Array atau larik didefinisikan sebagai pemesanan alokasi memory berurutan. Definisi ini kurang tepat, karena terjadi kerancuan antara struktur data dan representasinya.Memang benar array hampir selalu di implementasikan menggunakan memory berurutan tapi tidak selalu demikian.
Semua elemem array bertipe sama. Array cocok untuk organisasi kumpulan data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari awal.
Homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.

Karakteristik Array
  1.  Mempunyai tipe data sama (bersifat homogen).
  2.      Mepunyai batasan dari pemesanan alokasi memori (bersifat  statis)
    1.  Dapat diakses secara acak.
    Deklarasi Array
    Ada tiga hal yang harus di ketahui dalam mendeklarasikan array, yaitu :
    1.   Type data array.
    2.   Nama variable array.
    3.   Subkrip / index array.

    Contoh deklarasi dari array adalah sebagai berikut :
    int A[5] ; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe
    integer.

    Jenis Array
    1.      Array Dimensi Satu
    Deklarasi : Type_Data Nama_Variabel [index]
    n
    p (Index Array)
    i = 1


    Rumus untuk menentukan jumlah elemen dalam array adalah :


    p = Perkalian dari index sebelumnya (untuk arraybdimensi dua dan tiga).
    Pemetaan (Mapping) Array Dimensi Satu Ke Storage
    Rumus             :  @A[i] = B + (i – 1) * L
    Dimana            :  @A[i]           :  Posisi array yang dicari
                                        B         :  Posisi awal index di memori computer
                                        i         :  Subkrip atau index array yang di cari
                                        L         :  Ukuran atau besar memori suatu tipe data

    2.      Array Dimensi Dua
    Deklarasi         : Type_Data Nama_Variabel [index1] [index2]
    n
    p (Index Array)
    i = 1


                Menentukan jumlah elemen dalam array dimensi dua :


    p = Perkalian dari statemen sebelumnya
    Pemetaan (Mapping) Array Dimensi Dua Ke Storage
    Terbagi dua cara pandang (representasi) yang berbeda :
    ·         Secara kolom per kolom (coloumn major order / CMO)

    @M[i][j] = M[0][0] + {(j – 1) * K + (i – 1)} * L

      
    ·         Secara baris per baris (row major order / RMO)

    @M[i][j] = M[0][0] + {(i – 1) * N + (j – 1)} * L

      
    Keterangan      :
    @M[i][j] = Posisi array yang di cari, M[0][0 = Posisi alamat awal index array, i = Baris, j = Kolom, L = Ukuran memory type data, K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris.

    3.      Array Dimensi Tiga
    Deklarasi         : type_Data Nama_Variabel [index1][index2][index3]
    n
    p (Index Array)
    i = 1


    Menentukan jumlah elemen dalam array dimensi tiga :


    p = Perkalian dari statemen sebelumnya
    Pemetaan (Mapping) Array Dimensi Tiga Ke Storage

    Rumus  : @M[n][m][p] = M[0][0][0] + {((n – 1) * (index1)) + ((m – 1) *     (index2)) + ((p – 1) * (index3)} * L




    TRIANGULAR ARRAY (ARRAY SEGI TIGA)
    Triangular array dapat merupakan Upper Triangular (seluruh elemen di bawah diagonal utama = 0), ataupun Lower Triangular (seluruh elemen di atas diagonal utama = 0).
    N
    ∑          I = N (N+1)/2
    I = 1

    Dalam array Lower Triangular dengan N baris, jumlah maksimum elemen <> 0, tidak lebih dari  


    SPERSE ARRAY (ARRAY JARANG)
    Suatu array yang sangat banyak elemen nol-nya.




    Operasi Dasar Pada Array

    Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung. Nilaidi masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati
    posisi-posisi lain.
    Terdapat dua tipe operasi, yaitu :
    1. Operasi terhadap satu elemen / posisi dari array
    2. Operasi terhadap array sebagai keseluruhan
       
    Dua operasi paling dasar terhadap satu elemen / posisi adalah
    1. Penyimpanan nilai elemen ke posisi tertentu di array
    2. Pengambilan nilai elemen dari posisi tertentu di array

    Operasi-operasi dasar terhadap array secara keseluruhan adalah :
    1. Operasi penciptaan
    2. Operasi penghancuran
    3. Oparasi pemrosesan traversal
    4. Operasi pencarian (table look-up)
    5. Operasi sorting

    Penciptaan Dan Penghancuran
    Operasi penciptaan biasa disebut inisialisasi.Operasi ini untuk mempersiapkan struktur data untuk operasi-operasi berikutnya.Operasi penghancuran menyatakan ketidak berlakuan struktur data atau membebaskan memory, menyerahkan memory ke manajemen memory agar dapat di pergunakan keperluan lain.Operasi penghancuran penting terutama bila struktur data di implementasikan secara dinamis menggunakan pointer

    Penyimpanan Dan Pengambilan Nilai
    Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan pengambilan nilai elemen pada posisi tertentu di array.
    Contoh :
    A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A
    C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A

    Pemrosesan Transversal
    Operasi pemrosesan transversal adalah pemrosesan mengolah seluruh elemen secara sistematik.

    Pencarian Di Array (Table Look-Up)
    Pencarian di array (table look-up) adalah proses pencarian suatu nilai di array. Klasifikasi pencarian di array adalah :
      - Pencarian sekuen (sequential searching),yaitu:
      - Tanpa Boolean, terbagi:
    ·         Tanpa sentinen
    ·         Dengan sentinen
      - Menggunakan boolean
        Pencarian secara biner / dikotom (binary = dichotomy searching).

    Pengurutan Array
    Pengurutan atau sorting adalah proses yang paling sering di lakukan dalam pengolahan data.pengurutan di bedakan menjadi dua, yaitu :
    a.  Pengurutan internal
    Pengurutan dilakukan terhadap sekumpulan data di media memory internal komputer dimana data dapat di akses elemennya secara langsung.
    b.  Pengurutan eksternal
    Pengurutan data di memory sekunder.Biasanya data bervolume besar sehingga tidak mampu dimuat semuanya di memori utama.

    Keunggulan Dan Kelemahan Array
    Ø  Keunggulan array adalah sebagai berikut :
    1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain.
    2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen-elemen tetangga, baik elemen pendahulu atau elemen penerus.
    3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga,maka penggunaan penyimpanannya sangat efisien.
    Kelemahan Array adalah sebagai berikut :
    Array mempunyai fleksibilitas rendah, sehingga tidak cocok untuk berbagai aplikasi karena array mempunyai batasan sebagai berikut:
    1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemenadalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain.
    2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulitdiubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis

    - Tidak efisien dalam penggunaan memori
    - Menyiakan banyak waktu komputasi
    -Pada suatu aplikasi, representasi statis tidak dimungkinkan


    Array Berdimensi Satu

          Contoh array berdimensi satu, misalnya menginputkan 5 buah data temperatur. Dan kelima data tersebut disimpan pada array bernama suhu.

    Contoh 1 :
    #include
    #include

    void main()
    {
    float suhu[5];
    // array dengan 5 elemen bertipe float
    // Membaca data dari keyboard dan meletakkan ke array
    cout << "Masukkan 5 buah data suhu" << endl;
    for (int i=0; i<5; i++)
    {
    cout << i + 1 << " : "; cin >> suhu[i];
    }

    // Menampilkan isi array ke layar
    cout << "Data suhu yang dimasukkan : " << endl;
    for (i=0; i<5; i++)
    cout << suhu[i] << endl;
    }
    Mendefinisikan array
    Float suhu[5]; float : Tipe elemen array suhu : Nama array [5] : Jumlah elemen array Maka array suhu dapat menyimpan data sebanyak 5 buah.
    2 Subscript dari array selalu dimulai dari nol. Misal, jika jumlah elemen array [5], maka index dari array tersebut yaitu 0, 1, 2, 3, 4. 2 Mengakses elemen array Setelah suatu array didefinisikan, elemen array dapat diakses dengan bentuk : suhu[i] menyatakan “elemen suhu dengan subscript sama dengan i” Perintah seperti cin >> suhu[i]; berarti “membaca data dari keyboard dan meletakkan ke elemen nomor i pada array suhu”.
    Perintah seperti cout >> suhu[i]; berarti “menampilkan elemen bernomor i pada array suhu”.


    Contoh 2 :
    #include
    #include

    const int jum_data = 5;
    void main()
    {
    float suhu[jum_data]; // array suhu
    float total; // untuk menampung total suhu

    // Membaca data dari keyboard dan meletakkan ke array
    cout << "Masukkan 5 buah data suhu" << endl; for (int i=0; i<5; i++) { cout << i + 1 << " : "; cin >> suhu[i];
    }
    // Menghitung nilai rata-rata
    total = 0; // Mula-mula diisi dengan nol
    for(i=0; i<< "Suhu rata-rata= " << total/jum_data << endl; }
    2 Memberikan nilai awal terhadap array Seperti halnya variabel biasa, array juga dapat diberi nilai awal (diinisialisasikan) pada saat didefinisikan. Misalnya: int jum_hari[12]={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; Catatan: C++ secara otomatis akan memberikan nilai awal nol terhadap array yang bersifat global. Jika bersifat lokal, maka harus diatur terlebih dahulu. Contoh 3 : #include
    #include
    #include

    void main()
    {
    // Pendefinisian array jum_hari dan pemberian nilai awal
    int jum_hari[12]={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    // Tampilkan isi jum_hari
    cout << "Masukkan 5 buah data suhu" << endl; for (int i=0; i<12; i++) { cout << "jum_hari[" << i << "] =" << jum_hari[i] << endl; } } Array Berdimensi Dua Sebagai gambaran, data kelulusan dari jurusan Teknik Informatika, Manajemen Informatika, dan Teknik Komputer dari tahun 1992 hingga 1995. Nama 1992 1993 1994 1995 Teknik Informatika 35 45 80 120 Manajemen Informatika 100 110 70 101 Teknik Komputer 10 15 20 17
    2 Mendefinisikan array berdimensi dua Bentuk diatas dapat dibentuk dalam array berdimensi dua, pendefinisiannya : int nilai[3][4]; Pada pendefinisian di atas : - 3 menyatakan jumlah baris (mewakili nama) - 4 menyatakan jumlah kolom (mewakili nilai) 2 Mengakses array berdimensi dua Masing-masing elemen di dalam array berdimensi dua dapat diakses dengan bentuk : Baris dan kolom dimulai dari 0. Contoh pengaksesan elemen array berdimensi dua : 1. data_lulus[1][2] = 5; Merupakan instruksi untuk memberikan nilai 5 ke baris 1 kolom 2. 2. cout<< data_lulus[1][2]; Merupakan perintah untuk menampilkan elemen data_lulus dengan subscript pertama (baris) berupa 1 dan subscript kedua (kolom) bernilai 2. Contoh 4 : #include
    #include

    void main()
    {
    int data_lulus[3][4]; // Array berdimensi dua
    int tahun, jurusan;

    // Memberikan data ke elemen array data_lulus
    data_lulus[0][0] = 35; // TI - 1992
    data_lulus[0][1] = 45; // TI - 1993
    data_lulus[0][2] = 90; // TI - 1994
    data_lulus[0][3] = 120; // TI - 1995
    data_lulus[1][0] = 100; // MI - 1992
    data_lulus[1][1] = 110; // MI - 1993
    data_lulus[1][2] = 70; // MI - 1994
    data_lulus[1][3] = 101; // MI - 1995
    data_lulus[2][0] = 10; // TK - 1992
    data_lulus[2][1] = 15; // TK - 1993
    data_lulus[2][2] = 20; // TK - 1994
    data_lulus[2][3] = 17; // TK - 1995

    // Proses untuk memperoleh informasi kelulusan
    while(1)
    {
    cout << "Jurusan (0 = TI, 1 = MI, 2 = TK): "; cin >> jurusan;
    if ((jurusan==0) || (jurusan==1) || (jurusan==2))
    break; // keluar dari while
    }
    while(1)
    {
    cout << "Tahun (1992 - 1995): "; cin >> tahun;

    if ((tahun >= 1992) && (tahun <= 1995)) { tahun -= 1992; // konversi ke 0, 1, 2 atau 3 break; // keluar dari while } } cout << "Jumlah yang lulus = " << data_lulus[jurusan][tahun] << endl; } Melewatkan Array Sebagai Argumen Fungsi
    2 Array juga dapat berkedudukan sebagai parameter di dalam fungsi. Misalnya : const int MAKS = 5 int data[MAKS]; Dari data di atas, fungsi yang menerima array di atas dapat dibuat prototipe-nya sebagai berikut : void inisialisasi_data(data[MAKS]); Dan deklarasi fungsi sebagai berikut : void inisialisasi_data(data[], int & jumlah); Pada contoh kedua, tanda di dalam tanda [ ] tidak terdapat apa-apa dan parameter kedua digunakan untuk menyatakan jumlah elemen array serta berkedudukan sebagai referensi (bisa diubah dari dalam fungsi inisialisasi_data()). Contoh 5 : #include
    #include
    #include
    #include

    const int MAKS = 100;
    void inisialisasi_data(int data[], int &jumlah);
    void main()
    {
    int data_acak[MAKS]; // array berdimensi satu
    int jumlah;
    inisialisasi_data(data_acak, jumlah);

    // Tampilkan elemen-elemen array
    cout << "Isi array : " << endl; for(int i=0; i<< data_acak[i] << endl; } // Definisi fungsi void inisialisasi_data(int data[], int &jumlah) { while(1) { cout << "Berapa jumlah data yang ingin" << endl; cout << "dibangkitkan secara acak (5 - 100) ? "; cin >> jumlah;

    if ((jumlah >= 5) && (jumlah<=100)) break; } randomize(); // Menyetel pembangkit bilangan acak for(int i=0; i
    #include
    #include

    const int BARIS = 5;
    const int KOLOM = 5;
    void isi_matriks(float mat[][KOLOM], int &brs, int &kol);

    void main()
    {
    float matriks[BARIS][KOLOM];
    int jum_baris, jum_kolom;
    int i,j;

    isi_matriks(matriks, jum_baris, jum_kolom);
    cout << "\nMatriks yang terbentuk: " << endl; cout << setiosflags(ios::fixed); // ios::fixed --> mengatur angka yg dimasukkan dalam bentuk angka biasa
    // bukan dalam bentuk eksponen
    for (i=0; i<< setw(12) << setprecision(5) << matriks[i][j]; // setprecision(5) --> mengatur banyak angka dibelakang koma
    cout << endl; } } // Definisi Fungsi void isi_matriks(float mat[][KOLOM], int &brs, int &kol) { int i,j; cout << "Pastikan jumlah baris dan kolom" << endl; cout << "tidak melebihi 5" << endl; cout << "Jumlah baris = "; cin >> brs;
    cout << "Jumlah kolom = "; cin >> kol;
    for (i=0; i< brs; i++) for (j=0; j<< "Elemen " << i << ", " << j << " = "; cin >> mat[i][j];
    }
    }


    Array Berdimensi Banyak
    C memungkinkan untuk membuat array yang dimensinya lebih dari dua. Bentuk umum pendeklarasian array berdimensi banyak :
    tipe nama_var[ukuran 1][ukuran2}…[ukuranN];

    sebagai contoh :
    int data_huruf[2][8][8];

    merupakan pendeklarasian array data_huruf sebagai array berdimensi tiga. Sama halnya dengan array berdimensi satu atau dua, array berdimensi banyak juga bisa diinisialisasi.
    contoh soal :
    1. Mencari sebuah karakter inputan dalam array yang telah di deklarasi .
    source code :
    #include <stdio.h>
    main()
    {
    int i,x;
    char huruf[20]={‘a’,'b’,'c’,'d’,'e’,'f’,'g’,'h’,'i’,'j’,'k’,'l’,'m’,'n’,'o’,'p’,'q’,'r’,'s’,'t’}, a;
    printf(“Masukan Sebuah karakter =  \n”);
    scanf(“%c”,&a);
    for(i=0;i<20;i++)
    if(huruf[i]==a)
    x=1;
    if (x==1)
    printf(“karakter  tersebut ada dalam aray\n”);
    else
    printf(“karakter tersebut tidak ada dalam array\n”);
    }

    2. program untuk mencocokan apakah sebuah karakter yang diinputkan dari keyboard ada dalam array yang telah dideklarasikan.
    source code :
    #include <stdio.h>
    main()
    {
    int i,x;
    char huruf[20]={‘a’,'b’,'c’,'d’,'e’,'f’,'g’,'h’,'i’,'j’,'k’,'l’,'m’,'n’,'o’,'p’,'q’,'r’,'s’,'t’}, a;
    printf(“Masukan Sebuah karakter =  \n”);
    scanf(“%c”,&a);
    for(i=0;i<20;i++)
    if(huruf[i]==a)
    x=1;
    if (x==1)
    printf(“karakter  tersebut ada dalam aray\n”);
    else
    printf(“karakter tersebut tidak ada dalam array\n”);
    }



    Sumber :

    No comments:

    Post a Comment