Makalah Struktur Data Array



KATA PENGANTAR


Puji  syukur  kepada Tuhan yang  Maha Esa kiranya  telah diberikan  kesehatan dan pembelajaran sehingga penyusunan makalah ini telah selesai berkat pertolongan Tuhan dan kerja keras.Dan kepada Bapak Dosen Algoritma saya mengucap syukur sebesar besarnya kiranya telah diberikan pelajaran algoritma hingga kami dapat berpikir dengan matang karena penyusunan makalah ini kami bias bekerja sama antara sesama mahasiswa hingga kami dapat berbagi ilmu.
            Semoga makalah  ini dapat berguna pada teman-teman  mahasiswa tanpa doa teman-teman mungkin makalah ini belum selesai.Saya berterima kasih atas bantuannya tanpa kalian mungkin makalah ini tidak selesai.
            Mungkin makalah ini jauh diatas sempurna, jadi kami mohon maaf  jika ada  kesalahan penulisan atau kurang berkenan dihati saudara kami mohon maaf atas kesalahan tersebut. Dan semoga makalah  ini membuat ilmu kita bertambah, kami berterimakasih kepada Bapak dosen  struktur data beserta teman-teman mahasiswa.



Penulis



DAFTAR ISI

HALAMAN JUDUL

KATA PENGANTAR------------------------------

DAFTAR ISI-------------------------------------------

 PENDAHULUAN

A.    Latar Belakang-------------------------------

B.     Maksud dan Tujuan------------------------


C.    Rumusan Masalah--------------------------

D.    Metode Penulisan----------------------------
PEMBAHASAN

1.      Pengertian-------------------------------------

2.      Karakteristik Array------------------------

3.      Mengurutkan Elemen Array-------------


4.      Keunggulan dan Kelemahan Array----
PENUTUP
1.      Kesimpulan------------------------------------

2.      Kritik  Dan Saran---------------------------



BAB I PENDAHULUAN

a.    Latar belakang
     Dengan adanya kemajuan Tekhnologi di dunia ini akal pikiran manusia semakin mahir dalam menciptakan sesuatu yang bermanfaat bagi kehidupan mereka, salah satunya dalam pembuatan program – program yang sangat membantu mereka dalam menyelesaikan pekerjaan mereka dengan cepat, baik dan memuaskan, maka dari itu penulis menyusun makalah mengenai array, queue, record dan stack merupakan salah satu bagian dari kemajuan zaman yang betul betul terlihat manfaatnya. Array bisa juga disebut sebagai salah satu program yang terlahir dari dunia tekhnologi lewat pola pikir manusia yang bermanfaat untuk menyelesaikan suatu penghitungan.

b.    Maksud dan Tujuan
     Maksud dan tujuan penulis dalam penyusunan  makalah ini sebagi penambah informasi bagi penulis yang di outputkan lewat tulisan tulisan yang terdapat pada makalah ini dan berharap penulis memberikan informasi dipenyusunan  makalah  ini yang isinya tentang array yang sangat jelas  bagi pembaca. Dengan  mengetahui tentang array  maka penulis maupun pembaca dapat menambah pengetahuan ilmu yang menyangkut dalam dunia tekhnologi pemograman.
c. Rumusan Masalah
Sesuai dengan mata kuliah ini “ Struktur Data ” untuk menambah ilmu pengetahuan  mahasiswa.Rumusan masalah dari materi Array ini sebagai berikut :
1.      Apa saja yang termasuk Materi dalam mata kuliah Array?
2.      Bagaimana penjelasan tentang materi Array ?

d.    Metode Penulisan
     Metode penulisan untuk pembuatan makalah ini penulis menggunakan metode informasi yang diambil atau didapat dari internet dan sedikit metode pengetahuan penulis yang didapat dari pembelajaran penulis dalam ruang lingkup perkuliahan.




BAB II PEMBAHASAN
ARRAY

1. PENGERTIAN
            Array atau larik di definisikan 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.

2. KARAKTERISTIK ARRAY
Ø  Mepunyai batasan dari pemesanan alokasi memori (bersifat statis)
Ø   Mempunyai tipe data sama (bersifat homogen)
Ø   Dapat diakses secara acak.

