modul praktikum mata kuliah struktur data

20
MODUL PRAKTIKUM STRUKTUR DATA 2014- 2015 MATERI 1 ARRAY 1 DIMENSI TUJUAN 1. Memahami array 1 dimensi 2. Dapat mendeklarasikan array 1 dimensi 3. Dapat menerapkan konsep array 1 dimensi PENJELASAN Bab ini akan membahas kembali masalah array dan pembahasan berupa program sederhana serta operasi-operasi pada array seperti input, output, edit, cari dan hapus. PRAKTEK Contoh 1 Keterangan program : int y [] = {1, 2, 7, 4, 5}; perintah di atas untuk mendeklarasikan dan memberikan nilai (inisialisasi) pada array y, nilai yang ada di array y yaitu = 1,2,7,4 dan 5 int n, r=0; #include <iostream.h> #include <conio.h> void main () { int y [] = {1, 2, 7, 4, 5}; int n, r=0; for ( n=0 ; n<5 ; n++ ) { r += y[n]; } cout<<" "<<r; getch();

Upload: santipray

Post on 21-Dec-2015

29 views

Category:

Documents


6 download

DESCRIPTION

Modul untuk tugas praktikum matakuliah struktur data bagian 1, yaitu array

TRANSCRIPT

Page 1: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

MATERI 1

ARRAY 1 DIMENSI

TUJUAN

1. Memahami array 1 dimensi

2. Dapat mendeklarasikan array 1 dimensi

3. Dapat menerapkan konsep array 1 dimensi

PENJELASAN

Bab ini akan membahas kembali masalah array dan pembahasan berupa program sederhana

serta operasi-operasi pada array seperti input, output, edit, cari dan hapus.

PRAKTEK

Contoh 1

Keterangan program :

int y [] = {1, 2, 7, 4, 5};

perintah di atas untuk mendeklarasikan dan memberikan nilai (inisialisasi) pada array y, nilai

yang ada di array y yaitu = 1,2,7,4 dan 5

int n, r=0;

perintah untuk mendeklarasikan variabel n dan variabel r, variabel r diberi nilai awal 0 (nol)

for ( n=0 ; n<5 ; n++ )

perintah perulangan yang dimulai dari indek 0 sampai dengan indek 4

{r += y[n];}

Statemen atau perintah yang akan dikerjakan pada saat perulangan, perintah tersebut

menjumlahkan nilai yang ada di variabel r dengan nilai yang ada di indek array y disetiap iterasi

perulangan.

#include <iostream.h>#include <conio.h>void main (){

int y [] = {1, 2, 7, 4, 5}; int n, r=0; for ( n=0 ; n<5 ; n++ ) {

r += y[n];}

cout<<" "<<r; getch(); }

Page 2: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

cout<<" "<<r;

perintah untuk menampilkan hasil penjumlahan yang sudah tersimpan di variabel r

Contoh 2

Keterangan program :

int nilai[5],x;

perintah di atas untuk mendeklarasikan variabel array nilai sebanyak 5 elemen dan

mendeklarasikan variabel x.

for(x=0;x<5;x++)

{

cout<<"Nilai Angka : ";cin>>nilai[x];

}

perintah perulangan untuk menginputkan nilai ke dalam array yang dimulai dari indek 0 sampai

dengan indek 4, nilai tersebut disimpan dalam array nilai indek x.

for(x=0;x<5;x++)

{

cout<<"\nNilai Angka : "<<nilai[x];

}

perintah perulangan untuk menampilkan nilai dari array yang dimulai dari indek 0 sampai

dengan indek 4, nilai tersebut diambil dari array nilai pada di masing-masing indek x.

#include <iostream.h>#include <conio.h>void main (){ int nilai[5],x;

cout<<"Masukkan nilai\n"; for(x=0;x<5;x++) {

cout<<"Nilai Angka : ";cin>>nilai[x];}

cout<<"\n\nOutput nilai\n"; for(x=0;x<5;x++)

{ cout<<"Nilai Angka : "<<nilai[x]<<endl;

}getch(); }

Page 3: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

Contoh 3

Keterangan program :

int A [5]={20,9,1986,200,13};

perintah di atas untuk mendeklarasikan dan memberikan nilai (inisialisasi) pada array A, nilai

yang ada di array A yaitu = 20, 9, 1986, 200 dan 13

for (n=0;n<5;n++)

{ cout<<" "<<A[n]; }

perulangan yang dimulai dari indek 0 sampai indek 4 untuk menampilkan nilai array lama atau

