LAPORAN PRAKTIKUM KONSEP PEMROGRAMAN Buble sort String

17
LAPORAN PRAKTIKUM KONSEP PEMROGRAMAN Buble sort String DISUSUN OLEH : Khavid Wasi Triyoga M0513026 ASISTEN : 1. Dwi Putri Pertiwi (M0512015) 2. Fathin Mubarak (M0512020) JURUSAN INFORMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM SURAKARTA Selasa, 10 Desember 2013

Transcript of LAPORAN PRAKTIKUM KONSEP PEMROGRAMAN Buble sort String

LAPORAN PRAKTIKUM KONSEP PEMROGRAMAN

Buble sort String

DISUSUN OLEH :

Khavid Wasi Triyoga

M0513026

ASISTEN : 1. Dwi Putri Pertiwi (M0512015)

2. Fathin Mubarak (M0512020)

JURUSAN INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

SURAKARTA

Selasa, 10 Desember 2013

Screen Shot Soal 1

Soal 2

Soal 3

Hasil eksekusi Soal 1

Soal 2

Soal 3

ANALISA Program nomer 1 #include <stdio.h> Menyuruh processor untuk meng-include isi dari librarry stdio.h #include<string.h> Menyuruh processor untuk meng-include isi dari librarry string.h void bubbleSort(); Mendeklarasikan fungsi. Program memiliki fungsi bertipe void bernama bubbleSort. Fungsi ini tidak memiliki parameter. Fungsi void adalah fungsi yang tidak mengembalikan nilai apapun. char nama[50][50], swap[50]; Mendeklarasikan array dua dimensi yang diberi nama ‘nama’. Mendeklarasikan string yang diberi nama swap dan maksimal 50 karakter int n, c, d; Program memiliki variabel berupa integer yaitu n, c, dan d. main() Fungsi utama di program C. { Kurung kurawal pembuka fungsi main. printf("Enter number of elements\n"); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. scanf("%d", &n); Merupakan suatu fungsi input. Data yang di-input berupa integer karena ada %d. Semua yang diinputkan akan dialamatkan sebagai nilai dari n. printf("Enter %d names\n", n); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. for ( c=0 ; c<n ; c++ ) Fungsi perulangan. Looping akan terus dilakukan selama c<n bernilai benar. scanf("%s", &nama[c]); Merupakan suatu fungsi input. Data yang di-input berupa integer karena ada %d. Semua yang diinputkan akan dialamatkan sebagai nilai dari n. bubbleSort(); Fungsi untuk memanggil fungsi void bubbleSort() printf("Sorted list in ascending order:\n"); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. for ( c = 0 ; c < n ; c++ ) Fungsi perulangan. Looping akan terus dilakukan selama c<n bernilai benar.

printf("%s\n", nama[c]); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. } Kurung kurawal yang menutup fungsi main. void bubbleSort() Kepala fungsi dari fungsi void bubbleSort() { Kurung kurawal pembuka fungsi. int i,j; Fungsi memiliki variabel integer yang diberi nama i dan j. char sementara[50]; Mendeklarasikan string bernama sementara dan dibatasi 50 karakter. for (i=0; i<=n-2; ++i) Fungsi perulangan. Looping akan terus dilakukan selama i<=n bernilai benar. { Kurung kurawal pembuka fungsi for. for(j=n-1; j > i; --j) Fungsi perulangan. Looping akan terus dilakukan selama i<=n bernilai benar. if (strcmp(nama[j-1],nama[j])>0) Apabila perbandingan array nama[j-1] lebih besar dari array [j] maka fungsi if dijalankan. { Kurung kurawal pembuka fungsi if. strcpy(sementara,nama[j-1]); Menyalin string dari array nama[j-1] ke string sementara. strcpy(nama[j-1],nama[j]); Menyalin string dari array nama[j] ke array nama[j-1]. strcpy(nama[j],sementara); Menyalin string dari string sementara ke array nama[j] } Kurung kurawal penutup fungsi fungsi if. } Kurung kurawal penutup fungsi fungsi for } Kurung kurawal penutup fungsi void bubbleSort()

