Download - lecture-3_6
MESIN ABSTRAK
2
Definisi Mesin Abstrak
Mesin adalah mekanisme yang terdefinisi dan mengerti serta mampu untuk mengeksekusi aksi-aksi primitif yang terdefinisi untuk mesin tersebut
Mesin Abstrak adalah mesin yang dianggap ada, dan diasumsikan mampu melakukan mekanisme yang didefinisikan untuk mesin tersebut.
3
Definisi Mesin Abstrak
Mesin abstrak memungkinkan pemrogram untuk melakukan pemecahan masalah secara bertahap.
Mesin abstrak yang ‘diciptakan’ pada tahap konseptual bahkan memungkinkan pemrogram untuk berpikir tahap demi tahap, sampai akhirnya dijabarkan dalam terminologi mesin riil.
4
Definisi Mesin Abstrak
Bahasa tingkat tinggi adalah “mesin abstrak” bagi assembler, dan lebih abstrak bagi mesin riil yaitu komputer.
Mendefinisikan mesin abstrak berarti mendefinisikan :- sekumpulan state yang mungkin
- sekumpulan aksi primitif yang diasumsikan dapat dimengerti dan dieksekusi mesin yang bersangkutan
5
Definisi Mesin Abstrak
Contoh mesin abstrak : mesin gambar, mesin karakter, mesin integer, mesin
rekam
Mesin riil
Mesin abstrak
Mesin abstrak
6
Mesin Karakter
Definisi : Mesin karakter adalah mesin abstrak yang terdiri dari
- Pita berisi deret karakter, yang diakhiri dengan ‘.’ (titik); pita yang hanya berisi ‘.’ disebut sebagai pita kosong
- Tombol START, ADV- Sebuah lampu EOP (End of Pita)- “jendela” yang ukurannya sebesar
satu karakter.
7
Mesin Karakter
- Hanya karakter yang posisinya sedang pada jendela dapat dikonsultasi (dibaca); karakter lain tidak kelihatan. Karakter yang sedang pada jendela dinamakan CC (current character).
- Mesin mempunyai mekanisme untuk mengubah posisi pita dan menyalakan lampu EOP jika karakter yang ada pada jendela adalah titik.
8
Mesin Karakter
- Keadaan (state) dari mesin setiap saat ditentukan oleh CC dan lampu EOP.
- Tombol START dan ADV digunakan untuk mengubah state mesin.
- Mesin hanya dapat dioperasikan jika EOP tidak menyala
Note : EOP diwakili oleh boolean. Berharga true jika menyala, atau false jika tidak menyala.
9
Mesin Karakter
S T T T E L K O M
E
Start Adv
eof
S T T T E L K O MADV :
10
Mesin Karakter
Primitif untuk merubah posisi pita : Procedure START
{Mesin siap dioperasikan. Pita disiapkan untuk dibaca. Karakter pertama yang ada pada pita posisinya adalah pada jendelaIS : sembarangFS : CC adalah karakter pertama pada pita
Jika CC = ‘.’ maka EOP akan menyala(true)Jika CC tidak = ‘.’ maka EOP padam (false)}
11
Mesin Karakter
Procedure ADV{Pita dimajukan satu karakterIS : Karakter pada jendela = CC, CC tidak sama dengan ‘.’FS : CC adalah karakter berikutnya dari CC yang lama. CC mungkin = ‘.’. Jika CC = ‘.’ maka EOP akan menyala (true) }
12
Mesin Rekam
Mesin rekam adalah mesin abstrak yang terdiri dari : pita dan tombol READY, REG dan sebuah tombol MARKER.
Mesin rekam adalah mesin yang dipakai untuk merekam pita karakter yang akan dibaca oleh mesin karakter.
E
Ready Reg
mar
13
Mesin Rekam
Primitif untuk merubah posisi pita Procedure READY
{Mesin disiapkan, pita disiapkan untuk direkam. Jendela siap ditulisi sebuah karakter yang akan direkam pada posisi pertama.IS : SembarangFS : posisi perekaman pertama}
Procedure REG{Merekam dan posisi pita yang siap direkami dimajukan satu karakter.IS : Karakter pada jendela = CCFS : CC direkam pada posisi perekaman, pita maju satu karakter}
14
Mesin Rekam
Procedure MARKER{Pita direkami dengan tanda akhir pita (Mark).IS : Karakter pada jendela = CCFS : CC tidak sama dengan ‘.’, tombol MARKER diaktifkan. Mesin dimatikan}
15
Mesin Integer
Mesin integer adalah mesin abstrak yang berfungsi sebagai pencacah integer.
Mesin integer terdiri dari : tombol RESET ,INC dan sebuah jendela yang menunjukkan sebuah angka integer yang diingatnya, yang disebut dengan CI (Current Integer).
Ketika tombol RESET ditekan, maka jendela pada mesin integer akan menunjukkan angka 0.
Setiap kali tombol INC ditekan, angka pada jendela akan bertambah 1.
Mesin integer tidak menggunakan pita.
16
Mesin Integer
Primitif untuk mengubah keadaan mesin : Procedure RESET
{pencacah idsiapkan untuk dipakai. Harga bilangan bulat yang disimpan adalah Nol.IS : sembarangFS : CI = 0}
Procedure INC{Pencacah dimajukan satu.IS : CI = hargaFS : CI = harga + 1}
17
Mesin Integer
Setelah tombol Reset ditekan Setelah 10 kali menekan tombol INC
0
RESET INC
10
RESET INC
18
Studi Kasus Mesin Karakter [1]
Diberikan pita sebagai berikut :
Deretan aksi (penekanan tombol) pada mesin karakter dan mesin integer untuk menghitung banyaknya huruf pada pita :START;RESET {CC=‘I’;CI=0} ADV;INC {CC=‘ ‘;CI=1} ADV;INC {CC=‘L’;CI=2} ADV;INC {CC=‘O’;CI=3}
I L O V E Y O U
19
Studi Kasus Mesin Karakter [1] ADV;INC {CC=‘V’;CI=4}
ADV;INC {CC=‘E’;CI=5}ADV;INC {CC=‘ ‘;CI=6}ADV;INC {CC=‘Y’;CI=7}ADV;INC {CC=‘O’;CI=8}ADV;INC {CC=‘U’;CI=9}
Bagaimana jika urutan penekanan tombol dirubah menjadi INC dulu, baru ADV ?
20
Studi Kasus Mesin Karakter [2]
Count HurufDiberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong). Buatlah algoritma untuk menghitung banyaknya huruf yang ada pada pita tersebut dengan mesin integer. Banyaknya karakter pada pita kosong adalah nol.
21
Studi Kasus Mesin Karakter [2]Algoritma :
RESET {inisialisasi, CI = 0}START {First_Elmt}while (CC <> ‘.’) do {not
EOP}INCR {Proses : CI = CI
+ 1}ADV (Next_Elmt)
endwhileOutput (CI)
22
Studi Kasus Mesin Karakter [3]
Hitung ADiberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong). Buatlah algoritma untuk menghitung banyaknya huruf ‘A’ yang ada pada pita tsb dengan mesin integer.
23
Studi Kasus Mesin Karakter [3]Algoritma :
RESET {Inisialisasi : CI = 0}START {First_Elmt}while (CC <> ‘.’) do {not EOP}
depend on CC CC = ‘A’ : INCR CC <> ‘A’ : -enddependADV {Next_Elmt}
endwhileOutput (CI)
24
Studi Kasus Mesin Karakter [3]
Count A (Dengan penanganan pita kosong)Algoritma :
START {First_Elmt}depend on CC CC = ‘.’ : output (‘Pita Kosong’) CC <> ‘.’ :
RESET {Inisialisasi, CI = 0}repeat depend on CC
CC = ‘A’ : INCRCC <> ‘A’ : -
enddepend ADV {Next_Elmt}until (CC = ‘.’)
enddependOutput (CI)
25
Studi Kasus Mesin Karakter [4] Frekuensi Huruf ‘A’
Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong). Buatlah algoritma untuk menghitung frekuensi relatif huruf ‘A’ yang ada pada pita tersebut. Frekuensi relatif huruf ‘A’ dibandingkan banyaknya seluruh karakter yang ada pada pita karakter.
26
Studi Kasus Mesin Karakter [4]
Kamus : CPT_KAR : integer{banyaknya karakter yang
sudah dibaca} CPTA : integer {banyaknya huruf A yang
muncul pada bag. Pita yang sudah dibaca}Algoritma :
CPT_KAR 0 {Inisialisasi}CPTA 0 {Inisialisasi}START {First_Elmt}while (CC <> ‘.’)
CPT_KAR CPT_KAR + 1
27
Studi Kasus Mesin Karakter [4]
depend on CCCC = ‘A’ : CPTA CPTA + 1CC <> ‘A’ : -
enddependADV {Next_Elmt}
endwhile
depend on CPT_KARCPT_KAR <> 0 : output (CPTA/CPTKAR)
CPT_KAR = 0 : output (‘Frekuensi tidak terdefinisi’)
Enddepend
28
Studi Kasus Mesin Karakter [4]Penjelasan :- Banyaknya karakter ‘A’ pada pita
kosong tdk terdefinisi- Banyaknya karakter pada pita
kosong adalah nol- Perhatikan invarian CC,CPTA dan
CPT_KAR yang selalu benar- Pembagian dengan nol dihindarkan
dengan analisa kasus pita kosong atau tidak pada bagian terminasi
- Program benar, tapi pemilihan skema kurang tepat.
29
Studi Kasus Mesin Karakter [4]
Hitung Frekuensi ‘A’ [cara kedua]Kamus CPT_KAR : integer {banyaknya karakter pada pita
yang sudah dibaca} CPTA : integer {banyaknya huruf A yang muncul
pada bagian pita yang sudah dibaca}Algoritma
START {First_Elmt}if CC = ‘.’ then
output (‘Pita Kosong’)else
CPT_KAR 0 {Inisialisasi}CPTA 0 {Inisialisasi}
30
Studi Kasus Mesin Karakter [4]
repeatCPTKAR CPTKAR + 1
depend on CC CC = ‘A’ : CPTA CPTA + 1 CC <> ‘A’ : -enddependADV {Next_Elmt}
until (CC = ‘.’)output (CPTA/CPT_KAR)
31
Studi Kasus Mesin Karakter [4]Penjelasan :- Banyaknya karakter ‘A’ pada pita
kosong tidak terdefinisi- Banyaknya karakter pada pita
kosong adalah nol- Jika kasus kosong tidak ditangani
secara khusus, maka akan terjadi pembagian dengan nol
- Pemilihan skema lebih baik dari pada versi pertama
32
Soal Latihan :
Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong), hitunglah :- banyaknya kemunculan huruf hidup yang muncul pada pita tersebut.- frekuensi huruf hidup- banyaknya kemunculan setiap huruf hidupDefinisikanlah dengan jelas apa yang dimaksud dengan huruf hidup.