Dokumen tersebut membahas tentang tipe data abstrak, termasuk definisi, tingkatan abstraksi, contoh abstraksi data, keuntungan menggunakan tipe data abstrak, langkah-langkah menerjemahkan tipe data abstrak ke virtual, dan contoh penerapan tipe data antrian (queue) dan antrian berprioritas (priority queue).
2. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Tipe Data AbstrakTipe Data Abstrak
Abstraksi:Abstraksi:
Suatu proses yang secara sengajaSuatu proses yang secara sengaja
mengurangi rincian dari suatumengurangi rincian dari suatu
objek, dengan tujuan dapatobjek, dengan tujuan dapat
memahami objek tersebut denganmemahami objek tersebut dengan
baik atau lebih mudah atau lebihbaik atau lebih mudah atau lebih
cepatcepat
3. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Tipe Data AbstrakTipe Data Abstrak
Tingkatan abstraksi sesuai dengan
dengan seberapa besar rincian-
rincian dihilangkan.
Tingkatan abstraksi dapat berbeda,
tergantung dari sudut pandang
seseorang terhadap suatu objek.
4. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Tipe Data AbstrakTipe Data Abstrak
Contoh AbstraksiContoh Abstraksi
5. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Tipe Data AbstrakTipe Data Abstrak
Abstraksi Pemilik MobilAbstraksi Pemilik Mobil
Abstraksi Sopir MobilAbstraksi Sopir Mobil
Abstraksi Teknisi/Montir MobilAbstraksi Teknisi/Montir Mobil
6. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Tipe Data AbstrakTipe Data Abstrak
Abstraksi DataAbstraksi Data
1. Tipe Data Abstrak1. Tipe Data Abstrak
Tipe data yang timbul dari hasil imajinasi.Tipe data yang timbul dari hasil imajinasi.
2. Tipe Data Virtual2. Tipe Data Virtual
Tipe data yang terdapat dalam suatu bahasaTipe data yang terdapat dalam suatu bahasa
pemrograman (pemrograman (virtual processorvirtual processor).).
3. Tipe Data Fisik3. Tipe Data Fisik
Tipe data yang ada secara fisik didalam memoriTipe data yang ada secara fisik didalam memori
komputerkomputer
7. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Tipe Data AbstrakTipe Data Abstrak
Contoh:Contoh:
Tipe Data Atomik Terstruktur
AbstrakAbstrak Jumlah mahasiswa Tabel Suhu
VirtualVirtual Integer Array
FisikFisik Implementasi
pada PC.
Implementasi
pada PC.
8. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Tipe Data AbstrakTipe Data Abstrak
Keuntungan menggunakan TDAKeuntungan menggunakan TDA
ModularitasModularitas
((ModularityModularity))
Penyembunyian InformasiPenyembunyian Informasi
((Information HidingInformation Hiding))
Kebebasan PelaksanaanKebebasan Pelaksanaan
((Implementation IndependenceImplementation Independence))
Keutuhan DataKeutuhan Data
((Data IntegrityData Integrity))
Penyederhanaan MasalahPenyederhanaan Masalah
((Problem SimplicityProblem Simplicity))
9. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Tipe Data AbstrakTipe Data Abstrak
Langkah-langkah menterjemahkan TDALangkah-langkah menterjemahkan TDA
keke
Virtual (Implementasi Tipe Data Abstrak)Virtual (Implementasi Tipe Data Abstrak)
1. Pilih bahasa pemrograman yang akan1. Pilih bahasa pemrograman yang akan
digunakan: bahasa C, Pascal, dsb.digunakan: bahasa C, Pascal, dsb.
2. Pilih cara untuk merepresentasikan2. Pilih cara untuk merepresentasikan
data dalam bentuk: array, struct, record,data dalam bentuk: array, struct, record,
set, linked-list.set, linked-list.
3. Tulis program untuk implementasi3. Tulis program untuk implementasi
11. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
QueueQueue
•Sistem penyimpanan data dengan
mekanisme First In First Out (FIFO).
•Queue merupakan tipe data abstrak
yang banyak digunakan dalam printer
spooler dan berbagai algoritma untuk
simulasi, graph traversals, maximum
flow network, dsb.
12. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
QueueQueue
A B C D E F G H
SERVE ENQUEUE
FRONT REAR
A merupakan elemen yang pertama masuk
dan
akan menjadi elemen yang pertama keluar
13. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
QueueQueue
Operasi dalam Queue
1. Create( )
Menciptakan Queue baru dalam keadaan kosong.
2. Enqueue(e)
Memasukkan data baru dari variabel e kedalam Queue.
3. Serve(*e) atau Dequeue(*e)
Mengambil data dari Queue untuk disimpan di variabel e.
4. Empty( )
Memeriksa apakah Queue dalam keadaan kosong.
5. Full( )
Memeriksa apakah Queue dalam keadaan penuh.
6. Clear( )
Menghapus semua data yang ada dalam Queue.
14. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
QueueQueue
Implementasi Queue dengan Array
#define pj_max 7
typedef char elemen_type;
elemen_type Queue[pj_max];
int FRONT, REAR;
void create()
{
FRONT = 1; REAR = 0;
}
int full()
{
if (REAR == pj_max-1)
return 1; else return 0;
}
15. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
QueueQueue
void enqueue(elemen_type e)
{
if (!full){REAR++; Queue[REAR] = e;};
}
void dequeue(elemen_type *e)
{
if (!empty){*e = Queue[FRONT]; FRONT--;};
}
void clear()
{
FRONT = 1; REAR = 0;
}
16. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
QueueQueue
A B C D E F G H
SERVE ENQUEUE
FRONT REAR
Permasalahan dengan implementasi array terjadiPermasalahan dengan implementasi array terjadi
bila dilakukan beberapa kalibila dilakukan beberapa kali serveserve kemudiankemudian
dilanjutkan dengan beberapa kalidilanjutkan dengan beberapa kali enqueueenqueue. Maka. Maka
akan didapat keadaan yang rancuakan didapat keadaan yang rancu
17. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0 2 3 4 5 61
FR
Operasi: Create()
18. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A
0 2 3 4 5 61
F R
Operasi: Enqueue(‘A’)
19. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A B
0 2 3 4 5 61
F R
Operasi: Enqueue(‘B’)
20. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A B C
0 2 3 4 5 61
F R
Operasi: Enqueue(‘C’)
21. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A B C D
0 2 3 4 5 61
F R
Operasi: Enqueue(‘D’)
22. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A B C D E
0 2 3 4 5 61
F R
Operasi: Enqueue(‘E’)
23. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A B C D E
0 2 3 4 5 61
F R
Operasi: Dequeue(&e)
24. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A B C D E
0 2 3 4 5 61
F R
Operasi: Dequeue(&e)
25. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A B C D E F
0 2 3 4 5 61
F R
Operasi: Enqueue(‘F’)
26. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A B C D E F
0 2 3 4 5 61
F R
Operasi: Enqueue(‘G’)
G tidak bisa masuk
27. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
A B C D E F
0 2 3 4 5 61
F R
G A B C D E F
0 2 3 4 5 61
FR
G tidak bisa masuk G bisa masuk
28. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
Implementasi Circular Queue
#define pj_max 8
typedef int elemen_type;
elemen_type Queue[pj_max];
int FRONT, REAR;
void create()
{
FRONT = 0; REAR = pj_max - 1;
}
29. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
int full()
{
int x;
x = REAR + 2;
x = x % pj_max;
if (x == FRONT) return 1; else return 0;
}
int empty()
{
if ((REAR + 1) % pj_max == FRONT)
return 1; else return 0;
}
30. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
void enqueue(element_type e)
{
if (full()) printf(“Queue Penuh !”);
else
{
REAR++;
REAR = REAR % pj_max;
Queue[REAR] = e;
}
}
31. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
void dequeue(element_type *e)
{
if (empty())
printf(“Queue Kosong !”);
else
{
*e = Queue[REAR] = e;
FRONT++;
FRONT = FRONT % pj_max;
}
}
33. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi: Enqueu(21)
21
34. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi: Enqueu(21)
21
35. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi: Enqueu(21)
21
36. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi: Enqueu(34)
21
34
37. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi: Enqueu(68)
21
34
68
38. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi: Enqueu(17)
21
34
68
17
39. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi: Enqueu(53)
21
34
68
1753
40. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi: Enqueu(80)
21
34
68
1753
80
41. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi: Enqueu(71)
21
34
68
1753
80
71
42. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
0
6 1
2
34
5
7
FRONT
REAR
Operasi:
Enqueu(13)
21
34
68
1753
80
71
43. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Circular QueueCircular Queue
Enqueue : 21, 34, 68, 17, 53, 80, 71 dan 13
0
6 1
2
34
5
7
FRONTREAR
21
34
68
17
71
80
53
13
Data ke 7, yaitu 13 tidak bisa masuk !
44. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
QueueQueue
Implementasi Queue dengan Linked list
• Operasi Enqueue()
menggunakan Insert Belakang
• Operasi Dequeue()
menggunakan Delete dibagian Head
• Pointer Head berfungsi sebagai FRONT
• Pointer Tail berfungsi sebagai REAR
45. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
QueueQueue
Dibandingkan dengan implementasi Queue dengan array,
implementasi Queue dengan linked list mempunyai:
Keuntungan:
1. Kapasitas Queue hanya dibatasi oleh kapasitas memori komputer.
2. Penggunaan memori tergantung dari banyaknya data.
3. Tidak ada permasalahan kosong didepan, sehingga tidak perlu
Circular Queue.
Kerugian:
1. Operasi Clear memerlukan lebih banyak langkah.
46. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Priority QueuePriority Queue
Mekanisme Priority Queue adalah :
Highest Priority In First Out – HPIFO.
Elemen yang berada didepan
adalah
elemen yang memiliki nilai prioritas tertinggi,
dengan demikian
waktu kedatangan tidak menjadi penentu.
47. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Priority QueuePriority Queue
Priority Queue dibedakan atas dua tipe:
Ascending Priority
Queue diurutkan dengan prioritas yang menaik.
Descending Priority
Queue diurutkan dengan prioritas yang menurun.
48. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Priority QueuePriority Queue
Representasi Priority Queue
1. Set
Data dimasukan ke dalam Queue (Enqueue)
berupa pasangan nilai elemen atau informasi
dan nilai prioritasnya.
‘A’ | 10Informasi Prioritas
49. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Priority QueuePriority Queue
‘B’ | 11
‘A’ | 10
‘C’ | 18
‘D’ | 15
Proses Enqueue cepat, hanya diperlukan satu langkah.
50. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Priority QueuePriority Queue
‘A’ | 11 ‘C’ | 18
‘B’ | 11
‘D’ | 15
Proses Dequeue lama,
karena harus mencari elemen dengan prioritas tertinggi.
51. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Priority QueuePriority Queue
2. Array.
Proses Enqueue: sangat lama, karena perlu
mencari posisi sesuai dengan prioritasnya,
kemudian terjadi pergeseran elemen untuk
memberi tempat kepada elemen yang baru.
K 71
L 52
M 20
N 14
[1]
P 35
[2]
[3]
[4]
FRONT
REAR
52. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Priority QueuePriority Queue
Proses Dequeue lama,
karena pergeseran elemen-elemen kearah FRONT.
L 52
M 20
N 14
[1]
P 35
[2]
[3]
[4]
FRONT
REAR[5]
K 71
53. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Priority QueuePriority Queue
3. Linked List
Proses Enqueue lama, karena perlu mencari
posisi sesuai dengan prioritasnya.
18
C
15
D
11
B
10
A
12
H
Front
NULL
Proses Dequeue cepat, karena elemen paling depan
adalah elemen dengan prioritas tertinggi.