Mesin Karakter dan Mesin Kata

dokumen-dokumen yang mirip
IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

Mesin Abstrak. Tim Pengajar KU1071 Sem

Modul 1 Mesin Karakter 1

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

LATIHAN UTS Tim Pengajar KU1071 Sem

PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL. Tim Pengajar KU1071 Sem

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

2 ATURAN PENULISAN TEKS ALGORITMA

Notasi Algoritmik. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Selamat Mengerjakan. 2. Keluaran dari baris 10 adalah? a. 1 b. 4 c. 2.5 d. 2 e Keluaran dari baris 11 adalah? a. 1 b. 4 c. 2.5 d. 2 e.

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Pengantar Bahasa C. Tim Pengajar ASD Semester I 2017/ /7/2017 FN/ASD/Sem /2018 1

LIST LINIER 1. DEFINISI

Pengenalan C++ Oleh : Dewi Sartika

Soal hari Jumat (16/10) Latihan 10 MS

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Algoritma dan Pemrograman File Sekuensial. Oleh: Eddy Prasetyo N 05/05/2014 1

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

MODUL PRAKTIKUM STRUKTUR DATA

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

PENGANTAR KOMPUTER & SOFTWARE II

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala

Bahasa C-M6 By Jamilah, Skom 1

Struktur Program Bahasa C

PERULANGAN P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

PERULANGAN Pengampu : Agus Priyanto, M.Kom

Array (Tabel) [DalamBahasaC++]

QUEUE Antrian 1. DEFINISI

BAHASA PEMROGRAMAN C

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

STRUKTUR DASAR ALGORITMA DAN PEMROGRAMAN STMIK AMIKOM YOGYAKARTA

Chapter 3.2 : Tipe, Nama dan Nilai

PERULANGAN Pengampu : Agus Priyanto, M.Kom

Algoritma Perulangan. Kuliah algoritma dan pemrograman

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Algoritma dan Pemrograman Array/Tabel[2] Oleh: Eddy Prasetyo N

TIPE, NAMA, DAN NILAI

Outline. Ekuivalensi Notasi Algoritmik Dengan ETNA. Struktur Umum

STRUKTUR DASAR PEMROGRAMAN

PERTEMUAN 7 REVIEW (QUIZ)

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Aturan Penulisan Algoritma Setiap Algoritma akan selalu terdiri dari tiga bagian yaitu : Judul (Header) Kamus Algoritma

Struktur Program. Rinta Kridalukmana

Tugas P01. Kirim laporan dalam bentuk doc,docx,rtf,txt,pdf,odt ke sesuai format yang ada di pengumuman kuliah

c. Membeli komputer d. Proses 2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b.

VARIABEL & TIPE DATA PEMROGRAMAN C++

Perulangan, Percabangan, dan Studi Kasus

Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester).

Tujuan : A. Percabangan Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan switch.

PENGANTAR KOMPUTER & SOFTWARE II. Array (Part II) Tim Pengajar KU Institut Teknologi Sumatera

Tipe Data dan Operator

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

PENGANTAR KOMPUTER & SOFTWARE II. Pengulangan (For) Tim Pengajar KU Institut Teknologi Sumatera

Algoritma dan Struktur Data

SEQUENTIAL FILE. Tujuan Perkuliahan

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16

Pernyataan FOR Pernyataan WHILE Pernyataan REPEAT. Dewi Sartika,M.Kom

Dasar Pemrograman. Nisa ul Hafidhoh

Tipe Data. Adri Priadana

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

CCH1A4 / Dasar Algoritma & Pemrogramanan

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

LAPORAN PRAKTIKUM RESMI TIPE DATA, KONSTANTA DAN VARIABEL

C Programming Untuk Pascal Programmer

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Kuliah III - Dasar Pemrograman

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK AMIKOM YOGYAKARTA

Algoritma dan Pemrograman 1. By. Rita Wiryasaputra, ST., M. Cs.

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

Array (Tabel) bagian 2

Dasar Komputer dan Pemrograman. Konsep Tipe Data dan Operator Nama dan Nilai Data

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-7 Pencarian (Searching) 2

Konstruksi Dasar Algoritma

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Translasi Notasi Algoritmik ke Bahasa C

Algoritma & Pemrograman 1. Muhamad Nursalman Pendilkom/Ilkom Universitas Pendidikan Indonesia

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

Percabangan & Perulangan

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

PENGULANGAN. pencacah harus bertipe integer atau karakter pernyataan adalah satu atau lebih instruksi yang. Pernyataan