Analisa Jalannya progam { printf("Enter number of elements\n"); scanf("%d", &n); printf("Enter %d names\n", n); for ( c=0 ; c<n ; c++ ) scanf("%s", &nama[c]); bubbleSort(); printf("Sorted list in ascending order:\n"); for ( c = 0 ; c < n ; c++ ) printf("%s\n", nama[c]); } Pada progam di atas merupakan proses memasukan nilai data yang akan di proses, lalu kita memasukan data yang di proses sebanyak data yang kita input kan. Lalu data yang di input kan akan di eksekusi dengan cara di urut kan secara acak . { int i,j; char sementara[50]; for (i=0; i<=n-2; ++i) { for(j=n-1; j > i; --j) if (strcmp(nama[j-1],nama[j])>0) { strcpy(sementara,nama[j-1]); strcpy(nama[j-1],nama[j]); strcpy(nama[j],sementara); } } } Pada progam di atas, merupakan penjabaran dari analisa pada progam sebelumnya, dimana data yang di input kan akan di proses dengan fungsi di atas. Program Nomer 2 #include <stdio.h> Menyuruh processor untuk meng-include isi dari librarry stdio.h #include <string.h> Menyuruh processor untuk meng-include isi dari librarry string.h char selection(); Mendeklarasikan fungsi. Program memiliki fungsi bertipe char bernama selection. Fungsi ini tidak memiliki parameter. char nama[50][50], swap[50]; Menginisialisasikan array 2 dimensi bertipe char yaitu array nama yang memiliki 9 elemen. Menyatakan variabel char yang diberi nama ‘swap’ dan dibatasi maksimal 50 karakter.

int n, c, d, letak; Fungsi memiliki 4 variabel integer yaitu n, c, d, dan letak. main() Fungsi utama di program C. { Kurung kurawal pembuka fungsi main. printf("Enter number of elements\n"); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. scanf("%d", &n); Menerima input integer yang dialamatkan kepada n. printf("Enter %d names\n", n); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. for ( c=0 ; c<n ; c++ ) Fungsi perulangan. Looping akan terus dilakukan selama c<n bernilai benar. scanf("%s", &nama[c]); Menerima input string yang dialamatkan kepada search. selection(); Fungsi untuk memanggil fungsi char selection() printf("Sorted list in ascending order:\n"); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. for ( c = 0 ; c < n ; c++ ) Fungsi perulangan. Looping akan terus dilakukan selama c<n bernilai benar. printf("%s\n", nama[c]); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. } Kurung kurawal penutup fungsi main. char selection() Kepala fungsi. { Kurung kurawal pembuka fungsi char selection() for ( c=0 ; c<(n-1) ; c++ ) Fungsi perulangan. Looping akan terus dilakukan selama c<(n-1) bernilai benar. { Kurung kurawal pembuka pembuka fungsi for.

letak = c; Nilai variabel c diberikan pada variabel letak. for( d=c+1 ; d<n ; d++ ) Fungsi perulangan. Looping akan terus dilakukan selama d<n bernilai benar. { Kurung kurawal pembuka fungsi for. if ( strcmp(nama[letak],nama[d]) > 0 ) Apabila perbandingan array nama[letak] lebih besar dari array nama [d] maka fungsi if dijalankan. letak = d; Nilai variabel d diberikan pada variabel letak. } Kurung kurawal penutup fungsi for if( letak != c ) Jika nilai dari variabel letak tidak sama dengan nilai variabel c, maka fungsi if dijalankan. { Kurung kurawal pembuka fungsi if. strcpy(swap , nama[c]); Menyalin string dari array nama[c] ke swap. strcpy(nama[c] , nama[letak]); Menyalin string dari array nama[letak] ke array nama[c]. strcpy(nama[letak] , swap); Menyalin string dari array nama[j-1] ke string sementara. } Kurung kurawal penutup fungsi if. } Kurung kurawal penutup fungsi for. } Kurung kurawal penutup fungsi char selection() Analisa jalan nya progam { printf("Masukan banyak data\n"); scanf("%d", &n); printf("Masukan %d nama\n", n); for ( c=0 ; c<n ; c++ ) scanf("%s", &nama[c]); selection();

printf("Sorted list in ascending order:\n"); for ( c = 0 ; c < n ; c++ ) printf("%s\n", nama[c]); } Pada progam di atas merupakan proses memasukan nilai data yang akan di proses, lalu kita memasukan data yang di proses sebanyak data yang kita input kan. Lalu data yang di input kan akan di eksekusi dengan cara di urut kan secara acak menggunakan bubble sort string selection . { for ( c=0 ; c<(n-1) ; c++ ) { letak = c; for( d=c+1 ; d<n ; d++ ) { if ( strcmp(nama[letak],nama[d]) > 0 ) letak = d; } if( letak != c ) { strcpy(swap , nama[c]); strcpy(nama[c] , nama[letak]); strcpy(nama[letak] , swap); } } } Progam diatas merupakan penjabaran dari jalan nya progam bubblesort string selection. Dengan cara menukar posisi data yang di inputkan lalu di tampilkan. Program Nomer 3 #include<stdio.h> Menyuruh processor untuk meng-include isi dari librarry stdio.h #include<string.h> Menyuruh processor untuk meng-include isi dari librarry string.h char insertion(); Mendeklarasikan fungsi. Program memiliki fungsi bertipe char bernama insertion. Fungsi ini tidak memiliki parameter. char nama[50][50], sementara[50]; Menginisialisasikan array 2 dimensi bertipe char yaitu array nama yang memiliki 9 elemen. Menyatakan variabel char yang diberi nama ‘sementara’ dan dibatasi maksimal 50 karakter. int i,j,s;

