際際滷

際際滷Share a Scribd company logo
Nama Kelompok :
Yuda andika rahman
Tri dian
Ghiffari N M
Muhammad maqbul
Andriansyah
Pemprosesan Teks








Pemprosesan Teks
Pernahkan anda melihat gambar slide yang diproyeksikan oleh slide proyector? 際際滷
adalah sekumpulan film negatif yang tersusun secara beruntun (sequential), yang
untuk melihat gambarnya, film tersebut digerakan satu per satu ke lubang lensa
proyektor. Proyektor memproyeksikan gambar slide ke layar.
Cara yang sama juga berlaku pada film bioskop, bedanya film bioskop digerakkan
sangat cepat sehingga kesan mata kita menangkap gambar-gambar itu bergarak.
Objek lain yang digerakkan secara beruntun adalah pita kaset. Kalau kita ingin
mendengarkan lagu yang ada ditengah kaset, kita harus memutar pita dari posisi
awal sampai pertengahan kaset.
Kumpulan film negatif dalam slide itu dapat dianggap sebagai sekumpulan data yang
tersusun secara beruntun. Tiap-tiap data dalam runtunan itu diakses satu per satu
dari awal sampai akhir. Diakses artinya data tersebut dicapai lau diproses bergantung
pada proses yang diinginkan. Model pengaksesan data yang tersusun secara
beruntun itu dinamakan model pengkaksesan beruntun.




Susunan Teks
Mengakses data yang tersusun secara beruntun ini akan sering kita jumpai dalam
pemrograman. Contoh data seperti itu adalah larik,arsip beruntun (sequential
file),arsip teks (text file) dan senari berkait(linked list).
Arsip teks untuk selanjutnya kita sebut teks adalah arsip yang terdiri atas deretan
karakter. Untaian karakter itu dapat membentuk sebuah kata. Yang dimaksud
dengan kata adalah kelompok karakter yang dipisahkan dengan kelompok lain
dengan satu atau lebih spasi. Pada implementasinya, di dalam teks ditambahkan
akhir baris (end-of-line) yang membedakan sebuah baris teks dengan baris lainnya
(end-of-line terdiri dari karakter line-feed). Contoh teks adalah program sumber
(source program). Pascal (yaitu arsip *.PAS) atau C (arsip *.C), arsip README.TXT
pada beberapa program aplikasi tertentu, arsip AUTOEXEC.BAT pada sistem
operasi DOS, dan lain-lain. Teks dapat dibuat dengan pengolah kata teks, seperti
Notepade, 際際滷Kick, editor kompilator bahasa pemrogaman seperti Turbo Pascal
atau Turbo C, atau dengan pengolah kata Microsof Word asalkan disimpan (save
as)sebagai arsip teks (Teks Only).




Pemrosesan teks cukup banyak ditemui di dalam aplikasi pemrograman. Misalnya
program pengolah kata (text editor) adalah program yang mengolah teks.
Pemrosesan teks antara lain proses mencari (search) sebuah karakter atau
string,menghitung jumlah karakter atau jumlah kata, menempatkan pointer
pembacaan ke karkter/kata tertentu, dan sebagainya. Aplikasi lain yang memproses
teks adalah kompilator bahasa pemrograman. Tugas pertama kompilator adalah
membaca program sumber untuk mengambil simbol-simbol (keyword, peubah
,tetapan ,dsb). Komponen kompilator yang melakukan aktivitas ini dinamakan
program scaner.
Dalam meninjau model pengaksesan beruntun pada teks, kita tidak memandang
sebuah teks disusun oleh baris-baris teks. Andaikan baris-baris sebuah teks dapat
kita gunting lalu ujung kanan baris pertama kita sambung dengan ujung baris kedua ,
ujung kanan baris kedua disambung dengan ujung kiri baris ketiga, begitu
seterusnya. Akhirnya , kita memperoleh sebuah pita yang berisi runtunan karakterkarakter, seperti yang di bawah ini :
損

Halo, apa kabar? Saya disini sedang belajar algoritma.............

