Anda di halaman 1dari 15

MODUL PRAKTIKUM STRUKTUR DATA 20142015

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

#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();
}
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.

x++) { cout<<"Nilai Angka : ".cin>>nilai[x]. } perintah perulangan untuk menampilkan nilai dari array yang dimulai dari indek 0 sampai dengan indek 4. } perintah perulangan untuk menginputkan nilai ke dalam array yang dimulai dari indek 0 sampai dengan indek 4. nilai tersebut diambil dari array nilai pada di masing-masing indek x.x++) { cout<<"Nilai Angka : ". } getch().x.x<5. for(x=0. for(x=0.h> #include <conio.x++) { cout<<"\nNilai Angka : "<<nilai[x].x<5. nilai tersebut disimpan dalam array nilai indek x.x<5.cin>>nilai[x]. perintah untuk menampilkan hasil penjumlahan yang sudah tersimpan di variabel r Contoh 2 #include <iostream.x<5. cout<<"Masukkan nilai\n". for(x=0.x. for(x=0. . } Keterangan program : int nilai[5].h> void main () { int nilai[5]. perintah di atas untuk mendeklarasikan variabel array nilai sebanyak 5 elemen dan mendeklarasikan variabel x. } cout<<"\n\nOutput nilai\n".x++) { cout<<"Nilai Angka : "<<nilai[x]<<endl.MODUL PRAKTIKUM STRUKTUR DATA 20142015 cout<<" "<<r.

clrscr().n<5.n++) { cout<<" "<<A[n].n++) { cout<<" "<<A[n]. } Keterangan program : int A [5]={20. } . A[4]=5.13}.n++) { cout<<" "<<A[n]. 1986. Perintah di atas digunakan untuk menginputkan nilai secara statis ke dalam array A.n<5.200. } perulangan yang dimulai dari indek 0 sampai indek 4 untuk menampilkan nilai array lama atau nilai array A yang sudah diinisialisasi di atas. nilai yang ada di array A yaitu = 20.1986.n<5. 200 dan 13 for (n=0. int n.9.n++) { cout<<" "<<A[n]. cout<<"Data yang lama\n".h> void main () { int A [5]={2. 9. for (n=0. } getch().20.19. A[0]=4.13}. for (n=0. A[3]=3. untuk array A indek ke 0 dengan nilai 4. A[1]=2. A[0]=4. array A indek ke 1 dengan nilai 2 dan seterusnya.h> #include <conio. perintah di atas untuk mendeklarasikan dan memberikan nilai (inisialisasi) pada array A.9.MODUL PRAKTIKUM STRUKTUR DATA 20142015 Contoh 3 #include <iostream. A[4]=5. A[2]=1. A[3]=3. A[1]=2. } cout<<"\nData yang baru\n". for (n=0. cout<<"\nData yang baru\n". A[2]=1.n<5.

n<4. } cout<<"\n\nData yang ingin dihapus : ".n++) { cout<<" "<<A[n]. } 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]. } . for (n=0. cin>>i.n<5-1. keteranganya juga sama) cout<<" data yang ingin dihapus : ".n++) { A[n]=A[n+1]. Contoh 4 #include <iostream. Jadi inti dari contoh program 3 yaitu mengedit atau merubah isi dari array.20.cin>>i. } getch().n++) { cout<<" "<<A[n]. nilai yang diinputkan ke dalam variabel hapus adalah nilai yang menunjukkan elemennya. //2 cout<<"\nData yang baru\n". for (n=0.h> #include <conio. int n.n<5.n<4.n++) { cout<<" "<<A[n]. for (n=i-1. for (n=i-1. Perintah di atas untuk menginputkan nilai yang ada ke dalam variabel hapus.n<5-1. } for (n=0.9.MODUL PRAKTIKUM STRUKTUR DATA 20142015 Perintah di atas untuk menampilkan nilai yang ada di array A yang sebelumnya sudah diinputkan secara statis.i.h> void main () { int A [5]={2.19. } 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). cout<<"Menampilkan Nilai Elemen Array\n".n++) //untuk n=1 { A[n]=A[n+1].13}. clrscr(). } Keterangan program (untuk perintah yang sama dengan contoh sebelumnya.

for (n=0. edit dan hapus elemen array.n<5. int n.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. for (int n=0. . Karena sudah dihapus sehingga pada saat ditampilkan indek dikurangi 1. for (int n=0. #include <iostream."<<n. Tambahkan perintah untuk cari. Latihan 1. Buatlah program untuk menginputkan elemen array secara dinamis dengan batas elemen array 100. } cout<<"\n\nMasukkan nilai yang dicari : ". break. sehingga yang ditampilkan dari indek 0 sampai dengan indek ke 3.13}.cin>>cari. } Keterangan program : cout<<"\nMasukkan nilai yang dicari : ". cout<<"Menampilkan data\n".n<5. 2.9. break. Perintah yang digunakan untuk menginputkan nilai ke dalam variabel cari.n<5.MODUL PRAKTIKUM STRUKTUR DATA 20142015 Perintah untuk menampilkan nilai yang ada di array A setelah proses penghapusan.19.h> #include <conio. } } getch().20.cari.n++) { cout<<" "<<A[n].h> main () { int A [5]={2. Contoh 5 Tambahkan program contoh 5 pada program di contoh 4.n++) { if (A[n]==cari) { cout<<"\nNilai yang anda cari terdapat pada indek ke.cin>>cari.} } Perintah yang akan dikerjakan jika nilai yang dicari ketemu.

for(int j=0.k<2.}} Perintah untuk menginputkan nilai kedalam array A baris j dan kolom k. cin>>A[j][k].j<3. cin>>A[j][k].j++) { for(k=0.MODUL PRAKTIKUM STRUKTUR DATA 20142015 MATERI 2 ARRAY 2 DIMENSI TUJUAN 1. Memahami array 2 dimensi 2. PRAKTEK Contoh 6 Menginputkan nilai ke array A pada baris j dan kolom k int A[3][2].j<3. 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.j++) {for(int k=0.k++) { cout<<"A["<<j<<"]["<<k<<"]= "<<A[j][k]<<endl. } } Keterangan : int A[3][2]. Pada baris j terdapat 3 baris dan terdapat 2 kolom. for(int j=0.k++) { cout<<"A["<<j<<"]["<<k<<"] = ".k<2.j<3.j++) { for(int k=0. Keterangan : } } . Perintah untuk mendeklarasikan array A yaitu array 2dimensi yang memiliki 3 baris dan 2 kolom.k<2. Contoh 7 Menampilkan hasil inputan for(j=0.k++) {cout<<"A["<<j<<"]["<<k<<"] = ".

 Ada 3 matrik yang dibutuhkan yaitu matrik A.  Elemen matrik A [0][0] dijumlahkan dengan elemen matrik B [0][0] juga dan disimpan di elemen matriks C [0][0] dan seterusnya. Transpose B[2][3] - .  Ada 3 matrik yang dibutuhkan yaitu matrik A. Tugas : Buatlah program matrik dengan operasi-operasi sbb: 1. dengan rumus C[0][0] = A[0][0] + B[0][0]. Penjumlahan  Agar kedua matrik dapat dijumlahkan harus memiliki jumlah baris dan kolom yang sama. Penjumlahan. pengurangan dan perkalian matrik 3.  Elemen matrik A [0][0] dijumlahkan dengan elemen matrik B [0][0] juga dan disimpan di elemen matriks C [0][0] dan seterusnya. C[2][3] A[2][3] B[2][3] + = 2. dengan rumus C[0][0] = A[0][0] + B[0][0].MODUL PRAKTIKUM STRUKTUR DATA 20142015 Penggalan listing program diatas yaitu untuk menampilkan nilai yang ada di array A baris j dan kolom k. Transpose dan diagonal matrik 4.  Inputkan matrik A dan matriks B  Matrik C untuk menampung hasil penjumlahan matriks A dan B sesuai dengan elemenelemennya. Input dan output matrik 2.B dan C. Pengurangan  Agar kedua matrik dapat dijumlahkan harus memiliki jumlah baris dan kolom yang sama.  Inputkan matrik A dan matriks B  Matrik C untuk menampung hasil penjumlahan matriks A dan B sesuai dengan elemenelemennya.B dan C. C[2][3] A[2][3] = 3. Menampilkan nilai maksimal dan minimal matrik Catatan : 1.

MODUL PRAKTIKUM STRUKTUR DATA 20142015  Transpose adalah elemen baris matriks akan menjadi kolom matriks dan sebaliknya kolom matriks akan menjadi baris matriks. Matrik awal : 1 4 Hasil Diagonal : 1. Diagonal matrik Mengambil diagonal matrik yaitu mengambil nilai dari baris dan kolom yang sama. Perkalian matrik (Syarat !!!Jumlah kolom matrik A harus sama dgn jumlah baris matrik B) (1*1)+(2*6)+(3*11)= 1+12+33 = 46 (4*1)+(5*6)+(6*11)= 4+30+66 = 100 (1*2)+(2*7)+(3*12)= 2+14+36 = 52 (4*2)+(5*7)+(6*12)= 8+35+72 = 115 (1*3)+(2*8)+(3*13)= 3+16+39 = 58 (4*3)+(5*8)+(6*13)= 12+40+78 = 130 (1*4)+(2*9)+(3*14)= 4+18+42 = 64 (4*4)+(5*9)+(6*14)= 16+45+84 = 145 (1*5)+(2*10)+(3*15)= 5+20+45 = 70 (4*5)+(5*10)+(6*15)= 20+50+90 = 160 A[2][3] B[3][5] C[2][5] .5.  Matriks Awal : Hasil Transpose: 1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9  Siapkan matriks hasil untuk menampung hasil transpose 4.9 2 3 5 6 7 8 9 5.

selection sort dan insertion sort PENJELASAN Bab ini akan membahas tentang sorting dan masih berkaitan dengan array. Bubble sort (gelembung) secara ascending Contoh: Elemen array / larik dengan N=6 buah elemen dibawah ini. PRAKTEK Ada 3 jenis metode sorting yang akan dibahas yaitu : 1. Dapat menerapkan konsep sorting baik dengan metode bubble sort. Dapat memahami teori tentang sorting 2.MODUL PRAKTIKUM STRUKTUR DATA 20142015 MATERI 3 SORTING TUJUAN 1. 25 1 27 2 10 3 8 4 76 5 21 6 Langkah 1: K=N=6 K=5 K=4 K=3 K=2 8 8 10 10 10 8 27 27 8 25 21 76 21 21 21 21 76 76 76 76 Hasil akhir langkah 1: 8 1 25 2 27 3 Langkah 2: K=N=6 K=5 K=4 K=3 10 4 10 21 5 76 6 10 25 10 27 27 21 21 21 21 76 76 76 76 Hasil akhir langkah 2 : 8 1 10 25 27 21 76 2 3 4 5 6 Langkah 3: K=N=6 K=5 K=4 21 21 25 21 27 27 76 76 76 .

i<=4.i<=4. .k<=4. L[2]=10.k<=4. L[1]=50.i++) for(k=0.i<=4. Contoh 8 pengurutan data menggunakan metode bubble sort //Jumlah elemen dalam array ada 5 L[0]=1. 3. 2 dari ke lima nilai tersebut masih acak atau belum terurutkan.MODUL PRAKTIKUM STRUKTUR DATA 20142015 Hasil akhir langkah 3 : 8 1 10 2 21 25 3 4 Langkah 4: K=N=6 K=5 27 76 5 25 6 27 27 76 76 Hasil akhir langkah 4: 8 10 1 21 2 25 3 27 4 76 5 Langkah 5: K=N=6 6 27 76 Hasil akhir langkah 5: 8 10 21 25 27 76 1 2 3 4 5 6 Sorting sudah selesai.k++) if (L[k]>L[k+1]) {temp=L[k].k++) if (L[k]>L[k+1]) { temp=L[k].i++) for(k=0. L[k]=L[k+1]. //Proses secara Ascending(naik) for(i=0. L[4]=2. Perintah untuk mengurutkan nilai tersebut dengan metode bubble sort secara ascending yaitu: for(i=0. L[k+1]=temp. } for(i=0. 50. karena data sudah terurutkan. 10.i++) cout<<L[i]<<endl. Keterangan program : Pada array L sudah diinputkan nilai secara statis sebanyak 5 elemen yaitu 1. L[3]=3.

Selection sort (maksimum/minimun) Contoh: Elemen array / larik dengan N=6 buah elemen dibawahini..hasil akhir langkah 2: 21 27 10 8 29 76 1 2 3 4 5 6 Langkah 3: (berdasarkan susunan larik hasil langkah 2) Cari elemen maksimum di dalam larik L[1. L[k+1]=temp.4] maks = L[2] = 27 Tukar maks dengan L[4].6] maks = L[5] = 76 Tukar maks dengan L[N]. 2. 29 27 10 8 76 21 1 2 3 4 5 6 Langkah 1: Cari elemen maksimum di dalam larik L[1. } Dan perintah untuk menampilkan nilai yang sudah diurutkan yaitu : for(i=0.MODUL PRAKTIKUM STRUKTUR DATA 20142015 L[k]=L[k+1].5] maks = L[1] = 29 Tukar maks dengan L[5]..i<=4.hasil akhir langkah 4: 10 8 1 2 21 27 29 76 3 4 5 6 Langkah 5: (berdasarkan susunan larik hasil langkah 4) Cari elemen maksimum di dalam larik L[1..hasil akhir langkah 3: 21 8 10 27 29 76 1 2 3 4 5 6 Langkah 4: (berdasarkan susunan larik hasil langkah 3) Cari elemen maksimum di dalam larik L[1.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..i++) cout<<L[i]<<endl.3] maks = L[1] = 21 Tukar maks dengan L[3]..2] maks = L[1] = 10 .

hasil akhir langkah 5: 8 10 21 27 29 76 1 2 3 4 5 6 Jika nilai pada array/larik sudah terurutkan maka proses sorting sudah selesai. for(k=1.j<=4. //Proses pengurutan secara menaik (Ascending) for(j=0. L[u]=L[jmax]. L[jmax]=temp. cout<<"Nilai sebelum diurutkan = \n". jmax=0.i++) cout<<L[i]<<" ". L[4]=2. L[1]=50.i. for(i=0. temp=L[u]. Keterangan program : Perintah untuk mengurutkan nilai yang ada di larik L yaitu : for(j=0.j<=4. L[2]=10.k<=u.u.k<=u.MODUL PRAKTIKUM STRUKTUR DATA 20142015 Tukar maks dengan L[2].j++) { u=4.k++) if (L[k] > L[jmax]) jmax=k. //Jumlah elemen dalam array ada 5 L[0]=1. j. L[3]=3.temp.i++) cout<<L[i]<<" ". jmax.k++) if (L[k] > L[jmax]) jmax=k. L[u]=L[jmax]. for(i=0.k. for(k=1. u--. } //menampilkan nilai setelah diurutkan cout<<"\nNilai setelah diurutkan ="<<endl. temp=L[u]. .j++) { jmax=0.i<=5.i<=4. Contoh 9 pengurutan data menggunakan metode selection sort (maksimum /minimum ) int { int int int main() L[5].

3].diperoleh : 8 1 10 27 29 76 21 2 3 4 5 6 ... u--. 29 1 27 10 8 76 21 2 3 4 5 6 Langkah 1: Elemen L[1] dianggap sudah terurut 29 1 27 10 8 76 21 2 3 4 5 6 Langkah 2: (berdasarkan susunan larik pada langkah 1) Cari posisi yang tepat untuk L[2] pada L[1.MODUL PRAKTIKUM STRUKTUR DATA 20142015 L[jmax]=temp. 3.diperoleh : 10 1 27 29 8 76 21 2 3 4 5 6 Langkah 4: (berdasarkan susunan larik pada langkah 3) Cari posisi yang tepat untuk L[4] pada L[1.2].5]. for(i=0.i++) cout<<L[i]<<" "..diperoleh : 27 1 29 10 8 76 21 2 3 4 5 6 Langkah 3: (berdasarkan susunan larik pada langkah 2) Cari posisi yang tepat untuk L[3] pada L[1.i<=4.diperoleh : 8 1 10 27 29 76 21 2 3 4 5 6 Langkah 5: (berdasarkan susunan larik pada langkah 4) Cari posisi yang tepat untuk L[5] pada L[1..4]. } Data sudah terurutkan dan kemudian data yang sudah urut ditampilkan menggunakan perintah : cout<<"\nNilai setelah diurutkan ="<<endl. Insertion sort (sisip) Contoh: Elemen array / larik dengan N=6 buah elemen dibawah ini.

for(k=1. Keterangan : Nilai yang akan diurutkan sudah diinputkan secara statis yaitu 1. 10. Perintah untuk penggeserannya atau pengurutannya yaitu : j=k-1.k-1] sambil menggeser*/ j=k-1. 30. /*posisi yg tepat untuk L[k] ditemukan*/ else { 4 MATERI L[j+1]=L[j]. STRUCT } } for(k=0.k++) { temp=L[k]. L[j]=temp./* ambil elemen L[k] supaya tidak tertimpa penggeseran*/ /* Cari Posisi Yang tepat dalam L[1. sehingga membutuhkan variabel temp yg digunakan untuk menyimpan data sementara agar nilai tidak tertimpa. while(temp<=L[j]) { L[j+1]=L[j].MODUL PRAKTIKUM STRUKTUR DATA 20142015 Langkah 6: (berdasarkan susunan larik pada langkah 5) Cari posisi yang tepat untuk L[6] pada L[1..k++) cout<< L[k]<<" ". 2 untuk metode sisip ini pengurutan dimulai pada urutan ke dua. L[4]=2. 25. L[3]=30. while(temp<=L[j]) {L[j+1]=L[j].k<=4.} if((temp >= L[j])|| ( j=1)) L[j+1]=temp.6]. L[j]=temp. } if((temp >= L[j])|| ( j=1)) L[j+1]=temp. Contoh 10 pengurutan data menggunakan metode insertion sort (sisip) L[0]=1.. L[2]=10. /*posisi yg tepat untuk L[k] ditemukan*/ else { L[j+1]=L[j]. L[1]=25. }} .k<=4. j--. j--.diperoleh : 8 10 21 27 29 76 1 2 3 4 5 6 Jika nilai pada array/larik sudah terurutkan maka proses sorting sudah selesai.

MODUL PRAKTIKUM STRUKTUR DATA 20142015 Tugas !!! Tuliskan nim anda masing-masing dan buatlah program sorting menggunakan 3 metode boleh dibuat ascending atau descending. .