lecture 3_6

32
MESIN ABSTRAK

Upload: fernando-arianto

Post on 18-Jan-2016

45 views

Category:

Documents


0 download

DESCRIPTION

IT

TRANSCRIPT

Page 1: lecture 3_6

MESIN ABSTRAK

Page 2: lecture 3_6

Definisi Mesin AbstrakDefinisi Mesin Abstrak

Mesin adalah mekanisme yang terdefinisi dan mengerti serta gmampu untuk mengeksekusi aksi-aksi primitif yang terdefinisi untukaksi primitif yang terdefinisi untuk mesin tersebutM i Ab k d l h iMesin Abstrak adalah mesin yang dianggap ada, dan diasumsikan gg pmampu melakukan mekanisme yang didefinisikan untuk mesin

2

yang didefinisikan untuk mesin tersebut.

Page 3: lecture 3_6

Definisi Mesin AbstrakDefinisi Mesin Abstrak

Mesin abstrak memungkinkan pemrogram untuk melakukan p gpemecahan masalah secara bertahapbertahap.Mesin abstrak yang ‘diciptakan’

d h k l b hkpada tahap konseptual bahkan memungkinkan pemrogram untuk g p gberpikir tahap demi tahap, sampai akhirnya dijabarkan dalam

3

akhirnya dijabarkan dalam terminologi mesin riil.

Page 4: lecture 3_6

Definisi Mesin AbstrakDefinisi Mesin Abstrak

B h ti k t ti i d l h “ iBahasa tingkat tinggi adalah “mesin abstrak” bagi assembler, dan lebih abstrak bagi mesin riil yaitu komputerabstrak bagi mesin riil yaitu komputer.Mendefinisikan mesin abstrak berarti mendefinisikan :mendefinisikan :- sekumpulan state yang mungkin

k l k i i itif- sekumpulan aksi primitif yang diasumsikan dapat dimengerti dan dieksekusi mesin yang bersangkutandieksekusi mesin yang bersangkutan

4

Page 5: lecture 3_6

Definisi Mesin AbstrakDefinisi Mesin Abstrak

Mesin riil

Mesin abstrak

Mesin abstrak

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

5

Page 6: lecture 3_6

Mesin KarakterMesin Karakter

Definisi : Mesin karakter adalah mesin abstrak yang terdiri dari

- Pita berisi deret karakter, yang diakhiri dengan ‘.’ (titik); pita yang hanya berisi g ( ) p y g y‘.’ disebut sebagai pita kosong

- Tombol START, ADVTombol START, ADV- Sebuah lampu EOP (End of Pita)

“jendela” yang ukurannya sebesar satu- “jendela” yang ukurannya sebesar satu karakter.

6

Page 7: lecture 3_6

Mesin KarakterMesin Karakter

- Hanya karakter yang posisinya sedang pada jendela dapat dikonsultasipada jendela dapat dikonsultasi (dibaca); karakter lain tidak kelihatan. K kt d d j d lKarakter yang sedang pada jendela dinamakan CC (current character).

- Mesin mempunyai mekanisme untuk mengubah posisi pita dan menyalakanmengubah posisi pita dan menyalakan lampu EOP jika karakter yang ada pada jendela adalah titik

7jendela adalah titik.

Page 8: lecture 3_6

Mesin KarakterMesin Karakter

- Keadaan (state) dari mesin setiap saat ditentukan oleh CC dan lampu EOP.

- Tombol START dan ADV digunakan untuk mengubah state mesin.g

- Mesin hanya dapat dioperasikan jika EOP tidak menyalaEOP tidak menyala

Note : EOP diwakili oleh boolean. Berharga true jika menyala atau falseBerharga true jika menyala, atau false jika tidak menyala.

8

Page 9: lecture 3_6

Mesin KarakterMesin Karakter

Eeof

Start Adv

S T T T E L K O M

S T T T E L K O MADV :

9

Page 10: lecture 3_6

Mesin KarakterMesin Karakter

