tugas1

17

Click here to load reader

Upload: av-ri

Post on 21-May-2015

80 views

Category:

Documents


3 download

DESCRIPTION

tugas struktur data semester 2

TRANSCRIPT

Page 1: Tugas1

ARRAY

ARRAY

Array adalah sekelompok data sejenis yang disimpan ke dalam variabel

dengan nama yang sama, dengan memberi indeks pada variabel untuk

membedakan antara yang satu dengan yang lain.

KARAKTERISTIK ARRAY

- Mepunyai batasan dari pemesanan alokasi memori (bersifat statis)

- Mempunyai tipe data sama (bersifat homogen)

- Dapat diakses secara acak.

 

Perbedaan Array dengan Variable biasa

- Variable biasa satu variable untuk menyimpan HANYA satu data/

nilai.

- Variable array satu variable untuk menyimpan BANYAK data/

nilai.

Deklarasi Array 1 Dimensi

tipe nama_var[max_data];

Contoh:

int a[5];

float x[100];

char nama[25];

.

Page 2: Tugas1

dst.

Cara mengakses data bertipe array

nama_variabel[alamat]

Misal : Array a

27 23 35 46 87 data yang tersimpan di

array

0 1 2 3 4 alamat array (dimulai dari

0)

a[0] = 27

a[1] = 23

.

.

a[4] = 87

Menginputkan data ke array

Data dapat diinputkan untuk setiap emelen array. Tetapi jika jumlah

elemen array banayk, tentunya cara ini tidak efisien. Oleh karena itu

dapat digunakan bantuan instruksi perulangan untuk input datanya.

Contoh 1:

#include <iostream.h>

#include <conio.h>

main() {

int a[5];

cout<<"Data ke 0 = ";cin>>a[0];

cout<<"Data ke 1 = ";cin>>a[1];

cout<<"Data ke 2 = ";cin>>a[2];

cout<<"Data ke 3 = ";cin>>a[3];

Page 3: Tugas1

cout<<"Data ke 4 = ";cin>>a[4];

int jumlah;

jumlah=a[0]+a[1]+a[2]+a[3]+a[4];

cout<<"\n\nJumlahnya = "<<jumlah;

getch();

}

Contoh 2:

#include <iostream.h>

#include <conio.h>

main() {

int a[5];

int jumlah=0;

for(int i=0;i<5;i++)

{ cout<<"Data ke "<<i<<" = ";cin>>a[i];

jumlah+=a[i];

}

cout<<"\n\nJumlahnya = "<<jumlah;

getch();

}

Tipe array juga dapat digabungkan dengan pointer. Untuk itu kita akan

melakukan perubahan pada contoh 3 menjadi sebagai berikut:

Contoh 3:

#include <iostream.h>

#include <conio.h>

main() {

int *a=new int[5];

int jumlah=0;

for(int i=0;i<5;i++)

{ cout<<"Data ke "<<i<<" = ";cin>>a[i];

Page 4: Tugas1

jumlah+=a[i];

}

cout<<"\n\nJumlahnya = "<<jumlah;

getch();

}

Perhatikan contoh 3 diatas pada pengaksesan datanya. Jika array

dideklarasikan sebagai pointer, maka untuk pengaksesan datanya cukup

dituliskan sebagai array. Tetapi kita tetap bisa menuliskannya sebagai

pointer tanpa harus menyertakan alamat arraynya. Jika demikian maka

data akan diambilkan dari data pertama, atau data pada alamat ke 0.

Sehingga misalkan pada akhir program contoh 3 diatas kita tambahkan

instruksi :

cout<<"\nData = "<<*a;

atau instuksi :

cout<<"\nData = "<<a[0];

akan mempunyai arti yang sama, data akan diambil dari data pertama

(alamat 0).

Selain itu untuk input data dan proses penjumlahan, dapat juga dibuat

dalam bentuk fungsi seperti pada contoh 4. Perhatikan pada saat tipe

