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] )