lecture-3_6

32
MESIN ABSTRAK

description

IT

Transcript of lecture-3_6

Page 1: lecture-3_6

MESIN ABSTRAK

Page 2: lecture-3_6

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.

Page 3: lecture-3_6

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.

Page 4: lecture-3_6

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

Page 5: lecture-3_6

5

Definisi Mesin Abstrak

Contoh mesin abstrak : mesin gambar, mesin karakter, mesin integer, mesin

rekam

Mesin riil

Mesin abstrak

Mesin abstrak

Page 6: lecture-3_6

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.

Page 7: lecture-3_6

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.

Page 8: lecture-3_6

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.

Page 9: lecture-3_6

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 :

Page 10: lecture-3_6

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)}

Page 11: lecture-3_6

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) }

Page 12: lecture-3_6

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

Page 13: lecture-3_6

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}

Page 14: lecture-3_6

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}

Page 15: lecture-3_6

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.

Page 16: lecture-3_6

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}

Page 17: lecture-3_6

17

Mesin Integer

Setelah tombol Reset ditekan Setelah 10 kali menekan tombol INC

0

RESET INC

10

RESET INC

Page 18: lecture-3_6

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

Page 19: lecture-3_6

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 ?

Page 20: lecture-3_6

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.

Page 21: lecture-3_6

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)

Page 22: lecture-3_6

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.

Page 23: lecture-3_6

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)

Page 24: lecture-3_6

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)

Page 25: lecture-3_6

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.

Page 26: lecture-3_6

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

Page 27: lecture-3_6

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

Page 28: lecture-3_6

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.

Page 29: lecture-3_6

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}

Page 30: lecture-3_6

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)

Page 31: lecture-3_6

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

Page 32: lecture-3_6

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.