laporan praktikum resmi bab 8

37
LAPORAN PRAKTIKUM RESMI ALGORITMA & STRUKTUR DATA 1 Disusun oleh : Nama : Yosua Tita Pratama NIM : 201301010 Dosen pengampu : Yosef Murya Kusuma Ardhana.S.T., M.Kom JURUSAN SISTEM INFORMASI SEKOLAH TING GI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014 1

Upload: yoshua-tita-pratama

Post on 19-Jan-2016

30 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laporan Praktikum Resmi Bab 8

LAPORAN PRAKTIKUM RESMI

ALGORITMA & STRUKTUR DATA 1

Disusun oleh :

Nama : Yosua Tita Pratama

NIM : 201301010

Dosen pengampu :

Yosef Murya Kusuma Ardhana.S.T., M.Kom

JURUSAN SISTEM INFORMASI

SEKOLAH TING GI ILMU KOMPUTER YOS SUDARSO

PURWOKERTO

2014

1

Page 2: Laporan Praktikum Resmi Bab 8

BAB I

TEORI DASAR 1. PENGANTAR

Shell Sort mengurutkan data dengan cara membandingkan suatu data dengan data lain

yang memiliki jarak tertentu , kemudian dilakukan pertukaran jika diperlukan.

2. MERGE SORT

Merge Sort yaitu suatu teknik pengurutan dengan menggabungkan setiap kali dua

deretan elemen dan melakukan pengurutan terhadap elemen-elemen tersebut.

2

Page 3: Laporan Praktikum Resmi Bab 8

BAB II

PENJELASAN PROGRAM

Pada bab Sorting (Shell , Merge ) ini akan membahas tentang listing program 8.1 dan 8.2.

Latihan yang dilakukan adalah pada Listing Program 8.1 dan 8.2

Listing program

8.1 /* * program 8.1.cpp * * Created on: Apr 22, 2014 * Author: cenat-cenut */

#include <iostream>

using namespace std;

void shellsort(int a[],int n) {

int j,i,m,mid;

for(m=n/2;m>0;m/=2)

{

for(j=m;j<n;j++)

{

for(i=j-m;i>=0;i-=m)

{

if(a[i+m]>=a[i])

break;

else

{

3

Page 4: Laporan Praktikum Resmi Bab 8

mid=a[i];

a[i]=a[i+m];

a[i+m]=mid;

}

}

}

} }

int main() {

int a[10],i,n;

cout<<"Inputkan banyak data yang akan disorting :";

cin>>n;

for(i=0;i<n;i++)

{

cout<<"Data

"<<i+1<<"="; cin>>a[i];

}

cout<<"Data sebelum sorting :";

for(i=0;i<n;i++)

cout<<a[i]<<" ";

shellsort(a,n);

cout<<"\nData setelah sorting :";

for(i=0;i<n;i++)

cout<<a[i]<<" ";

return 0;

}

4

Page 5: Laporan Praktikum Resmi Bab 8

Hasil Output program 8.1 Penjelasan Listing program 8.1

1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah

komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau

teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler. 2. #include : Pengarah Praprocessor

Include adalah pengarah suatu library yang digunakan untuk suatu program.

3. Iostream : Library

Iostream adalah library untuk input dan output “cin” dan “cout”.

4. Tanda ‘{‘ dan ‘}’ adalah tanda untuk mengawali dan mengakhiri program.

5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.

6. Cout : untuk menampilkan output program yang sudah dituliskan.

7. Cin : untuk menginputkan data yang dimasukkan oleh user.

8. void shellsort(int a[],int n) : prosedur yang bernama shellsort yang terdiri atas tipe data

int a[] , int n.

9. shellsort(a,n) : Pemanggilan prosedur shellsort dalam main program.

10. Statement For : digunakan untuk modul perulangan pada program.

11. Statement if-else : digunakan untuk modul perulangan pada program.

5

Page 6: Laporan Praktikum Resmi Bab 8

Listing program 8.2

/* * program 8.2.cpp

*

* Created on: Apr 22, 2014

* Author: cenat-cenut

*/

#include <iostream>

using namespace std;

