algoritma & pemograman 1 : pemrosesan teks

18
Nama Kelompok : Yuda andika rahman Tri dian Ghiffari N M Muhammad maqbul Andriansyah

Upload: muhammad-martayuda

Post on 19-Jun-2015

451 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Algoritma & Pemograman 1 : Pemrosesan Teks

Nama Kelompok :

Yuda andika rahmanTri dian

Ghiffari N M Muhammad maqbul

Andriansyah

Page 2: Algoritma & Pemograman 1 : Pemrosesan Teks

Pemprosesan Teks

Page 3: Algoritma & Pemograman 1 : Pemrosesan 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.

•  

Page 4: Algoritma & Pemograman 1 : Pemrosesan Teks

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).

Page 5: Algoritma & Pemograman 1 : Pemrosesan Teks

• 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 karakter-karakter, seperti yang di bawah ini :

»

» Suatu teks P didefinisikan di dalam bagian DEKLARASI sebagai berikut :

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

DEKLARASIP : teks ( P adalah perubah teks)

Page 6: Algoritma & Pemograman 1 : Pemrosesan 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.

•  •  

Page 7: Algoritma & Pemograman 1 : Pemrosesan Teks

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

-

Page 8: Algoritma & Pemograman 1 : Pemrosesan Teks

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

Page 9: Algoritma & Pemograman 1 : Pemrosesan Teks

• 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.

• 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.

DEKLARASIC : char ( karakter yang sedang ditunjuk oleh

pointer baca )

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 ‘.’)

Page 10: Algoritma & Pemograman 1 : Pemrosesan Teks

• Notasi yang digunakan untuk membaca karakter dari teks P adalah :

• 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 ‘.’)

Read(P;C) ( Membaca karakter yang ditunjuk oleh pointer baca dariTeks P. Karakter yang dibaca disimpan di

dalampeubah C)

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 :

n0RESET_TEKSRead (P:C)While C≠ ‘ . ‘ do

nn+1read (P,C) ( baca karakter berikutnya )

endwhile( c = ‘ . ‘ )

  

Page 11: Algoritma & Pemograman 1 : Pemrosesan Teks

• 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 :

nb0RESET_TEKSRead (P:C)While C≠ ‘ . ‘ do

If C= ’B’ thennbnb + 1endifread (P,C) ( baca karakter berikutnya )

endwhile( c = ‘ . ‘ )

 

Page 12: Algoritma & Pemograman 1 : Pemrosesan Teks

• 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_TEKSRead (P:C)if C= ‘ . ‘ then (teks kosong)nb -9999else (C≠ ’.’ )

nb0If C= ’B’ thennbnb + 1endifread (P,C) ( karakter C berikutnya )until C= ‘.’

Endif 

Page 13: Algoritma & Pemograman 1 : Pemrosesan Teks

• Pemanggilan HITUNG_BANYAK_KAR_B di dalam program utama adalah sebagai berikut :

– Menghitung banyak pasangan huruf’AN’ di dalam teks. Misalnya pada teks dibawah ini banyak ‘AN’ ada 3 buah,

Program HITUNG_BANYAK_KARAKTER_B ( program utama untuk menghitung banyak karakter ‘B’ di dalam teks ) DEKLARASI

C : charCb : 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

PANDANGAN J.

Page 14: Algoritma & Pemograman 1 : Pemrosesan Teks

• 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_TEKSRead (P:C)if C=‘ . ‘ then ( teks kosong)

nAN-99else ( c≠ ‘.’ )

nAN 0repeat

If C= ’A’ thenRead (P;C)If C = ‘N’ then

nAN nAN +1endifendifread (P,C)until C= ‘.’

endif

Page 15: Algoritma & Pemograman 1 : Pemrosesan Teks

• Prosedure HITUNG_BANYAK_AN ini akan salah untuk kasus karakter sebelum titik adalah ‘A’, seperti pita berikut :

▪ 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 ‘.’.

KENTANGD UA.

Page 16: Algoritma & Pemograman 1 : Pemrosesan Teks

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_TEKSRead (P:C)if C=‘ . ‘ then ( teks kosong)

nAN-99else ( 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’ thenRead (P:C)If C= ‘N’ then

nAN nAN + 1endif

endif until C= ‘ .’endif

Page 17: Algoritma & Pemograman 1 : Pemrosesan Teks

• 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

Page 18: Algoritma & Pemograman 1 : Pemrosesan Teks

END

Thanks For Wacthing