LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA I
Abstract Data Type (ADT)
Modul I
Disusun Oleh : Syukur Jaya Mendrofa
201501072
Dosen Pengampu :
Oskar Ika Adi Nugroho S.T., MT
SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2016
TIPE DATA ABSTRAK
Tipe Data Abstrak atau Abstract Data Type (ADT) adalah data dan operasi yang dapat digunakan untuk memanipulasi data tersebut. Dalam C++, ADT dapat dibuat dalam sebuah class. Class dalam C++ merupakan pengembangan dari struct dalam Bahasa pemrograman C. Class memiliki data dan fungsi.
A. CLASS ATAU STRUCT
Struct adalah tipe data bentukan yang berisi kumpulan variabel-variabel yang bernaung dalam satu nama yang sama dan memiliki kaitan satu sama lain.
Bentuk umum struct:
struct nama_tipe_truktur {
tipe field 1 tipe field 1 tipe field 1 . . .
tipe field n
} variable _struktur1, . . . , variabel_struktur_n Contoh : struct data_tanggal { int tanggal; int bulan; int tahun; } struct data_teman { char nama[21];
struct data_tanggal tgl_lahir; }info_teman;
Pengertian dari contoh di atas:
nama
info_teman tgl_lahir tanggal
bulan tahun
Output Program STRUCT 001
Typedef biasa dipakai untuk memberikan nama alias terhadap suatu tipe data.
Bentuk umum:
typedef <tipe_data_lama> <tipe_data_baru> Contoh Program TYPEDEF 002
Output Program TYPEDEF 002
Tipe data abstrak ini merupakan gabungan antara typedef dan struct Contoh Program TYPEDEF DAN STRUCT 003
Output Program TYPEDEF DAN STRUCT 003
Analisa dari program typedef dan struct 003 diatas , akan dibahas di bab 2.
PENJELASAN LISTING PROGRAM DAN TUGAS
Listing Program 003
#include
<iostream>
//baris
1
using
namespace
std;
//baris
2
typedef
struct
Mahasiswa
//baris 3
{
//baris 4
char
NIM [15];
//baris 5
char
nama[25];
//baris
6
float
ipk;
//baris 7
};
//baris 8
int
main()
//baris 9
{
//baris 10
Mahasiswa mhs;
//baris
11
cout <<
"NIM = "
;
//baris
12
cin >> mhs.NIM;
//baris
13
cout <<
"Nama = "
;
//baris
14
cin >> mhs.nama;
//baris
15
cout <<
"IPK = "
;
//baris
16
cin >> mhs.ipk;
//baris
17
cout << endl;
//baris 18
cout <<
"Data Anda : \n"
;
//baris 19
cout <<
"NIM : "
<< mhs.NIM << endl;
//baris 20
cout <<
"Nama : "
<< mhs.nama << endl;
cout <<
"IPK : "
<< mhs.ipk << endl;
//baris 22
system(
"pause"
);
//baris
23
return
0;
//baris 24
}
//baris 25
Analisa program 003
1. Baris 1 => #include adalah suatu perintah yang digunakan untuk mengatur compiler agar membaca berkas header yang disertakan dibelakang kata include yakni dalam program ini <iostream> saat pelaksanaan kompilasi.
2. Baris 2 => menyatakan kepada compiler bahwa program menggunakan namespace bernama std; namespace fungsinya untuk mengelompokkan elemen-elemen ke dalam sebuah nama. std adalah nama bawaan yang digunakan pada semua pustaka standar C++. Contohnya untuk menampilkan keluaran berupa cout, endl.
3. Baris 3 => merupakan pendeklarasian tipe data baru struct = Mahasiswa.
4. Baris 4 => awal dari pendeklarasian tipe data Mahasiswa.
5. Baris 5 =>NIM merupakan elemen struct atau field dari tipe data Mahasiswa. Bertipe Char dan mempunya komposisi 0-14.
6. Baris 6 => nama merupakan elemen struct atau field dari tipe data Mahasiswa. Bertipe Char dan mempunya komposisi 0-24.
7. Baris 7 => ipk merupakan elemen struct atau field dari tipe data Mahasiswa. Bertipe float (pecahan).
8. Baris 8 => akhir dari pendeklarasian tipe data Mahasiswa. Mahasiswa bisa diletakkan setelah tanda } sebelum tanda ;
9. Baris 9 => tipe kode keluar program.
11. Baris 11 => variabel mhs bertipe data Mahasiswa.
12. Baris 12 => pernyataan untuk menampilkan NIM = pada output program.
13. Baris 13 => tempat untuk memasukkan struct ‘NIM’ operator dot ‘
.
’ Harus digunakan untuk mengakses member dari variabel mhs bertipe data Mahasiswa. Cin yang dapat digunakan untuk membaca data dari keyboard.14. Baris 14 => pernyataan untuk menampilkan Nama = pada output program.
15. Baris 15 => tempat untuk memasukkan struct ‘nama’ operator dot ‘
.
’ Harus digunakan untuk mengakses member dari variabel mhs bertipe data Mahasiswa Cin yang dapat digunakan untuk membaca data dari keyboard.16. Baris 16 => pernyataan untuk menampilkan IPK = pada output program.
17. Baris 17 => tempat untuk memasukkan struct ‘ipk’ operator dot ‘
.
’ Harus digunakan untuk mengakses member dari variabel mhs bertipe data Mahasiswa. Cin yang dapat digunakan untuk membaca data dari keyboard.18. Baris 18 => endl; untuk menyatakan karakter berpindah baris.
19. Baris 19 => pernyataan untuk menampilkan Data Anda : pada output program. “\n” => untuk menyatakan karakter berpindah baris
20. Baris 20 => pernyataan untuk menampilkan NIM = << menampilkan isi dari baris 13 << endl; untuk menyatakan karakter berpindah baris.
21. Baris 21 => pernyataan untuk menampilkan Nama = << menampilkan isi dari baris 15 << endl; untuk menyatakan karakter berpindah baris
22. Baris 22 => pernyataan untuk menampilkan IPK = << menampilkan isi dari baris 17 <<
endl; untuk menyatakan karakter berpindah baris
24. Baris 24 => pernyataan bahwa nilai balik program adalah nol. Nol biasa digunakan untuk menyatakan bahwa program berhasil melaksanakan tugas yang diembannya.
25. Baris 25 => merupakan akhir dari tubuh fungsi utama
int
main().
Listing Program 004
#include<iostream> Baris 1
#include<math.h> Baris 2
typedefstruct Baris 3
{ Baris 4
int sumbu_x; Baris 5
int sumbu_y; Baris 6
}Titik; Baris 7
Titik Make_Titik(int x, int y); Baris 8
void tampil(Titik t); Baris 9
float jarak( Titik t1, Titik t2); Baris 10
Titik cerminx(Titik c); Baris 11
Titik cerminy(Titik c); Baris 12
Titik cermin(Titik c, Titik d); Baris 13
Titik cerminxh(Titik c, int h); Baris 14
Titik cerminyh(Titik c, int h); Baris 15
Titik cermino(Titik c); Baris 16
Titik rotasi(Titik c); Baris 17
int main() Baris 18
Titik T1, T2, T3; Baris 20
int x, y, h; Baris 21
printf("Masukan nilai x1 : "); scanf_s("%d", &x); Baris 22 printf("Masukan nilai y1 : "); scanf_s("%d", &y); Baris 23
T1 = Make_Titik(x, y); Baris 24
printf("Masukan nilai x2 : "); scanf_s("%d", &x); Baris 25 printf("Masukan nilai y2 : "); scanf_s("%d", &y); Baris 26 T2 = Make_Titik(x, y); Baris 27
tampil(T1); Baris 28
printf("\n"); Baris 29
tampil(T2); Baris 30
printf("\n"); Baris 31
printf("pencerminan T1 terhadap sumbu x\n"); Baris 32
T3 = cerminx(T1); Baris 33
tampil(T3); Baris 34
printf("\n"); Baris 35
printf("Pencerminan T1 terhadap sumbu y\n"); Baris 36
T3 = cerminy(T1); Baris 37
tampil(T3); Baris 38
printf("\nPencerminan T1 terhadap titik (0,0)\n"); Baris 39
T3 = cermino(T1); Baris 40
tampil(T3); Baris 41
printf("\nPencerminan T1 terhadap titik T2\n"); Baris 42
T3 = cermin(T1, T2); Baris 43
tampil(T3); Baris 44
printf("\nMasukan nilai h : "); scanf_s("%d", &h); Baris 45 printf("Pencerminan terhadap garis x=h\n"); Baris 46
T3 = cerminxh(T1, h); Baris 47
tampil(T3); Baris 48
printf("\nMasukan nilai h : "); scanf_s("%d", &h); Baris 49 printf("Pencerminan terhadap garis y=h\n"); Baris 50
T3 = cerminyh(T1, h); Baris 51
tampil(T3); Baris 52
printf("\nRotasi T1 terhadap 90\n"); Baris 53
T3 = rotasi(T1); Baris 54
tampil(T3); Baris 55
system("pause"); Baris 56
printf("\n"); Baris 57
printf("\n"); Baris 58
return 0; Baris 59
} Baris 60
Titik Make_Titik(int x, int y) Baris 61
{ Baris 62
Titik t; Baris 63
t.sumbu_x = x; Baris 64
t.sumbu_y = y; Baris 65
return t; Baris 66
} Baris 67
void tampil(Titik t) Baris 68
printf("Titik x : %d\n", t.sumbu_x); Baris 70 printf("Titik y : %d", t.sumbu_y); Baris 71
} Baris 72
Titik cerminx(Titik c) Baris 73
{ Baris 74
Titik b; Baris 75
b.sumbu_x = c.sumbu_x; Baris 76
b.sumbu_y = -c.sumbu_y; Baris 77
return b; Baris 78
} Baris 79
Titik cerminy(Titik c) Baris 80
{ Baris 81
Titik b; Baris 82
b.sumbu_x = -c.sumbu_x; Baris 83
b.sumbu_y = c.sumbu_y; Baris 84
return b; Baris 85
} Baris 86
Titik cerminxh(Titik c, int h) Baris 87
{ Baris 88
Titik b; Baris 89
b.sumbu_x = 2 * h - c.sumbu_x; Baris 90 b.sumbu_y = c.sumbu_y; Baris 91
return b; Baris 92
} Baris 93
Titik cerminyh(Titik c, int h) Baris 94
{ Baris 95
Titik b; Baris 96
b.sumbu_x = c.sumbu_x; Baris 97
b.sumbu_y = 2 * h - c.sumbu_y; Baris 98
return b; Baris 99
} Baris 100
Titik cermino(Titik c) Baris 101
{ Baris 102
Titik b; Baris 103
b.sumbu_x = -c.sumbu_x; Baris 104 b.sumbu_y = -c.sumbu_y; Baris 105
return b; Baris 106
} Baris 107
Titik cermin(Titik c, Titik d) Baris 108
{ Baris 109
Titik b; Baris 110
b.sumbu_x = (2 * d.sumbu_x) - c.sumbu_x; Baris 111 b.sumbu_y = (2 * d.sumbu_y) - c.sumbu_y; Baris 112
return b; Baris 113
} Baris 114
Titik rotasi(Titik c) Baris 115
{ Baris 116
Titik b; Baris 117
return b; Baris 120
} Baris 121
Nomor = Baris ke :
1. #include adalah suatu perintah yang digunakan untuk mengatur compiler agar membaca berkas header yang disertakan dibelakang kata include yakni dalam program ini <iostream> saat pelaksanaan kompilasi.
2. Bahasa C menyediakan berkas header <math.h> yang menyediakan prototype sejumlah fungsi untuk operasi matematika. Jadi program 004 menggunakan operasi/fungsi matematika.
3. Merupakan pendeklarasian tipe data baru struct = Titik. 4. Awal dari pendeklarasian tipe data Titik.
5. Merupakan variabel bertipe int, yang merupakan anggota variabel dari tipe data baru = Titik.
6. Merupakan variabel bertipe int, yang merupakan anggota variabel dari tipe data baru = Titik.
7. Akhir dari pendeklarasian tipe data Titik.
8. Baris 8-17 merupakan Pendeklarasian Function yang merupakan satu blok kode yang melakukan tugas tertentu atau satu blok instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam suatu program.
Titik Make_Titik(int x, int y); merupakan fungsi untuk menerima nilai (x1, y1) dan nilai (x2,
y2) dan nilai yang dikembalikan pada fungsi ini adalah ‘t’ dari ‘Titik t;’.
9. void tampil(Titik t); merupakan fungsi untuk menampilkan T1 = Make_Titik(x, y), T2 = Make_Titik(x, y), T3 = cerminx(T1), T3 = cerminy(T1), T3 = cermino(T1), T3 = cermin(T1, T2), T3 = cerminxh(T1, h), T3 = cerminyh(T1, h), T3 = rotasi(T1) dan fungsi ini juga tidak memiliki nilai kembalian.
10. float jarak(Titik t1, Titik t2); fungsi ini tidak digunakan pada program.
11. Titik cerminx(Titik c); merupakan fungsi untuk menerima variabel Titik c dan nilai yang
akan dikembalikan adalah ‘b’ dari ‘Titik b’ dimana nilai sumbu_y = negative ‘-‘.
12. Titik cerminy(Titik c); merupakan fungsi untuk menerima variabel Titik c dan nilai yang
akan dikembalikan adalah ‘b’ dari ‘Titik b’ dimana nilai sumbu_x = negative ‘-‘.
13. Titik cermin(Titik c, Titik d) merupakan fungsi untuk menerima variabel Titik c, Titik d
dan nilai yang akan dikembalikan adalah ‘b’ dari ‘Titik b’ dimana b.sumbu_x = (2 * d.sumbu_x) - c.sumbu_x; dan b.sumbu_y = (2 * d.sumbu_y) - c.sumbu_y;
14. Titik cerminxh(Titik c, int h); merupakan fungsi untuk menerima variabel Titik c, int h
dan nilai yang akan dikembalikan adalah ‘b’ dari ‘Titik b’ dimana b.sumbu_x = 2 * h -c.sumbu_x; dan b.sumbu_y = c.sumbu_y; .
15. Titik cerminyh(Titik c, int h); merupakan fungsi untuk menerima variabel Titik c, int h
dan nilai yang akan dikembalikan adalah ‘b’ dari ‘Titik b’ dimana b.sumbu_x = c.sumbu_x; dan b.sumbu_y = 2 * h - c.sumbu_y .
16. Titik cermino(Titik c) merupakan fungsi untuk menerima variabel Titik c, dan nilai yang
akan dikembalikan adalah ‘b’ dari ‘Titik b’ dimana b.sumbu_x = -c.sumbu_x; dan b.sumbu_y = -c.sumbu_y; .
17. Titik rotasi(Titik c) merupakan fungsi untuk menerima variabel Titik c, dan nilai yang
akan dikembalikan adalah ‘b’ dari ‘Titik b’ dimana b.sumbu_x = -c.sumbu_y; dan b.sumbu_y = -c.sumbu_x; .
18. Fungsi utama int main()
20. Pendeklarasian variabel T1, T2, T3 yang bertipe data sama yaitu tipe data Titik. 21. Pendeklarasian variabel x, y, h yang bertipe data sama yaitu tipe data int.
22. Fungsi printf pada Bahasa C yang berguna untuk menampilkan informasi ke layar = cout pada C++. Dan scan_s = cin (nilai x1 akan disimpan pada variabel x).
23. Fungsi printf pada Bahasa C yang berguna untuk menampilkan informasi ke layar = cout pada C++. Dan scan_s = cin (nilai y1 akan disimpan pada variabel y).
24. Bahwa T1 Variabel T1 = nilai yang telah dimasukkan pada baris 22 dan baris 23 (x1=1 dan y1=2).
25. Fungsi printf pada Bahasa C yang berguna untuk menampilkan informasi ke layar = cout pada C++. Dan scan_s = cin (nilai x2 akan disimpan pada variabel x).
26. Fungsi printf pada Bahasa C yang berguna untuk menampilkan informasi ke layar = cout pada C++. Dan scan_s = cin (nilai y2 akan disimpan pada variabel y).
27. Bahwa T2 Variabel T2 = nilai yang telah dimasukkan pada baris 26 dan baris 25 (x2= 3 dan y2=4).
28. Pemanggilan fungsi tampil T1, sehingga dilayar tampil Titik x : 1 dan dibawahnya Titik y : 2.
29. Masuk new line.
30. Pemanggilan fungsi tampil T2, sehingga dilayar tampil Titik x : 3 dan dibawahnya Titik y : 4.
31. Masuk new line.
32. Menampilkan dilayar pencerminan T1 terhadap sumbu x dan masuk new line . 33. Pendeklarasian bahwa T3 = cerminx(T1).
34. Pemanggilan fungsi tampil(T3) cerminx(T1). 35. Masuk new line
36. Menampilkan dilayar pencerminan T1 terhadap sumbu y dan masuk new line 37. Pendeklarasian bahwa T3 = cerminy(T1).
38. Pemanggilan fungsi tampil(T3) cerminy(T1).
39. New line, menampilkan dilayar pencerminan T1 terhadap titik (0,0) dan masuk new line 40. Pendeklarasian bahwa T3 = cermino(T1).
41. Pemanggilan fungsi tampil(T3) cermino(T1).
42. New line, menampilkan dilayar pencerminan T1 terhadap titik T2 dan masuk new line 43. Pendeklarasian bahwa T3 = cermin(T1, T3).
44. Pemanggilan fungsi tampil(T3) cermin(T1, T3).
45. New line dan untuk menampilkan dilayar Masukan nilai h : ,Dan scan_s = cin (nilai h akan disimpan pada variabel h).
46. Untuk menampilkan dilayar Pencerminan terhadap garis x=h masuk new line. 47. Pendeklarasian bahwa T3 = cerminxh(T1, h).
48. Pemanggilan fungsi tampil(T3) cerminxh(T1, h).
49. New line dan untuk menampilkan dilayar Masukan nilai h : ,Dan scan_s = cin (nilai h akan disimpan pada variabel h).
50. Untuk menampilkan dilayar Pencerminan terhadap garis y=h masuk new line. 51. Pendeklarasian bahwa T3 = cerminyh(T1, h).
52. Pemanggilan fungsi tampil(T3) cerminyh(T1, h).
53. New line dan untuk menampilkan dilayar Rotasi T1 terhadap 90 dan masuk new line 54. Pendeklarasian bahwa T3 = Rotasi (T1).
55. Pemanggilan fungsi tampil(T3) Rotasi (T1). 56. System masih bisa berhenti sejenak/enter 1X lagi. 57. Masuk new line
59.Pernyataan bahwa nilai balik program adalah nol. Nol biasa digunakan untuk menyatakan bahwa program berhasil melaksanakan tugas yang diembannya.
60.Merupakan akhir dari tubuh fungsi utama int main()
scanf_s("%d", &h); pernyataan untuk membaca sebuah bilangan bulat dan meletakkannya ke variabel h.
scanf_s("%d", &x); pernyataan untuk membaca sebuah bilangan bulat dan meletakkannya ke variabel x.
scanf_s("%d", &y); pernyataan untuk membaca sebuah bilangan bulat dan meletakkannya ke variabel y.
Analisa baris 61 – baris 121. Baris ini merupakan fungsi-fungsi yang dipanggil pada fungsi utama atau didalam int main ( ).
Fungsi yang dipanggil pada Baris 24
Fungsi yang dipanggil pada Baris 28, 30, 34, 38, 41, 44, 48, 52, 55
Fungsi yang dipanggil pada Baris 33
Fungsi yang dipanggil pada Baris 47
Fungsi yang dipanggil pada Baris 51
Fungsi yang dipanggil pada Baris 40
Fungsi yang dipanggil pada Baris 54
BAB III
Berdasarkan praktikum yang telah saya lakukan saya dapat belajar tentang tipe data abstrak atau ADT (Abstract Data Type) yakni typedef dan struct yang dapat didefenisikan :
typedef struct {
tipe data <nama_var> tipe data <nama_var> tipe data <nama_var> . . . .
}<nama_struct> ;