nilai array A yang sudah diinisialisasi di atas.

cout<<"\nData yang baru\n";

A[0]=4;

A[1]=2;

A[2]=1;

A[3]=3;

A[4]=5;

Perintah di atas digunakan untuk menginputkan nilai secara statis ke dalam array A, untuk array

A indek ke 0 dengan nilai 4, array A indek ke 1 dengan nilai 2 dan seterusnya.

for (n=0;n<5;n++)

{ cout<<" "<<A[n]; }

#include <iostream.h>#include <conio.h>void main (){ int A [5]={2,9,19,20,13};

int n; clrscr(); cout<<"Data yang lama\n"; for (n=0;n<5;n++)

{ cout<<" "<<A[n];

} cout<<"\nData yang baru\n"; A[0]=4; A[1]=2; A[2]=1; A[3]=3; A[4]=5; for (n=0;n<5;n++)

{ cout<<" "<<A[n];

}getch();}

Page 4: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

Perintah di atas untuk menampilkan nilai yang ada di array A yang sebelumnya sudah diinputkan

secara statis. Jadi inti dari contoh program 3 yaitu mengedit atau merubah isi dari array.

Contoh 4

Keterangan program

(untuk perintah yang sama dengan contoh sebelumnya, keteranganya juga sama)

cout<<" data yang ingin dihapus : ";cin>>i;

Perintah di atas untuk menginputkan nilai yang ada ke dalam variabel hapus, nilai yang

diinputkan ke dalam variabel hapus adalah nilai yang menunjukkan elemennya.

for (n=i-1;n<5-1;n++)

{ A[n]=A[n+1]; }

Perintah diatas adalah perintah untuk menghapus yang mana nilai indek n sama dengan nilai

yang ada di variabel hapus-1 atau nilai indek sama dengan nilai elemen-1. Statemen yang ada di

perulangan tersebut yaitu { A[n]=A[n+1]; } artinya, nilai pada array A indek ke n

nilainya sama dengan array A indek n+1 karena nilai yang akan ditampilkan adalah nilai yang

ada di elemen (elemen itu sama dengan indek + 1).

for (n=0;n<4;n++)

{ cout<<" "<<A[n]; }

#include <iostream.h>#include <conio.h>void main (){ int A [5]={2,9,19,20,13};

int n,i; clrscr(); cout<<"Menampilkan Nilai Elemen Array\n"; for (n=0;n<5;n++)

{ cout<<" "<<A[n];

}cout<<"\n\nData yang ingin dihapus : ";cin>>i; //2

cout<<"\nData yang baru\n"; for (n=i-1;n<5-1;n++) //untuk n=1

{ A[n]=A[n+1];

} for (n=0;n<4;n++)

{ cout<<" "<<A[n];

}getch();}

Page 5: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

Perintah untuk menampilkan nilai yang ada di array A setelah proses penghapusan, sehingga

yang ditampilkan dari indek 0 sampai dengan indek ke 3. Karena sudah dihapus sehingga pada

saat ditampilkan indek dikurangi 1.

Contoh 5

Tambahkan program contoh 5 pada program di contoh 4.

Keterangan program :

cout<<"\nMasukkan nilai yang dicari : ";cin>>cari;

Perintah yang digunakan untuk menginputkan nilai ke dalam variabel cari.

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

{ if (A[n]==cari)

Perintah yang digunakan untuk mencarai apakan nilai yang dicari (nilai yg ada di variabel cari)

sama dengan nilai yang ada di array A di setiap indek (setiap indek ditunjukkan di variabel n

pada perulangan).

{ cout<<"Nilai yang anda cari terdapat pada indek ke- "<<n; break;} } Perintah yang akan dikerjakan jika nilai yang dicari ketemu.

Latihan

1. Buatlah program untuk menginputkan elemen array secara dinamis dengan batas elemen array 100.

2. Tambahkan perintah untuk cari, edit dan hapus elemen array.

#include <iostream.h>#include <conio.h>main (){

int A [5]={2,9,19,20,13};int n,cari;cout<<"Menampilkan data\n";for (n=0;n<5;n++){

cout<<" "<<A[n];}cout<<"\n\nMasukkan nilai yang dicari : ";cin>>cari;for (int n=0;n<5;n++){if (A[n]==cari)

{ cout<<"\nNilai yang anda cari terdapat pada indek ke- "<<n;break;

}}

getch();}

Page 6: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

MATERI 2

ARRAY 2 DIMENSI

TUJUAN