損 Suatu teks P didefinisikan di dalam bagian DEKLARASI sebagai
berikut :
DEKLARASI
P : teks ( P adalah perubah teks)
Tanda akhir Teks







Pemrosesan teks yang utama adalah proses pembacaan. Karena teks berisi
runtunan karakter, maka pembacaan teks adalah membaca karakter demi karakter
secara beruntun, mulai dari awal teks sampai akhir teks. Akhir teks ditandai dengan
sebuah karakter khusus, yang dibedakan dengan karakter-karakter lainnya. Bila
pembacaan teks bertemu dengan karakter khusus tersebut, maka proses pembacaan
teks dihentikan.
Di dalam buku ini, kita mendefinisikan karakter titik (.) sebagai akhir teks (tetapi, ini
bukan satu-satunya karakter akhir teks yang dapat digunakan. Anda juga dapat
menggunakan karakter lain seperti #,*,$, dan sebagainya, asalkan di dalam teks
itu sendiri karakter tersebut tidak pernah digunakan ). Karakter titik ditaruh sesudah
karakter terakhir. Kita mengartikan karakter titik bukan bagian dari elemen teks.
Sekali lagi, karakter titik hanya sebagai penanda akhir arsip. Sembarang teks yang
kita susun harus diakhiri dengan titik agar algoritma yang kita susun berlaku.
Definisi Teks kosong


Pemrosesan teks selalu mempertimbangkan keadaan awal teks, yaitu kosong atau
tidak kosong. Sebuah teks mungkin saja kosong. Pertama-tama kita harus
mendefinisikan makna kosong itu sendiri. Karena kita telah membuat perjanjian
bahwa sembarang teks harus diakhiri dengan karakter titik , maka teks kosong
adalah teks yang hanya berisi karakter titik. Pada teks kosong, jumlah unsurnya
adalah 0, seperti dibawah ini

-
Pembacaan Teks


Pembacaan teks dimulai dari awal teks (dari kiri ke kanan). Kita mengandaikan
ada sebuah pointer (dilambangkan dengan b) yang menunjuk ke karakter yang akan
dibaca. Setiap kali karakter yang ditunjuk oleh pointer selesai dibaca, pointer
berpindah secara otomatis ke karakter berikutnya. Karakter yang sedang ditunjuk
oleh pointer dinyatakan di dalam perubah C.

KRMS9$SATE




Contoh di atas memperlihatkan pointer menunjuk karakter M. Jika karakter ini
dibaca, maka C berisi M. Karakter K dan karakter R sudah dibaca sebelumnya,
sedangkan karakter S,9,$, dan seterusnya belum dibaca. Pembacaan teks hanya
dilakukan selama C.. jika C = . Dikatakan akhir pita telah dicapai dan pembacaan
pita dihentikan.
Nama perubah C didefinisikan di dalam bagian DEKLARSI program utama, sehingga
ia dikenal di seluruh bagian algoritma termasuk prosedur dan fungsi yang dipakai
oleh algoritma.
DEKLARASI
C : char ( karakter yang sedang ditunjuk oleh
pointer baca )

 Didefinisikan RESET_TEKS adalah prosedur universal untuk teks.
RESET_TEKS menyebabkan pointer akan menunjuk pada karakter pertama
di teks. Jika teks kosong,pointer menunjuk karakter titik.
Procedure RESET_TEKS
( Menyiapkan teks pada posisi awal. )
( K. Awal : sembarang )
( K. Akhir : pointer menunjuk pada karakter pertama di dalam teks. Akibat pemanggilan
prosedur ini, pointer menunjuk ke karakter pertama teks. Karakter yang ditunjuk mungkin .)


Notasi yang digunakan untuk membaca karakter dari teks P adalah :
Read(P;C) ( Membaca karakter yang ditunjuk oleh pointer baca dari
Teks P. Karakter yang dibaca disimpan di
dalampeubah C)