2.1. DEKLARASI ARRAY
Ada tiga hal yang harus di ketahui dalam mendeklarasikan array, yaitu :
Ø  Type data array
Ø   Nama variable array
Ø   Subkrip / index array.
Contoh deklarasi dari array adalah sebagai berikut :
int A[5] ; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe
integer.

2.2. JENIS ARRAY

1.   ARRAY DIMENSI SATU
Deklarasi     : Type_Data Nama_Variabel [index]
Rumus untuk menentukan jumlah elemen dalam array adalah :
n
p(Index Array)
i = 1
ket:
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
Contoh bentuk Array menggunakan c++
include<iostream>
using namespace std;
void main(void)
{
int x[10]={0,1,2,3,4,5,6,7,8,9};
int *px;
int i;
for(i=0;i<10;i++)
{
px=&x[i]; // membaca alamat dari x
cout<<x[i] << " " <<*px<<" "<<px<<endl;
}
{
       cout<<"1.NAMA               :SUDARSONO"<<endl;
       cout<<"2.NIM                :2010140119"<<endl;
       cout<<"3.SEMESTER           :IIIA"<<endl;
       cout<<"4.TANGGAL PRAKTIKUM  :23-03-2011"<<endl;
}

2.   ARRAY DIMENSI DUA
Deklarasi     : Type_Data Nama_Variabel [index1] [index2]
Menentukan jumlah elemen dalam array dimensi dua :
n
p(Index Array)
i = 1
ket:
p = Perkalian dari statemen sebelumnya

Pemetaan (mapping) array dimensi dua ke storage terbagi dua cara pandang (representasi) yang berbedayaitu :
1)      Secara kolom per kolom (coloumn major order / CMO)
@M[i][j] = M[0][0] + {(j – 1) * K + (i – 1)} * L

2)      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
Adalah suatu array yang setiap elemennya merupakan tipe data array juga yang merupakan array dimensi dua.
Contoh :

Penyajian data mengenai banyaknya mahasiswa dari 20 perguruan tinggi di Jakarta, berdasarkan tingkat (1 sampai 5), dan jenis kelamin (pria atau wanita). Misalkan array tersebut dinamakan MHS. Ambil subskrip pertama, tingkat = 1, 2, ..., 5; subskrip kedua, jenis kelamin (pria = 1, wanita = 2), dan subskrip ketiga, perguruan tinggi adalah K = 1, 2, ..., 20. Jadi MHS(4,2,17) menyatakan jumlah mahasiswa tingkat 4, wanita, dari perguruan tinggi 17.


CROSS SECTION (Penampang Array Berdimensi-2)
Adalah pengambilan salah satu subskrip.
Misal :            Baris               =          tetap/konstan
                       Kolom             =          berubah-ubah (*)

Contoh :        B(*,4) =          semua elemen pada kolom ke-4.
                        B(2,*) =          semua elemen pada baris ke-2.

Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array dimensi dua.

Misal :
MHS(4,*,17) =   jumlah mahasiswa tingkat 4 dari perguruan tinggi 17 (masing-masing untuk ria dan wanita).
MHS(*,*, 3) =    jumlah mahasiswa untuk masing-masing tingkat, pria dan wanita, dari perguruan tinggi 3.

2.3. OPERASI DASAR PADA ARRAY
Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung. Nilai
di masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati
posisi-posisi lain.

Terdapat dua tipe operasi, yaitu :
Ø  Operasi terhadap satu elemen / posisi dari array
Ø  Operasi terhadap array sebagai keseluruhan

Dua operasi paling dasar terhadap satu elemen / posisi adalah
Ø  Penyimpanan nilai elemen ke posisi tertentu di array
Ø  Pengambilan nilai elemen dari posisi tertentu di array

Operasi-operasi dasar terhadap array secara keseluruhan adalah :
Ø  Operasi penciptaan
Ø  Operasi penghancuran
Ø  Operasi pemrosesan traversal
Ø  Operasi pencarian (table look-up)
Ø  Operasi sorting

2.3.1. 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.

2.3.2. 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

2.3.3. PEMROSESAN TRANSVERSAL
Operasi pemrosesan transversal adalah pemrosesan mengolah seluruh elemen secara sistematik.