1. Memahami array 2 dimensi

2. Dapat mendeklarasikan array 2 dimensi

3. Dapat menerapkan konsep array 2 dimensi

PENJELASAN

Bab ini akan membahas tentang array 2 dimensi dan pembahasan berupa program sederhana

seperti matrik.

PRAKTEK

Contoh 6 Menginputkan nilai ke array A pada baris j dan kolom k

Keterangan :

int A[3][2];

Perintah untuk mendeklarasikan array A yaitu array 2dimensi yang memiliki 3 baris dan 2

kolom.

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

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

{cout<<"A["<<j<<"]["<<k<<"] = ";

cin>>A[j][k];}}

Perintah untuk menginputkan nilai kedalam array A baris j dan kolom k. Pada baris j terdapat 3

baris dan terdapat 2 kolom.

Contoh 7 Menampilkan hasil inputan

Keterangan :

int A[3][2]; for(int j=0;j<3;j++){

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

cout<<"A["<<j<<"]["<<k<<"] = "; cin>>A[j][k];

}}

for(j=0;j<3;j++){

for(k=0;k<2;k++) {

cout<<"A["<<j<<"]["<<k<<"]= "<<A[j][k]<<endl;}

}

Page 7: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

Penggalan listing program diatas yaitu untuk menampilkan nilai yang ada di array A baris j dan

kolom k.

Tugas :

Buatlah program matrik dengan operasi-operasi sbb:

1. Input dan output matrik

2. Penjumlahan, pengurangan dan perkalian matrik

3. Transpose dan diagonal matrik

4. Menampilkan nilai maksimal dan minimal matrik

Catatan :

1. Penjumlahan

Agar kedua matrik dapat dijumlahkan harus memiliki jumlah baris dan kolom yang sama.

Ada 3 matrik yang dibutuhkan yaitu matrik A,B dan C.

Inputkan matrik A dan matriks B

Matrik C untuk menampung hasil penjumlahan matriks A dan B sesuai dengan elemen-

elemennya.

Elemen matrik A [0][0] dijumlahkan dengan elemen matrik B [0][0] juga dan disimpan di

elemen matriks C [0][0] dan seterusnya, dengan rumus C[0][0] = A[0][0] + B[0][0].

2. Pengurangan

Agar kedua matrik dapat dijumlahkan harus memiliki jumlah baris dan kolom yang sama.

Ada 3 matrik yang dibutuhkan yaitu matrik A,B dan C.

Inputkan matrik A dan matriks B

Matrik C untuk menampung hasil penjumlahan matriks A dan B sesuai dengan elemen-

elemennya.

Elemen matrik A [0][0] dijumlahkan dengan elemen matrik B [0][0] juga dan disimpan di

elemen matriks C [0][0] dan seterusnya, dengan rumus C[0][0] = A[0][0] + B[0][0].

3. Transpose

Transpose adalah elemen baris matriks akan menjadi kolom matriks dan sebaliknya kolom

matriks akan menjadi baris matriks.

Matriks Awal : Hasil Transpose:

B[2][3]A[2][3]

+=

C[2][3]

B[2][3]A[2][3]

-=

C[2][3]

Page 8: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

1 4 7

2 5 8

3 6 9

Siapkan matriks hasil untuk menampung hasil transpose

4. Diagonal matrik

Mengambil diagonal matrik yaitu mengambil nilai dari baris dan kolom yang sama.

Matrik awal : Hasil Diagonal : 1,5,9

1 2 3

4 5 6

7 8 9

5. Perkalian matrik (Syarat !!!Jumlah kolom matrik A harus sama dgn jumlah baris matrik B)

(1*1)+(2*6)+(3*11)= 1+12+33 = 46

(1*2)+(2*7)+(3*12)= 2+14+36 = 52

(1*3)+(2*8)+(3*13)= 3+16+39 = 58

(1*4)+(2*9)+(3*14)= 4+18+42 = 64

(1*5)+(2*10)+(3*15)= 5+20+45 = 70

(4*1)+(5*6)+(6*11)= 4+30+66 = 100

(4*2)+(5*7)+(6*12)= 8+35+72 = 115

(4*3)+(5*8)+(6*13)= 12+40+78 = 130

(4*4)+(5*9)+(6*14)= 16+45+84 = 145

(4*5)+(5*10)+(6*15)= 20+50+90 = 160

A[2][3] B[3][5] C[2][5]

1 2 3

4 5 6

7 8 9

Page 9: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

MATERI 3

SORTING

TUJUAN

