Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

CS1023 Pemrograman Komputer

Presentasi serupa


Presentasi berjudul: "CS1023 Pemrograman Komputer"— Transcript presentasi:

1 CS1023 Pemrograman Komputer
Lecture 16 Mesin Abstrak [2]

2 Mesin Couple Kasus : Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong). Buatlah algoritma untuk menghitung banyaknya pasangan dua huruf ‘LE’ yang ada pada pita tersebut

3 Mesin Couple HITUNG-LE Versi 1 :
Realisasi dengan membuat mesin couple: mesin yang mampu untuk menampilkan dua karakter sekaligus berdasarkan mesin karakter.

4 HITUNG-LE Versi 1 : Kamus :
Program COUNTLE-1 {SKEMA PEMROSESAN DENGAN MARK} {Solusi 1: Mesin COUPLE}: Kamus : CPTLE : Integer {banyaknya ‘LE’ pada bagian pita yang sudah dibaca} C1, C2 : character {C1, C2 adalah Couple} procedure START-COUPLE {mendapatkan couple yang pertama}

5 HITUNG-LE Versi 1 : {I.S. : sembarang }
Lanjutan Kamus {I.S. : sembarang } {F.S. : Couple pertama terbentuk : C1 = ‘ ‘, C2 = CC, CC mungkin = ‘.’} procedure ADV-COUPLE {next-couple} {I.S. : C1 dan C2, C2 ≠ ‘.’} {F.S. : C1 = C2, C2 = CC, CC mungkin = ‘.’}

6 HITUNG-LE Versi 1 : Algoritma : START-COUPLE {First_Elmt} CPTLE ← 0
Lanjutan Kamus Algoritma : START-COUPLE {First_Elmt} CPTLE ← 0 while (CC ≠ ‘.’) do {not End-Couple} if (C1 = ‘L’ and C2 = ‘E’) then CPTLE ← CPTLE {couple ‘LE’} {else : C1 ≠ ‘L’ or C2 ≠ ‘E’ : -} ADV-COUPLE {Next_Elmt} Output (CPTLE) {Terminasi}

7 HITUNG-LE Versi 1 : Procedure START-COUPLE
{SKEMA PEMROSESAN DENGAN MARK, Solusi 1 : mesin COUPLE}: {I.S. : sembarang } {F.S. : Couple pertama terbentuk : C1 = ‘ ‘, C2 = CC, CC mungkin = ‘.’} Kamus : Algoritma : C1 ← ‘ ‘ {karena yang dicari adalah ‘LE’, Bagaimana jika yang dicari pasangan lain?} START C2 ← CC

8 HITUNG-LE Versi 1 : procedure ADV-COUPLE
{SKEMA PEMROSESAN DENGAN MARK, Solusi 1 : mesin COUPLE}: {I.S. : C1 dan C2, C2 ≠ ‘.’} {F.S. : C1 = C2, C2 = CC, CC mungkin = ‘.’} Kamus : Algoritma : C1← C2 ADV C2 ← CC

9 HITUNG-LE, versi 2 : Ide → mengingat-ingat jika menemukan ‘L’, dan memeriksa karakter selanjutnya

10 HITUNG-LE, versi 2 : Program COUNTLE-2 {SKEMA PEMROSESAN DENGAN MARK}
{Solusi 2: Memorisasi satu karakter sebelum karakter yang ada di jendela} Kamus : CPTLE : Integer {banyaknya ‘LE’ pada bagian pita yang sudah dibaca} Prec-Is-L : boolean {true jika karakter sebelum CC adalah ‘L’}

11 HITUNG-LE, versi 2 : Algoritma : Prec-Is-L ← false {inisialisasi}
CPTLE ← {inisialisasi} START {First_Elmt} while CC ≠ ‘.’ do Prec-Is-L ← CC = ‘L’ ADV {Next_Elmt} if CC = ‘E’ and Prec-Is-L then CPTLE = CPTLE + 1 Output (CPTLE) {Terminasi}

12 HITUNG-LE versi-3 : Ide → maju terus sampai menemukan ‘L’, dan memeriksa karakter berikutnya

13 HITUNG-LE versi-3 Program COUNTLE-3 {SKEMA PEMROSESAN DENGAN MARK}
{Solusi 3: majukan pita sampai ketemu ‘L’, periksa karakter berikutnya. Proses ini diulang sampai seluruh karakter selesai diproses}: Kamus : CPTLE : Integer {banyaknya ‘LE’ pada bagian pita yang sudah dibaca}

14 Algoritma : CPTLE ← 0 START {First_Elmt} while (CC ≠ ‘.’) do {Cari sampai ketemu ‘L’, namun mungkin ketemu ‘.’} while (CC ≠ ‘L’) and (CC ≠ ‘.’) do ADV {CC = ‘L’ or CC = ‘.’} if (CC = ‘L’ and CC = ‘.’) then ADV {Boleh ADV, karena CC bukan‘.’} if CC = ‘E’ then CPTLE ← CPTLE + 1 {else : CC ≠ ‘L’ : -} {CC = ‘.’, seluruh karakter pada pita sudah dibaca} Output (CPTLE) {Terminasi}