2.3.4. PENCARIAN DI ARRAY (table look-up)
Pencarian di array (table look-up) adalah proses pencarian suatu nilai di array. Klasifikasi pencarian di array adalah :
1.      Pencarian sekuen (sequential searching),yaitu:
Ø  Tanpa Boolean, terbagi:
a.       Tanpa sentinen
b.      Dengan sentinen
Ø  Menggunakan boolean
2.      Pencarian secara biner / dikotom (binary = dichotomy searching).

2.4. 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.
3.  MENGURUTKAN ELEMEN ARRAY
Ada banyak sekali metode untuk mengurutkan data, antara lain Exchange Sort, Insertion Sort, Bubble Sort, dan masih banyak lagi.

3.1. Untuk metode Selection Sort langkah-langkahnya adalah sebagai berikut :
o   Proses 1: variabel indek diberi nilai 1 (data ke-1) kemudian data indek dibandingkan dengan data ke-2. Jika data indek lebih besar maka nilai indeknya diganti dengan 2 (data ke-2), jika tidak nilai indeknya tetap. Kemudian data indek dibandingkan lagi dengan data ke-3, lebih besar? Nilai indek ditukar! Demikian s eterusnya. Setelah selesai, nilai indek diperiksa apakah nilai indek berubah atau tidak. Jika nilai indek mengalami perubahan maka data ke-1 ditukar dengan data indek.
o   Pada proses 2: variabel indek diberi nilai 2 (data ke-2) kemudian data indek dibandingkan dengan data ke-3. Jika data indek lebih besar maka nilai indeknya diganti dengan 3 (data ke-3). Kemudian data indek dibandingkan lagi dengan data ke-4, lebih besar? Nilai indek ditukar! Demikian s eterusnya. Setelah selesai, nilai indek diperiksa apakah nilai indek berubah atau tidak. Jika nilai indek mengalami perubahan maka data ke-2 ditukar dengan data indek.
o   Demikian untuk proses selanjutnya dimana banyak prosesnya adalah jumlah elemen array dikurangi satu.

Ø Berikut program lengkap dari metode Selection Sort dalam bahasa C++
 1. #include <iostream>
2.  using namespace std;
3. int a[10];
4.  void input(int data,int i) {
5.     a[i] = data;
6. }
7.  void tampil() {
8.     for(int i=0; i<10; i++)
9.      cout << a[i] << " ";
10.     cout << endl;
11.  }
12.  void tukar(int data1, int data2) {
13.     long temp = a[data1];
14.     a[data1] = a[data2];
15.     a[data2] = temp;
17.  void selectionSort() {
18.     int i,j,indek;
19.     for(i=0; i<5-1; i++) {
20.    indek=i;
21.      for(j=i+1; j<5; j++)
22.         if(a[indek] > a[j] )
23.        indek=j;
24.    tukar(i,indek);
25.   }
26. }
27.  void main() {
28.   input(57,0);
29.   input(89,1);
30.   input(49,2);
31.   input(51,3);
32.   input(12,4);
33.   input(90,5);
34.   input(1,6);
35.   input(0,7);
36.   input(63,8);
37.   input(25,9);
38.   tampil();
39.   selectionSort();
40.   tampil();
41. }

Keluaran programnya yaitu :



Ø Kode dalam bahasa Java untuk permasalahan yang sama adalah :

1.  class latSelectSort {
2.     private long[ ] a;
3.     private int nElemen;
4.      public latSelectSort(int max) {
5.       a = new long[max];
6.       nElemen = 0;
7.   }
8.     public void input(long data) {
9.       a[nElemen] = data;
10.      nElemen++;
11.    }
12.     public void tampil() {
13.       for(int i=0; i<nElemen; i++)
14.         System.out.print(a[i] + " ");
15.      System.out.println("");
16.    }
17.     public void selectionSort() {
18.       int i,j,indek;
19.       for(i=0; i<nElemen-1; i++) {
20.     indek=i;
21.         for(j=i+1; j<nElemen; j++)
22.      if(a[indek] > a[j] )
23.     indek=j;
24.     tukar(i,indek);
25.      }
26.    }
27.     private void tukar   (String[ ] args) {
35.       int makArray = 10;
36.       latSelectSort larik;
37.       larik =  cout << a[i] << " ";      new latSelectSort(makArray);
38.      larik.input(57);
39.      larik.input(89);
40.      larik.input(49);
41.      larik.input(51);
42.      larik.input(12);
43.      larik.input(90);
44.      larik.input(1);
45.      larik.input(0);
46.      larik.input(63);
47.      larik.input(25);
48.      larik.tampil();
49.      larik.selectionSort();
50.      larik.tampil();
51.    }
52. }
Keluar program adalah yaitu :



3.2. Metode Bubble Sort mempunyai langkah-langkah sebagai berikut :
o  Membandingkan data ke-1 dengan data ke-2, jika data ke-1 lebih besar, maka kedua data ditukar.
o  2.  Kemudian membandingkan data ke-2 dengan data ke-3, jika data ke-2 lebih besar, kedua data ditukar lagi.
o  3.  Demikian seterusnya sampai data terakhir, sehingga data kedudukannya akan bergeser-geser.
o  4.  Untuk proses 2, pembandingan (pergeseran data) hanya sampai pada data terakhir dikurangi satu.

Ø Kode program lengkap dalam bahasa C++ adalah sebagai berikut :

1. #include <iostream>
2.  using namespace std;
3. int a[10];
4.  void input(int data,int i) {
5.     a[i] = data;
6. }
7.  void tampil() {
8.     for(int i=0; i<10; i++)
9.      cout << a[i] << " ";
10.     cout << endl;
11. }
12.  void tukar(int data1, int data2) {
13.     long temp = a[data1];
14.     a[data1] = a[data2];
15.     a[data2] = temp;
16. }
17.  void bubSort() {
18.     int i, j;
19.     for(i=10-1; i>1; i--)
20.   }
21.         if( a[j] > a[j+1] ) tukar(j, j+1);
22. }
23.  void main() {
24.   input(57,0);
25.   input(89,1);
26.   input(49,2);
27.   input(51,3);
28.   input(12,4);
29.   input(90,5);
30.   input(1,6);
31.   input(0,7);
32.   input(63,8);
33.   input(25,9);
34.   tampil();
35.   bubSort();
36.   tampil();   
37.    }