1. Dapat memahami teori tentang sorting

2. Dapat menerapkan konsep sorting baik dengan metode bubble sort, selection sort dan

insertion sort

PENJELASAN

Bab ini akan membahas tentang sorting dan masih berkaitan dengan array.

PRAKTEK

Ada 3 jenis metode sorting yang akan dibahas yaitu :

1. Bubble sort (gelembung) secara ascending

Contoh: Elemen array / larik dengan N=6 buah elemen dibawah ini.

25 27 10 8 76 211 2 3 4 5 6

Langkah 1:

K=N=6 21 76

K=5 8 21 76K=4 8 10 21 76K=3 8 27 10 21 76K=2 8 25 27 10 21 76

Hasil akhir langkah 1:

8 25 27 10 21 761 2 3 4 5 6

Langkah 2:K=N=6 21 76K=5 10 21 76K=4 10 27 21 76K=3 10 25 27 21 76

Hasil akhir langkah 2 :

8 10 25 27 21 761 2 3 4 5 6

Langkah 3:K=N=6 21 76K=5 21 27 76K=4 21 25 27 76

Hasil akhir langkah 3 :

Page 10: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

8 10 21 25 27 761 2 3 4 5 6

Langkah 4:K=N=6 27 76K=5 25 27 76

Hasil akhir langkah 4:

Langkah 5:

K=N=6 27 76

Hasil akhir langkah 5:

8 10 21 25 27 761 2 3 4 5 6

Sorting sudah selesai, karena data sudah terurutkan.

Contoh 8 pengurutan data menggunakan metode bubble sort

Keterangan program :

Pada array L sudah diinputkan nilai secara statis sebanyak 5 elemen yaitu 1, 50, 10, 3, 2 dari ke

lima nilai tersebut masih acak atau belum terurutkan.

Perintah untuk mengurutkan nilai tersebut dengan metode bubble sort secara ascending yaitu:

for(i=0;i<=4;i++) for(k=0;k<=4;k++) if (L[k]>L[k+1]) {temp=L[k]; L[k]=L[k+1]; L[k+1]=temp; }

8 10 21 25 27 761 2 3 4 5 6

//Jumlah elemen dalam array ada 5L[0]=1;L[1]=50;L[2]=10;L[3]=3;L[4]=2;//Proses secara Ascending(naik)for(i=0;i<=4;i++) for(k=0;k<=4;k++) if (L[k]>L[k+1]) {

temp=L[k]; L[k]=L[k+1]; L[k+1]=temp;

}for(i=0;i<=4;i++)cout<<L[i]<<endl;

Page 11: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

Dan perintah untuk menampilkan nilai yang sudah diurutkan yaitu :

for(i=0;i<=4;i++) cout<<L[i]<<endl;

2. Selection sort (maksimum/minimun)

Contoh: Elemen array / larik dengan N=6 buah elemen dibawahini.

29 27 10 8 76 211 2 3 4 5 6

Langkah 1:

Cari elemen maksimum di dalam larik L[1..6] maks = L[5] = 76

Tukar maks dengan L[N],hasil akhir langkah 1:

29 27 10 8 21 76

1 2 3 4 5 6

Langkah 2:

(berdasarkan susunan larik hasil langkah 1)

Cari elemen maksimum di dalam larik L[1..5] maks = L[1] = 29

Tukar maks dengan L[5],hasil akhir langkah 2:

21 27 10 8 29 761 2 3 4 5 6

Langkah 3:

(berdasarkan susunan larik hasil langkah 2)

Cari elemen maksimum di dalam larik L[1..4] maks = L[2] = 27

Tukar maks dengan L[4],hasil akhir langkah 3:

21 8 10 27 29 761 2 3 4 5 6

Langkah 4:

(berdasarkan susunan larik hasil langkah 3)

Cari elemen maksimum di dalam larik L[1..3] maks = L[1] = 21

Tukar maks dengan L[3],hasil akhir langkah 4:

10 8 21 27 29 761 2 3 4 5 6

Langkah 5:

(berdasarkan susunan larik hasil langkah 4)

Cari elemen maksimum di dalam larik L[1..2] maks = L[1] = 10

Tukar maks dengan L[2],hasil akhir langkah 5:

8 10 21 27 29 76

Page 12: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

1 2 3 4 5 6Jika nilai pada array/larik sudah terurutkan maka proses sorting sudah selesai.

Contoh 9 pengurutan data menggunakan metode selection sort (maksimum /minimum )

Keterangan program :