int a[50]; void merge(int,int,int); void merge_sort(int low,int high) {

int mid;

if(low<high)

{

mid=(low+high)/2;

merge_sort(low,mid);

merge_sort(mid+1,high);

merge(low,mid,high);

}

6

Page 7: Laporan Praktikum Resmi Bab 8

}

void merge(int low,int mid,int high) {

int h,i,j,b[50],k;

h=low;

i=low;

j=mid+1;

while((h<=mid)&&(j<=high))

{

if(a[h]<=a[j])

{

b[i]=a[h];

h++;

}

else

{

b[i]=a[j];

j++;

}

i++;

}

if(h>mid)

{

7

Page 8: Laporan Praktikum Resmi Bab 8

for(k=j;k<=high;k++)

{

b[i]=a[k];

i++;

}

}

else

{

for(k=h;k<=mid;k++)

{

b[i]=a[k];

i++;

}

}

for(k=low;k<=high;k++) a[k]=b[k]; } int main() {

int num,i;

cout<<"Inputkan banyak data yang akan diurutkan :";

cin>>num;

cout<<endl;

cout<<"Masukkan ( "<< num <<" ) data: "<<endl;

8

Page 9: Laporan Praktikum Resmi Bab 8

for(i=1;i<=num;i++)

{

cin>>a[i];

}

merge_sort(1,num);

cout<<endl;

cout<<"Setelah Pengurutan (Merge Sort) :"<<endl;

for(i=1;i<=num;i++)

cout<<a[i]<<" ";

cout<<endl<<endl<<endl<<endl;

return 0;

}

Hasil Output program 8.2

9

Page 10: Laporan Praktikum Resmi Bab 8

Penjelasan Listing program 8.2

1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah

komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau

teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler. 2. #include : Pengarah Praprocessor

Include adalah pengarah suatu library yang digunakan untuk suatu program.

3. Iostream : Library

Iostream adalah library untuk input dan output “cin” dan “cout”.

4. Tanda ‘{‘ dan ‘}’ adalah tanda untuk mengawali dan mengakhiri program.

5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.

6. Cout : untuk menampilkan output program yang sudah dituliskan.

7. Cin : untuk menginputkan data yang dimasukkan oleh user.

8. void merge(int,int,int) : Prosedur yang bernama merge yang terdiri hanya dari tipe data

int saja.

9. void merge_sort(int low,int high) : Prosedur yang bernama merge_sort yang terdiri dari

tipe data int low , int high.

10. void merge(int low,int mid,int high) : Prosedur yang bernama merge_sort yang terdiri

dari tipe data int low , int mid , int high.

11. h=low;

i=low;

j=mid+1;

adalah rumus-rumus yang digunakan dalam prosedur merge.

12. merge_sort(1,num) : pemanggilan prosedur merge_sort dalam main program.

13. Statement For : digunakan untuk modul perulangan pada program.

14. Statement if-else : digunakan untuk modul perulangan pada program.

15. Statement while : digunakan untuk modul perulangan pada program.

10

Page 11: Laporan Praktikum Resmi Bab 8

Tugas Praktikum Tugas Praktikum yang dikerjakan terdiri dari program 8.1 dan 8.2 menggunakan tipe data

abstrak yaitu struct , typedef dan typedef struct.

Listing program 8.1

struct /* * program 8.1 struct.cpp * * Created on: 22 Apr 2014 * Author: Owner */

#include <iostream>

using namespace std;

struct delapan {

int i,n; };

