modul praktikum mata kuliah struktur data
DESCRIPTION
Modul untuk tugas praktikum matakuliah struktur data bagian 1, yaitu arrayTRANSCRIPT
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(); }
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(); }
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();}
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();}
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();}
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;}
}
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]
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
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 :
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;
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
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]<<" ";
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
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]<<" ";