Perintah untuk mengurutkan nilai yang ada di larik L yaitu :

for(j=0;j<=4;j++)

{ jmax=0;

for(k=1;k<=u;k++)

if (L[k] > L[jmax])

jmax=k;

temp=L[u];

L[u]=L[jmax];

L[jmax]=temp;

u--; }

Data sudah terurutkan dan kemudian data yang sudah urut ditampilkan menggunakan perintah :

int main(){int L[5];int j,k,i,temp;int jmax,u;

//Jumlah elemen dalam array ada 5L[0]=1;L[1]=50;L[2]=10;L[3]=3;L[4]=2;

cout<<"Nilai sebelum diurutkan = \n";for(i=0;i<=4;i++)

cout<<L[i]<<" ";

//Proses pengurutan secara menaik (Ascending)for(j=0;j<=4;j++)

{ u=4;jmax=0;

for(k=1;k<=u;k++)if (L[k] > L[jmax])

jmax=k; temp=L[u]; L[u]=L[jmax]; L[jmax]=temp; u--;

}

//menampilkan nilai setelah diurutkancout<<"\nNilai setelah diurutkan ="<<endl;for(i=0;i<=5;i++) cout<<L[i]<<" ";

Page 13: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

cout<<"\nNilai setelah diurutkan ="<<endl;

for(i=0;i<=4;i++)

cout<<L[i]<<" ";

3. Insertion sort (sisip)

Contoh: Elemen array / larik dengan N=6 buah elemen dibawah ini.

29 27 10 8 76 211 2 3 4 5 6

Langkah 1:

Elemen L[1] dianggap sudah terurut

29 27 10 8 76 211 2 3 4 5 6

Langkah 2:

(berdasarkan susunan larik pada langkah 1)

Cari posisi yang tepat untuk L[2] pada L[1..2],diperoleh :

27 29 10 8 76 211 2 3 4 5 6

Langkah 3:

(berdasarkan susunan larik pada langkah 2)

Cari posisi yang tepat untuk L[3] pada L[1..3],diperoleh :

10 27 29 8 76 211 2 3 4 5 6

Langkah 4:

(berdasarkan susunan larik pada langkah 3)

Cari posisi yang tepat untuk L[4] pada L[1..4],diperoleh :

8 10 27 29 76 211 2 3 4 5 6

Langkah 5:

(berdasarkan susunan larik pada langkah 4)

Cari posisi yang tepat untuk L[5] pada L[1..5],diperoleh :

8 10 27 29 76 211 2 3 4 5 6

Langkah 6:

(berdasarkan susunan larik pada langkah 5)

Cari posisi yang tepat untuk L[6] pada L[1..6],diperoleh :

8 10 21 27 29 76

Page 14: Modul Praktikum Mata Kuliah Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA 2014-2015

1 2 3 4 5 6Jika nilai pada array/larik sudah terurutkan maka proses sorting sudah selesai.

Contoh 10 pengurutan data menggunakan metode insertion sort (sisip)

MATERI 4

STRUCT

Keterangan :

Nilai yang akan diurutkan sudah diinputkan secara statis yaitu 1, 25, 10, 30, 2 untuk metode sisip

ini pengurutan dimulai pada urutan ke dua, sehingga membutuhkan variabel temp yg digunakan

untuk menyimpan data sementara agar nilai tidak tertimpa. Perintah untuk penggeserannya atau

pengurutannya yaitu :

j=k-1; while(temp<=L[j]) {L[j+1]=L[j]; j--;} if((temp >= L[j])|| ( j=1)) L[j+1]=temp; /*posisi yg tepat untuk L[k] ditemukan*/ else { L[j+1]=L[j]; L[j]=temp; }}

Tugas !!!

Tuliskan nim anda masing-masing dan buatlah program sorting menggunakan 3 metode boleh

dibuat ascending atau descending.

L[0]=1;L[1]=25;L[2]=10;L[3]=30;L[4]=2;for(k=1;k<=4;k++){

temp=L[k];/* ambil elemen L[k] supaya tidak tertimpa penggeseran*/

/* Cari Posisi Yang tepat dalam L[1..k-1] sambil menggeser*/ j=k-1; while(temp<=L[j]) {

L[j+1]=L[j]; j--;

}if((temp >= L[j])|| ( j=1))

L[j+1]=temp; /*posisi yg tepat untuk L[k] ditemukan*/ else {

L[j+1]=L[j]; L[j]=temp;

}}for(k=0;k<=4;k++)

cout<< L[k]<<" ";