Primitif untuk merubah posisi pita :Primitif untuk merubah posisi pita :Procedure START{Mesin siap dioperasikan Pita disiapkan{Mesin siap dioperasikan. Pita disiapkan untuk dibaca. Karakter pertama yang ada pada pita posisinya adalah padaada pada pita posisinya adalah pada jendelaIS : sembarangFS : CC adalah karakter pertama pada pita

k ‘ ’ k O kJika CC = ‘.’ maka EOP akan menyala(true)Jika CC tidak ‘ ’ maka EOP padam

10Jika CC tidak = ‘.’ maka EOP padam (false)}

Page 11: lecture 3_6

Mesin KarakterMesin Karakter

Procedure ADV{Pita dimajukan satu karakter{ jIS : Karakter pada jendela = CC, CC tidak sama dengan ‘.’tidak sama dengan .FS : CC adalah karakter berikutnya dari CC yang lama CC mungkin = ‘ ’ JikaCC yang lama. CC mungkin = . . Jika CC = ‘.’ maka EOP akan menyala (true) }}

11

Page 12: lecture 3_6

Mesin RekamMesin Rekam

Mesin rekam adalah mesin abstrak yang terdiri dari : pita dan tombol READY, REG d b h t b l MARKERdan sebuah tombol MARKER.Mesin rekam adalah mesin yang dipakai

t k k it k kt kuntuk merekam pita karakter yang akan dibaca oleh mesin karakter.

Emar

Ready Reg

12

Page 13: lecture 3_6

Mesin RekamMesin RekamPrimitif untuk merubah posisi pitaPrimitif untuk merubah posisi pita

Procedure READY{Mesin disiapkan, pita disiapkan untuk direkam. { p , p pJendela siap ditulisi sebuah karakter yang akan direkam pada posisi pertama.IS : SembarangIS : SembarangFS : posisi perekaman pertama}Procedure REG{Merekam dan posisi pita yang siap direkami dimajukan satu karakter.IS : Karakter pada jendela = CCIS : Karakter pada jendela = CCFS : CC direkam pada posisi perekaman, pita maju satu karakter}

13

Page 14: lecture 3_6

Mesin RekamMesin Rekam

Procedure MARKER{Pita direkami dengan tanda akhir pita{Pita direkami dengan tanda akhir pita (Mark).IS : Karakter pada jendela = CCIS : Karakter pada jendela = CCFS : CC tidak sama dengan ‘.’, tombol MARKER di ktifk M i di tik }MARKER diaktifkan. Mesin dimatikan}

14

Page 15: lecture 3_6

Mesin IntegerMesin Integer

M i i t d l h i b t kMesin integer adalah mesin abstrak yang berfungsi sebagai pencacah integer.M i i t t di i d i t b l RESET INCMesin integer terdiri dari : tombol RESET ,INC dan sebuah jendela yang menunjukkan sebuah angka integer yang diingatnya yangsebuah angka integer yang diingatnya, yang disebut dengan CI (Current Integer).Ketika tombol RESET ditekan maka jendelaKetika tombol RESET ditekan, maka jendela pada mesin integer akan menunjukkan angka 00.Setiap kali tombol INC ditekan, angka pada jendela akan bertambah 1

15

jendela akan bertambah 1.Mesin integer tidak menggunakan pita.

Page 16: lecture 3_6

Mesin IntegerMesin Integer

P i itif t k b h k d iPrimitif untuk mengubah keadaan mesin :Procedure RESET{pencacah idsiapkan untuk dipakai Harga{pencacah idsiapkan untuk dipakai. Harga bilangan bulat yang disimpan adalah Nol.IS : sembarangIS : sembarangFS : CI = 0}Procedure INC{Pencacah dimajukan satu.IS : CI = hargaFS : CI = harga + 1}

16

Page 17: lecture 3_6

Mesin IntegerMesin Integer

0 10

RESET INCRESET INC

Setelah tombol Reset ditekan Setelah 10 kali menekan tombol INC

17

Page 18: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [1]

Diberikan pita sebagai berikut :

I L O V E Y O U

Deretan aksi (penekanan tombol) pada mesin karakter dan mesin integer untuk menghitungkarakter dan mesin integer untuk menghitung banyaknya huruf pada pita :START;RESET {CC=‘I’;CI=0}START;RESET {CC= I ;CI=0} ADV;INC {CC=‘ ‘;CI=1} ADV;INC {CC=‘L’;CI=2}

18

ADV;INC {CC= L ;CI=2} ADV;INC {CC=‘O’;CI=3}

Page 19: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [1]

ADV INC {CC ‘V’ CI 4}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}ADV;INC {CC U ;CI 9}Bagaimana jika urutan penekanan tombol dirubah menjadi INC dulutombol dirubah menjadi INC dulu, baru ADV ?

19

Page 20: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [2]

Count HurufCount HurufDiberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong). Buatlah algoritma untukkosong). Buatlah algoritma untuk menghitung banyaknya huruf yang ada pada pita tersebut dengan mesinpada pita tersebut dengan mesin integer. Banyaknya karakter pada pita k d l h lkosong adalah nol.

20

Page 21: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [2]

Algoritma :RESET {inisialisasi, CI = 0}{ }START {First_Elmt}while (CC <> ‘ ’) do {not EOP}while (CC <> . ) do {not EOP}

INCR {Proses : CI = CI + 1}( l )ADV (Next_Elmt)

endwhileOutput (CI)

21

Page 22: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [3]

