Academia.eduAcademia.edu

Laporan Praktikum Konsep Pemrograman

LAPORAN PRAKTIKUM KONSEP PEMROGRAMAN “ POINTER ” DISUSUN OLEH : Puruhita Mega Pawitra (M0513036) ASISTEN : Dwi Putri Pertiwi (M0512015) Rio Pahlevy Ridlo Yudha Bhakti (M0512048) JURUSAN INFORMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SEBELAS MARET SURAKARTA Rabu, 04 Desember 2013 SOAL Soal 1, Memodifikasi program bubble sort integer di modul sorting menjadi bubble sort string Soal 2 dan 3 membuat dua program sorting selain bubble sort (insertion, selection, merge, quick) , dengan nilai di input kan. GAGASAN Pada soal nomer 1, mahasiswa diperintahkan untuk memodifikasi program bubble sort integer di modul sorting menjadi bubble sort string. Pada soal nomer 2, mahasiswa diperintahkan untuk membuat program sorting selain bubble sort dengan nilai yang diinputkan. Dan pada soal nomer 3, mahasiswa diperintahkan untuk membuat program sorting selain bubble sort dengan nilai yang diinputkan pula. Untuk menyelesaikan permasalahan nomer 1, 2 dan 3, mahasiswa dapat menggunakan prinsip dari sorting, yaitu bubble sort, selection sort, dan insertion sort. Yaitu : Bubble sort : Bubble sort merupakan algoritma pengurutan paling tua dengan metode pengurutan paling sederhana. Pengurutan yang dilakukan dengan membandingkan masing-masing item dalam suatu list secara berpasangan, menukar item jika diperlukan, dan mengulaginya sampai akhir list secara berurutan, sehingga tidak ada lagi item yang dapat ditukar. Selection sort : Selection sort merupakan ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1. Insertion sort : Insertion sort merupakan algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan dan yang sudah diurutkan. Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan. Untuk menyelesaikan permasalahan nomer 1, 2 dan 3, menggunakan prinsip manipulasi string yaitu strcmp() dan strcpy() Strcmp() digunakan untuk mengetahui perbandingan string Strcpy() digunakan untuk menyalin string. PRINT SCREEN Soal 1 : Hasil Eksekusi : Soal 2 : Hasil Eksekusi : Soal 3: Hasil Eksekusi : ANALISA DAN JALANNYA PROGRAM Program 1 Baris Rumus Analisis 1 #include <stdio.h> Baris ini diawali dengan # berarti diolah oleh processor sebelum di kompilasi. Baris ini menyuruh processor untuk meng-include isi dari file stdio.h kedalam program. Stdio.h adalah standard input output header file, yang mengandung informasi dan deklarasi-deklarasi yang digunakan oleh kompilator untuk penanganan fungsi-fungsi I/O seperti printf, scanf, dsb. 2 #include<string.h> Baris ini diawali dengan # berarti diolah oleh processor sebelum di kompilasi. Baris ini menyuruh processor untuk meng-include isi dari file string.h kedalam program. 3 void bubbleSort(); Deklarasi yang menyatakan bahwa program memiliki fungsi bertipe void bernama bubbleSort. Fungsi ini tidak memiliki parameter. Fungsi void adalah fungsi yang tidak mengembalikan nilai apapun. 4 char nama[30][30], swap[30]; Deklarasi yang menyatakan bahwa array dua dimensi yang diberi nama ‘nama’. Deklarasi yang menyatakan bahwa variabel bertipe string yang diberi nama swap dan maksimal berisi 30 karakter 5 int n, c, d; Deklarasi yang menyatakan bahwa n, c dan d merupakan variabel. Variabel – variabel tersebut bertipe integer. 6 int main() Tanda () kurung menyatakan main() merupakan fungsi dengan nama main. Setiap program C yang lengkap harus mengandung fungsi dengan nama main. Pada baris ini program yang dibuat baru mulai dilaksanakan. 7 { Kurung kurawal membentuk body suatu program. Kurung kurawal buka berarti program fungsi main dimulai dari sini. 8 printf("\t\tSelamat Datang Di Program Pengurutan\n"); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : Selamat Datang Di Program Pengurutan. \t = newtab = pindah tab \n = newline = pindah baris 9 printf("\t\t-------------------------------------\n\n"); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : ------------------------------------- \t = newtab = pindah tab \n = newline = pindah baris 10 printf("Masukkan jumlah elemen yang anda inginkan : "); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : Masukkan jumlah elemen yang anda inginkan : 11 scanf("%d",&n); merupakan satemen yang saya gunakan agar program memperoleh input / masukan dari pemakai. Dalam hal ini program akan mengambil inputan dengan tipe %d yaitu berarti input merupakan bulangan desimal. &n = alamat yang dituju. 12 printf("- Masukkan %d nama : \n", n); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : - Masukkan %d nama : \n = newline = pindah baris %d = tipe data desimal. 13 for ( c=0 ; c<n ; c++ ) Merupakan fungsi perulangan. Dimana looping akan terus dilakukan selama c<n bernilai benar. 14 scanf("%s",&nama[c]); merupakan satemen yang saya gunakan agar program memperoleh input / masukan dari pemakai. Dalam hal ini program akan mengambil inputan dengan tipe %s yaitu berarti input bertipe string. &nama[c] = alamat yang dituju. 15 bubbleSort(); Merupakan fungsi pemanggil, untuk memanggil fungsi bubbleSort() 16 printf("- Daftar urutan:\n"); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : - Daftar urutan: \n = newline = pindah baris 17 for ( c=0; c<n; c++ ) Merupakan fungsi perulangan. Dimana looping akan terus dilakukan selama c<n bernilai benar. 18 printf("%s\n",nama[c]); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. %s = tipe string \n = newline = pindah baris 19 } Kurung kurawal membentuk body suatu program. Kurung kurawal yang menutup fungsi main. 20 void bubbleSort() Merupakan kepala fungsi dari fungsi void bubbleSort() 21 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi. 22 int i,j; Deklarasi yang menyatakan bahwa i dan j merupakan variabel. Dan variabel- variabel tersebut bertipe integer. 23 char sementara[30]; Mendeklarasikan variabel yang bernama sementara bertipe string yang isinya dibatasi sampai 50 karakter. 24 for (i=0; i<=n-2; ++i) Merupakan fungsi perulangan. Dimana looping akan terus dilakukan selama i<=n bernilai benar. 25 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi for. 26 for(j=n-1; j > i; --j) Merupakan fungsi perulangan, dimana looping akan terus dilakukan selama i<=n bernilai benar. 27 if (strcmp(nama[j-1],nama[j])>0) Jika perbandingan array nama[j-1] lebih besar dari array[j] maka fungsi if dijalankan. 28 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi if. 29 strcpy(sementara,nama[j-1]); Menyalin string dari array nama[j-1] ke string sementara. 30 strcpy(nama[j-1],nama[j]); Menyalin string dari array nama[j] ke array nama[j-1]. 31 strcpy(nama[j],sementara); Menyalin string dari string sementara ke array nama[j] 32 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi fungsi if. 33 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi fungsi for 34 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi void bubbleSort() Jalannya Program : Pertama pengguna diperintahkan untuk menginputkan jumlah elemen atau jumlah nama yang ingin dimasukkan (yaitu yang ingin di urutkan) melalui : printf("Masukkan jumlah elemen yang anda inginkan : "); . Misal pengguna memasukkan sejumlah 4 . Dalam hal ini 4 merupakan niali dari n. Kemudian pengguna diperintahkan memasukkan daftar nama – nama yang ingin diurutkan sejumlah jumlah n. Melalui : printf("- Masukkan %d nama : \n", n); Misal pengguna memasukkan 4 nama : Ersi : dialamatkan sebagai array nama[0] Laras : dialamatkan sebagai array nama[1] Desti : dialamatkan sebagai array nama[2] Mega : dialamatkan sebagai array nama[3] Kemudian program akan masuk ke fungsi bubbleSort() Untuk i=0 , j =3 desti<mega tidak dijalankan j=2 laras>ersi Sementara : laras nama[1] : ersi nama[2] : laras j=1 esi<indah tidak dijalankan Untuk i=1, j=3 desti<mega tidak dijalankan j=2 ersi<laras tidak dijalankan Looping berhenti. Maka akan tercetak : Daftar Urutan : desti (sebagai nama[0] ) ersi ( sebagai nama[1] ) laras ( sebagai nama[2] ) mega ( sebagai nama[3] ) Program 2 Baris Rumus Analisis 1 #include <stdio.h> Baris ini diawali dengan # berarti diolah oleh processor sebelum di kompilasi. Baris ini menyuruh processor untuk meng-include isi dari file stdio.h kedalam program. Stdio.h adalah standard input output header file, yang mengandung informasi dan deklarasi-deklarasi yang digunakan oleh kompilator untuk penanganan fungsi-fungsi I/O seperti printf, scanf, dsb. 2 #include <string.h> Baris ini diawali dengan # berarti diolah oleh processor sebelum di kompilasi. Baris ini menyuruh processor untuk meng-include isi dari file string.h kedalam program. 3 char selection(); Deklarasi yang menyatakan bahwa fungsi selection yang tidak memiliki parameter. Fungsi tersebut bertipe integer. 4 char nama[30][30], swap[30]; Deklarasi yang menyatakan bahwa array dua dimensi yang diberi nama ‘nama’. Deklarasi yang menyatakan bahwa variabel bertipe string yang diberi nama swap dan maksimal berisi 30 karakter 5 int n, c, d, tempat; Deklarasi yang menyatakan bahwa n, c, d, dan tempet merupakan variabel. Variabel tersebut bertipe integer. 6 7 main() Tanda () kurung menyatakan main() merupakan fungsi dengan nama main. Setiap program C yang lengkap harus mengandung fungsi dengan nama main. Pada baris ini program yang dibuat baru mulai dilaksanakan. 8 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi main. 9 printf("\t\tSelamat Datang Di Program Pengurutan\n"); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : Selamat Datang Di Program Pengurutan \t = newtab = pindah tab \n = newline = pindah baris 10 printf("\t\t-------------------------------------\n\n"); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : ------------------------------------- \t = newtab = pindah tab \n = newline = pindah baris 11 printf("Masukkan jumlah elemen yang anda inginkan : "); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : Masukkan jumlah elemen yang anda inginkan : 12 scanf("%d", &n); merupakan satemen yang saya gunakan agar program memperoleh input / masukan dari pemakai. Dalam hal ini program akan mengambil inputan dengan tipe %d yaitu berarti input merupakan bulangan desimal. &n = alamat yang dituju. 13 printf("- Masukkan %d nama : \n", n); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : - Masukkan %d nama : \n = newline = pindah baris %d = tipe data desimal. 14 for ( c=0 ; c<n ; c++ ) Merupakan fungsi perulangan. Dimana looping akan terus dilakukan selama c<n bernilai benar. 15 scanf("%s", &nama[c]); Menerima input string yang dialamatkan kepada search. 16 selection(); Merupakan fungsi pemanggil yang memanggil fungsi char selection() 17 printf("- Daftar urutan : \n"); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : - Daftar urutan: \n = newline = pindah baris 18 for ( c = 0 ; c < n ; c++ ) Merupakan fungsi perulangan. Dimana looping akan terus dilakukan selama c<n bernilai benar. 19 printf("%s\n", nama[c]); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. %s = tipe string \n = newline = pindah baris 20 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi main. 21 char selection() Merupakan kepala fungsi bertipe string. 22 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi char selection() 23 for ( c=0 ; c<(n-1) ; c++ ) Merupakan fungsi pemanggil, dimana looping akan terus dilakukan selama c<(n-1) bernilai benar. 24 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka pembuka fungsi for. 25 tempat = c; Pernyataan dimana variabel c akan diberikan pada variabel tempat. 26 for( d=c+1 ; d<n ; d++ ) Merupakan fungsi perulangan dimana looping akan terus di;akukan selama d<n bernilai benar. 27 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi for. 28 if ( strcmp(nama[tempat],nama[d]) > 0 ) Apabila perbandingan array nama[letak] lebih besar dari array nama [d] maka fungsi if dijalankan. 29 tempat = d; Menyatakan bahwa variabel d diberikan pada variabel tempat. 30 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi for 31 if( tempat != c ) Jika nilai dari variabel tempat tidak sama dengan nilai variabel c, maka fungsi if dijalankan. 32 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi if. 33 strcpy(swap , nama[c]); Menyalin string dari array nama[c] ke swap. 34 strcpy(nama[c] , nama[tempat]); Menyalin string dari array nama[tempat] ke array nama[c]. 35 strcpy(nama[tempat] , swap); Menyalin string dari array nama[j-1] ke string sementara 36 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi if. 37 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi for. 38 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi char selection() Jalannya Program : Pertama pengguna diperintahkan untuk menginputkan jumlah elemen atau jumlah nama yang ingin dimasukkan (yaitu yang ingin di urutkan) melalui : printf("Masukkan jumlah elemen yang anda inginkan : "); . Misal pengguna memasukkan sejumlah 4 . Dalam hal ini 4 merupakan niali dari n. Kemudian pengguna diperintahkan memasukkan daftar nama – nama yang ingin diurutkan sejumlah jumlah n. Melalui : printf("- Masukkan %d nama : \n", n); Misal pengguna memasukkan 4 nama : Ersi : dialamatkan sebagai array nama[0] Laras : dialamatkan sebagai array nama[1] Desti : dialamatkan sebagai array nama[2] Mega : dialamatkan sebagai array nama[3] Kemudian program akan masuk ke fungsi selection() Untuk c=0 , tempat = 0 Untuk d = 1 Ersi<laras if tidak dijalankan Untuk d = 2 Ersi>desti tempat = 2 tempat tidak sama dengan 0 masuk fungsi if swap : ersi nama[0] : desti nama[2] : ersi untuk d=3 ersi<megaif tidak dijalankan Untuk c=1 Tempat=1 Untuk d=2 Laras>desti Tempat=2 Tempat tidak sama dengan 1 masuk ke fungsi if Swap : laras Nama[1]:desti Nama[2]:laras Untuk d=3 Laras<mega if tidak dijalankan Untukc=2 Tempat=2 Untuk d=3 Desti<mega if tidak dilaksanakan Looping telah selesai dilaksanakan. Maka akan tercetak : Daftar Urutan : desti (sebagai nama[0] ) ersi ( sebagai nama[1] ) laras ( sebagai nama[2] ) mega ( sebagai nama[3] ) Program 3 Baris Rumus Analisis 1 #include<stdio.h> Baris ini diawali dengan # berarti diolah oleh processor sebelum di kompilasi. Baris ini menyuruh processor untuk meng-include isi dari file stdio.h kedalam program. Stdio.h adalah standard input output header file, yang mengandung informasi dan deklarasi-deklarasi yang digunakan oleh kompilator untuk penanganan fungsi-fungsi I/O seperti printf, scanf, dsb. 2 #include<string.h> Baris ini diawali dengan # berarti diolah oleh processor sebelum di kompilasi. Baris ini menyuruh processor untuk meng-include isi dari file string.h kedalam program. 3 char insertion(); Deklarasi yang menyatakan bahwa program memiliki fungsi bertipe char bernama insertion. Fungsi tersebut tidak memiliki parameter 4 char nama[30][30], sementara[30]; Deklarasi yang menyatakan bahwa array dua dimensi yang diberi nama ‘nama’. Deklarasi yang menyatakan bahwa variabel bertipe string yang diberi nama ‘sementara’ dan maksimal berisi 30 karakter 5 int i,j,s; Deklarasi yang menyatakan bahwa i, j dan s merupakan variabel. Variabell tersebut bertipe integer. 6 7 main(){ Tanda () kurung menyatakan main() merupakan fungsi dengan nama main. Setiap program C yang lengkap harus mengandung fungsi dengan nama main. Pada baris ini program yang dibuat baru mulai dilaksanakan. 8 printf("\t\tSelamat Datang Di Program Pengurutan\n"); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : Selamat Datang Di Program Pengurutan \t = newtab = pindah tab \n = newline = pindah baris 9 printf("\t\t-------------------------------------\n\n"); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : ------------------------------------- \t = newtab = pindah tab \n = newline = pindah baris 10 printf("Masukkan jumlah elemen yang anda inginkan : "); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : Masukkan jumlah elemen yang anda inginkan : 11 scanf("%d",&s); merupakan satemen yang saya gunakan agar program memperoleh input / masukan dari pemakai. Dalam hal ini program akan mengambil inputan dengan tipe %d yaitu berarti input merupakan bulangan desimal. &s = alamat yang dituju. 12 printf("- Masukkan %d nama: \n",s); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : - Masukkan %d nama : \n = newline = pindah baris %d = tipe data desimal 13 for(i=0;i<s;i++) Merupakan fungsi perulangan, sehingga looping akan terus dilakukan selama i<s bernilai benar. 14 scanf("%s",&nama[i]); Menerima input string yang dialamatkan kepada nama[i]. 15 16 insertion(); Merupakan fungsi pemanggil. Untuk memanggil fungsi yang telah dideklarasikan sebelumnya. 17 18 printf("- Setelah diurutkan: \n"); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. Yaitu : - Setelah diurutkan: \n = newline = pindah baris 19 for(i=0;i<s;i++) Merupakan fungsi perulangan, dimana looping akan terus dilakukan selama i<s bernilai benar. 20 printf("%s\n",nama[i]); Memerintahkan program untuk mencetak pada layar monitor karakter yang diapit oleh tanda “ ”. \n = newline = pindah baris %s = tipe string 21 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi main. 22 23 char insertion() Merupakan kepala fungsi bertipe string. 24 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi char insertion() 25 for(i=0;i<s;i++) Merupakan fungsi perulangan, dimana looping akan terus dilakukan selama i<s bernilai benar. 26 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi for. 27 strcpy(sementara, nama[i]); Menyalin string dari array nama[i] ke string sementara. 28 j=i-1; Nilai i dikurangi 1 diberikan kepada variabel j. 29 while((strcmp(sementara,nama[j])<0)&&(j>=0)) Jika perbandingan string sementara lebih kecil dari array nama[j] dan j>=0, maka fungsi while dijalankan. 30 { Kurung kurawal membentuk body suatu program. Kurung kurawal pembuka fungsi while. 31 strcpy(nama[j+1],nama[j]); Menyalin string dari array nama[j] ke array nama[j+1]. 32 j--; Nilai j dikurangi 1 j-1 33 } Kurung kurawal membentuk body suatu program. Menyalin string dari array nama[j] ke array nama[j+1]. 34 strcpy(nama[j+1],sementara); Menyalin string dari sementara ke array nama[j+1]. 35 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi for. 36 } Kurung kurawal membentuk body suatu program. Kurung kurawal penutup fungsi char insertion() Jalannya Program : Pertama pengguna diperintahkan untuk menginputkan jumlah elemen atau jumlah nama yang ingin dimasukkan (yaitu yang ingin di urutkan) melalui : printf("Masukkan jumlah elemen yang anda inginkan : "); . Misal pengguna memasukkan sejumlah 4 . Dalam hal ini 4 merupakan niali dari s. Kemudian pengguna diperintahkan memasukkan daftar nama – nama yang ingin diurutkan sejumlah jumlah n. Melalui : printf("- Masukkan %d nama : \n", s); Misal pengguna memasukkan 4 nama : Ersi : dialamatkan sebagai array nama[0] Laras : dialamatkan sebagai array nama[1] Desti : dialamatkan sebagai array nama[2] Mega : dialamatkan sebagai array nama[3] Maka program akan masuk ke fungsi insertion() Untuk i=0 , sementara : ersi j= -1 while tak terlaksana karena syaratnya bernilai salah. nama[0] : ersi untuk i=1 sementara : laras j=0 laras>ersi while tidak dijalankan nama[1] : laras untuk i=2 j=1 sementara : desti desti<laras dan j>0 nama[0]:desti untuk i=3 j=2 sementara : mega mega>desti while tidak dijalankan nama[3] : mega j=1 desti<laras dan j >0 nama[0]: desti j= 0 laras>ersi dan j=0 nama [1]:ersi Looping telah selesai dilaksanakan. Maka akan tercetak : Setelah diurutkan : desti (sebagai nama[0] ) ersi ( sebagai nama[1] ) laras ( sebagai nama[2] ) mega ( sebagai nama[3] )