array menjadi parameter fungsi, jumlah data yang tersimpan dalam array

boleh ditulis boleh tidak (optional). Sehingga bisa ditulis dengan : b[] saja

Contoh 4 :

#include <iostream.h>

#include <conio.h>

void input_array(int b[],int n)

{ for(int i=0;i<n;i++)

{ cout<<"Data ke "<<i<<" = ";cin>>b[i]; }

}

int jumlah(int b[],int n)

Page 5: Tugas1

{ int hasil=0;

for(int i=0;i<n;i++)

hasil+=b[i];

return hasil;

}

main() {

int a[100];

int bd;

cout<<"Masukkan banyaknya data = ";cin>>bd;

input_array(a,bd);

cout<<"\n\nJumlahnya = "<<jumlah(a,bd);

getch();

}

Mengurutkan Elemen Array

Ada banyak sekali metode untuk mengurutkan data, antara lain Exchange

Sort, Selection Sort, Insertion Sort, Bubble Sort, Quick Sort, Shell Sort,

Binary Insertion Sort, dan masih banyak lagi.

Dari sekian banyak metode, hanya metode Bubble Sort dan Insertion Sort

saja yang akan saya bahas karena kedua metode ini merupakan metode

yang paling mudah dan banyak digunakan. Untuk metode Selection Sort

langkah-langkahnya adalah sebagai berikut :

1. 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 seterusnya. Setelah selesai, nilai indek

diperiksa apakah nilai indek berubah atau tidak. Jika nilai indek

mengalami perubahan maka data ke-1 ditukar dengan data indek.

Page 6: Tugas1

2. 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 seterusnya. Setelah selesai, nilai indek diperiksa apakah nilai

indek berubah atau tidak. Jika nilai indek mengalami perubahan maka

data ke-2 ditukar dengan data indek.

3. Demikian untuk proses selanjutnya dimana banyak prosesnya adalah

jumlah elemen array dikurangi satu.

Berikut program lengkap dari metode Selection Sort 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 tukar(int data1, int data2) {

13. long temp = a[data1];

14. a[data1] = a[data2];

15. a[data2] = temp;

16. }

17. void selectionSort() {

18. int i,j,indek;

19. for(i=0; i<5-1; i++) {

20. indek=i;

Page 7: Tugas1

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

Metode Bubble Sort mempunyai langkah-langkah sebagai berikut :

1. Membandingkan data ke-1 dengan data ke-2, jika data ke-1 lebih besar,

maka kedua data ditukar.

2. Kemudian membandingkan data ke-2 dengan data ke-3, jika data ke-2

lebih besar, kedua data ditukar lagi.

3. Demikian seterusnya sampai data terakhir, sehingga data

kedudukannya akan bergeser geser.

Page 8: Tugas1

4. Untuk proses 2, pembandingan (pergeseran data) hanya sampai pada

data terakhir dikurangi satu.

Kode program lengkapnya 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. for(j=0; j<i; j++)

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);

Page 9: Tugas1

30. input(1,6);

31. input(0,7);

32. input(63,8);

33. input(25,9);

34. tampil();

35. bubSort();

36. tampil();

37. }

Contoh lain penggunaan array 1D untuk sorting data

Ini adalah proses untuk mengurutkan data yang tersimpan di array

dengan metode Bubble Sort.

Contoh 5:

#include <iostream.h>

#include <conio.h>

void masukan(int a[],int n)

{

for(int i=0;i<n;i++)

{ cout<<"Data ke "<<i<<" = ";

cin>>a[i];

}

}

void urutkan(int a[], int n)

{ int temp;

for(int i=0;i<n;i++)

for(int j=0;j<(n-i);j++)

if (a[j]>a[j+1])

{

temp=a[j];

Page 10: Tugas1

a[j]=a[j+1];

a[j+1]=temp;

}

}

void tampil(int a[], int n)