Di bawah ini diberikan beberapa contoh kasus pemrosesan teks. Algoritmanya diyulis
dalam bentuk prosedur atau fungsi. Pemanggilan prosedur dapat dilakukan dari
program utama atau dari prosedur lain.
Menghitung banyaknya karakter di dalam pita (tidak termasuk karakter .)
Prosedure HITUNG_BANYAK_KAR (output n : integer)
( Menghitung banyaknya karakter di dalam teks. )
( K. Awal : sembarang. )
( K. Akhir : n berisi banyaknya karakter di dalam teks. )
DEKLARASI
( tidak ada )
DESKRIPSI :
n0
RESET_TEKS
Read (P:C)
While C  .  do
nn+1
read (P,C) ( baca karakter berikutnya )
endwhile
(c=.)


Menghitung jumlah karakter B di dalam teks.

Prosedure HITUNG_BANYAK_KAR_B (output nb : integer)
( Menghitung banyaknya karakter B di dalam teks. )
( K. Awal : nb belum terdefinisi nilainya. )
( K. Akhir : nb berisi banyaknya karakter B di dalam pita. )
DEKLARASI
( tidak ada )
DESKRIPSI :
nb0
RESET_TEKS
Read (P:C)
While C  .  do
If C= B then
nbnb + 1
endif
read (P,C) ( baca karakter berikutnya )
endwhile
(c=.)


Algoritma HITUNG_BANYAK_KAR_B diatas masih memiliki kelemahan. Baik pada
teks kosong maupun pada teks yang sama sekali tidak berisi karakter B, nilai nb di
akhir prosedur adalah nol. Karena itu, kita harus membedakan nilai nb untuk teks
kosong dan nilai nb untuk teks yang tidak berisi karakter B. Kasus teks kosong
harus ditangani secara khusus. Jika teks kosong, maka nb diisi dengan nilai -99.
Prosedure HITUNG_BANYAK_KAR_B (output nb : integer)
( Menghitung banyak karakter B di dalam teks. )
( K. Awal : nb belum terdefinisi nilainya. )
( K. Akhir : nb berisi banyaknya karakter B di dalam teks ; jika teks kosong, maka nb diisi
-99 )
DEKLARASI
( tidak ada )
DESKRIPSI :
RESET_TEKS
Read (P:C)
if C=  .  then (teks kosong)
nb -9999
else (C . )
nb0
If C= B then
nbnb + 1
endif
read (P,C) ( karakter C berikutnya )
until C= .
Endif


Pemanggilan HITUNG_BANYAK_KAR_B di dalam program utama adalah sebagai
berikut :
Program HITUNG_BANYAK_KARAKTER_B
( program utama untuk menghitung banyak karakter B di dalam teks )
DEKLARASI
C : char
Cb : integer ( banyak hurup B di dalam pita )
Procedure RESET_TEKS
(menyiapkan teks pada posisi awal. Pointer baca menunjuk pada karakter
pertama di dalam teks. Karakter pertama mungkin . )
DESKRIPSI :
HITUNG_BANYAK_KAR-B(cb)
If cb=-99 then
Write(teks kosong)
Else
Write(cb)
Endif

 Menghitung banyak pasangan hurufAN di dalam teks. Misalnya pada
teks dibawah ini banyak AN ada 3 buah,
PANDANGAN J.



Versi 1 (SALAH)
Gagasan algoritma ini adalah memeriksa apakah karakter yang sedang dibaca
merupakan huruf A. Jika ya, maka baca karakter berikutnya. Jika karakter
berikutnya adalahN, naikkan pencacah yang mencatat banyaknya AN.
Procedure HITUNG_BANYAK_AN (output nAN : integer)
( Menghitung banyak pasangan huruf AN di dalam teks. )
( K. Awal : nAN belum terdefinisi nilainya. )
( K. Akhir : nAN berisi banyaknya AN di dalam teks. Jika teks kosong, maka nAN diisi nilai
-99. )
DEKLARASI
( tidak ada )
DESKRIPSI :
RESET_TEKS
Read (P:C)
if C= .  then ( teks kosong)
nAN-99
else ( c . )
nAN  0
repeat
If C= A then
Read (P;C)
If C = N then
nAN nAN +1
endif
endif
read (P,C)
until C= .
endif


Prosedure HITUNG_BANYAK_AN ini akan salah untuk kasus karakter sebelum titik
adalah A, seperti pita berikut :
KENTANGD UA.