CCH1A4 / Dasar Algoritma & Pemrogramanan

BAB VI BAHASA C Pendahuluan

REVIEW ARRAY. Institut Teknologi Sumatera

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

Transkripsi:

Mesin Karakter dan Mesin Kata Tim Pengajar IF2030/Algoritma dan Struktur Data 10/15/09 FNA/IF2030/Mesin Kata 1

Mesin Mesin: mekanisme yang terdefinisi dan mengerti serta mampu untuk mengeksekusi aksi-aksi primitif yang terdefinisi untuk mesin tersebut Mesin abstrak: mesin yang dianggap ada dan diasumsikan mampu melakukan mekanisme yang didefinisikan untuk mesin tersebut Mesin abstrak memodelkan suatu semesta (universe) tertentu Mesin Riil Mesin Abstrak Mesin Abstrak 10/15/09 FNA/IF2030/Mesin Kata 2

Mesin Abstrak Mendefinisikan mesin abstrak berarti mendefinisikan: Sekumpulan state yang mungkin Sekumpulan aksi primitif yang diasumsikan dapat dimengerti dan dieksekusi mesin yang bersangkutan Contoh mesin abstrak: mesin gambar mesin integer mesin rekam mesin karakter 10/15/09 FNA/IF2030/Mesin Kata 3

Mesin Karakter (1) Mesin karakter adalah mesin abstrak yang terdiri atas: Pita berisi deret karakter, diakhiri dengan '.' (titik) Pita yang hanya berisi '.' disebut sebagai pita kosong, Tombol START dan ADV Lampu EOP (End Of Pita) Jendela" yang ukurannya sebesar satu karakter Hanya karakter yang posisinya sedang pada jendela dapat dibaca; karakter lain tidak kelihatan Karakter yang sedang pada jendela dinamakan CC (Current Character) State mesin karakter ditentukan oleh CC dan EOP 10/15/09 FNA/IF2030/Mesin Kata 4

Mesin Karakter (2) CC D EOP I T B A D A D I. Sudah Dibaca Belum Dibaca START ADV Suatu keadaan Mesin Karakter CC= D, lampu EOP tidak menyala Sudah Dibaca CC I T B A D A D I.. EOP START ADV Ketika CC=., lampu EOP menyala 10/15/09 FNA/IF2030/Mesin Kata 5

Mesin Karakter (3) Primitif untuk mengubah posisi pita procedure START { Mesin siap dioperasikan. Pita disiapkan untuk dibaca. Karakter pertama yang ada pada pita posisinya adalah pada jendela I.S. : sembarang F.S. : CC adalah karakter pertama pada pita Jika CC '.' maka EOP akan padam (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) } EOP diwakili oleh boolean, bernilai true jika menyala; atau false jika tidak menyala. Jika EOP menyala, mesin sudah tidak dapat dioperasikan lagi. 10/15/09 FNA/IF2030/Mesin Kata 6

Studi Kasus Mesin Karakter (1) CountHuruf Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong). Buatlah algoritma untuk menghitung banyaknya huruf yang ada pada pita tersebut. Banyaknya karakter pada pita kosong adalah nol. Program COUNTHURUF { SKEMA PEMROSESAN DENGAN MARK : menghitung banyaknya huruf pada pita karakter } KAMUS CI : integer ALGORITMA CI 0 { Inisialisasi } START { First Elmt } while (CC '.') do { not EOP } CI CI + 1 { Proses } ADV { Next_Elmt } { CC = '.' } output (CI) { Terminasi} 10/15/09 FNA/IF2030/Mesin Kata 7

Studi Kasus Mesin Karakter (2) Hitung-A Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong), Buatlah algoritma untuk menghitung banyaknya huruf 'A' yang ada pada pita tersebut. Banyaknya karakter A pada pita kosong adalah nol. Program COUNT_A { SKEMA PEMROSESAN DENGAN MARK : menghitung banyaknya huruf A pada pita karakter } KAMUS CI : integer ALGORITMA CI 0 { Inisialisasi, CI = 0 } START { First_Elmt } while (CC '.') do { not EOP } depend on CC { Proses } CC = 'A' : CI CI + 1 CC 'A' : - ADV { Next_Elmt } { CC = '.' } output (CI) { Terminasi } 10/15/09 FNA/IF2030/Mesin Kata 8