{

for(int i=0;i<n;i++)

cout<<a[i]<<" ";

}

main() {

int a[100];

int jml;

cout<<"Banyak data = ";cin>>jml;

masukan(a,jml);

urutkan(a,jml);

cout<<"\n\nSetelah diurutkan ";

tampil(a,jml);

getch();

}

Pada contoh program diatas ada tiga fungsi, fungsi pertama digunakan

untuk menginputkan data ke dalam array, fungsi kedua untuk

mengurutkan arraynya, dan fungsi ketiga untuk menampilkan data yang

tersimpan di array ke layar.

Array 2 Dimensi

Contoh deklarasi :

int a[4][5];

0 1 2 3

Page 11: Tugas1

0 25 40 26 12

1 6 8 12 5

2 1 3 8 9

3 15 22 13 19

4 0 5 7 15

Mengakses data :

a[0][0] = 25

a[0][1] = 40

.

.

dst

Penggunaan array 2D untuk menjumlahkan dua matrik

Matrik asal adalah a dan b, dijumlahkan dan hasilnya disimpan di matrik c.

Syarat agar matrik dapat dijumlahkan adalah keduanya mempunyai

ukuran yang sama.

Baris matrik 1 = Baris matrik 2

Kolom matrik 1 = Kolom matrik 2

Contoh 6:

#include <iostream.h>

#include <conio.h>

void masukan(int a[10][10],int b,int k)

{ for(int i=0;i<b;i++)

for(int j=0;j<k;j++)

{cout<<"Data ke "<<i<<j<<" = ";cin>>a[i][j]; }

}

void jumlah(int a1[][10],int a2[][10],int a3[][10],int b1,int k1)

Page 12: Tugas1

{ for(int i=0;i<b1;i++)

for(int j=0;j<k1;j++)

a3[i][j]=a1[i][j]+a2[i][j];

}

void tampilkan(int a[10][10],int b,int k)

{ for(int i=0;i<b;i++)

{ for(int j=0;j<k;j++)

cout<<a[i][j]<<" ";

cout<<"\n";

}

}

main() {

int dt1[10][10],dt2[10][10],dt3[10][10];

int b1,k1;

cout<<"Jumlah baris matrik = ";cin>>b1;

cout<<"Jumlah kolom matrik = ";cin>>k1;

cout<<"\nMatrik pertama\n";

masukan(dt1,b1,k1);

cout<<"\nMatrik kedua\n";

masukan(dt2,b1,k1);

jumlah(dt1,dt2,dt3,b1,k1);

clrscr();

cout<<"\nMatrik pertama\n";

tampilkan(dt1,b1,k1);

cout<<"\nMatrik kedua\n";

tampilkan(dt2,b1,k1);

cout<<"\nMatrik hasil penjumlahan\n";

tampilkan(dt3,b1,k1);

getch();

}

Page 13: Tugas1

Perhatikan pada saat array 2D menjadi parameter fungsi, jumlah baris

boleh ditulis boleh tidak, tetapi jumlah kolom harus ditulis. Tipe array

dapat dikembangkan menjadi array multidimensi. Misal 3D, 4D, dan

sebagainya.

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

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 elemen

adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-

tipe lain

2. Kebanyakan bahasa pemrograman mengimplementasikan array

statik yang sulit

diubah ukurannya di waktu eksekusi. Bila penambahan dan

pengurangan terjadi

terus-menerus, maka representasi statis

Kelemahan lain:

• Tidak efisien dalam penggunaan memori

Page 14: Tugas1

• Menyiakan banyak waktu komputasi

• Pada suatu aplikasi, representasi statis tidak dimungkinkan

 

Bila penambahan dan pengurangan terjadi terus menerus, maka

representasi statis (array):

1. Tidak efisien dalam penggunaan memory

2. Menyiakan banyak waktu komputasi

3. Pada suatu aplikasi, representasi statis tidak di mungkinkan