Ketika karakter yang dibaca menunjuk A, teks dibaca lagi satu karkter. Pointer
sekarang menunjuk . Setelah pemeriksaan if c = N teks dibaca lagi satu karakter,
namun karena teks sudah dicapai, algoritma akan salah fatal !
Algoritma prosedure HITUNG_BANYAK_AN diperbaiki dengan membuat kalang
while-do yang akan terus membaca teks selama karakter yang dibaca tidak sama
dengan A dan tidak sama dengan ..
Procedure HITUNG_BANYAK_AN (output nAN : integer)
( Menghitung banyak pasangan huruf AN di dalam teks. )
( K. Awal : nAN belum terdefinisi nilainya. )
( K. Akhir : nAN berisi jumlah AN di dalam teks. Jika teks kosong, maka nAN diisi nilai
-99. )
DEKLARASI
( tidak ada )
DESKRIPSI :
RESET_TEKS
Read (P:C)
if C= .  then ( teks kosong)
nAN-99
else ( c . )
nAN  0
repeat
(baca teks sampai ketemu A atau
. )
while ( C A) and (C . ) do
read (P:C)
endwhile
(C= A or c = . )
If C = A then
Read (P:C)
If C= N then
nAN  nAN + 1
endif
endif
until C=  .
endif



Versi 2 (Benar)
Gagasan Versi dua ini adalah dengan menggunakan dua buah nama peubah,
c_yang_lalu dan c. Peubah pertama menyimpan karakter yang terakhir kali dibaca,
sedangkan peubah kedua menyimpan karakter yang sedang ditunjuk oleh pointer
baca. Setiap kali membaca teks periksa apakah c_yang_lalu=A dan c=N. Peubah
c_yang_lalu diinisialisasi dengan karakter spasi.

Procedure HITUNG_BANYAK_AN (output nAN : integer )
( menghitung banyak pasangan huruf AN di dalam teks. )
( K. Awal : nAN belum terdefinisi hasilnya )
( K. Akhir : nAN berisi banyaknya AN di dalam teks. Jika teks kosong.
Maka nAN diisi nilai -99)
DEKLARASI
C_yang_lalu : char
END
Thanks For Wacthing

More Related Content