Keluaran programnya adalah yaitu :



                                                                    
Ø Sedangkan kode dalam bahasa Java- nya adalah :
1.  class latBubble {
2.     private long[ ] a;
3.     private int nElemen;
4.     public latBubble(int max) {
5.      a = new long[max];
6.      nElemen = 0;
7.   }
8.     public void input(long data) {
9.      a[nElemen] = data;
10.    nElemen++;
11.   }
12.     public void tampil() {
13.      for(int i=0; i<nElemen; i++)
14.         System.out.print(a[i] + " ");
15.    System.out.println("");
16.   }
17.     public void bubSort() {
18.       int i, j;
19.       for(i=nElemen-1; i>1; i--)
20.         for(j=0; j<i; j++)
21.          if( a[j] > a[j+1] ) tukar(j, j+1);
22.   }
23.     private void tukar
24.     (int data1, int data2) {
25.       long temp = a[data1];
26.       a[data1] = a[data2];
27.       a[data2] = temp;
28.   }
29. }
 30. .  class bubbleSort { (String[ ] args) { 
31.     public static void main
32.       int makArray = 100;
33.       latBubble larik;
34.       larik = new latBubble(makArray);
35.    larik.input(57);
36.    larik.input(89);
37.    larik.input(49);
38.    larik.input(51);
39.    larik.input(12);
40.    larik.input(90);
41.    larik.input(1);
42.    larik.input(0);
43.    larik.input(63);
44.    larik.input(25);
45.    larik.tampil();
46.    larik.bubSort();  
47.    larik.tampil();
48.     } // end main()
49. }

Keluaran programnya adalah :



 
3.3.  Metode Insertion Sort mirip dengan cara orang mengurutkan kartu selembar demi selembar, kartu diambil dan disisipkan (insert) ke tempat yang seharusnya. Adapun langkah-langkahnya adalah sebagai berikut :
o Pengurutan dimulai dari data ke-2 sampai dengan data terakhir.
o  Jika ditemukan data yang lebih kecil atau lebih besar, maka akan ditempatkan (diinsert) diposisi yang seharusnya

 Program selengkapnya dalam bahasa C++ adalah :

