MAKING WEB APPLICATIONS DNA/RNA PALINDROME DETECTOR USING JAVA APPLET Feri Kuswanto Undergraduate Program, Faculty of Industrial Engineering, 2010 Gunadarma University http://www.gunadarma.ac.id Keywords: Palindrome detector, Turing Machine, Applet ABSTRACT This research aims to create a web application that serves as a palindrome detector detecting words that can be read from both directions. Using an automaton as a branch of the basic theory and Turing machines as the web implementation palindrome detector application. Web palindrome detector application presented this time the writer has two main parts of the media and websites as a palindrome detector application as the main program. Both parts are integrated and complementary with one another. Palindrome detector application will detect the string to determine whether the string is palindrome or not included. Detection process using a web graph as a basic rule palindrome detector application. MAKING WEB APPLICATIONS DNA/RNA PALINDROME DETECTOR USING JAVA APPLET Feri Kuswanto, Information Technology, Graduate Program, Gunadarma University, Jakarta, 2010 Email: [email protected] Abstract—Penelitian ini bertujuan membuat web aplikasi palindrom detektor yang berfungsi sebagai pendeteksi kata yang dapat dibaca dari kedua arah. Menggunakan cabang ilmu automata sebagai teori dasar dan mesin turing sebagai implementasi web aplikasi palindrom detektor. Web aplikasi palindrom detektor yang disajikan penulis kali ini mempunyai dua bagian utama yaitu website sebagai media dan aplikasi palindrom detektor sebagai program utama. Kedua bagian tersebut terintegrasi dan saling melengkapi antara yang satu dengan yang lainnya. Aplikasi palindrom detektor melakukan proses deteksi string untuk menentukan apakah string tersebut termasuk palindrom atau tidak. Proses pendeteksian menggunakan graf sebagai aturan dasar web aplikasi palindrom detektor. Kata Kunci : Palindrome detektor, Mesin turing, Applet Abstract— This research aims to create a web application that serves as a palindrome detector detecting words that can be read from both directions. Using an automaton as a branch of the basic theory and Turing machines as the web implementation palindrome detector application. Web palindrome detector application presented this time the writer has two main parts of the media and websites as a palindrome detector application as the main program. Both parts are integrated and complementary with one another. Palindrome detector application will detect the string to determine whether the string is palindrome or not included. Detection process using a web graph as a basic rule palindrome detector application. Key Word : Palindrome detector, Turing Machine, Applet I. P EN DAHUL UAN Bahasa adalah struktur yang dikendalikan sekumpulan aturan tertentu, semacam mesin untuk memproduksi makna. Melalui bahasa kita dapat berkomunikasi dengan sesama manusia, dengan bahasa pula kita dapat membuat komputer berinteraksi dengan manusia tentu saja dengan menggunakan beberapa alat tambahan. Automata merupakan salah satu ilmu pengetahuan hasil gabungan antara Bahasa dengan ilmu komputer, salah satu hasil dari automata adalah mesin turing. Mesin turing memiliki memori dengan mekanisme pengaksesan acak (Random aksesmemori). Mesin turing merupakan model matematika untuk komputer saat ini. Kita akan selalu dikaitkan dengan graf-graf jika kita belajar dari contoh-contoh mesin turing yang ada. Graf-graf tersebut merupakan perwakilan dari mesin turing itu sendiri. Penulis akan mencoba menggunakan mesin turing untuk digunakan sebagai palindrome detektor. Palindrom itu adalah berasal dari bahasa Yunani yaitu Palindromos A Palindrome. Palindromos A Palindrome adalah kata atau kalimat yang sama dieja maju atau mundur (bacaan yang sama dieja pada kedua arah). Sebagai contoh sederhana adalah beberapa kata yang sederhana yaitu rotor, rotator, civic, madam, racecar, level, dan lain-lain. Untuk contoh kalimat palindrome yaitu : No lemon no melon, No devil lived on, Swap God for a janitor rot in a jar of dog paws, dan lain-lain. Untuk menjalankan sebuah bahasa kedalam mesin turing diperlukan ketelitian yang tinggi agar hasil output yang dihasilkan bernilai benar. Berangkat dari hal tersebut maka penulis dalam hal ini ingin mencoba membuat simulasi mesin turing dengan menggunakan bahasa Java Applet yang berbasis web. Penulis membuat aplikasi dengan Java Applet karena mempermudah pendistribusian aplikasi, dan pada saat ini penggunaan internet sudah merambah pada hampir semua lapisan masyarakat. Pada bidang rekayasa genetika palindrom digunakan sebagai salah satu metode pencarian variasi mutasi genetik pada virus, terutama pada virus yang mampu menyerang manusia yaitu H1N1 dan H1N5 tetapi tidak menutup kemungkinan pada varian yang lain. II. BATASA N MASALA H Pada penulisan ilmiah ini penulis hanya membuat sebuah simulasi mesin turing RNA/DNA palindrom yang berfungsi untuk mendeteksi kata palindrome yang di-input oleh user. Kata atau untai yang dibentuk masih terbatas pada penggunaan huruf pembentuk protein DNA/RNA yaitu “A”, ”C”, ”G”, ”T” yang merupakan huruf awal dari nama protein pembentuk DNA/RNA yaitu “Adenine”, “Cytosine”, “Guanine”, dan “Thymine”. Contoh kata yang dibentuk adalah “AAATAGTCCTCT-AGAGGACTATTT ” yang merupakan contoh dari varian virus H5N1 (A/Anhui/1/2005/(H5N1)). III. T UJUAN Adapun tujuan dari penulisan ini antara lain : 1. Untuk memperdalam mengenai teori graph dan aplikasinya. 2. Berguna untuk orang yang ingin mengetahui tujuan digunakannya mesin turing. 3. Memberi gambaran tentang simulasi sederhana dalam menentukan untai palindrom pada DNA/RNA dengan menggunakan sebuah mesin turing. IV. P ERANCANGAN U MUM A. Mesin Turing Jauh sebelum lahirnya program komputer, Alan Turing pada tahun 1936 telah mengeluarkan gagasannya berupa model mesin abstrak sebagai alat mekanik untuk mengerjakan prosedur yang efektif. Model ini disebut Mesin Turing. Mesin turing dapat diadaptasi untuk mensimulasi logika dari setiap algoritma oleh karena itu cara kerja mesin turing adalah ekivalen dengan cara kerja komputer sekarang ini dan mesin turing juga ekivalen dengan problema komputasi matematika. Mesin turing tidak ditujukan sebagai teknologi komputasi praktis tetapi lebih sebagai eksperimen pemikiran yang mewakili sebuah mesin komputasi. Mesin turing membantu para ilmuan komputer memahami batas-batas komputasi mekanis. Sebagai input dari mesin turing adalah kata atau untai atas suatu alfabet T. Mesin turing berhenti dengan keadaan menerima atau menolak untai. Kadang-kadang terjadi pula perulangan atau looping tak terhingga. penerima H (halt). Sesaat sebelum proses pengenalan sebuah kalimat, TM berada pada stata S. Jika kalimat tersebut dikenali maka, setelah selesai membaca kalimat tersebut, TM akan akan berhenti pada stata H. 3. Sebuah edge mempunyai ‘bobot’ yang dinotasikan sebagai triple : (a, b, d). a adalahkarakter acuan bagi karakter dalam sel pita TM yang sedang dibaca head. Jika yang dibaca head adalah karakter a maka a akan di-overwrite dengan karakter b dan head akanberpindah satu sel ke arah d (kanan atau kiri). 4. Kondisi crash akan terjadi jika ditemui keadaan sebagai berikut : Gambar 2. Graf Berarah TM sedang berada pada stata i. Jika TM sedang membaca simbol ax ≠ a1 ≠ a2 ≠ ≠ an makaTM tidak mungkin beranjak dari stata i. Jadi pada kasus ini penelusuran (tracing) TM ber-akhir pada stata i. B. Gambar 1. Representasi mesin turing Keterangan : Tape : Tempat diletakannya inputan yang berupa kata/untai. Head: membaca dan menulisi sel pita mesin turing, bisa bergerak ke kiri atau ke kanan. Finite StateControl (FSC) : otak dari TM, diimplementasikan dari algoritma pengenalan kalimat. Pada gambar diatas adalah representasi dari mesin turing dimana head membaca/scan isi dari tiap-tiap sel pada pita. Pada proses pembacaan sel, head diatur oleh FSC yaitu sebuah algoritma pengontrol dari sebuah mesin turing. Diawali simbol “#” sebagai simbol inisialisasi awal mesin turing, kemudian diikuti oleh rangkaian kata/untai yang merupakan isi utama yang akan dilakukan proses scanning. Ilustrasi TM sebagai sebuah graf berarah : 1. Sebagaimana graf, TM terdiri dari beberapa node dan beberapa edge. Dari satu node mungkin terdapat satu atau lebih edge yang menuju node lainnya atau dirinya sendiri. 2. Sebuah node menyatakan sebuah stata (state). Dua stata penting adalah stata awal S(start) dan stata Penggunaan Graf Aplikasi berbasis Web “Palindrome Detector” dalam pola kerjanya didasarkan pada penggunaan graf sebagai aturan dari palindrom detektor. Graf pada palindrome detektor menentukan bagaimana langkah-langkah proses deteksi suatu string, yaitu menentukan suatu proses dapat berjalan menuju state berikutnya, tetap berada pada state yang sama, atau bahkan mundur kepada state sebelumnya. Pada aplikasi palindrom detektor graf yang digunakan digambarkan sebagai berikut : Gambar 3. Graf Palindrome Detektor Gambar graf di atas adalah konsep dasar dari palindrom detektor, dimana pada masing-masing state mempunyai kondisi dan tujuan state yang bebeda. Pada setiap state mempunyai arah tujuan yang jelas, tidak dimungkinkan suatu state menuju state yang bukan rekanan/afiliasi. Setiap state bergerak menuju state lain sesuai dengan arah dari anak panah. Graf palindrom detektor menghasilkan dua keadaan yaitu yes/no, maksudnya adalah suatu string yang termasuk kedalam kelompok palindrom akan menghasilkan output “yes”, sedangkan untuk string yang tidak termasuk kedalam kelompok palindrom akan menghasilkan output “no”. Gambar graf di atas belum terdapat suatu kondisi yang menentukan cara kerja palindrom detektor, atau dapat kita sebut algoritma palindrom detektor. Algoritma inilah yang menentukan kapan pada suatu node/state bergerak maju, mundur, melakukan looping pada suatu state yang sama, mengganti isi dari string, dan menentukan arah pergerakan sel pada string menuju kekiri atau kekanan. Selanjutnya adalah gambar graf palindrom detektor yang telah dilengkapi dengan algoritma dan kondisi, seperti pada gambar dibawah ini : akhir dari sebuah string. _ACGCA #ACGCA Gambar 6. Pemrosesan karakter pada state 1 Pada gambar di atas menunjukkan pergerakan karakter dimulai dari karakter blank ‘ ’ kemudian dirubah menjadi karakter ‘#’. Perubahan karakter diikuti dengan pergerakan arah dari karakter yang sedang diproses sesuai dengan arah dari kondisi pada state tersebut. Gambar 7. Pemrosesan karakter pada State 2 Setelah melakukan inisialisasi pada state 1, dilanjutkan dengan proses pada state 2. Pada state 2 terdapat 5 pergerakan arah, yaitu menuju state 3, state 4, state 5, state 6, dan state 13. String yang sedang diproses adalah string ’A’ sesuai pada gambar, oleh karena itu pergerakan state menuju state 3 dan dilakukan penggantian karakter ‘A’ dengan karakter blank ‘ ‘ dan pointer bergerak menuju kekanan dan berada pada karakter ‘C’. Gambar 8. Pemrosesan karakter pada State 3 Gambar 4. Graf Palindrome Detektor lengkap Untuk membaca graph, penulis mencontohkan dengan string DNA/RNA sederhana sebagai berikut : String : “ACGCA” Untuk tahap awal kita beri inisialisasi terlebih dahulu, yaitu pada string DNA/RNA diberi inisialisasi huruf blank. 1,_2,#,> 1 Setelah melakukan proses pergeseran array pada string maka selanjutnya pada state 3 mencari kondisi yang sesuai untuk mencari tahap pada state selanjutnya. Pada array yang sedang diproses adalah karakter ‘C’ sehingga state masih tetap pada keadaan semula. Karakter ‘C’ diganti dengan karakter yang sama dan pointer bergerak kekanan berada pada karakter ‘G’. Karakter ‘G’ diganti dengan karakter yang sama, dan pointer sekarang berada pada karakter ‘C’. Karakter ‘C’ diganti dengan karakter yang sama, dan pointer sekarang berada pada karakter ‘A’. Karakter ‘A’ diganti dengan karakter yang sama dan pointer sekarang berada pada karakter blank. Gambar 5. Pemrosesan karakter pada state 1 Pada gambar penggalan graph DNA/RNA palindrom detektor dapat diartikan sebagai berikut : Pada state 1, string dilakukan insertion pada huruf pertama yaitu karakter blank ‘ ‘ masuk kedalam state 2 kemudian karakter blank tersebut diganti dengan karakter ‘#’ selanjutnya pointer pada string digeser kekanan. Karakter ‘#’ merupakan inisialisasi terhadap suatu string, digunakan sebagai penunjuk Gambar 9. Pemrosesan karakter pada state 3 Masih pada state 3, yaitu mencari kondisi yang sesuai untuk mencari tahap pada state selanjutnya. Sekarang pointer berada pada karakter blank ‘ ’ sehingga pergerakan state masih pada tempat yang sama. Karakter blank ‘ ’ diganti dengan karakter yang sama dan pergerakan array pada string digeser kekiri dan sekarang berada pada karakter ‘A ’. pointer pada string menuju kekanan yaitu berada pada karakter ‘G’. Gambar 14. Pemrosesan karakter pada state 4 Gambar 10. Pemrosesan karakter pada state 7 Karakter yang sedang dalam proses adalah karakter ‘A‘ sehingga pergerakan state menuju pada state 11, dimana karakter ‘A’ diganti dengan karakter blank ‘ ‘ dan pergerakan array pada string menuju kekiri yaitu pada karakter ‘C’. Selanjutnya pada state 4 mencari kondisi yang sesuai untuk tahap pada state selanjutnya. Pada array yang sedang diproses adalah karakter ‘G’ sehingga pergerakan state masih pada tempat yang sama. Karakter ‘G’ diganti dengan karakter yang sama dan pointer bergerak kekanan berada pada karakter ‘C’. Karakter ‘C’ diganti dengan karakter yang sama, dan pointer sekarang berada pada karakter blank ‘ ’. Gambar 11. Pemrosesan karakter pada state 11 Gambar 15. Pemrosesan karakter pada state 4 Karakter ‘C’ diganti dengan karakter yang sama dan pointer bergerak kekiri berada pada karakter ‘G’. Karakter ‘G’ diganti dengan karakter yang sama, dan pointer sekarang berada pada karakter ‘C’. Karakter ‘C’ diganti dengan karakter yang sama dan pointer bergerak kekiri berada pada karakter blank ‘ ’ Setelah melakukan proses pergeseran array pada string maka selanjutnya pada state 4 mencari kondisi yang sesuai untuk mencari tahap pada state selanjutnya. Pada array yang sedang diproses adalah karakter blank ‘ ’ sehingga state bergerak menuju kepada state 8. Karakter blank ‘ ’ diganti dengan karakter yang sama dan pergerakan array pada string digeser kekiri berada pada karakter ‘C’. Gambar 12. Pemrosesan karakter pada state 11 Karakter yang sedang diproses adalah karakter blank ‘ ‘ sehingga pergerakan state bergerak menuju state 2, dimana karakter blank ‘ ’ diganti dengan karakter blank ‘ ’ dan pointer pada string menuju kekanan yaitu pada karakter ‘C’ Gambar 13. Pemrosesan karakter pada state 2 Karakter yang sedang diproses adalah karakter ‘C‘ sehingga pergerakan state bergerak menuju state 4, dimana karakter ‘C’ diganti dengan karakter blank ‘ ‘ dan pergerakan Gambar 16. Pemrosesan karakter pada state 8 Pada state 8, karakter yang sedang diproses adalah karakter ‘C‘ sehingga pergerakan state berikutnya menuju kepada state 11, dimana karakter ‘C’ diganti dengan karakter blank ‘ ‘ dan pergerakan pointer pada string menuju kekiri yaitu pada karakter ‘G’. Gambar 17. Pemrosesan karakter pada state 11 Pada state 11, karakter yang sedang diproses adalah karakter ‘G‘sehingga pergerakan state tetap pada kondisi semula yaitu pada state 11, dimana karakter ‘G’ diganti dengan karakter yang sama dan pergerakan pointer pada string menuju kekiri yaitu pada karakter blank ‘ ’. Gambar 22. Pemrosesan karakter pada state 13 Gambar 18. Pemrosesan karakter pada state 11 Pada state 11, karakter yang sedang diproses adalah karakter blank ‘ ‘ sehingga pergerakan state bergerak menuju state 2, dimana karakter blank ‘ ’ diganti dengan karakter yang sama dan pergerakan pointer pada string menuju kekanan yaitu pada karakter ‘G’. Pada state 13, karakter yang sedang diproses adalah karakter blank ‘ ‘ sehingga pergerakan state tetap berada pada state 13, dimana karakter blank ‘ ’ diganti dengan karakter blank ‘ ’ dan pergerakan pointer pada string menuju kekiri yaitu pada karakter blank ‘ ’, dan bergerak kekiri hingga pointer berada pada karakter ‘#’. Gambar 23. Pemrosesan karakter pada state 13 Gambar 19. Pemrosesan karakter pada state 2 Pada state 2, karakter yang sedang diproses adalah karakter ‘G‘ sehingga pergerakan state bergerak menuju state 5, dimana karakter ‘G’ diganti dengan karakter blank ‘ ’ dan pergerakan pointer pada string menuju kekanan yaitu pada karakter blank ‘ ’. Pada state 13, karakter yang sedang diproses adalah karakter ‘#‘ sehingga pergerakan state menuju kepada state 14, dimana karakter ‘#’ diganti dengan karakter blank ‘ ‘ dan pergerakan pointer pada string menuju kekanan yaitu pada karakter blank ‘ ’. Gambar 24. Pemrosesan karakter pada state 14 Gambar 20. Pemrosesan karakter pada state 5 Pada state 5, karakter yang sedang diproses adalah karakter blank ‘ ‘ sehingga pergerakan state bergerak menuju state 9, dimana karakter blank ‘ ’ diganti dengan karakter blank ‘ ’ dan pergerakan pointer pada string menuju kekiri yaitu pada karakter blank ‘ ’. Pada state 14 sudah tidak ada lagi percabangan, apabila sudah mencapai tahap ini masing-masing state tersisa menampilkan karakter hasil akhir. Karakter yang sedang diproses adalah karakter blank ‘ ‘ menuju kepada state 15, dimana karakter blank ‘ ’ diganti dengan karakter ‘Y’ dan pergerakan pointer pada string menuju kekanan yaitu pada karakter blank ‘ ’. Gambar 25. Pemrosesan karakter pada state 15 Pada state 15, karakter yang sedang diproses adalah karakter blank ‘ ‘ menuju kepada state 16, dimana karakter blank ‘ ’ diganti dengan karakter ‘E’ dan pergerakan pointer pada string menuju kekanan yaitu pada karakter blank ‘ ’. Gambar 21. Pemrosesan karakter pada state 9 Pada state 9, karakter yang sedang diproses adalah karakter blank ‘ ‘ sehingga pergerakan state bergerak menuju state 13, dimana karakter blank ‘ ’ diganti dengan karakter blank ‘ ’ dan pergerakan pointer pada string menuju kekiri yaitu pada karakter blank ‘ ’. Gambar 26. Pemrosesan karakter pada state 16 Pada state 16, karakter yang sedang diproses adalah karakter blank ‘ ‘ menuju kepada state terakhir yaitu state H (halt). Karakter blank ‘ ’ diganti dengan karakter ‘S’ dan pergerakan array pada string menuju kekanan yaitu pada karakter blank ‘ ’. Proses-proses di atas adalah perjalanan string DNA/RNA “ACGCA” dalam graph palindrom detektor. Mulai dari state 1 hingga menuju kepada state terakhir H (halt), sehingga menghasilkan output “YES” yang menandakan string DNA/RNA “ACGCA” adalah termasuk kelompok palindrom. C. Untuk memulai aplikasi, user pertama-tama melakukan langkah-langkah sebagai berikut : Pilih Palindrome Detector pada combo box. Pada tahap ini user memilih program DNA/RNA palindrom detektor untuk dimasukkan kedalam Mesin Turing. Klik Load New Program. Pada saat tombol ini di klik maka program palindrom detektor telah dimasukkan kedalam mesin turing. Secara default maka akan muncul properties dari aplikasi DNA/RNA palindrom detektor, yaitu nama mesin, posisi awal pita, dan string yang akan dimasukkan kedalam pita Mesin Turing. Klik Start. Ketika tombol di klik, maka program akan berjalan untuk menentukan jenis string yang ada pada pita. Secara default string termasuk kepada kategori palindrom sehingga hasilnya akan bernilai ‘YES’. Perancangan Tampilan Aplikasi Palindrom Detektor Tampilah web aplikasi DNA/RNA palindrom detektor menggunakan Java Applet dapat dilihat seperti dibawah ini. D. Gambar 27. Schema dari aplikasi DNA/RNA palindrom detektor Gambar di atas adalah perancangan dari web aplikasi palindrom detektor. Dibawah ini adalah tabel yang berisi index dari gambar aplikasi palindrom detektor. Index A B C D E F G H I J K L M N O P Q R S T U V W X Y Fungsi Form Browser Applet Form Label (State N) Tombol (START) Tombol (STOP) Tombol (RESUME) Tombol (STEP) Label (Speed) Combo Button ( SPEED) Image (ARAH) Pita Mesin Turing Tombol (LOAD MACHINE) Combo Button ( PALINDROME DETEKTOR) Label (MACHINE NAME) Text Field Label (TAPE POSITION) Scroll Bar Label (CHARACTERS ON TAPE) Text Field Label (GRAPH) Tombol (CLEAR GRAPH) Tombol ( LOAD STRING) Text Area Text Area Tombol (CLEAR MESSAGE BOX) Perancangan Tampilan Website Pada tampilan index ini akan ditampilkan halaman home. Perancangan tampilan pada web aplikasi DNA/RNA palindrom detektor ini memiki tabel inti yang terdiri dari Header, Footer, tabel1, tabel2, tabel3, table4, dan tabel5. Pada setiap halaman kita akan tetap menemukan tampilan seperti pada halaman home ini, namun isi dari setiap halaman terletak pada tabel 4 dan tabel5, dan tabel inilah yang akan terus berubah apabila kita melakukan perpindahan halaman. Berikut ini adalah penjelasan fungsi dari tabel - tabel tersebut : Header, merupakan gambar logo pada website ini beserta tempat diletakannya tab untuk menuju kehalaman lain. Footer, merupakan informasi mengenai nama pembuat website dan tahun dibuatnya website e-commerce ini. Pada table 1, terdiri dari: Link menuju website yang berhubungan dengan web aplikasi palindrom detektor. Pada table 2, terdiri dari : link menuju institusi yang telah membantu secara langsung dan tidak langsung bagi penulis dalam pembuatan web aplikasi palindrome detektor. Table 3 terdiri dari : pesan singkat dari penulis untuk user. Table 4 & 5 terdiri dari : sejarah singkat mengenai mesin turing dan palindrom detektor. Gambar 28. Struktur Halaman web IV. OUTPUT PROGRAM Pada tahap ini merupakan tampilan output program yang akan dihasilakan pada saat program dijalankan. Terdiri dari beberapa tampilan gambar yang merupakan suatu tahap dalam melakukan proses deteksi palindrom. Gambar 31. Palindrome Detektor Pilih menu palindrome detector kemudian klik load new program maka akan muncul tampilan seperti gambar diatas, tekan tombol start maka program akan berjalan dan string yang ada akan diproses oleh mesin turing dan akan menghasilkan output berupa string “yes” yang menandakan bahwa string tersebut adalah termasuk kedalam kelompok palindrome. X. PENUTUP Gambar 29. Palindrome Detector Gambar diatas adalah gambar palindrome detektor ketika pertama kali dijalankan. Terdapat bantuan yang terdapat pada text boks mengenai penggunaan palindrome ini. Kesimpulan - Berdasarkan uji coba yang telah dilakukan, web aplikasi DNA/RNA palindrome detektor ini akan memisahkan suatu string/untai yang termasuk palindrome atau bukan. - Aplikasi ini bertujuan untuk memperdalam penerapan teori graph beserta aplikasinya dan memberi gambaran tentang simulasi sederhana dalam menentukan untai palindrome DNA/RNA dengan menggunakan sebuah mesin turing. - Kelebihan aplikasi ini adalah dapat dijalankan langsung pada web browser tanpa harus mendownload aplikasinya terlebih dahulu. Saran Penulis mengharapkan web aplikasi ini dapat dikembangkan lebih sempurna lagi agar dapat membantu diberbagai bidang terutama pada bidang rekayasa genetika. REFERENCES [1] D. Suryadi H.S, Pengantar Automata Bahasa Formal dan kompilasi, Gunadarma, Depok, 1991. [2] Didik Dwi Prasetyo, 150 Rahasia pemrograman Java, PT Elex Media Komputindo Kelompok Gramedia, Jakarta, 2007. [3] Irawan, Java Untuk Orang Awam, Maxikom, Palembang, 2007. [4] Kelley, Dean, Otomata dan bahasa-bahasa Formal, PT. Prenhallindo, Jakarta, 1999. [5] Rangsang Purnama, Pemrograman GUI menggunakan Java, Prestasi Pustaka, Jakarta, 2007. Gambar 30. Palindrome Detektor [6] R. Purnama, Pemrograman Tingkat Dasar, Gitamedia Prees, Surabaya, 2008. [7] A. Juarna, Catatan teori Bahasa dan Automata,[pdf]. [8] http://en.wikipedia.org/wiki/RNA, diakses padahari Selasa, tanggal 1 Juni 2010. [9] http://hansiaditya.wordpress.com/2007/09/25/waterfall-process-model/, diakses pada hari Minggu, tanggal 6 Juni 2010. [10] http://apriladewikoto.com/2010/04/08/pengenalan-bahasa-pemrogramanjava/, diakses pada hari Kamis, tanggal 3 Juni 2010. [11] http://download.oracle.com/javase/1.4.2/docs/api, diakses pada hari Kamis, tanggal 3 juni 2010. [12] http://pemrograman lanjut.blogspot.com/2010/03/java-programminglanguage.html, diakses pada hari Jumat, tanggal 4 Juni 2010. [13] http://www.w3schools.com/html/html_primary.asp, diakses pada hari Jumat, tanggal 4 Juni 2010.