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