Mesin Kata (1) Mesin Kata: Mesin abstrak yang berdasarkan mesin karakter Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong),yang diakhiri titik (. ) Kata: sederetan karakter suksesif pada pita yang merupakan karakter bukan blank 10/15/09 FNA/IF2030/Mesin Kata 9

Mesin Kata (2) Model-model akuisisi KATA (token) pada pita karakter: 10/15/09 FNA/IF2030/Mesin Kata 10

Studi Kasus Mesin Kata Panjang Rata-Rata Kata Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong),yang diakhiri titik, hitunglah panjang rata-rata kata yang ada pada pita tsb. Panjang kata rata-rata tidak terdefinisi jika pita kosong atau pita tidak mengandung kata (hanya berisi 'blank' dan titik). 10/15/09 FNA/IF2030/Mesin Kata 11

Panjang Rata-Rata Kata Versi 1 Akhir dari proses adalah sebuah boolean, yang akan berisi true jika kata terakhir telah diakuisisi dan diproses Kata diakuisisi mulai dari karakter pertama sesudah akhir kata (atau karakter pertama pita untuk kata pertama) Akuisisi kata terakhir menghasilkan 'kata kosong'. Diktat Pemrograman Prosedural hlm. 172 s.d. 174 10/15/09 FNA/IF2030/Mesin Kata 12

Panjang Rata-Rata Kata Versi 2 Akhir dari proses adalah sebuah kata yang 'kosong', yaitu panjangnya NOL. Model akuisisi kata sama dengan Versi 1. Diktat Pemrograman Prosedural hlm. 175 s.d. 176 10/15/09 FNA/IF2030/Mesin Kata 13

Panjang Rata-Rata Kata Versi 3 Mengabaikan blank pada awal pita dan memproses sisanya initakses Model akuisisi kata TANPA MARK, artinya kata yang diakuisisi tidak pernah merupakan kata kosong Model akuisisi ini mengharuskan adanya suatu prosedur INITAKSES, yang memposisikan CC pada karakter pertama kata pertama Diktat Pemrograman Prosedural hlm. 177 s.d. 178 10/15/09 FNA/IF2030/Mesin Kata 14

Mesin Kata dan Tabel Definisi type Kata: type Kata : <TabKata : array [1..NMax] of character, Length : integer > { TabKata adalah tempat penampung/container kata, Length menyatakan panjangnya kata } Mesin Kata: Adaptasi salah satu versi akuisisi kata pada studi kasus Panjang Rata-Rata Kata 10/15/09 FNA/IF2030/Mesin Kata 15

Mesin Kata Akuisisi Kata - Versi 3 (1) KAMUS UMUM {***** Mesin lain yang dipakai *****} use MSNKAR {*****Konstanta*****} constant MARK : character =. constant BLANK : character = constant NMax : integer = 50 { jumlah maksimum karakter suatu kata } {*****Definisi Type Kata*****} type Kata : < TabKata : array [1..NMax] of character, Length : integer > { TabKata adalah tempat penampung/container kata, Length menyatakan panjangnya kata} 10/15/09 FNA/IF2030/Mesin Kata 16

Mesin Kata Akuisisi Kata - Versi 3 (2) {***** Primitif-Primitif Mesin Kata *****} procedure Ignore_Blank { Mengabaikan satu atau beberapa BLANK } { I.S. : CC sembarang } { F.S. : CC BLANK atau CC = MARK } procedure INITAKSES { Mengabaikan satu atau beberapa BLANK di awal pita karakter } { I.S. : CC sembarang} { F.S. : CC = MARK atau CC = karakter pertama dari kata yang akan diakuisisi } 10/15/09 FNA/IF2030/Mesin Kata 17

Mesin Kata Akuisisi Kata - Versi 3 (3) procedure ADVKATA (output CKata : Kata) { I.S. : CC adalah karakter pertama kata yang akan diakuisisi } { F.S. : CKata adalah kata terakhir yang sudah diakuisisi, CC adalah karakter pertama dari kata berikutnya, mungkin MARK } { Proses : Akuisisi kata menggunakan procedure SalinKata } procedure SalinKata (output CKata : Kata) { Mengakuisisi kata, menyimpan dalam CKata } { I.S. : CC adalah karakter pertama dari kata } { F.S. : CKata berisi kata yang sudah diakuisisi, jika karakternya melebihi NMax, sisa kata dibuang; CC = BLANK atau CC = MARK; CC adalah karakter sesudah karakter terakhir yang diakuisisi } 10/15/09 FNA/IF2030/Mesin Kata 18