Algoritma & Pemograman 1 : Pemrosesan Teks

  • 1. Nama Kelompok : Yuda andika rahman Tri dian Ghiffari N M Muhammad maqbul Andriansyah
  • 3. Pemprosesan Teks Pernahkan anda melihat gambar slide yang diproyeksikan oleh slide proyector? 際際滷 adalah sekumpulan film negatif yang tersusun secara beruntun (sequential), yang untuk melihat gambarnya, film tersebut digerakan satu per satu ke lubang lensa proyektor. Proyektor memproyeksikan gambar slide ke layar. Cara yang sama juga berlaku pada film bioskop, bedanya film bioskop digerakkan sangat cepat sehingga kesan mata kita menangkap gambar-gambar itu bergarak. Objek lain yang digerakkan secara beruntun adalah pita kaset. Kalau kita ingin mendengarkan lagu yang ada ditengah kaset, kita harus memutar pita dari posisi awal sampai pertengahan kaset. Kumpulan film negatif dalam slide itu dapat dianggap sebagai sekumpulan data yang tersusun secara beruntun. Tiap-tiap data dalam runtunan itu diakses satu per satu dari awal sampai akhir. Diakses artinya data tersebut dicapai lau diproses bergantung pada proses yang diinginkan. Model pengaksesan data yang tersusun secara beruntun itu dinamakan model pengkaksesan beruntun.
  • 4. Susunan Teks Mengakses data yang tersusun secara beruntun ini akan sering kita jumpai dalam pemrograman. Contoh data seperti itu adalah larik,arsip beruntun (sequential file),arsip teks (text file) dan senari berkait(linked list). Arsip teks untuk selanjutnya kita sebut teks adalah arsip yang terdiri atas deretan karakter. Untaian karakter itu dapat membentuk sebuah kata. Yang dimaksud dengan kata adalah kelompok karakter yang dipisahkan dengan kelompok lain dengan satu atau lebih spasi. Pada implementasinya, di dalam teks ditambahkan akhir baris (end-of-line) yang membedakan sebuah baris teks dengan baris lainnya (end-of-line terdiri dari karakter line-feed). Contoh teks adalah program sumber (source program). Pascal (yaitu arsip *.PAS) atau C (arsip *.C), arsip README.TXT pada beberapa program aplikasi tertentu, arsip AUTOEXEC.BAT pada sistem operasi DOS, dan lain-lain. Teks dapat dibuat dengan pengolah kata teks, seperti Notepade, 際際滷Kick, editor kompilator bahasa pemrogaman seperti Turbo Pascal atau Turbo C, atau dengan pengolah kata Microsof Word asalkan disimpan (save as)sebagai arsip teks (Teks Only).
  • 5. Pemrosesan teks cukup banyak ditemui di dalam aplikasi pemrograman. Misalnya program pengolah kata (text editor) adalah program yang mengolah teks. Pemrosesan teks antara lain proses mencari (search) sebuah karakter atau string,menghitung jumlah karakter atau jumlah kata, menempatkan pointer pembacaan ke karkter/kata tertentu, dan sebagainya. Aplikasi lain yang memproses teks adalah kompilator bahasa pemrograman. Tugas pertama kompilator adalah membaca program sumber untuk mengambil simbol-simbol (keyword, peubah ,tetapan ,dsb). Komponen kompilator yang melakukan aktivitas ini dinamakan program scaner. Dalam meninjau model pengaksesan beruntun pada teks, kita tidak memandang sebuah teks disusun oleh baris-baris teks. Andaikan baris-baris sebuah teks dapat kita gunting lalu ujung kanan baris pertama kita sambung dengan ujung baris kedua , ujung kanan baris kedua disambung dengan ujung kiri baris ketiga, begitu seterusnya. Akhirnya , kita memperoleh sebuah pita yang berisi runtunan karakterkarakter, seperti yang di bawah ini : 損 Halo, apa kabar? Saya disini sedang belajar algoritma............. 損 Suatu teks P didefinisikan di dalam bagian DEKLARASI sebagai berikut : DEKLARASI P : teks ( P adalah perubah teks)
  • 6. Tanda akhir Teks Pemrosesan teks yang utama adalah proses pembacaan. Karena teks berisi runtunan karakter, maka pembacaan teks adalah membaca karakter demi karakter secara beruntun, mulai dari awal teks sampai akhir teks. Akhir teks ditandai dengan sebuah karakter khusus, yang dibedakan dengan karakter-karakter lainnya. Bila pembacaan teks bertemu dengan karakter khusus tersebut, maka proses pembacaan teks dihentikan. Di dalam buku ini, kita mendefinisikan karakter titik (.) sebagai akhir teks (tetapi, ini bukan satu-satunya karakter akhir teks yang dapat digunakan. Anda juga dapat menggunakan karakter lain seperti #,*,$, dan sebagainya, asalkan di dalam teks itu sendiri karakter tersebut tidak pernah digunakan ). Karakter titik ditaruh sesudah karakter terakhir. Kita mengartikan karakter titik bukan bagian dari elemen teks. Sekali lagi, karakter titik hanya sebagai penanda akhir arsip. Sembarang teks yang kita susun harus diakhiri dengan titik agar algoritma yang kita susun berlaku.
  • 7. Definisi Teks kosong Pemrosesan teks selalu mempertimbangkan keadaan awal teks, yaitu kosong atau tidak kosong. Sebuah teks mungkin saja kosong. Pertama-tama kita harus mendefinisikan makna kosong itu sendiri. Karena kita telah membuat perjanjian bahwa sembarang teks harus diakhiri dengan karakter titik , maka teks kosong adalah teks yang hanya berisi karakter titik. Pada teks kosong, jumlah unsurnya adalah 0, seperti dibawah ini -
  • 8. Pembacaan Teks Pembacaan teks dimulai dari awal teks (dari kiri ke kanan). Kita mengandaikan ada sebuah pointer (dilambangkan dengan b) yang menunjuk ke karakter yang akan dibaca. Setiap kali karakter yang ditunjuk oleh pointer selesai dibaca, pointer berpindah secara otomatis ke karakter berikutnya. Karakter yang sedang ditunjuk oleh pointer dinyatakan di dalam perubah C. KRMS9$SATE
  • 9. Contoh di atas memperlihatkan pointer menunjuk karakter M. Jika karakter ini dibaca, maka C berisi M. Karakter K dan karakter R sudah dibaca sebelumnya, sedangkan karakter S,9,$, dan seterusnya belum dibaca. Pembacaan teks hanya dilakukan selama C.. jika C = . Dikatakan akhir pita telah dicapai dan pembacaan pita dihentikan. Nama perubah C didefinisikan di dalam bagian DEKLARSI program utama, sehingga ia dikenal di seluruh bagian algoritma termasuk prosedur dan fungsi yang dipakai oleh algoritma. DEKLARASI C : char ( karakter yang sedang ditunjuk oleh pointer baca ) Didefinisikan RESET_TEKS adalah prosedur universal untuk teks. RESET_TEKS menyebabkan pointer akan menunjuk pada karakter pertama di teks. Jika teks kosong,pointer menunjuk karakter titik. Procedure RESET_TEKS ( Menyiapkan teks pada posisi awal. ) ( K. Awal : sembarang ) ( K. Akhir : pointer menunjuk pada karakter pertama di dalam teks. Akibat pemanggilan prosedur ini, pointer menunjuk ke karakter pertama teks. Karakter yang ditunjuk mungkin .)
  • 10. Notasi yang digunakan untuk membaca karakter dari teks P adalah : Read(P;C) ( Membaca karakter yang ditunjuk oleh pointer baca dari Teks P. Karakter yang dibaca disimpan di dalampeubah C) Di bawah ini diberikan beberapa contoh kasus pemrosesan teks. Algoritmanya diyulis dalam bentuk prosedur atau fungsi. Pemanggilan prosedur dapat dilakukan dari program utama atau dari prosedur lain. Menghitung banyaknya karakter di dalam pita (tidak termasuk karakter .) Prosedure HITUNG_BANYAK_KAR (output n : integer) ( Menghitung banyaknya karakter di dalam teks. ) ( K. Awal : sembarang. ) ( K. Akhir : n berisi banyaknya karakter di dalam teks. ) DEKLARASI ( tidak ada ) DESKRIPSI : n0 RESET_TEKS Read (P:C) While C . do nn+1 read (P,C) ( baca karakter berikutnya ) endwhile (c=.)
  • 11. Menghitung jumlah karakter B di dalam teks. Prosedure HITUNG_BANYAK_KAR_B (output nb : integer) ( Menghitung banyaknya karakter B di dalam teks. ) ( K. Awal : nb belum terdefinisi nilainya. ) ( K. Akhir : nb berisi banyaknya karakter B di dalam pita. ) DEKLARASI ( tidak ada ) DESKRIPSI : nb0 RESET_TEKS Read (P:C) While C . do If C= B then nbnb + 1 endif read (P,C) ( baca karakter berikutnya ) endwhile (c=.)
  • 12. Algoritma HITUNG_BANYAK_KAR_B diatas masih memiliki kelemahan. Baik pada teks kosong maupun pada teks yang sama sekali tidak berisi karakter B, nilai nb di akhir prosedur adalah nol. Karena itu, kita harus membedakan nilai nb untuk teks kosong dan nilai nb untuk teks yang tidak berisi karakter B. Kasus teks kosong harus ditangani secara khusus. Jika teks kosong, maka nb diisi dengan nilai -99. Prosedure HITUNG_BANYAK_KAR_B (output nb : integer) ( Menghitung banyak karakter B di dalam teks. ) ( K. Awal : nb belum terdefinisi nilainya. ) ( K. Akhir : nb berisi banyaknya karakter B di dalam teks ; jika teks kosong, maka nb diisi -99 ) DEKLARASI ( tidak ada ) DESKRIPSI : RESET_TEKS Read (P:C) if C= . then (teks kosong) nb -9999 else (C . ) nb0 If C= B then nbnb + 1 endif read (P,C) ( karakter C berikutnya ) until C= . Endif
  • 13. Pemanggilan HITUNG_BANYAK_KAR_B di dalam program utama adalah sebagai berikut : Program HITUNG_BANYAK_KARAKTER_B ( program utama untuk menghitung banyak karakter B di dalam teks ) DEKLARASI C : char Cb : integer ( banyak hurup B di dalam pita ) Procedure RESET_TEKS (menyiapkan teks pada posisi awal. Pointer baca menunjuk pada karakter pertama di dalam teks. Karakter pertama mungkin . ) DESKRIPSI : HITUNG_BANYAK_KAR-B(cb) If cb=-99 then Write(teks kosong) Else Write(cb) Endif Menghitung banyak pasangan hurufAN di dalam teks. Misalnya pada teks dibawah ini banyak AN ada 3 buah, PANDANGAN J.
  • 14. Versi 1 (SALAH) Gagasan algoritma ini adalah memeriksa apakah karakter yang sedang dibaca merupakan huruf A. Jika ya, maka baca karakter berikutnya. Jika karakter berikutnya adalahN, naikkan pencacah yang mencatat banyaknya AN. Procedure HITUNG_BANYAK_AN (output nAN : integer) ( Menghitung banyak pasangan huruf AN di dalam teks. ) ( K. Awal : nAN belum terdefinisi nilainya. ) ( K. Akhir : nAN berisi banyaknya AN di dalam teks. Jika teks kosong, maka nAN diisi nilai -99. ) DEKLARASI ( tidak ada ) DESKRIPSI : RESET_TEKS Read (P:C) if C= . then ( teks kosong) nAN-99 else ( c . ) nAN 0 repeat If C= A then Read (P;C) If C = N then nAN nAN +1 endif endif read (P,C) until C= . endif
  • 15. Prosedure HITUNG_BANYAK_AN ini akan salah untuk kasus karakter sebelum titik adalah A, seperti pita berikut : KENTANGD UA. Ketika karakter yang dibaca menunjuk A, teks dibaca lagi satu karkter. Pointer sekarang menunjuk . Setelah pemeriksaan if c = N teks dibaca lagi satu karakter, namun karena teks sudah dicapai, algoritma akan salah fatal ! Algoritma prosedure HITUNG_BANYAK_AN diperbaiki dengan membuat kalang while-do yang akan terus membaca teks selama karakter yang dibaca tidak sama dengan A dan tidak sama dengan ..
  • 16. Procedure HITUNG_BANYAK_AN (output nAN : integer) ( Menghitung banyak pasangan huruf AN di dalam teks. ) ( K. Awal : nAN belum terdefinisi nilainya. ) ( K. Akhir : nAN berisi jumlah AN di dalam teks. Jika teks kosong, maka nAN diisi nilai -99. ) DEKLARASI ( tidak ada ) DESKRIPSI : RESET_TEKS Read (P:C) if C= . then ( teks kosong) nAN-99 else ( c . ) nAN 0 repeat (baca teks sampai ketemu A atau . ) while ( C A) and (C . ) do read (P:C) endwhile (C= A or c = . ) If C = A then Read (P:C) If C= N then nAN nAN + 1 endif endif until C= . endif
  • 17. Versi 2 (Benar) Gagasan Versi dua ini adalah dengan menggunakan dua buah nama peubah, c_yang_lalu dan c. Peubah pertama menyimpan karakter yang terakhir kali dibaca, sedangkan peubah kedua menyimpan karakter yang sedang ditunjuk oleh pointer baca. Setiap kali membaca teks periksa apakah c_yang_lalu=A dan c=N. Peubah c_yang_lalu diinisialisasi dengan karakter spasi. Procedure HITUNG_BANYAK_AN (output nAN : integer ) ( menghitung banyak pasangan huruf AN di dalam teks. ) ( K. Awal : nAN belum terdefinisi hasilnya ) ( K. Akhir : nAN berisi banyaknya AN di dalam teks. Jika teks kosong. Maka nAN diisi nilai -99) DEKLARASI C_yang_lalu : char