SlideShare una empresa de Scribd logo
1 de 18
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? Slide
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, SlideKick, 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 “”) 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 :
n0
RESET_TEKS
Read (P:C)
While C≠ ‘ . ‘ do
nn+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 :
nb0
RESET_TEKS
Read (P:C)
While C≠ ‘ . ‘ do
If C= ’B’ then
nbnb + 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≠ ’.’ )
nb0
If C= ’B’ then
nbnb + 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 huruf’AN’ 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 adalah’N’, 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

Más contenido relacionado

Similar a HITUNG_AN

Algoritma & pemrograman 2
Algoritma & pemrograman 2Algoritma & pemrograman 2
Algoritma & pemrograman 2Mulyana Yana
 
Laporan praktikum iii visual basic
Laporan praktikum iii visual basicLaporan praktikum iii visual basic
Laporan praktikum iii visual basicrahmi wahyuni
 
Minggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptxMinggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptxAnnaUrnika1
 
Algoritma Pencarian String matching
Algoritma Pencarian String matching Algoritma Pencarian String matching
Algoritma Pencarian String matching Kukuh Setiawan
 
pengenalan c+
pengenalan c+pengenalan c+
pengenalan c+aks247
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemogramanPANJI_ADITYAN
 
Algoritma dan Pemrograman
Algoritma dan PemrogramanAlgoritma dan Pemrograman
Algoritma dan PemrogramanDiana Anggraini
 
Dasar pemrograman basic
Dasar pemrograman basicDasar pemrograman basic
Dasar pemrograman basicYang Terluka
 
MATERI TYPE DATA.pptx
MATERI TYPE DATA.pptxMATERI TYPE DATA.pptx
MATERI TYPE DATA.pptxppurnama
 
Dasar dasar turbo pascal
Dasar dasar turbo pascalDasar dasar turbo pascal
Dasar dasar turbo pascalDuriani
 
2 konsep dasar pascal
2   konsep dasar pascal2   konsep dasar pascal
2 konsep dasar pascalachieasik89
 

Similar a HITUNG_AN (20)

Pemrograman #11
Pemrograman #11Pemrograman #11
Pemrograman #11
 
C++
C++C++
C++
 
Algoritma & pemrograman 2
Algoritma & pemrograman 2Algoritma & pemrograman 2
Algoritma & pemrograman 2
 
Modul latihan-c -
Modul latihan-c -Modul latihan-c -
Modul latihan-c -
 
Alwin pascal-02
Alwin pascal-02Alwin pascal-02
Alwin pascal-02
 
Alwin pascal-02
Alwin pascal-02Alwin pascal-02
Alwin pascal-02
 
Laporan praktikum iii visual basic
Laporan praktikum iii visual basicLaporan praktikum iii visual basic
Laporan praktikum iii visual basic
 
Minggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptxMinggu 4 - Notasi Pseudocode.pptx
Minggu 4 - Notasi Pseudocode.pptx
 
Algoritma Pencarian String matching
Algoritma Pencarian String matching Algoritma Pencarian String matching
Algoritma Pencarian String matching
 
pengenalan c+
pengenalan c+pengenalan c+
pengenalan c+
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Pertemuan 6 Fungsi String
Pertemuan 6 Fungsi StringPertemuan 6 Fungsi String
Pertemuan 6 Fungsi String
 
Algoritma dan Pemrograman
Algoritma dan PemrogramanAlgoritma dan Pemrograman
Algoritma dan Pemrograman
 
Dasar pemrograman basic
Dasar pemrograman basicDasar pemrograman basic
Dasar pemrograman basic
 
MATERI TYPE DATA.pptx
MATERI TYPE DATA.pptxMATERI TYPE DATA.pptx
MATERI TYPE DATA.pptx
 
Dasar dasar turbo pascal
Dasar dasar turbo pascalDasar dasar turbo pascal
Dasar dasar turbo pascal
 
File editor nano
File editor nanoFile editor nano
File editor nano
 
2 konsep dasar pascal
2   konsep dasar pascal2   konsep dasar pascal
2 konsep dasar pascal
 
pert 2.pptx
pert 2.pptxpert 2.pptx
pert 2.pptx
 

Más de Muhammad Martayuda

Más de Muhammad Martayuda (20)

Uu no. 32 tahun 2002 tentang penyiaran
Uu no. 32 tahun 2002 tentang  penyiaranUu no. 32 tahun 2002 tentang  penyiaran
Uu no. 32 tahun 2002 tentang penyiaran
 
Step by-step -visual_basic_2008_express_edition_by__microsoft_corporation
Step by-step -visual_basic_2008_express_edition_by__microsoft_corporationStep by-step -visual_basic_2008_express_edition_by__microsoft_corporation
Step by-step -visual_basic_2008_express_edition_by__microsoft_corporation
 
Organisasi dan-arsitektur-komputer
Organisasi dan-arsitektur-komputerOrganisasi dan-arsitektur-komputer
Organisasi dan-arsitektur-komputer
 
Metode numerik-stmik-aub
Metode numerik-stmik-aubMetode numerik-stmik-aub
Metode numerik-stmik-aub
 
Bab1 algoritma dan-bahasanya
Bab1 algoritma dan-bahasanyaBab1 algoritma dan-bahasanya
Bab1 algoritma dan-bahasanya
 
Teori graph 1_2
Teori graph 1_2Teori graph 1_2
Teori graph 1_2
 
Tabel pedanan
Tabel pedananTabel pedanan
Tabel pedanan
 
Konversi bilangan desimal
Konversi bilangan desimalKonversi bilangan desimal
Konversi bilangan desimal
 
Derajatgraf
DerajatgrafDerajatgraf
Derajatgraf
 
Spl
SplSpl
Spl
 
Matematika1bangrs
Matematika1bangrsMatematika1bangrs
Matematika1bangrs
 
Teori Graph : vektor
Teori Graph : vektorTeori Graph : vektor
Teori Graph : vektor
 
Graph tak berarah_pertemuan_3_
Graph tak berarah_pertemuan_3_Graph tak berarah_pertemuan_3_
Graph tak berarah_pertemuan_3_
 
Bab 1-matriks
Bab 1-matriksBab 1-matriks
Bab 1-matriks
 
Aljabar linier-matriks1
Aljabar linier-matriks1Aljabar linier-matriks1
Aljabar linier-matriks1
 
Aljabar linier : Notasi Matriks
Aljabar linier : Notasi MatriksAljabar linier : Notasi Matriks
Aljabar linier : Notasi Matriks
 
Matriks & Operasinya Matriks invers
Matriks  & Operasinya Matriks inversMatriks  & Operasinya Matriks invers
Matriks & Operasinya Matriks invers
 
Algoritma pencarian (searching algorithm)
Algoritma pencarian (searching algorithm)Algoritma pencarian (searching algorithm)
Algoritma pencarian (searching algorithm)
 
15 integralisme versi 2 2
15 integralisme versi 2 215 integralisme versi 2 2
15 integralisme versi 2 2
 
Path dan sirkuit_pertemuan_4_
Path dan sirkuit_pertemuan_4_Path dan sirkuit_pertemuan_4_
Path dan sirkuit_pertemuan_4_
 

HITUNG_AN

  • 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? Slide 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, SlideKick, 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 “”) 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 : n0 RESET_TEKS Read (P:C) While C≠ ‘ . ‘ do nn+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 : nb0 RESET_TEKS Read (P:C) While C≠ ‘ . ‘ do If C= ’B’ then nbnb + 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≠ ’.’ ) nb0 If C= ’B’ then nbnb + 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 huruf’AN’ 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 adalah’N’, 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