Fungsi memiliki 3 variabel integer yaitu i, j, dan s. main(){ Fungsi utama di program C. printf("Enter number of elements: "); Fungsi untuk mencetak semua yang ada dalam tanda petik. scanf("%d",&s); Menerima input string yang dialamatkan kepada s. printf("Enter %d names: \n",s); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. for(i=0;i<s;i++) Fungsi perulangan. Looping akan terus dilakukan selama i<s bernilai benar. scanf("%s",&nama[i]); Menerima input string yang dialamatkan kepada nama[i]. insertion(); Untuk memanggil fungsi yang telah dideklarasikan sebelumnya. printf("After sorting: "); Fungsi untuk mencetak semua yang ada dalam tanda petik. for(i=0;i<s;i++) Fungsi perulangan. Looping akan terus dilakukan selama i<s bernilai benar. printf(" %s\n",nama[i]); Fungsi untuk mencetak semua yang ada dalam tanda petik. \n berarti cetak newline. } Kurung kurawal penutup fungsi main. char insertion() Kepala fungsi. { Kurung kurawal pembuka fungsi char insertion() for(i=0;i<s;i++) Fungsi perulangan. Looping akan terus dilakukan selama i<s bernilai benar. { Kurung kurawal pembuka fungsi for. strcpy(sementara, nama[i]); Menyalin string dari array nama[i] ke string sementara.

j=i-1; Nilai i dikurangi 1 diberikan kepada variabel j. 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. { Kurung kurawal pembuka fungsi while. strcpy(nama[j+1],nama[j]); Menyalin string dari array nama[j] ke array nama[j+1]. j--; Nilai j berkurang 1. } Kurung kurawal penutup fungsi while. strcpy(nama[j+1],sementara); Menyalin string dari sementara ke array nama[j+1]. } Kurung kurawal penutup fungsi for. } Kurung kurawal penutup fungsi char insertion() Analisa jalannya progam { int jml; printf("MENGURUTKAN STRING DENGAN QUICK SORT \n\n"); printf("Masukkan jumlah Nama (maks 50) : "); scanf("%d",&jml); for (i=0;i<jml;i++) { printf("Nama ke %d : ",i+1); scanf("%s",&nama[i]); } quick(0,jml-1); printf("Data yang telah terurut : \n"); for (i=0;i<jml;i++) { printf("%s\n",nama[i]);

} } Pada progam di atas merupakan proses memasukan nilai data yang akan di proses menggunakan progam bubble short string dengan quick sort, lalu kita memasukan data yang di proses sebanyak data yang kita input kan. Lalu data yang di input kan akan di eksekusi dengan cara di urut kan secara acak menggunakan bubble sort string quick sort tanpa memperhatikan ketentuan yang berlaku (random). { char tukar[50], temp[50]; if (bawah<atas) { i = bawah; j = atas; strcpy(tukar,nama[j]); do { while (i<j && strcmp(nama[i],tukar)<0) { i++; } while (j>i && strcmp(nama[j],tukar)>0) { j--; } if (i<j) { strcpy(temp,nama[i]); strcpy(nama[i],nama[j]); strcpy(nama[j],temp); } } Progam diatas merupakan penjabaran dari jalan nya progam bubblesort string quick sort. Dengan cara menukar posisi data yang di inputkan lalu di tampilkan. while (i<j); { strcpy(temp , nama[j]); strcpy(nama[j],nama[atas]); strcpy(nama[atas],temp); if (j-bawah<atas-i) { quick(bawah,j-1); quick(i+1,atas); } else { quick(i+1,atas); quick(bawah,j-1); }

} } } Jika progam sebelumnya salah, maka akan di lanjut kan pada progam di atas, yang telah di jabarkan.