Hit AHitung ADiberikan sebuah mesin karakter d it b i i k kt ( kidengan pita berisi karakter (mungkin kosong). Buatlah algoritma untuk menghitung banyaknya huruf ‘A’ yangmenghitung banyaknya huruf A yang ada pada pita tsb dengan mesin integerinteger.

22

Page 23: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [3]

Algoritma :Algoritma :RESET {Inisialisasi : CI = 0}START {First Elmt}START {First_Elmt}while (CC <> ‘.’) do {not EOP}

depend on CCCC = ‘A’ : INCRCC <> ‘A’ : -

enddependenddependADV {Next_Elmt}

endwhileendwhileOutput (CI)

23

Page 24: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [3]

Count A (Dengan penanganan pita kosong)Count A (Dengan penanganan pita kosong)Algoritma :

START {First_Elmt}depend on CCdepend on CC

CC = ‘.’ : output (‘Pita Kosong’)CC <> ‘.’ :

RESET {I i i li i CI 0}RESET {Inisialisasi, CI = 0}repeat

depend on CCCC = ‘A’ : INCRCC <> ‘A’ : -

enddependpADV {Next_Elmt}

until (CC = ‘.’)enddepend

24

enddependOutput (CI)

Page 25: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [4]

Frekuensi Huruf ‘A’Diberikan sebuah mesin karakterDiberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong) Buatlah(mungkin kosong). Buatlah algoritma untuk menghitung f k i l if h f ‘A’ dfrekuensi relatif huruf ‘A’ yang ada pada pita tersebut. Frekuensi p prelatif huruf ‘A’ dibandingkan banyaknya seluruh karakter yang

25

banyaknya seluruh karakter yang ada pada pita karakter.

Page 26: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [4]

Kamus :CPT_KAR : integer{banyaknya karakter yang sudah dib }dibaca}

CPTA : integer {banyaknya huruf A yang muncul pada bag Pita yang sudah dibaca}bag. Pita yang sudah dibaca}

Algoritma :CPT KAR 0 {Inisialisasi}CPT_KAR 0 {Inisialisasi}CPTA 0 {Inisialisasi}START {Fi t Elmt}START {First_Elmt}while (CC <> ‘.’)

CPT KAR CPT KAR 126

CPT_KAR CPT_KAR + 1

Page 27: lecture 3_6

Studi Kasus Mesin k [ ]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 (CPTA/CPTKAR)CPT_KAR = 0 : output (‘Frekuensi tidak terdefinisi’)

Enddepend27

Enddepend

Page 28: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [4]

Penjelasan :Penjelasan :- Banyaknya karakter ‘A’ pada pita

kosong tdk terdefinisikosong tdk terdefinisi- Banyaknya karakter pada pita kosong

adalah noladalah nol- Perhatikan invarian CC,CPTA dan

CPT_KAR yang selalu benar- Pembagian dengan nol dihindarkan

dengan analisa kasus pita kosong atau tidak pada bagian terminasitidak pada bagian terminasi

- Program benar, tapi pemilihan skema kurang tepat

28

kurang tepat.

Page 29: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [4]

Hitung Frekuensi ‘A’ [cara kedua]KamusCPT KAR i t {b k k kt d itCPT_KAR : integer {banyaknya karakter pada pita yang sudah dibaca}

CPTA : integer {banyaknya huruf A yang muncul padaCPTA : integer {banyaknya huruf A yang muncul pada bagian pita yang sudah dibaca}

AlgoritmaSTART {Fi t El t}START {First_Elmt}if CC = ‘.’ then

output (‘Pita Kosong’)output ( Pita Kosong )else

CPT_KAR 0 {Inisialisasi}

29CPTA 0 {Inisialisasi}

Page 30: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [4]

repeatCPTKAR CPTKAR + 1CPTKAR CPTKAR 1depend on CC

CC ‘A’ : CPTA CPTA + 1CC = ‘A’ : CPTA CPTA + 1CC <> ‘A’ : -

enddependADV {Next Elmt}ADV {Next_Elmt}

until (CC = ‘.’)output (CPTA/CPT KAR)

30output (CPTA/CPT_KAR)

Page 31: lecture 3_6

Studi Kasus Mesin k [ ]Karakter [4]

Penjelasan :- Banyaknya karakter ‘A’ pada pita y y p p

kosong tidak terdefinisi- Banyaknya karakter pada pita kosongBanyaknya karakter pada pita kosong

adalah nolJika kasus kosong tidak ditangani- Jika kasus kosong tidak ditangani secara khusus, maka akan terjadi pembagian dengan nolpembagian dengan nol

- Pemilihan skema lebih baik dari pada versi pertama

31versi pertama

Page 32: lecture 3_6

Soal Latihan :Soal Latihan :

Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong), hitunglah :- banyaknya kemunculan huruf hidup y y pyang muncul pada pita tersebut.- frekuensi huruf hidupfrekuensi huruf hidup- banyaknya kemunculan setiap huruf hiduphidupDefinisikanlah dengan jelas apa yang dimaksud dengan huruf hidup

32dimaksud dengan huruf hidup.