Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Stack
2
Pendahuluan Stack Tumpukan piring, tumpukan kertas, tumpukan batu, dlsb Dalam kehidupan sehari-hari sering kita menjumpai tumpukan Sifat tumpukan : satu elemen tumpukan dapat diambil bila tumpukan di atasnya dapat diambil
3
Pendahuluan Stack Elemen terakhir yang ditumpuk, yang akan diambil untuk yang pertama. Sifat ini disebut : LIFO Last In First Out Untuk tumpukan tertentu ada yang khusus elemen tumpukan hanya boleh diambil satu persatu
4
Pendahuluan Stack Pada dunia komputer, konsep tumpukan sering digunakan Sifat tumpukannya hanya boleh diambil satu per satu Contoh : Penanganan pemanggilan sub program saat pelaksanaan suatu program Evaluasi pernyataan aritmatika
5
Pendahuluan Stack Ada dua operasi dasar pada tumpukan : Tumpuk Ambil
6
Implementasi dengan larik
Max. tumpukan atas tumpukan
7
Implementasi dengan larik
def maksTumpukan : 20 Tumpukan : array[1 .. maksTumpukan] of string atas : integer edef
8
Operasi tumpuk data Operasi pertama : tumpuk data proc tumpuk
{tumpuk data x pada tumpukan dan laporkan apakah penuh atau tidak} if atas == maksTumpukan then penuh = true else atas = atas + 1 tumpukan[atas] = x penuh = false eif eproc
9
Operasi ambil data Operasi ambil data proc Jumput(x, kosong)
{ambil elemen teratas tumpukan lalu simpan pada x dan laporkan apakah kosong atau tidak} if atas == 0 then kosong = true else x = tumpukan[atas] atas = atas - 1 kosong = false eif eproc
10
Evaluasi Bentuk Postfix
Suatu pernyataan aritmatika terdiri dari sejumlah operator dan operand Operator dapat terdiri dari : +, -, *, / dll Operand : bilangan atau variabel
11
Evaluasi Bentuk Postfix
Setiap pernyataan aritmatika dapat dinyatakan dalam bentuk : Infix : 2 + 3 Prefix : 2 3 + Postfix : + 2 3
12
Evaluasi Bentuk Postfix
2 4 6 * + : akan menghasilkan nilai = 26 Algoritmanya : Ambil satu operator while ada operator do Operasikan terhadap dua operand disebelah kirinya, dan hasilnya membentuk operand baru Ambil operator berikutnya ewhile
13
Evaluasi Bentuk Postfix
Kelompok aksara yang dianggap satu kesatuan disebut token Token : Operator Operand Tanda sama dengan merupakan akhir dari pernyataan
14
Evaluasi Bentuk Postfix
Modul : Operasikan terhadap dua operand disebelah kirinya, dan hasilnya membentuk operand baru merupakan operasi pada tumpukan Setiap kali menemukan operand, ditumpuk pada tumpukan
15
Evaluasi Bentuk Postfix
Modul : Pengoperasian dua operand disebelah kiri operator sama dengan pengoperasian dua operand teratas pada tumpukan. Hasilnya ditaruh lagi pada tumpukan. Hasil akhir dari pengevaluasian adalah elemen teratas pada tumpukan.
16
Pernyataan yang akan dikerjakan
Isi Tumpukan Isi Tumpukan OP 1 OP 2 = 3 + = 2 + = 2 3 = 2 3 = 2 3 = 5
17
Pernyataan yang akan dikerjakan
Isi Tumpukan Isi Tumpukan OP 1 OP 2 2 4 6 * + = 4 6 * + = 2 6 * + = 2 4 * + = + = 2 4 6 + = 2 2 4 6 + = 2 24 = 2 24 = 2 24 = 26
18
Pernyataan yang akan dikerjakan
Isi Tumpukan Isi Tumpukan OP 1 OP 2 * /= 4 + 6 * /= 2 + 6 * /= 2 4 4 6 * /= 2 4 6 * /= 2 6 * /= 6 * /= 6 6 /= 6 6 /= 6 6 /= 36
19
Pernyataan yang akan dikerjakan
Isi Tumpukan Isi Tumpukan OP 1 OP 2 3 -/= 36 15 -/= 3 /= 36 15 15 3 /= 36 /= 36 12 = 36 12 = 36 12 = 3
20
Algoritma Global AmbilToken (token, operand, operator)
while token < > tandaSamaDengan do if token = simbolOperand then Tumpuk (operand, penuh) else (token adalah operator) Jumput (op1, kosong) Jumput (op2, kosong)
21
Algoritma Global Tumpuk (Evaluasi (op2, op1, operator), tumpukan) Eif
AmbilToken(token, operand, operator) ewhile
22
Pengembangan Algoritma
prog EvaluasiPostfix () read(pernyataan) AmbilToken (token, operand, operator) while token < > tandaSamaDengan do case token of
23
Pengembangan Algoritma
simbolOperand: Tumpuk (operand, penuh) If penuh then Henti(‘Pernyataan terlalu panjang’)
24
Pengembangan Algoritma
simbolOperator: Jumput(op1, kosong) if kosong then Henti (‘Kurang operand’) Jumput (op2, kosong) Tumpuk (Evaluasi (op2, op1, operator), penuh)
25
Pengembangan Algoritma
SimbolAbsah: Henti (‘Aksara tidak dikenal) SimbolKosong: (‘Pernyataan tidak lengkap’) ecase AmbilToken (token, operand, operator) ewhile
26
Pengembangan Algoritma
{Periksa keadaan akhir tumpukan dan tuliskan hasilnya} case atas of 0: write (‘Pernyataan kosong’) 1: write (tumpukan[atas]) else write (‘Kurang Operator’) ecase eprog
27
Deskripsi masing-masing modul
AmbilToken (token, operand, operator): Mengambil satu token Token dapat berupa : Simbol operand Simbol operator Tanda sama dengan Aksara absah Simbol Kosong
28
Deskripsi masing-masing modul
AmbilToken (token, operand, operator): Simbol operand variabel operand Simbol operator variabel operator
29
Deskripsi masing-masing modul
Tumpuk (operand, penuh) Menaruh operand pada tumpukan Melaporkan tumpukan penuh/tidak Penuh variabel penuh benar Bila tidak variabel penuh salah
30
Deskripsi masing-masing modul
Henti (pesan): Menghentikan program sambil memperagakan pesan
31
Deskripsi masing-masing modul
Jumput (x, kosong) : Ambil operand dari tumpukan Simpan dalam variabel x Melaporkan apakah tumpukan kosong? Kosong variabel kosong benar Isi variabel kosong salah
32
Deskripsi masing-masing modul
Evaluasi (op1, op2, operator) Mengembalikan hasil evaluasi operand op1 dengan operand op2 menggunakan operator
33
Algoritma Base-Conversion
Mengkonversi nilai basis 10 ke basis 2
34
Algoritma Base-Conversion
Stack of Remainders Computation Output 13 R 2 26 6 R 1 2 13 1
35
3 R 2 6 1 1 R 1 2 3 1 1
36
R 1 2 1 1 1 1 1
37
1 1 1 1 1 1 1 1 1 1 1
38
1 1 1
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.