Studi Kasus Mesin Kata Hitung While Diberikan suatu pita karakter yang mengandung abjad, blank, dan diakhiri titik, harus dicari kemunculan kata while pada pita tersebut Diktat Pemrograman Prosedural hlm. 182 s.d. 185 10/15/09 FNA/IF2030/Mesin Kata 19

Fungsi/Prosedur Lain Fungsi KataSama Hitung while Palindrom Anagram Frekuensi kata pertama Dll. 10/15/09 FNA/IF2030/Mesin Kata 20

Mesin Karakter dan Mesin Kata Dalam Bahasa C 10/15/09 FNA/IF2030/Mesin Kata 21

mesinkar.h #ifndef MESIN_KAR #define MESIN_KAR #include "boolean.h" extern char CC; extern boolean EOP; void START(); /* Mesin siap dioperasikan. Pita disiapkan untuk dibaca. Karakter pertama yang ada pada pita posisinya adalah pada jendela. I.S. : sembarang F.S. : CC adalah karakter pertama pada pita Jika CC!= '.' maka EOP akan padam (false) Jika CC = '.' maka EOP akan menyala (true) */ void 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) */ #endif

mesinkar.c #include <stdio.h> #include "boolean.h" #include "mesinkar.h" char CC; boolean EOP; FILE *pita; void START() { /* Mesin siap dioperasikan. Pita disiapkan untuk dibaca. Karakter pertama yang ada pada pita posisinya adalah pada jendela. I.S. : sembarang F.S. : CC adalah karakter pertama pada pita Jika CC!= '.' maka EOP akan padam (false) Jika CC = '.' maka EOP akan menyala (true) */ void 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) */ fscanf(pita,"%c",&cc); EOP = (CC=='.'); if (EOP) fclose(pita); } } pita = fopen("pitakar.txt","r"); ADV();

mesinkata.h (model akuisisi v.2) #ifndef MESINKATA_H #define MESINKATA_H #include "mesinkar.h" typedef struct { char TabKata[100]; int Length; } Kata; extern Kata KT; void IgnoreBlank(); /* Mengabaikan satu atau beberapa BLANK I.S. : CC sembarang F.S. : CC!= BLANK atau CC = MARK */ void STARTKATA(); /* I.S. : CC sembarang */ F.S. : KT.Length = 0, dan CC = Mark; atau KT.Length!= 0, KT adalah kata yang sudah diakuisisi, CC karakter pertama sesudah karakter terakhir kata */ void ADVKATA(); /* I.S. : KT.Length!= 0; CC adalah karakter sesudah karakter terakhir dari kata yang sudah diakuisisi F.S. : Jika CC = MARK, maka KT.Length = 0; atau KT.Length!= 0, KT adalah kata terakhir yang sudah diakuisisi; CC karakter pertama sesudah karakter terakhir kata */ #endif

mesinkata.c (model akuisisi v.2) #include "mesinkar.h" #include "mesinkata.h" Kata KT; void IgnoreBlank() { /* Mengabaikan satu atau beberapa BLANK I.S. : CC sembarang F.S. : CC!= BLANK atau CC = MARK */ while (!EOP && CC==' ') ADV(); } void STARTKATA() { /* I.S. : CC sembarang */ F.S. : KT.Length = 0, dan CC = Mark; atau KT.Length!= 0, KT adalah kata yang sudah diakuisisi, CC karakter pertama sesudah karakter terakhir kata */ START(); ADVKATA(); } void ADVKATA() { /* I.S. : KT.Length!= 0; CC adalah karakter sesudah karakter terakhir dari kata yang sudah diakuisisi F.S. : Jika CC = MARK, maka KT.Length = 0; atau KT.Length!= 0, KT adalah kata terakhir yang sudah diakuisisi; CC karakter pertama sesudah karakter terakhir kata */ IgnoreBlank(); KT.Length=0; while (!EOP && CC!=' ') { KT.TabKata[KT.Length]=CC; KT.Length++; KT.TabKata[KT.Length]=0; ADV(); } }

mainkata.c #include <stdio.h> #include "mesinkata.h" int main() { STARTKATA(); while (KT.Length>0) { printf("%s\n",kt.tabkata); ADVKATA(); } return 0; }

Cara Kompilasi $ cc c mesinkar.c $ cc c mesinkata.c $ cc c mainkata.c $ cc o mainkata mesinkar.o mesinkata.o mainkata.o Atau cara lain: $ cc o mainkata mesinkar.c mesinkata.c mainkata.c