BAB XIV - elista:.

advertisement
1
BAB XIV
OPERASI KARAKTER
Operasi karakter diperlukan dalam beberapa bagian pengolahan. Sebenarnya
terdapat banyak sekali macam operasi yang dapat dilakukan untuk manipulasi
data tipe karakter. Sekalipun demikian, pembahasan pada bagian berikut ini
hanya akan meninjau dua operasi yang berkaiatan dengan karakter, yaitu
membalik kalimat dan mengecek kata Palindrom.
14.1. Membalik Kalimat
Sebuah contoh permasalahan sederhana dalam operasi karakter yang dapat
dikembangkan untuk menyelesaikan permasalahan serupa yang lebih komplek
adalah membalik karakter-karakter dalam suatu kalimat. Dalam hal ini proses
membalik kalimat yang dimaksud adalah dilakukan secara meyeluruh pada
setiap karakter dalam kalimat tanpa mempedulikan penggalan kata atau spasi.
Sebagai contoh, jika diketahui sebuah kalimat berikut ini :
SAAT INI SAYA SEDANG BELAJAR ALGORITMA
Setelah dibalik, maka kalimat di atas akan menjadi kalimat sebagai berikut ini :
AMTIROGLA RAJALEB GNADES AYAS INI TAAS
Untuk menyelesaikan permasalahan seperti ini, maka dapat dilakukan dengan
cara berikut ini. Mula-mula dibaca kalimat yang akan dibalik dan dihitung cacah
karakternya termasuk tanda spasi yang ada. Selanjutnya, pindahkan setiap
lokasi setiap karakter dalam kalimat asal secara berurutan dimulai pada karakter
ke-1 hingga terakhir. Karakter ke-1 dalam kalimat asal dipindahkan pada urutan
terakhir dalam kalimat hasil, karakter ke-2 dipindahkan pada urutan ke-2 dari
karakter terakhir dalam kalimat hasil, karakter ke-3 dipindahkan pada urutan ke-3
2
dari karakter terakhir dalam kalimat hasil, dan seterusnya hingga semua karakter
selesai dipindahkan.
Dengan demikian, karakter pertama dalam kalimat asal akan menempati pada
alokasi terakhir dalam kalimat hasil. Karakter terakhir dalam kalilmat asal akan
menempati lokasi pertama dalam kalimat hasil. Sedangkan karakter-karakter di
tengah akan menempati lokasi pada urutan yang terbalik pada kalimat hasil.
Sehingga secara keseluruhan akhirnya kalimat hasil merupakan kalimat baru
yang merupakan hasil kebalikan dari kalimat asal.
Jika N adalah menyatakan panjang kalimat asal yang akan dibalik termasuk
tanda spasi, KALIMAT menyatakan karakter-karakter pada kalimat asal,
TERBALIK menyatakan kalimat hasil operasi yang telah dibalik, serta I dan J
sebagai variabel pencacah dalam proses perulangan dan sekaligus berfungsi
sebagai indeks setiap karakter dalam KALIMAT. Dengan asumsi bahwa
KALIMAT dan N telah diketahui, maka algoritma prosedur untuk membalik
kalimat seperti dijelaskan di atas adalah dituliskan sebagai berikut ini.
KALIMAT adalah kalimat asal yang akan dibalik
N menyatakan cacah karakter.
TERBALIK adalah kalimat hasil operasi dalam kondisi terbalik.
1. Mulai
2. Inisialiasi
J=N
3. Poses berulang langkah-4 s/d langkah-5
FOR I = 1 to N
4. Membalik semua karakter dalam kalimat asal
TERBALIK[I] = KALIMAT[J]
5. Tentukan
J=J-1
6. Cetak hasil
7. Selesai
3
Selanjutnya, flowchart prosedur untuk membalik kalimat sebagaimana algoritma
prosedur di atas adalah ditunjukkan pada Gambar 14.1.
Mulai
Baca KALIMAT[I]
J=N
FOR I = I TO N
TERBALIK[I]=KALIMAT[J]
J=J-1
Cetak hasil
KALIMAT[J]
Selesai
Gambar 14.1 : Flowchart prosedur membalik karakter dalam kalimat
Dalam varian kasus yang lain, mungkin pembalikan kalimat harus dilakukan per
kata, bukan seluruh karakter sekaligus. Operasi ini sebenarnya merupakan
pengembangan dari operasi membalik kalimat di atas. Tentu saja perlu
modifikasi prosedur untuk menyelesaikannya. Untuk melakukan operasi
membalik kalimat per-kata perlu diketahui lokasi spasi dalam kalimat asal. Lokasi
spasi tersebut akan menentukan cacah karakter per-kata yang akan dibalik dan
cacah kata dalam kalimat. Sehingga tanda spasi akan memberikan tanda batas
ketika proses membalik kalimat dilakukan. Tanda spasi adalah berada pada
lokasi dimana karakternya sama dengan blank atau ““ atau karakter kosong.
Selanjutnya prosedur pembalikan kalimat dilakukan per kata. Setiap dijumpai
4
tanda spasi dalam kalimat, maka proses membalik kalimat akan dimulai dari awal
dan karakter setelah tanda spasi dianggap sebagai karakter pertama yang harus
dibalik.
Sebagai contoh, jika ada kalilmat sebagai berikut ;
MEMBALIK KALIMAT PER-KATA BUKAN HAL YANG SULIT
Kalimat di atas jika dibalik per-kata akan menjadi sebagai berikut ini :
KILABMEM TAMILAK ATAK-REP NAKUB LAH GNAY TILUS
Salah satu alternatif prosedur yang dapat dikembangkan untuk menyelesaikan
permasalahan di atas adalah dengan cara sebagai berikut ini. Mula-mula dicari
lokasi spasi dan sekaligus dihitung cacah kata dalam kalimat. Informasi tersebut,
selanjutnya dapat dilakukan pembalikan kalimat per-kata yang ditandai oleh
tanda spasi. Prosedur pembalikan kalimat per-kata dapat dilakukan sama
dengan pembalikan kalimat sebagaimana dijelaskan pada sub Bab 14.1. Dalam
hal ini setiap kata dapat dianggap sebagai sebuah kalimat pada pembahasan
yang lebih dulu. Sehingga perbedaan hanyalah terletak pada bagaimana
menentukan
batas
pembalikan
setiap
kata,
hal
ini
dilakukan
dengan
menambahkan prosedur tambahan.
14.2. Mengetes Kata Palindrom
Tanpa disadari, kita sering bermain-main dengan kata Palindrom. Kata palindrom
adalah kata-kata yang mempunyai bunyi yang sama persis jika dibaca dari depan
dan dari belakang. Dalam kalimat lain, sebuah kata disebut sebagai kata
Palindrom jika karakter-karakter dalam kata tersebut dibalik akan menghasilkan
kata-kata yang yang sama persis sebagaimana sebelumnya.
Beberapa contoh kata Palindrom adalah sebagai berikut :
5
KATAK
dibalik menjadi
KATAK
KAKAK
dibalik menjadi
KAKAK
TAAT
dibalik menjadi
MALAM
TAAT
dibalik menjadi
MALAM
Untuk mengetes apakah suatu kata termasuk kata Palindrom atau bukan kata
Palindrom dapat dilakukan dengan cara sebagai berikut ini. Mula-mula dibaca
kata yang akan dites, sekaligus dihitung cacah karakter dalam kata tersebut.
Selanjutnya, bandingkan karakter pada posisi paling kiri dengan karakter pada
posisi paling kanan. Jika sama berarti pencocokan perlu dilanjutkan pada
karakter ke-2 dari kiri dengan karakter ke-2 dari kanan. Jika masih sama, maka
proses seperti ini akan diulang terus-menerus hingga seluruh karakter selesai
dicocokkan. Sebaliknya, jika karakter paling kiri tidak sama dengan karakter
paling kanan, maka bukan merupakan kata Palindrom dan proses dapat
dihentikan.
Berikut ini adalah algoritma prosedur untuk mengecek kata Palindrom
sebagaimana telah dijelaskan di atas.
KATA adalah kata yang akan dicek.
N adalah cacah karakter pada kata yang akan dites.
1. Mulai
2. Inisialiasi
KIRI = 1
KANAN = N
3. Proses berulang langkah-4
WHILE KIRI <= KANAN
4. Cek kesamaan karakter
IF KATA[KIRI] = KATA[KANAN]
Jika ya, tentukan
KIRI = KIRI +1
KANAN = KANAN -1
Jika tidak, cetak Pesan
(KATA,“bukan kata Palindrom”)
6
5. Cetak hasil
KATA
6. Selesai
Selanjutnya, flowchart prosedur untuk mengecek kata Palindrom sebagaimana
algoritma prosedur di atas adalah ditunjukkan pada Gambar 14.2.
Mulai
Baca KALIMAT[I]
KIRI=1, KANAN=N
WHILE
KIRI<=KANAN
YA
TIDAK
KATA[KIRI] =
KATA[KANAN]
TIDAK
YA
“Bukan kata Palindrom”
KIRI = KIRI +1
KANAN = KANAN -1
Cetak KATA[I]
Selesai
Gambar 14.2 : Flowchart prosedur mengecek kata Palindrom
Download