• Tidak ada hasil yang ditemukan

Modul 1 Mesin Karakter 1

N/A
N/A
Protected

Academic year: 2021

Membagikan "Modul 1 Mesin Karakter 1"

Copied!
8
0
0

Teks penuh

(1)

MODUL 1 MESIN KARAKTER

TUJUAN PRAKTIKUM

1. Mahasiswa dapat memahami salah satu contoh aplikasi otomata yaitu mesin karakter

2. Mahasiswa mampu mengimplementasikan mesin karaketer dalam program pengolahan teks

LANDASAN TEORI 1. Mesin Abstrak

Kajian dari kuliah teori bahasa formal dan otomata adalah mempelajari bahasa, grammar serta dikaitkan dengan mesin (otomata) yang mengenali atau menerima bahasa tersebut. Mempelajari otomata sama dengan mempelajari mesin.

Mesin adalah mekanisme yang terdefinisi serta mampu untuk mengesksekusi 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. Mesin abstrak memodelkan suatu semesta (universe) tertentu.

Dalam pemrograman, seringkali pemrogram harus mendefinisikan mesin-mesin abstrak sebelum menuliskan kode program karena dengan mesin abstrak memungkinkan permrogram untuk melakukan pemecahan secara bertahap. Mesin abstrak yang diciptakan pada tahap konseptual bahkan memungkinkan pemrogram untuk berpikir tahap demi tahap samapi akhirnya dijabarkan dalam mesin riiil.

mesin riil (komputer) mesin abstrak mesin abstrak

(2)

Sebetulnya bahasa tingkat tinggi adalah “mesin abstrak” bagi assembler dan lebih abstrak bagi mesin riil yaitu komputer.

Mendefinisikan mesin abstrak, berarti mendefinisikan : - sekumpulan status yang mungkin

- sekumpulan aksi primitif yang diasumsikan dapat dimengerti dan dieksekusi mesin yang bersangkutan

Pada modul ini akan dibahas salah satu contoh mesin abstrak yaitu mesin karakter.

2. Mesin Karakter Definisi :

Mesin karakter adalah mesin abstrak yang terdiri dari :

- pita karakter yaitu pita yang berisi deretan karakter , yang diakhiri dengan „.‟ (titik), pita yang hanya berisi „.‟ disebut dengan pita kosong

- tombol start dan adv

- sebuah lampu EOP ( End of Pita)

- “jendela” yang ukurannya sebesar satu karakter, hanya karakter yang posisinya pada jendela yang dapat dikonsultasi (dibaca); karakter lain tidak kelihatan. Karakter yang sedang ada di jendela disebut dengan cc (curent caracter)

Mesin mempunyai mekanisme untuk mengubah posisi pita dan menyalakan lampu EOP

jika karakter yang ada pada jendela adalah titik. Keadaan (status) dari mesin setiap saat ditentukan oleh cc dan lampu EOP. Tombol start dan adv digunakan untuk mengubah status mesin. Mesin hanya dapat dioperasikan jika EOP tidak menyala.

(3)

Primitif untuk mengubah posisi pita procedure reset

{ mesin siap dioperasikan. pita disiapkan untuk dibaca. karakter pertama ada pada pita posisinya ada pada jendela} i.s. : sembarang

f.s. : cc adalah karakter pertama pada pita; jika cc ≠ ‘.’ maka EOP tidak menyala (false); jika cc = ‘.’ maka EOP akan menyala (true) }

procedure adv

{ pita dimajukan satu karakter}

i.s. : karakter pada jendela = cc; cc ≠ ‘.’

f.s. : cc adalah karakter berikutnya dari cc yang lama cc mungkin = ‘.’ . Jika cc = ‘.’ maka EOP akan menyala (true) }

3. Implementasi Mesin karakter

Dalam pemrograman, model mesin karakter dikenal dengan model pengaksesan beruntun (sekuensial). Salah satu implementasinya adalah dalam hal pemrosesan terhadap teks. Misal, pada program pengolah kata (text editor) fungsi yang ada antara lain proses pencarian (search) sebuah karakter atau string, menghitung jumlah karakter, memperbaiki kata yang salah secara otomatis (autocorrect) dan sebagainya.