void shellsort(int a[],int n) {

int j,i,m,mid;

for(m=n/2;m>0;m/=2)

{

for(j=m;j<n;j++)

{

for(i=j-m;i>=0;i-=m)

{

if(a[i+m]>=a[i])

break;

else

11

Page 12: Laporan Praktikum Resmi Bab 8

{

mid=a[i];

a[i]=a[i+m];

a[i+m]=mid;

}

}

}

} } int main() {

delapan pertama;

pertama.i;

pertama.n;

int a[10];

cout<<"Inputkan banyak data yang akan disorting :";

cin>>pertama.n;

for(pertama.i=0;pertama.i<pertama.n;pertama.i++)

{

cout<<"Data "<<pertama.i+1<<"=";

cin>>a[pertama.i];

}

cout<<"Data sebelum sorting :";

for(pertama.i=0;pertama.i<pertama.n;pertama.i++)

cout<<a[pertama.i]<<"

"; shellsort(a,pertama.n);

cout<<"\nData setelah sorting :";

for(pertama.i=0;pertama.i<pertama.n;pertama.i++)

cout<<a[pertama.i]<<"

"; return 0; }

12

Page 13: Laporan Praktikum Resmi Bab 8

Hasil Output program 8.1 struct Penjelasan Listing program 8.1 struct

1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah

komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau

teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler. 2. #include : Pengarah Praprocessor

Include adalah pengarah suatu library yang digunakan untuk suatu program.

3. Iostream : Library

Iostream adalah library untuk input dan output “cin” dan “cout”.

4. Tanda ‘{‘ dan ‘}’ adalah tanda untuk mengawali dan mengakhiri program.

5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.

6. Cout : untuk menampilkan output program yang sudah dituliskan.

7. Cin : untuk menginputkan data yang dimasukkan oleh user.

8. void shellsort(int a[],int n) : prosedur yang bernama shellsort yang terdiri atas tipe data

int a[] , int n.

9. Statement For : digunakan untuk modul perulangan pada program.

10. Statement if-else : digunakan untuk modul perulangan pada program.

11. Struct delapan : untuk tempat penampungan data delapan. 12. delapan pertama : pendefinisian pertama dengan tipe data delapan. 13. pertama.i : Pendefinisian i dengan tipe data struct pertama. 14. pertama.n : Pendefinisian n dengan tipe data struct pertama. 15. shellsort(a,pertama.n) : Pemanggilan prosedur shellsort dengan tipe data abstrak struct.

13

Page 14: Laporan Praktikum Resmi Bab 8

Listing program 8.2

struct /* * program 8.2 struct.cpp * * Created on: 22 Apr 2014 * Author: Owner */

/* * program 8.2.cpp * * Created on: Apr 22, 2014 * Author: cenat-cenut */

#include <iostream>

using namespace std;

int a[50]; void merge(int,int,int); void merge_sort(int low,int high) {

int mid;

if(low<high)

{

mid=(low+high)/2;

merge_sort(low,mid);

merge_sort(mid+1,high);

merge(low,mid,high);

} }

14

Page 15: Laporan Praktikum Resmi Bab 8

void merge(int low,int mid,int high) {

int h,i,j,b[50],k;

h=low;

i=low;

j=mid+1;

while((h<=mid)&&(j<=high))

{

if(a[h]<=a[j])

{

b[i]=a[h];

h++;

}

else

{

b[i]=a[j];

j++;

}

i++;

}

if(h>mid)

{

for(k=j;k<=high;k++)

{

b[i]=a[k];

i++;

}

}

else

15

Page 16: Laporan Praktikum Resmi Bab 8

{

for(k=h;k<=mid;k++)

{

b[i]=a[k];

i++;

}

}

for(k=low;k<=high;k++) a[k]=b[k]; } int main() {

struct delapan

{

int num,i;

};

delapan kedua;

cout<<"Inputkan banyak data yang akan diurutkan :";

cin>>kedua.num;

cout<<endl;

cout<<"Masukkan ( "<< kedua.num <<" ) data:

"<<endl; for(kedua.i=1;kedua.i<=kedua.num;kedua.i++)

{

cin>>a[kedua.i];

}

merge_sort(1,kedua.num);

cout<<endl;

cout<<"Setelah Pengurutan (Merge Sort) :"<<endl;

for(kedua.i=1;kedua.i<=kedua.num;kedua.i++)

cout<<a[kedua.i]<<"";

cout<<endl<<endl<<endl<<endl;

16

Page 17: Laporan Praktikum Resmi Bab 8

return 0; }

Hasil Output program 8.2 struct :

Penjelasan listing program 8.2 struct

1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah

komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau

teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler. 2. #include : Pengarah Praprocessor

Include adalah pengarah suatu library yang digunakan untuk suatu program.

3. Iostream : Library

Iostream adalah library untuk input dan output “cin” dan “cout”.

4. Tanda ‘{‘ dan ‘}’ adalah tanda untuk mengawali dan mengakhiri program.

5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.

6. Cout : untuk menampilkan output program yang sudah dituliskan.

7. Cin : untuk menginputkan data yang dimasukkan oleh user.

8. void merge(int,int,int) : Prosedur yang bernama merge yang terdiri hanya dari tipe data

int saja.

9. void merge_sort(int low,int high) : Prosedur yang bernama merge_sort yang terdiri dari

tipe data int low , int high.

10. void merge(int low,int mid,int high) : Prosedur yang bernama merge_sort yang terdiri

dari tipe data int low , int mid , int high.

17

Page 18: Laporan Praktikum Resmi Bab 8

11. h=low;

i=low;

j=mid+1;

adalah rumus-rumus yang digunakan dalam prosedur merge. 12. merge_sort(1,kedua.num) : pemanggilan prosedur merge_sort dalam main program

dengan tipe data abstrak struct. 13. Statement For : digunakan untuk modul perulangan pada program. 14. Statement if-else : digunakan untuk modul perulangan pada program. 15. Statement while : digunakan untuk modul perulangan pada program. 16. Struct delapan : untuk tempat penampungan data delapan. 17. delapan kedua : pendefinisian kedua dengan tipe data delapan. 18. kedua.i : Pendefinisian i dengan tipe data struct kedua. 19. kedua.num : Pendefinisian num dengan tipe data struct pertama.

18

Page 19: Laporan Praktikum Resmi Bab 8

Listing program 8.1

typedef /* * program 8.1 typedef.cpp * * Created on: 22 Apr 2014 * Author: Owner */

#include <iostream>

using namespace std;

typedef int i,n;

typedef int j,i,m,mid;

void shellsort(int a[],int n) {

j j;

i i;

m m;

mid mid;

for(m=n/2;m>0;m/=2)

{

for(j=m;j<n;j++)

{

for(i=j-m;i>=0;i-=m)

{

if(a[i+m]>=a[i])

break;

else

{

mid=a[i];

a[i]=a[i+m];

a[i+m]=mid;

19

Page 20: Laporan Praktikum Resmi Bab 8

}

}

}

} }

int main() {

int a[10];

n n;

i i;

cout<<"Inputkan banyak data yang akan disorting :";

cin>>n;

for(i=0;i<n;i++)

{

cout<<"Data

"<<i+1<<"="; cin>>a[i];

}

cout<<"Data sebelum sorting :";

for(i=0;i<n;i++)

cout<<a[i]<<" ";

shellsort(a,n);

cout<<"\nData setelah sorting :";

for(i=0;i<n;i++)

cout<<a[i]<<" ";

return 0;

}

20

Page 21: Laporan Praktikum Resmi Bab 8

Hasil Output program 8.1 typedef

Penjelasan Listing program 8.1 typedef

1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah

komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau

teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler. 2. #include : Pengarah Praprocessor

Include adalah pengarah suatu library yang digunakan untuk suatu program.

3. Iostream : Library

Iostream adalah library untuk input dan output “cin” dan “cout”.

4. Tanda ‘{‘ dan ‘}’ adalah tanda untuk mengawali dan mengakhiri program.

5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.

6. Cout : untuk menampilkan output program yang sudah dituliskan.

7. Cin : untuk menginputkan data yang dimasukkan oleh user.

8. void shellsort(int a[],int n) : prosedur yang bernama shellsort yang terdiri atas tipe data

int a[] , int n.

9. Statement For : digunakan untuk modul perulangan pada program.

10. Statement if-else : digunakan untuk modul perulangan pada program.

11. typedef int i.n : Pengganti tipe data int dengan tipe data i dan n. 12. typedef int j,m,mid : pengganti tipe data int dengan tipe data j , m dan mid. 13. j j : Pendefinisian j dengan tipe data j.

21

Page 22: Laporan Praktikum Resmi Bab 8

14. m m : Pendefinisian m dengan tipe data m. 15. mid mid : Pendefinisian mid dengan tipe data mid.

16. n n : Pendefinisian n dengan tipe data n.

17. i i : Pendefinisian i dengan tipe data i.

18. shellsort(a,n) : Pemanggilan prosedur shellsort dengan tipe data abstrak typedef.

Listing program 8.2

typedef /* * program 8.2 typedef.cpp * * Created on: 22 Apr 2014 * Author: Owner */

#include <iostream>

using namespace std;

typedef int num,i,mid;

int a[50]; void merge(int,int,int); void merge_sort(int low,int high) {

mid mid;

if(low<high)

{

mid=(low+high)/2;

merge_sort(low,mid);

merge_sort(mid+1,high);

22

Page 23: Laporan Praktikum Resmi Bab 8

merge(low,mid,high);

} }

void merge(int low,int mid,int high) {

int h,i,j,b[50],k;

h=low;

i=low;

j=mid+1;

while((h<=mid)&&(j<=high))

{

if(a[h]<=a[j])

{

b[i]=a[h];

h++;

}

else

{

b[i]=a[j];

j++;

}

i++;

}

if(h>mid)

{

for(k=j;k<=high;k++)

{

b[i]=a[k];

i++;

23

Page 24: Laporan Praktikum Resmi Bab 8

}

}

else

{

for(k=h;k<=mid;k++)

{

b[i]=a[k];

i++;

}

}

for(k=low;k<=high;k++) a[k]=b[k]; } int main() {

num num;

i i;

cout<<"Inputkan banyak data yang akan diurutkan :";

cin>>num;

cout<<endl;

cout<<"Masukkan ( "<< num <<" ) data:

"<<endl; for(i=1;i<=num;i++)

{

cin>>a[i];

}

merge_sort(1,num);

cout<<endl;

cout<<"Setelah Pengurutan (Merge Sort) :"<<endl;

for(i=1;i<=num;i++)

cout<<a[i]<<" ";

cout<<endl<<endl<<endl<<endl;

24

Page 25: Laporan Praktikum Resmi Bab 8

return 0; }

Hasil Output program 8.2 typedef

Penjelasan listing program 8.2 typedef

1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah

komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau

teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler. 2. #include : Pengarah Praprocessor

Include adalah pengarah suatu library yang digunakan untuk suatu program.

3. Iostream : Library

Iostream adalah library untuk input dan output “cin” dan “cout”.

4. Tanda ‘{‘ dan ‘}’ adalah tanda untuk mengawali dan mengakhiri program.

5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.

6. Cout : untuk menampilkan output program yang sudah dituliskan.

7. Cin : untuk menginputkan data yang dimasukkan oleh user.

8. void merge(int,int,int) : Prosedur yang bernama merge yang terdiri hanya dari tipe data

int saja.

9. void merge_sort(int low,int high) : Prosedur yang bernama merge_sort yang terdiri dari

tipe data int low , int high.

25

Page 26: Laporan Praktikum Resmi Bab 8

10. void merge(int low,int mid,int high) : Prosedur yang bernama merge_sort yang terdiri

dari tipe data int low , int mid , int high. 11. h=low;

i=low;

j=mid+1;

adalah rumus-rumus yang digunakan dalam prosedur merge. 12. merge_sort(1,kedua.num) : pemanggilan prosedur merge_sort dalam main program

dengan tipe data abstrak struct. 13. Statement For : digunakan untuk modul perulangan pada program. 14. Statement if-else : digunakan untuk modul perulangan pada program. 15. Statement while : digunakan untuk modul perulangan pada program. 16. typedef int num,i,mid: pengganti tipe data int dengan tipe data num , i dan mid. 17. j j : Pendefinisian j dengan tipe data j.

18. m m : Pendefinisian m dengan tipe data m. 19. mid mid : Pendefinisian mid dengan tipe data mid. 20. num num : Pendefinisian num, dengan tipe data num. 21. i i : Pendefinisian i dengan tipe data i. 22. merge_sort(1,num) : Pemanggilan prosedur merge_sort dari main program dengan tipe

data abstrak typedef.

26

Page 27: Laporan Praktikum Resmi Bab 8

Listing program 8.1 typedef

struct /* * program 8.1 typedef.cpp * * Created on: Apr 22, 2014 * Author: cenat-cenut */

#include <iostream>

using namespace std;

typedef struct delapan {

int main_program;

int a[10],i;

}kedua; void shellsort(int a[],int n) {

int j,i,m,mid;

for(m=n/2;m>0;m/=2)

{

for(j=m;j<n;j++)

{

for(i=j-m;i>=0;i-=m)

{

if(a[i+m]>=a[i])

break;

else

{

mid=a[i];

a[i]=a[i+m];

a[i+m]=mid;

27

Page 28: Laporan Praktikum Resmi Bab 8

}

}

}

} }

int main() {

delapan kedua;

cout<<"Inputkan banyak data yang akan disorting :";

cin>>kedua.main_program;

for(kedua.i=0;kedua.i<kedua.main_program;kedua.i++)

{

cout<<"Data "<<kedua.i+1<<"=";

cin>>kedua.a[kedua.i];

}

cout<<"Data sebelum sorting :";

for(kedua.i=0;kedua.i<kedua.main_program;kedua.i++)

cout<<kedua.a[kedua.i]<<" ";

shellsort(kedua.a,kedua.main_program);

cout<<"\nData setelah sorting :";

for(kedua.i=0;kedua.i<kedua.main_program;kedua.i++)

cout<<kedua.a[kedua.i]<<" ";

return 0;

}

28

Page 29: Laporan Praktikum Resmi Bab 8

Hasil Program 8.1 typedef struct Penjelasan Listing program 8.1 typedef struct

1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah

komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau

teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler. 2. #include : Pengarah Praprocessor

Include adalah pengarah suatu library yang digunakan untuk suatu program.

3. Iostream : Library

Iostream adalah library untuk input dan output “cin” dan “cout”.

4. Tanda ‘{‘ dan ‘}’ adalah tanda untuk mengawali dan mengakhiri program.

5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.

6. Cout : untuk menampilkan output program yang sudah dituliskan.

7. Cin : untuk menginputkan data yang dimasukkan oleh user.

8. void shellsort(int a[],int n) : prosedur yang bernama shellsort yang terdiri atas tipe data

int a[] , int n.

9. Statement For : digunakan untuk modul perulangan pada program.

10. Statement if-else : digunakan untuk modul perulangan pada program.

11. typedef struct delapan

{

29

Page 30: Laporan Praktikum Resmi Bab 8

int

main_program;

int a[10],i; }kedua;

adalah struktur typedef struct dengan tipe data int main_program , int a[10] dan int i.

12. delapan kedua; : pendefinisian typedef struct dengan awalan delapan dan akhiran kedua. 13. kedua.main_program : Pendefinisian main_program dengan typedef struct kedua. 14. kedua.a : Pendefinisian a dengan typedef struct kedua.

15. kedua.i : Pendefinisian i dengan typedef struct kedua.

16. shellsort(kedua.a,kedua.main_program) : pemanggilan prosedur shellsort dalam main

program dengan tipe data abstrak typedef struct.

Listing program 8.2 typedef

struct /* * program 8.2 typedef struct.cpp * * Created on: Apr 22, 2014 * Author: cenat-cenut */

#include <iostream>

using namespace std;

typedef struct delapan {

int a[50];

int num,i; }pertama;

void merge(int,int,int);

30

Page 31: Laporan Praktikum Resmi Bab 8

void merge_sort(int low,int high) {

int mid;

if(low<high)

{

mid=(low+high)/2;

merge_sort(low,mid);

merge_sort(mid+1,high);

merge(low,mid,high);

} }

void merge(int low,int mid,int high) {

delapan pertama;

int h,j,b[50],k;

h=low;

pertama.i=low;

j=mid+1;

while((h<=mid)&&(j<=high))

{

if(pertama.a[h]<=pertama.a[j])

{

b[pertama.i]=pertama.a[h];

h++;

}

else

{

b[pertama.i]=pertama.a[j];

j++;

}

31

Page 32: Laporan Praktikum Resmi Bab 8

pertama.i++;

}

if(h>mid)

{

for(k=j;k<=high;k++)

{

b[pertama.i]=pertama.a[k];

pertama.i++;

}

}

else

{

for(k=h;k<=mid;k++)

{

b[pertama.i]=pertama.a[k];

pertama.i++;

}

}

for(k=low;k<=high;k++) pertama.a[k]=b[k]; } int main() {

delapan pertama;

cout<<"Inputkan banyak data yang akan diurutkan :";

cin>>pertama.num;

cout<<endl;

cout<<"Masukkan ( "<< pertama.num <<" ) data: "<<endl;

for(pertama.i=1;pertama.i<=pertama.num;pertama.i++)

{

cin>>pertama.a[pertama.i];

32

Page 33: Laporan Praktikum Resmi Bab 8

}

merge_sort(1,pertama.num);

cout<<endl;

cout<<"Setelah Pengurutan (Merge Sort) :"<<endl;

for(pertama.i=1;pertama.i<=pertama.num;pertama.i++)

cout<<pertama.a[pertama.i]<<" ";

cout<<endl<<endl<<endl<<endl;

return 0; }

Hasil Output program 8.2 typedef struct

33

Page 34: Laporan Praktikum Resmi Bab 8

Penjelasan listing program 8.2 typedef struct

1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah

komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau

teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler. 2. #include : Pengarah Praprocessor

Include adalah pengarah suatu library yang digunakan untuk suatu program.

3. Iostream : Library

Iostream adalah library untuk input dan output “cin” dan “cout”.

4. Tanda ‘{‘ dan ‘}’ adalah tanda untuk mengawali dan mengakhiri program.

5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.

6. Cout : untuk menampilkan output program yang sudah dituliskan.

7. Cin : untuk menginputkan data yang dimasukkan oleh user.

8. void merge(int,int,int) : Prosedur yang bernama merge yang terdiri hanya dari tipe data

int saja.

9. void merge_sort(int low,int high) : Prosedur yang bernama merge_sort yang terdiri dari

tipe data int low , int high.

10. void merge(int low,int mid,int high) : Prosedur yang bernama merge_sort yang terdiri

dari tipe data int low , int mid , int high.

11. h=low;

i=low;

j=mid+1;

adalah rumus-rumus yang digunakan dalam prosedur merge.

12. merge_sort(1,kedua.num) : pemanggilan prosedur merge_sort dalam main program

dengan tipe data abstrak struct.

13. Statement For : digunakan untuk modul perulangan pada program.

14. Statement if-else : digunakan untuk modul perulangan pada program.

15. Statement while : digunakan untuk modul perulangan pada program.

16. typedef struct delapan

{

int a[50],num,i;

}pertama;

adalah struktur typedef struct dengan tipe data int num , int a[50] dan int i.

34

Page 35: Laporan Praktikum Resmi Bab 8

17. delapan pertama; : pendefinisian typedef struct dengan awalan delapan dan akhiran

pertama. 18. pertama.num : Pendefinisian num dengan typedef struct pertama. 19. pertama.a : Pendefinisian a dengan typedef struct pertama. 20. pertama.i : Pendefinisian i dengan typedef struct pertama. 21. merge_sort(1,pertama.num) : pemanggilan prosedur merge_sort dalam main program

dengan tipe data abstrak typedef struct.

35

Page 36: Laporan Praktikum Resmi Bab 8

BAB IV

KESIMPULAN

1. Shell Sort : Mengurutkan data dengan cara membandingkan suatu data dengan data lain yang

memiliki jarak tertentu , kemudian dilakukan pertukaran jika diperlukan. 2. Merge Sort : Suatu Teknik pengurutan dengan menggabungkan setiap kali dua deretan

elemen dan melakukan pengurutan terhadap elemen-elemen tersebut. 3. Dalam program 8.1 struct , typedef dan typedef struct , teknik shell sort cukup efektif karena

tidak memakan memori yang besar , dan juga metode pengurutan shell sort tidak memakan

waktu lama karena hanya membandingkan data yang satu dengan yang lain. 4. Dalam program 8.2 struct , typedef dan typedef struct , teknik merge sort pada dasarnya

memang efektif , namun dalam pelaksanaannya , listing program yang harus digunakan

terlalu panjang dan menggunakan statement logika yang bertele-tele sehingga tidak terlalu

efektif dalam prakteknya.

36

Page 37: Laporan Praktikum Resmi Bab 8

BAB V

DAFTAR PUSTAKA 1. Modul praktikum algoritma & struktur data 1 (bab 8 Sorting (Shell , Merge)). 2. Ardhana. YM Kusuma. 2013. Struktur Data dalam Ilustrasi Eclipse Indigo C ++.

Yogyakarta: CAPS (Center of Academic Publishing Service).

37