Makalah struktur
data
ARRAY
Dosen
pembimbing : Bambang Herawan Hayadi, S.Kom
Disusun
oleh :
II SUGIANTO
Sekolah
tinggi manajemen ilmu komputer al-quraniyah manna bengkulu selatan
Th
2012/2013
Jln.Affan
Bachin No.13 Tlp.(073921689 Manna 38518
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 berbeda yaitu :
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
nitip link.... juliarnasution.blogspot.com
ReplyDeletethanks
ReplyDeletemantab banget gan
ReplyDeleteSolder infrared