Implementasi lain dari mesinkarakter adalah kompiler bahasa pemrograman. Tugas pertama suatu kompiler adalah membaca program sumber untuk mengambil simbol-simbol (keyword, konstanta, variabel, dsb). Komponen kompiler yang melakukan tugas ini disebut dengan scanner.

start adv

(4)

Dalam pemrograman,pita karakter (teks) direalisasikan dalam file teks. Misalkan nama file tersebut „contoh.txt‟. Akhir teks harus diakhiri dengan tanda „.‟(titik) sehingga pemrosesan teks dilakukan sebelum mencapai titik.

Implementasi mesin karakter dalam bahasa PASCAL sebagai berikut : 1. Deklarasi global

var P : text; { pita karakter yang akan diakses} cc : char; {karakter pada posisi jendela mesin}

2. aksi primitif - Proses reset/start

procedure reset

{ mesin siap dioperasikan. pita ‘teks.txt’ disiapkan untuk dibaca; karakter pertama ada pada pita posisinya ada pada jendela}

i.s. : sembarang

f.s. : cc adalah karakter pertama pada pita; jika cc ≠ ‘.’ maka EOP tidak menyala (false); jika cc = ‘.’ maka EOP akan menyala (true) } begin

assign(P,’teks.txt’); reset(P);

end;

- Proses membaca karakter pada jendela pita kemudian posisi dimajukan

read(P,cc) {baca karakter pada jendela pita. Karakter yang dibaca disimpan di variabel cc}

3. Contoh program

1. Counthuruf

Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong). Buatlah program untuk menghitung banyaknya huruf yang ada pada pita tersebut (tidak termasuk „.‟).

procedure counthuruf(output n : integer) {menghitung banyaknya karakter pada pita} {k.awal : sembarang}

{k.akhir : n berisi banyaknya karakter dalam pita; n= 0 jika pita kosong}

{deklarasi} {deskripsi} n ← 0

(5)

read(P,cc) while cc ≠ ‘.’ do n ← n + 1 read(P,cc) endwhile { cc = ‘.’} 2. Count-A

menghitung banyaknya karakter „A‟ pada pita.

procedure count_A(output nA : integer)

{menghitung banyaknya karakter ‘A’ pada pita} {k.awal : sembarang}

{k.akhir : nA berisi banyaknya karakter ‘A’ dalam pita; nA= 0 jika pita kosong} {deklarasi} {deskripsi} nA ← 0 reset read(P,cc) while cc ≠ ‘.’ do if cc = ‘A’ then nA ← nA + 1 endif read(P,cc) endwhile { cc = ‘.’} contoh 1 :

Program Utama Pascal untuk menguji prosedur yang telah dibuat

Program Proses_MesinKar; var cc : char;

P : text;

nkar, na, no_menu : integer; procedure reset_teks;

{ mesin siap dioperasikan. pita ‘teks.txt’ disiapkan untuk dibaca; karakter pertama ada pada pita posisinya ada pada jendela}

i.s. : sembarang

f.s. : cc adalah karakter pertama pada pita; jika cc ≠ ‘.’ maka EOP tidak menyala (false); jika cc = ‘.’ maka EOP akan menyala (true) } begin

assign(P,’teks.txt’); reset(P);

end;

procedure count_huruf(var n : integer); {menghitung banyaknya karakter pada pita} {k.awal : sembarang}

{k.akhir : n berisi banyaknya karakter dalam pita; n= 0 jika pita kosong}

{deklarasi} {deskripsi}

(6)

begin n := 0; reset; read(P,cc); while cc <> ‘.’ do begin n := n + 1; read(P,cc); end; {endwhile { cc = ‘.’}} end;

procedure count_A(var nA : integer);

{menghitung banyaknya karakter ‘A’ pada pita} {k.awal : sembarang}