15 MESIN KATA Dari primitif-primitif mesin karakter, dapat dibuat mesin kata yang melakukan pemrosesan terhadap pita karakter dengan anggapan tiap elemen yang diakuisisi berupa kata. Definisi kata : sederetan karakter suksesif pada pita larakter yang merupakan karakter bukan blank Kemungkinan isi dari pita karakter : hanya mengandung titik (pita kosong)

16 MESIN KATA hanya mengandung blank diakhiri titik
- tidak mengandung blank di awal dan di akhir pita

17 MESIN KATA - mengandung blank di akhir pita
- mengandung blank di awal pita

18 MODEL AKUISISI Berikut ini beberapa contoh model akuisisi kata pada pita karakter dengan kasus menghitung panjang rata- rata kata pada sebuah pita karakter. Versi 1 Akhir proses adalah sebuah Boolean, berisi true jika kata terakhir telah diakusisi. Kata diakuisisi mulai dari karakter pertama sesudah akhir kata. Akuisisi kata terakhir menghasilkan kata kosong.

19 Model Akuisisi Versi 1 Program PANJANG_RATA_KATA1
{ algoritma menghitung panjang rata-rata kata pada pita karakter } { Versi 1 : Skema pemrosesan tanpa penanganan kasus kosong } Kamus Constant Mark : character = ‘.’ Constant Blank : character = ‘ ’ Lkata : integer {panjang kata terakhir yang sudah diakuisisi} NbKata : integer {jumlah kata pada pita} LTotal : integer {akumulasi panjang kata} EndKata : boolean {true jika kata terakhir sudah diakusisi}

20 Procedure Ignore_Blank {mengabaikan satu atau beberapa blank}
Lanjutan Kamus Procedure Ignore_Blank {mengabaikan satu atau beberapa blank} {I.S : CC sembarang} {F.S : CC  Blank, atau CC = mark} Procedure Hitung_Panjang {menghitung panjang kata} {I.S : CC adalah karakter pertama dari kata } {F.S : CC = Blank atau CC = mark, CC adalah karakter pertama sesudah huruf terkahir kata yang diakuisisi; Lkata berisi panjang kata yang sudah diakuisisi}

21 Lanjutan Kamus Procedure START_KATA {mengabaikan satu atau beberapa blank} {I.S : CC sembarang} {F.S : Endkata true dan CC = mark atau EndKata false, Lkata adalah panjang kata yang sudah diakuisisi, CC karakter pertama sesudah karakter terakhir kata} Procedure ADVKATA {mengabaikan satu atau beberapa blank} {I.S : EndKata false; CC adalah karakter sesudah karakter terakhir dari kata yang sudah diakuisisi}

22 Algoritma : LTotal  0 NbKata  0 STARTKATA While not EndKata do LTotal  LTotal + LKata NbKata  NbKata + 1 ADVKATA depend on NbKata NbKata  0 : Output (LTotal/NbKata) NbKata  0 : Output (‘Pita tidak mengandung kata’)

23 Procedure Ignore_Blank {mengabaikan satu atau beberapa Blank}
{I.S : CC sembarang} {F.S : CC  Blank atau CC = Mark} Kamus Algoritma {I.S CC sembarang} while (CC = Blank) and (CC  Mark) do ADV

24 Procedure Hitung_Panjang {menghitung panjang kata}
{I.S : CC adalah karakter pertama dari kata, CC  Blank dan CC  Mark } {F.S : CC = Blank atau CC = Mark; CC adalah karakter sesudah huruf terakhir kata yang diakuisisi; Lkata berisi panjang kata yang sudah diakuisisi} Kamus Algoritma Lkata  1 {karena berada pada karakter pertama pita} iterate ADV Stop ((CC = Mark) or (CC = Blank)) Lkata  Lkata + 1 {(CC = Mark) or (CC = Blank); Lkata = # karakter kata yang diakuisisi}

25 Procedure START_KATA {mengabaikan satu atau beberapa Blank}
{I.S : CC sembarang } {F.S : Endkata True dan CC = Mark atau EndKata = False; Lkata adalah panjang kata yang sudah diakuisisi; CC karakter pertama sesudah karakter terakhir kata} Kamus Algoritma START Ignore_blank depend on CC CC = Mark : EndKata  true CC  Mark : EndKata  false Hitung_Panjang

26 Procedure ADVKATA {mengabaikan satu atau beberapa Blank}
{I.S : EndKata = false; CC adalah karakter sesudah karakter karakter terahir kata yang sudah diakusisi } {F.S : Endkata True dan CC = Mark atau EndKata = False; Lkata adalah panjang kata yang sudah diakuisisi; CC karakter pertama sesudah karakter terakhir kata} Kamus Algoritma Ignore_blank depend on CC CC = Mark : EndKata  true CC  Mark : Hitung_Panjang


Download ppt "CS1023 Pemrograman Komputer"

Presentasi serupa


Iklan oleh Google