1. #include <iostream>
2.  using namespace std;
3. int a[10];
4.  void input(int data,int i) {
5.     a[i] = data;
6. }
7.  void tampil() {
8.     for(int i=0; i<10; i++)
9.      cout << a[i] << " ";
10.     cout << endl;
11. }
12.  void insertionSort() {
13.     int i,j;
14.     for(i=1; i<10; i++) {
15.      ong temp = a[i];
16.    j=i;
17.      while(j>0 && a[j-1] >= temp) {
18.         a[j] = a[j-1];
19.      --j;
20.    }
21.       a[j] = temp;
22.   }
23. }
24.  void main() {
25.   input(57,0);
26.   input(89,1);
27.   input(49,2);
28.   input(51,3);
29.   input(12,4);
30.   input(90,5);
31.   input(1,6);
32.   input(0,7);
33.   input(63,8);
34.   input(25,9);
35.   tampil();
36.   insertionSort();   
37.   tampil();
38. }
Keluaran programnya adalah :



Ø Kode dalam bahasa Java adalah sebagai berikut :

1.  class latInsertSort {
2.     private long[ ] a;
3.     private int nElemen;
4.     public latInsertSort(int max) {
5.      a = new long[max];
6.      nElemen = 0;
7.   }
8.     public void input(long data) {
9.      a[nElemen] = data;
10.    nElemen++;
11.   }
12.     public void tampil() {
13.      for(int i=0; i<nElemen; i++)
14.         System.out.print(a[i] + " ");
15.    System.out.println("");
16.   }
17.     public void insertionSort() {
18.       int i,j;
19.       for(i=1; i<nElemen; i++) {
20.         long temp = a[i];
21.      j=i;
22.        while(j>0 && a[j-1] >= temp)
23.           a[j] = a[j-1];
24.        --j;
25.      }
26.      a[j] = temp;
27.    }
28.   }
29. }
30.  class insertSort {
31.     public static void main   (String[ ] args) {
32.       int makArray = 100;
33.       latInsertSort larik;
34.    larik  =  new latInsertSort(makArray);
35.    larik.input(57);
36.    larik.input(89);
37.    larik.input(49);
38.    larik.input(51);
39.    larik.input(12);
40.    larik.input(90);
41.    larik.input(1);
42.    larik.input(0);
43.    larik.input(63);
44.    larik.input(25);
45.    larik.tampil();
46.    larik.insertionSort();
47.    larik.tampil();
48.   }
49. }

Keluaran dari program tersebut adalah :





4. KEUNGGULAN DAN KELEMAHAN ARRAY
Keunggulan array adalah sebagai berikut :
Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain.
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 :
Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen
adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain
Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit
diubah 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

Bila penambahan dan pengurangan terjadi terus menerus, maka representasi statis (array):
Tidak efisien dalam penggunaan memory
Menyiakan banyak waktu komputasi
Pada suatu aplikasi, representasi statis tidak di mungkinkan.



PENUTUP
1.     Kesimpulan
Struktur data merupakan salah satu bahan dasar pembuatan program. Pemakaian struktur data yang tepat di dalam proses pemrograman, akan menghasilkan algoritma yang jelas dan tepat sehingga menjadikan program secara keseluruhan lebih sederhana. Array merupakan bagian dari struktur data yaitu termasuk kedalam struktur data sederhana yang dapat di definisikan sebagai pemesanan alokasi memory sementara pada komputer. Apabila kita membuat program dengan data yang sudah kita ketahui batasnyamaka kita menggunakan Array (type data statis), namun apabila datanya belum kita ketahui batasnya maka gunakan pointer (type data dinamis).
2.     Kritik dan Saran
Penulis menyadari tentang penyusunan makalah, tentu masih banyak kesalahan dan kekurangannya, kerena terbatasnya pengetahuan dan kurangnya rujukan atau referensi yang ada hubungannya dengan judul makalah ini.
Penulis banyak berharap para pembaca yang budiman memberikan kritik dan saran yang membangun kepada penulis demi sempurnanya makalah ini dan dan penulisan makalah di kesempatan-kesempatan berikutnya. Semoga makalah ini berguna bagi penulis pada khususnya juga para pembaca yang budiman pada umumnya.



Daftar Pustaka
·         http://www.frieyadie.com/12-Array%20pada%20Struktur%20Data.php#ixzz29dFYCKLO
·         www.wikipedia.org
·         www.ilmukomputer.com

0 komentar:

Post a Comment