{k.akhir : nA berisi banyaknya karakter ‘A’ dalam pita; nA= 0 jika pita kosong} {deklarasi} {deskripsi} begin nA ← 0 reset read(P,cc) while cc ≠ ‘.’ do begin if cc = ‘A’ then A ← nA + 1; read(P,cc) end;{endwhile { cc = ‘.’}} end;

{ deskripsi program utama} begin

repeat

writeln(‘Menu’);

writeln(‘1. Hitung banyaknya karakter’); writeln(‘2. Hitung banyaknya huruf A’); writeln(‘0. Keluar program’);

writeln(‘pilihan menu :..’);readln(no_menu); case no_menu of

1: begin

count_huruf(nkar);

writeln(‘ Banyaknya huruf karakter = ‘,nkar); end;

2: begin

count_A(na);

writeln(‘ Banyaknya huruf A = ‘,na); end;

0: writeln(‘ Keluar program‘); end;

repeat until keypressed; until no_menu = 0;

end.

(7)

TUGAS PRAKTIKUM

1. Ketik dan jalankan program di atas sambil dipahami dan dicamkan skema algoritmanya (karena sebagai dasar untuk pertemuan-pertemuan selanjutnya) 2. Buatlah prosedur berikut kemudian tambahkan ke dalam program utama pada

contoh 1.

procedure Frek_A(var frek_a: integer)

{menghitung frekuensi relatif huruf „A‟ yang ada pada pita. Frekuensi relatif huruf „A‟ adalah banyaknya huruf „A‟ dibagi dengan banyaknya seluruh karakter yang ada pada pita.}

ilustrasi hasil : pita

aku mhs uin. frek a =2/11

mhs . frek a =0/3 = 0

. „pita kosong‟

3. Buatlah prosedur berikut kemudian tambahkan ke dalam program utama pada contoh 1.

procedure hit_vokal(var n_vok: integer);

{menghitung banyaknya huruf hidup pada pita} {k.awal : sembarang}

(8)

{k.akhir : n_vok berisi banyaknya huruf hidup dalam pita; n_vok = 0 jika pita kosong}

4. Buatlah prosedur berikut kemudian tambahkan ke dalam program utama pada contoh 1.

procedure hit_konsonan(var n_kon: integer); {menghitung banyaknya huruf konsonan pada pita} {k.awal : sembarang}

{k.akhir : n_kon berisi banyaknya huruf konsonan dalam pita; n_kon = 0 jika pita osong}

Gambar

ilustrasi hasil :     pita

Referensi

Dokumen terkait

Pada bulan Maret 2017 kelompok-kelompok pengeluaran yang memberikan andil/sumbangan deflasi, yaitu: kelompok bahan makanan 0,3326 persen; kelompok makanan jadi, minuman,

Contoh pakaian Batik Kaltim, masing-masing 1 (satu) lembar pakaian untuk Pria dan 1 (satu) lembar pakaian untuk Wanita. Peserta yang Tidak Hadir pada jadwal yang

Satu hal akan mendorong anak untuk meningkatkan kemampuan dalam berkomunikasi adalah dengan memberikan pujian atas apa yang telah dicapainya atau ditunjukannya

Video merupakan sajian gambar dan suara yang di tangkap oleh sebuah kamera, yang kemudian di susun kedalam urutan frame untuk di baca dalam satuan detik.. Animasi

Berdasarkan hasil wawancara diketahui bahwa perilaku pencarian pengobatan pada saat awal gangguan jiwa yang dilakukan oleh keluarga berbeda- beda, diantaranya adalah

tubuh merupakan manifestasi pasien pasca stroke yang terdiri dari kemampuan. motorik, sensorik, fungsi otak lain, fungsi luhur,

Semoga laporan ini dapat bermanfaat untuk penulis khususnya dan bermanfaat untuk kegiatan Prakerin di 3D computer sekamung, pada tahun yang akan datang.. Akhirnya dengan segala

Genotipe yang digunakan dalam percobaan memiliki pengaruh yang sangat nyata pada karakter panjang malai, panjang aksis malai, jumlah buku, jumlah cabang primer, jumlah cabang