Rabu, 14 Maret 2012

LYAPUNOV-MAX-PLUS-ALGEBRA STABILITY IN PREDATOR-PREY SYSTEMS MODELED BY TIMED PETRI NET WITH THE ENTIRE HOLDING TIMES ARE CONSIDERED

Zumrotus Sya'diyah, M.Si, Dr. Subiono, MS

Abstract

In this paper, we construct a model of predator-prey systems with timed Petri net and analyze the stabilization of the systems. We discuss a timed Petri net model with the entire holding times are considered. Furthermore, we analyze the periodic behavior of the systems. Using the Lyapunov-max-plus-algebra stability theory, we will obtain the sufficient condition for the stabilization problem. The periodic duration of the oscillation in these systems will be determined. The analysis will also use the interval matrix in max plus algebra. In this case, every holding time in timed Petri net is viewed as an interval value. Keywords and Phrases: Predator-prey Systems, Timed Petri Net, Max-Plus.

INTRODUCTION
Generally, the state of systems changes as time changes. The state spaces are expected to be changed at every tick of the clock. These kinds of systems are called time driven systems. There are some of them which evolve in time by the occurrence of events at possible irregular time intervals, i.e. not necessarily coinciding with clock ticks. In this case, the state transition is a result of the other harmonic events. This kind of systems is called event driven systems [3]. Event driven systems with discrete states are called by discrete event systems. Max plus algebra is the useful approach to represent the discrete event systems. This approaching makes us possible to determine and analyze various kinds of systems properties. The model of them will be linear over max plus algebra. In this kind of systems, event is more decisive than time [9]. We can analyze the systems in max plus algebra easier and simpler than the conventional one because of this linearity [10]. Petri net is a mathematical modeling tool which can be applied to represent the state evolution of the discrete event systems. Petri net is called autonomous if every its transition has at least an input place, i.e. does not have a transition which is always be enabled [2]. In the previous research, the predator-prey systems have been modeled with timed Petri net which is consistent with the real predator-prey behavior in real life [6]. We will modify this model with adding some holding times, condition and event. This Model is inspired by the timed Petri net model of queuing systems with one server that discussed in [10] and the timed Petri net of the predator-prey system discussed in [13]. For this discussion, we need the theory of conventional and interval max plus algebra, timed Petri net, and Lyapunov stability in systems modeled by Petri net. These theories will be discussed in the next section.

Acknowledgement. I wish to give my gratitude to Zvi Retchkimann for giving me the information about this project by his papers he sent me. I also really appreciate in every email and suggestion he gave me related to this project.

REFERENCES
[1]. ADZKIYA, DIEKY: Membangun Model Petri Net Lampu Lalu-lintas dan Simulasinya, Thesis of Mathematics Department FMIPA, Institut Teknologi Sepuluh Nopember (ITS), Surabaya, 2008.
[2]. BACELLI. F, G. COHEN, G.J. ET.AL: Synchronization and Linearity: An Algebra for Discrete Event System, Web-edition, 2001.
[3]. NECOARA, ION: Model Predictive Control for Max-Plus-Linear and Piecewise Affine Systems, Technise Universiteit Delft. Netherland, 2006.
[4]. NOVITASARI, RATNA: Analisis Masalah Generator Dari Possible Dan Universal Eigenvector Pada Matriks Interval Dalam Aljabar Max-Plus, Thesis of Mathematics Department FMIPA, Institut Teknologi Sepuluh Nopember, Surabaya, 2008.
[5]. REJEKI, SRI: Analisis Sistem Jaringan Antrean Dengan Elemen-Elemen Matriks Adjasen Berupa Interval Dalam Aljabar Max-Plus, Thesis of Mathematics Department FMIPA, Institut Teknologi Sepuluh Nopember, Surabaya, 2010.
[6]. RETCHKIMAN, ZVI, Mixed Lyapunov-Max-Plus Algebra Approach to the Stability Problem for a two Species Ecosystem Modeled with Timed Petri Nets, International Mathematical Forum, Vol.5 No.28, 1393-1408, 2010.
[7]. RETCHKIMAN, ZVI, The Stability Problem for Discrete Event Dynamical Systems Modeled with timed Petri Nets Using a Lyapunov-Max-Plus Algebra Approach, International Mathematical Forum, Vol.6 No.11, 541-566, 2011.
[8]. SUBIONO AND J VAN DER WOUDE, Power Algorithms for (Max,+)-and Bipartite (Min,Max,+)-systems, Discrete Event Dynamic Systems: Theory and Applications, 10(4):369-389, 2000.
[9]. SUBIONO: The existence of eigenvalues for reducible matrices in Max-Plus Algebra, Mathematics Department FMIPA- I T S, Surabaya, 2008.
[10]. SUBIONO: Aljabar Max Plus dan Aplikasinya:Model Sistem Antrian. Mathematics Department FMIPA- I T S, Surabaya, 2008.
[11].  SUBIONO AND NUR SOFIYANA, Using Max-Plus Algebra In The   Flow Shop Scheduling, IPTEK, The Journal for Technology and Science, Vol 20, No 3, August 2009, p.83-87, , 2009.
[12]. SUBIONO: Aljabar Max Plus dan Terapannya, Mathematics Department FMIPA, Institut Teknologi Sepuluh Nopember (ITS), Surabaya, 2010.
[13]. SUBIONO AND ZUMROTUS.S: Lyapunov-Max-Plus-Algebra Stability In Predator-Prey Systems Modeled With Timed Petri Net, Mathematics Department FMIPA, Institut Teknologi Sepuluh Nopember (ITS), Surabaya, 2011.

Minggu, 28 November 2010

MALAM YANG TERANG

Terbangun, aku menatap jam dinding yang terpasang di kamarku. Jam 3.42 pagi, aku mendengar merdunya suara seorang lelaki yang melantunkan ayat suci Al-Qur’an. Ar-Rahman. Betapa aku yakin bahwa surat itulah yang dilantunkannya. Hatiku hancur, terenyuh oleh sendu suara yang kudengar sayup. Perlahan, air mataku menetes di relung pipi yang agaknya telah kehilangan senyuman. Di pikiranku tak ada lain selain Allah. Di hatiku tak ada lain selain perasaan bersalah yang amat sangat. Perasaan penuh dosa yang tak terhitung banyaknya. Kerinduan yang teramat dalam pada apa yang tak kuketahui membuat air mataku semakin tak tertahankan.
”Aku rindu pada-Mu, ya Allah. Aku sangat merindukan Engkau. Mengapa tidak juga aku dapat mencintai-Mu? Mengapa tidak juga aku dapat menyerahkan segalanya pada-Mu? Selama ini aku terlalu sombong, ya Allah. Selama ini aku terlalu mencintai diriku, mencintai dunia dan isinya. Aku terlampau bodoh untuk mengerti dan mensyukuri nikmat-Mu.” Tersedu aku bergumam.
Tubuhku semakin meringsut karena tangis yang kian meledak. Tak pernah aku merasa seperti ini sebelumnya. Hatiku terasa sangat kosong, terasa sangat hampa, hingga tak ada yang bisa kuperbuat selain, menangis. Entah mengapa aku merasa kehilangan yang amat sangat. Merasa kehilangan atas sesuatu yang sama sekali tak kukenal.
” Ya Allah, jika selama ini ibadahku tidaklah untukMu, jika segala amalku bukan karena cintaku pada-Mu, maka bawalah aku kesisi-Mu. Bawalah aku menuju kepada-Mu. Agar dapat aku mencintaimu. Agar dapat aku menjadi manusia yang beribadah hanya karena mencintai-Mu. Agar aku dapat menjadi kekasih-Mu. Aku mohon Ya Allah, Dzat yang Maha Agung. Aku mohon......”
Tangisku rupanya membuat sahabat yang sekaligus teman sekamarku terbangun dari tidurnya. Kaget, dia pun segera menghampiriku yang kini tengah bersujud di tempat biasa kami berdua melakukan sholat berjama’ah.
”Zarra, engkau kenapa sahabatku? Adakah aku telah menyakiti hatimu? Adakah aku telah berbuat kesalahan padamu? Jika iya, maaf saudariku. Maaf.... Aku tak bermaksud menyakitimu. Aku tak akan pernah bisa menyakitimu.” Ucap Ana, sahabatku seraya membangunkanku dari sujud.
”La...ya ukhti, la... Engkau tidak pernah barang sedikit pun menyakiti hatiku. Air mata ini untuk Tuhanku, ya ukhti. Untuk Allah. Aku merasa sangat kehilangan. Aku merasa sangat merindukan-Nya. Aku tidak tahu ada apa denganku. Ukhti, tolong bantu aku....” jawabku sambil menangis di pangkuannya.
”Subhanallah... Betapa bahagia anak Adam yang dapat menangis karena Tuhannya, Allah Azza wa Jalla. Insya Allah air matamu itu akan membawamu kepada hidayah-Nya, akan membawamu kepada jalan-Nya yang lurus, dan akan membuatmu menjadi kekasih-Nya. Insya Allah saudariku, Insya Allah.” kata Ana lagi mengelus rambut hitamku yang belum sempat aku rapikan.
” Demi Allah, aku ingin menjadi seorang muslimah yang kaffah menjalani kehidupan dengan tata cara-Nya. Aku ingin menjadi wanita yang hanya ada Allah di hatiku. Demi Allah. Aku tidak ingin lagi menjadi manusia yang beribadah hanya karena kewajiban, hanya karena keharusan apalagi hanya karena mengharapkan surga-Nya. Adakah aku salah dengan semua itu, ya ukhti? Adakah aku menjadi tidak terpuji jika aku menginginkan hal itu terjadi padaku? Ya Allah............” Jeritku seraya kembali bersujud.
Semakin tersedu, aku menahan sakit di hatiku. Aku rasakan getir yang amat sangat di setiap jengkal kalbuku. Tak tahu apa penyebabnya. Tak tahu kapan air mata ini akan habis, dan tak tahu kapan tangisku akan berhenti.
” Ikhlas Zarra, ikhlaslah menerima semuanya. Karena semua hanya berasal dari-Nya, dan hanya berakhir pada-Nya. Menangislah, karena hanya kaulah yang dapat menghentikan tangismu sendiri. Menangislah Zarra, karena hanya kamulah yang tahu kapan tangismu harus berhenti. Tak selamanya menangis itu lemah, karena adakalanya menangis adalah kekuatan yang dapat menghancurkan dinding keakuan saat menghadap pada-Nya. Subhanallah, semoga engkau selalu mendapat hidayah yang berlimpah dari Sang Hyang Wenang. Amin...” bisiknya lagi dengan meninggalkanku sendirian di kamar. Agaknya Ana memberikanku waktu untuk menyendiri dan tepekur memikirkan semuanya.
Tak lama kemudian, adzan subuh berkumandang. Semakin menjadilah tangisku karenanya. Aku menjerit mohon ampun, aku menjerit untuk rasa rinduku yang teramat dalam, dan aku menjerit memohon agar aku dapat dekat dengan Sang Maha Kuasa, Sang Maha Rencana. ”Ya Allah, Ya Tuhanku Yang Mulia, hanya Engkau yang mengetahui betapa aku, hambamu yang kotor ini, merindukan-Mu. Dekatkanlah aku pada-Mu ya Allah. Biarkan benih cinta tumbuh dihatiku. Cinta yang hanya untuk-Mu, cinta yang begitu besar sehingga aku akan rela berbuat apapun agar Engkau pun sudi menyayangiku. Ya Allah, aku ingin menjadi hamba-Mu yang hanya ada Engkau di hatiku. Yang hanya akan beribadah karena besarnya cintaku pada-Mu. Ya Allah, jadikanlah aku manusia yang akan selalu mengingat-Mu. Ya Allah, kabulkanlah permohonanku ini. Amin....”
Mengambil air wudlu, aku menyegerakan diriku memakai hijab dan beribadah seikhlas mungkin. Tak pernah aku merasakan ketenangan yang teramat sangat. Aku sangat bahagia. Aku merasa dapat menghadapi semuanya dengan langkah yang ringan.
”Ya Allah, apapun akan kulakukan untuk tetap menjaga rasa cintaku pada-Mu. Aku merasa dapat ikhlas menjalani hidupku dengan cinta pada-Mu dihatiku. Aku merasa dapat menghadapi semuanya dengan tuntunan cahaya dari-Mu.” sambil tersenyum ringan, aku menyambut hari baru yang merupakan hari lahirnya cinta agung di hatiku.

Based on a true story,
ZOE ’04

Minggu, 10 Oktober 2010

Tugas Fuzzy


 TUGAS SISTEM FUZZY




Zumrotus Sya’diyah


   
PROGRAM PASCASARJANA JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT TEKNOLOGI SEPULUH NOPEMBER
2010



Pembuktian Halaman 31 (Zimmermann)
Maka dari itu, diperoleh: 
Exersice page 42
1.     
Dengan metode Hamacher
Dipilih              
 sehingga diperoleh:
 Jadi, didapatkan irisan kedua himpunan fuzzy tersebut adalah:
Selanjutnya irisan himpunan fuzzy akan dicari dengan menggunakan metode Yager
Dipilih  
sehingga diperoleh:

Oleh karena itu diperoleh:
Terakhir, akan digunakan metode Dubois sebagai berikut:
Dipilih  
 sehingga diperoleh:

Sehingga didapatkan bahwa irisan kedua himpunan fuzzy adalah sebagai berikut:
Dari (i), (ii) dan (iii) dapat dilihat bahwa irisan mempunyai member function yang berbeda antara satu model interseksi dengan model yang lain.  

Jumat, 08 Oktober 2010

bioinformatika


USING PERL TO FACILITATE
BIOLOGICAL ANALYSIS
Zumrotus ,S
 
PENDAHULUAN

Perl atau Practical Extraction and Report Language dirancang oleh Larry Wall dipertengahan tahun 1980-an ketika ia ingin membuat bug-reporting system namun bahasa pemograman yang tersedia, seperti awk, tidak dapat memenuhi keinginannya. Larry bisa saja waktu itu menggunakan bahasa pemrograman seperti C atau C++, tetapi karena dia menginginkan agar system-nya itu bisa dijalankan melalui shell ala awk, akhirnya dia memutuskan untuk merancang bahasa baru yaitu Perl.
Secara umum, Perl bisa dikategorikan berada diantara bahasa pemograman tingkat tinggi (high-level programming language) seperti pemograman shell dan bahasa pemograman tingkat rendah (low-level programming language) seperti  C, C++ atau assembly. Program yang ditulis dengan bahasa pemrograman tingkat tinggi biasanya lambat dan sangat tergantung pada command yang disediakan oleh operating system. Sebaliknya, program yang ditulis dengan bahasa pemrograman tingkat rendah cendrung lebih cepat, namun lebih sulit dalam menuliskannya, walau hampir semua hal dapat ditulis dengan bahasa pemrograman level ini. Perl dirancang untuk menjembatani ketimpangan diantara kedua level bahasa pemrograman di atas.
Setiap bahasa pemograman pasti memiliki kelebihan dan kelemahan, karena keunggulan suatu bahasa pemograman sangat tergantung pada persoalan apa yang ingin diselesaikan. Perl sangat cocok digunakan untuk menyelesaikan persoalan yang berkaitan dengan teks. Lebih kurang 90% dari kemampuan Perl memang dioptimalisasikan untuk menyelesaikan persoalan-persoalan yang berhubungan dengan teks, sementara sisanya, 10%, untuk menyelesaikan persoalan-persoalan diluar teks [2]. Bagi para peneliti di bidang bioinformatika, Perl merupakan tool utama dalam melakukan pattern matching dari gen dalam DNA. Sebagaimana kita ketahui, gen merupakan rangkaian nucleotide yang secara formal disimbolkan menggunakan gabungan karacter A (adenine), T (thymine), C (cytosine), dan G (guanine), seperti yang digambarkan pada gambar berikut:
Gambar 1. Ilustrasi DNA [2].
Untuk mengetahui apakah terdapat gen tertentu dalam sebuah DNA, tentunya kita harus mencari pattern (yang merupakan kumpulan dari karakter-karakter A, T, C, G) di dalam DNA tersebut. Sebagai gambaran, perhatikan potongan program berikut ini:
     1     my $sequence = 'CTAATGGA';
    2     $pattern = 'ATG';
    3     if($sequence =~ /$pattern/){
    4       print "Pattern $pattern ditemukan dalam sequence $sequence\n";
    5     } 
    6     else{
    7       print "Pattern $pattern tidak ditemukan dalam sequence $sequence\n";
    8     }
Pada baris ke 1 dan ke 2 di atas, sebuah skalar $sequence dengan nilai CTAATGGA dan skalar $pattern dengan nilai ATG dideklarasikan. Pengecekan apakah pattern ATG terdapat dalam sequence CTAATGGA dapat dengan mudah dilakukan menggunakan fasilitas pattern matching. Menggunakan binding operator, =~, seperti yang dilakukan pada baris ke 3 di atas, Perl memeriksa dengan sangat efisien apakah dalam skalar $sequence terdapat pattern ATG. Untuk contoh di atas, pattern ATG ada dalam sequence CTAATGGA, sehingga pernyataan "Pattern ATG ditemukan dalam sequence CTAATGGA" akan ditampilkan dilayar monitor.
Sebenarnya, untuk contoh kasus di atas, bahasa C atau bahasa pemograman lainnya juga dapat digunakan. Namun akan lebih rumit dan panjang. Bila ditulis dengan bahasa C, sudah jelas kita harus berurusan dengan pointer dan iterasi yang memeriksa satu per satu apakah setelah karakter A dua karakter selanjutnya adalah karakter T dan G.  Untuk kasus-kasus manipulasi teks, menggunakan Perl jauh lebih mudah. Fungsi tr atau translate dari Perl dapat mengubah setiap karakter yang dimaksud dengan sangat mudah.
    tr///
Fungsi tr menerjemah setiap karakter yang ditemukan di menjadi karakter yang bersesuaian posisinya di bagian . Jadi untuk contoh kasus kedua ini, hanya dengan satu pernyataan saja, perubahan karakter dapat diselesaikan.
    $sequence =~ tr/ACGT/TGCA/;
Bila pada awalnya sequence DNA adalah CTAATGGA, maka dengan pernyataan di atas, sequence DNA berubah menjadi GATTACCT.
Masih banyak lagi keunggulan-keunggulan Perl, yang tentunya tidak mungkin kita bahas semuanya dalam tulisan ini. Namun penulis ingin menyampaikan bahwa begitu powerful-nya kemampuan Perl dalam memanipulasi teks dan file, termasuk dalam membuat cgi (common gateway interface). Selain itu, Perl juga merupakan tool yang sangat tepat untuk merancang prototype suatu algoritma. Benar memang kalau Perl bukanlah tool untuk semua hal. Perl bukanlah bahasa pemograman yang tepat untuk merancang kernel, tidak pula untuk merancang program client-server yang membutuhkan penanganan thread dan memori poll yang efisien.
Perl dijalankan menggunakan interpreter. Interpreter Perl disebut perl Script (menggunakan huruf kecil semua). Perl tidak memiliki compiler yang dapat mengubah source code menjadi bahasa mesin (binary code). Program yang ditulis dengan Perl dapat dilihat dengan mudah oleh orang lain yang menjalankan program tersebut. Selain itu, tidaklah efisien menulis program yang sangat panjang (mungkin lebih dari 10,000 baris) menggunakan Perl bila program yang ditulis tersebut dijalankan berulang-ulang sebanyak ratusan atau bahkan ribuan kali per menit. Hal ini disebabkan karena setiap program tersebut dijalankan, interpreter perl harus menerjemahkannya ke dalam bytecode yang dipahami oleh compiler internal perl.


MEMULAI PROGRAM

Perl adalah suatu program yang dapat digunakan dalam berbagai sistem operasi, seperti Macintosh, UNIX dan Windows. Dalam pembahasan nanti, akan lebih di titik beratkan pada pengunaan dalam sistem Operasi Windows.
Program processing word apapun dapat digunakan untuk mengoperasikan program ini selama file disimpan dalam bentuk text only. Pada Windows, Notepad adalah program yang baik untuk menunjang pengoperasian Perl Programming, sepanjang file tersebut disimpan dalm format text only. Dan penamaan file ini harus diakhiri dengan .pl, yang merupakan perjanjian standar penamaan scripts Perl. Dan penyimpanan dilakukan di directory pada command-prompt. Atau directory pada command-prompt diubah sesuai dengan letak file. Sedangkan, untuk me-run program ini, buka command-line window, atau jika pada Windows, buka command prompt.

Contoh:
Notepad diisi ketikan sebagai berikut, kemudian disimpan pada C:Documents and Settings\zuma.




                         Gambar 1. Tampilan Notepad untuk file first.pl

File baru ini terdiri dari dua baris. Baris pertama adalah comment yang menandakan bahwa file merupakan Perl script (diindikasikan dengan #! Pada awal baris). Baris kedua adalah print statement yang memberitahu Perl untuk menampilkan kalimat yang berada diantara tanda petik dua.
Lalu, pada command prompt diketik
Perl –w filename.pl
Sehingga tampak tampilan berikut:




Gambar 2. Tampilan Command Prompt setelah file first.pl dipanggil melalui
  command Perl –w filename.pl



BAGAIMANA SCRIPT BEKERJA

Sebuah script terdiri dari sederet commands, yang lebih formal disebut statement, yang sangat bermakna untuk Perl interpreter. Atau dengan kata lain, interpreter dimulai dari atas kemudian bekerja kebawah dan mengeksekusi setiap statement sesuai urutannya.
Berikut merupakan tampilan awal script Perl versi 3:
1.      Untuk bagian General, terdapat tampilan berikut:

Gambar 3. Tampilan General Perl script versi 3
2.      Untuk bagian Program, terdapat tampilan berikut:

Gambar 4. Tampilan Program Perl script versi 3
3.      Untuk bagian Tools, terdapat tampilan berikut:
 
Gambar 5. Tampilan Tools Perl script versi 3

Contoh:
#!/usr/bin/perl
#preamble...
print"I can do math!\n";
#do some calculation
$sum=3+4;
#print the result
print"The sum of 3+4 is ",$sum,".\n";

program diatas akan menghasilkan input berupa:
I can do math!
The sum of 3+4 is 7.
Jika menggunakan notepad, maka diperoleh:

Gambar 6. Tampilan Notepad dari file second.pl

Dalam notepad muncul #, yang berarti komentar. Maksudnya adalah statement di belakang tanda # tidak dieksekusi oleh Perl. Kemudian statement pada notepad tersebut di-run di command prompt sebagai berikut:
Gambar 7. Tampilan Command Prompt setelah file second.pl dipanggil melalui command Perl –w filename.pl
Jika dipergunakan perl script, maka tampilannya sebagai berikut:
Gambar 8. Tampilan Perl Script untuk program dalam file second.pl
 

STRING, BILANGAN, DAN VARIABEL

String
Istilah dalam Perl untuk text adalah string. String dalam Perl ditandai dengan adanya tanda kutip baik single maupun doble. Biasanya string diapit oleh tanda kutip tersebut.
Contoh:
#!/usr/bin/perl
print"Anna,\nShe wailed\tcome quickly!\tThe tiara is gone!\n";
#again
print'Anna,\nShe wailed\tcome quickly!\tThe tiara is gone!';        
#again
print'
Anna,
She wailed    come quickly! The tiara is gone!';  

Output yang akan dihasilkan adalah:
Anna,
She wailed    come quickly! The tiara is gone!
Anna,\nShe wailed\tcome quickly!\tThe tiara is gone!
Anna,
She wailed    come quickly! The tiara is gone!

Jika program diatas dieksekusi menggunakan notepad, maka akan didapatkan tampilan berikut:

Gambar 9. Tampilan Notepad dari file string1.pl
Seperti terlihat dalam gambar diatas, file notepad tersebut disimpan dengan nama string1.pl, ingat bahwa .pl harus selalu dibubuhkan dalam penamaan file. Hal ini dimaksudkan untuk menandai bahwa file yang kita simpan dalam bentuk script perl.
Lalu, ditampilkan pada command prompt sebagai berikut:
Gambar 10. Tampilan Command Prompt setelah file string1.pl dipanggil melalui command Perl –w filename.pl

Jika dalam string ingin ditambahkan character spesial lain seperti tabs atau baris baru, Perl menyediakan escape sequence istimewa untuk merepresentasikannya. Diantaranya adalah \n dan \t. Dimana \n merepresentasikan baris baru sedang \t merepresentasikan tab. sebagaimana yang telah dicontohkan diatas.
Jika ditampilkan dalam bentuk perl script langsung, maka akan muncul tampilan sebagai berikut:
Gambar 11. Tampilan Perl Script untuk program dalam file string1.pl
Number
Perl dapat bekerja dengan berbagai macam tipe data bilangan, seperti integer, floating point number, bilangan kompleks, dan bilangan biner. Tidak ada yang istimewa pada penulisan atau pengekspresian sebuah bilangan dalam Perl, seperti yang tampak pada contoh berikut:
1
49
28.2
-109
6.04E23
Pada contoh yang terakhir, E berarti exponen, dan bilangan tersebut adalah     6.04  10 23 .

Variabel
Variabel merupakan penyimpanan sementara dari string, bilangan, dan nilai-nilai yang lain. Dalam Perl, variabel diberi nama secara sebarang dan didahului dengan tanda dollar. Ketika variabel pertama kli didefinisikan, variabel awalnya kosong atau tak ditentukan batas-batanya. Nilai ditentukan ke variabel dengan menggunakan tanda ’=’. Contoh penulisan variabel telah diberikan sebelumnya dalam Gambar 6.


ARITMATIKA

Perl mengenali aritmetic dasar. Simbol-simbol yang disebut operator berkaitan dengan operasi aritmatika, seperti:
+    penjumlahan
–    pengurangan
*    perkalian
/     pembagian
**  eksponensiasi
( )   grouping
Contoh:
#!usr/bin/perl
$x=4;
$y=2;
$z=3+$x*$y;
print "The value of z is ",$z,".\n";

Program diatas akan memebrikan output:
The value of z is 11.

Dengan menggunakan Perl Script, maka akan didapatkan tampilan sebagai berikut:

Gambar 12. Tampilan contoh penggunaan operasi aritmatika pada perl script

INTERPOLASI VARIABEL

Yang menarik dari perbedaan antara tanda petik double dan single adalah tentang apa yang terjadi ketika sebuah variabel disisipkan ke dalam string. Pada string dengan tanda petik double, variabel diperluas ke isinya, proses ini dikenal dengan interpolasi string. Jika tidak ingin menampilkan nilai variabel, maka dalam string dengan tanda petik double harus dibubuhi tanda backslash didepan variabel yang akan diinterpolasikan.
Sedangkan dalam string dengan tanda petik single, tidak bekerja pada model ini. Artinya variabel hanya akan dibaca secara harfiah, bukan sebagai suatu variabel yang memiliki nilai.
Contoh:
#!usr/bin/perl
$x=4;
$y=2;
$z=3+$x*$y;  
$p=17*$x*$y-$z;
$s=15-$x+7*$y;
print "The value of z is ",$z,".\n";
print 'The value of p is ',$p,".\n";
print 'The value of s is $s.';
 Program tersebut akan memberikan output:
The value of z is 11.
The value of p is 125.
The value of s is $s.

Gambar 13. Perbedaan dalam string  dengan tanda petik double dan single
Interpolasi variabel hanya berlaku pada konten dari vareiabel itu sendiri. Perl tidak akan menghitung ekspresi aritmatika atau statement program lain yang disisipkan diantara string dengan tanda petik double. Contohnya sebagai berikut:

#!usr/bin/perl
$x=4;
$y=2;
print "The value of z is $x+$y ";

program di atas akan memberikan output:
The value of z is 4+2

Seperti tampak pada Gambar berikut:


Gambar 14. Tampilan Perl script yang tidak mengeksekusi statement program lain yang disisipkan diantara string dengan tanda petik double.


INPUT DAN OUTPUT DASAR

Input, dalam bahasa pemrograman, merupakan bagaimana data diambil dan dimasukkan dalam script. Sedangkan output adalah hasil keluaran dari script. Banyak script yang melakukan keduanya, meng-input data dari suatu source dan meng-output ke data lainnya.
Cara utama untuk meng-output adalah dengan menggunakan fungsi print. Print merupakan fungsi yang diikuti spasi dan satu atau beberapa argument yang dipisahkan dengan koma dan mengirimnya ke current output device, yang berada secara default pada layar komputer. Print hanya akan bekerja pada ekspresi string, bilangan dan variabel. Sedangkan cara utama untuk meng-input data adalah dengan menggunakan operator kurung sudut (<>), yang akan dibaca sebagai barisan input dari current input device.

Contoh:
#!usr/bin/perl
#input name by user
print "Enter your name:";
$name=<>;
chomp $name;
print "Hello $name!\n";
print "It's been so nice to meet you.";

Diharapkan program ini akan memberikan tampilan sebagai berikut:
Enter your name: zuma
Hello, zuma!
It's been so nice to meet you.

Dalam notepad, akan diperoleh tampilan berikut. Dimisalkan file disimpan di directory D dengan nama name1.pl.

Gambar 15. Tampilan program name1.pl dalam notepad

Tapi, program ini harus di run di command prompt. Jika dieksekusi langsung di perl script, akan muncul command berikut:

Gambar 16. Tampilan command pada perl script saat running program input data dilaksanakan.

Selanjutnya, jika di-run dengan menggunakan command prompt akan diperoleh tampilan berikut:


Gambar 17. Tampilan command prompt ketika mengeksekusi program dalam name1.pl
MAKING DECISION

Seringkali, terdapat path berbeda yang mengikuti jika sebagian kondisi terpenuhi (true ataupun benar). Ketika input yang dimasukkan oleh user tidak masuk akal untuk tetap dieksekusi, maka perlu diberikan batasan pada input yang akan dimasukkan oleh user. Dengan kata lain menolak inputan yang tidak diinginkan. Salah satu caranya tampak pada program berikut:

#!/usr/bin/perl
print “Enter your age: ”;
$age = <>;
die “Yor age doesn’t reasonable” if $age <= 0 or $age >= 100;
print “Your age in month is ”,$age*12,“\n”;

Selanjutnya, program diatas diketik pada notepad atau stratch pad pada perl script tool, kemudian disimpan (misalnya di directory D dan dengan nama age2.pl), maka program tersebut akan memberikan output sebagai berikut:

Gambar 18. Tampilan output program age2.pl

Pada program diatas, terdapat fungsi die dalam baris keempat. fungsi ini adalah fungsi untuk mematikan kerja dari command print. Fungsi ini terdiri dari dua bagian. Bagian pertama  die “Yor age doesn’t reasonable” dan yang kedua adalah if $age <= 0 or $age >= 100. Fungsi die akan dilaksanakan jika kondisi yang menyertainya pada bagian kedua terpenuhi. Namun jika tidak terpenuhi, maka fungsi print yang akan dieksekusi dan fungsi die akan diabaikan.
Perl memiliki operator perbandingan yang lengkap, seperti tampak pada tabel berikut:
Tabel 1. Operator perbandingan numeric yang dimiliki Perl
Selain itu, Perl juga mengenal operator perbandingan string yang juga lengkap. Ditampilkan dalam tabel berikut:
Tabel 2. Operator perbandingan string pada Perl
Contoh penggunaan operator perbandingan string pada perl:
#!usr/bin/perl
print "Enter your name:";
$name=<>;
chomp $name;
print "Hei $name! \nIts nice to meet you.\n";
print "You're look so gorgeous!", if $name eq "zuma";

Program tersebut akan memberikan output berikut (jika disimpan dengan nama file name2.pl):

Gambar 19. Tampilan running program name2.pl



CONDITIONAL

Script Perl jugamenyediakan fungsi conditional. Dimana beberapa statement dieksekusi secara conditional. Eksekusi ini dapat dilakukan dengan dua cara yaitu menggunakan statement if atau if else. Contoh penggunaan if telah dicontohkan sebelumnya pada age2.pl. Berikut akan diberikan contoh penggunaan if else dalam ekspresi conditional.
#!/usr/bin/perl
print "Enter your age:";
$age = <>;
if ($age > 0 and $age <= 5)
     {print "You're too young to use the computer!.\n";}
elsif ($age < 0 or $age >= 100)
     {print "That age doesn't reasonable to me.\n";}
else
     {print "Your age in month is ",$age*12,"\n";}

Program tersebut mempunyai fungsi conditional di dalamnya. Yaitu, jika umur yang dimasukkan lebih dari nol tapi kurang dari 5, maka akan muncul command You're too young to use the computer!, jika umur yang dimasukkan oleh user kurang dari nol atau lebih dari 100, maka akan muncul command That age doesn't reasonable to me. Sedangkan jika umur yang lain, akan menghasilkan output berupa nilai umur dalam bulan.
Jika ditampilkan dalam notepad, maka akan diperoleh output sebagai berikut:

Gambar 20. Tampilan notepad dari program age3.pl
Gambar 21. Tampila output proram age3.pl dengan 3 kali percobaan pemasukan data





LOOP

Pernyataan conditional memungkinkan modifikasi dalam menjalankan programnya, sedemikian hingga bagian kode dapat dieksekusi atau diabaikan selama diperlukan. Perl dan beberapa bahasa pemrograman yang lain mengenal hal yang demikian ini sebagai loops. Perl memiliki banyak perbedaan tipe looping. Yang paling sering digunakan adalah fungsi while. Fungsi while terlihat sama seperti fungsi if. Tapi pada if, statements akan dieksekusi sekali jika persyaratan terpenuhi. Sedang dalam while satatements akan diulang berkali-kali selama persyaratan dipenuhi.
Contoh penggunaan fungsi while sebagai loops function:

#!/usr/bin/perl
$count = 1;
print "There's an apple.\n";
$count = $count + 1;
while ( 1 < $count and $count <=7)
     {print "There are $count apples.\n";
     $count = $count + 1;}
Jika di-run, maka program tersebut akan memberikan output:

Gambar 22. Tampilan output program dalam perl Script

MENGGABUNGKAN LOOPS DAN INPUT

Fungsi loop akan sangat berguna jika dikombinsikan dengan statement input. Seperti dalam contoh berikut:

#!/usr/bin/perl
print "Type something ";
$line = <>;
while (defined ($line))
     {print "You typed $line \n\n";
     print "Type something ";
     $line = <>;}

Program tersebut akan mengembalikan apa yang diinputkan oleh user, dan selama user masih memasukkan input, maka program ini akan terus berjalan. Untuk menghentikan jalannya pogram ini, pada sistem windows, hal ini dilakukan dengan mengetik control-z (^z).
Jika program tersebut setelah disimpan dalam bentuk .pl melalui notepad, maka di command prompt, program tersebut akan menghasilkan output berikut:

Gambar 23. Tampilan output program loop3.pl dengan melakukan dua kali input


MENCARI PANJANG DARI SUATU SEQUENCE

Salah satu kegunaan Perl adalah pada bidang biologi. Salah satu contohnya adalah dalam pengeksekusian sequence DNA yang besar berformat huruf-tunggal. Sequence ini panjangnya belum diketahui, dan ingin dicari jumlah baris dalam sequence-nya. Comtph berikut akan mempermudah pemahaman.

#!/usr/bin/perl
# length2.pl
print "Masukkan character: ";
$length = 0; # set length counter to zero
$lines = 0; # set number of lines to zero
while (<>) { # read file one line at a time
print "Masukkan character: ";
chomp; # remove terminal newline
$length = $length + length $_ ;
$lines = $lines + 1;
}
print "LENGTH = $length\n";
print "LINES = $lines\n";

Tampilan notepad-nya sebagai berikut:

Gambar 24. Tampilan program length2.pl dalam notepad

Dalam program diatas, terdapat fungsi length. Fungsi dilibatkan untuk mendapatkan panjang dari baris suatu string dengan menghilangkan enter (tanda enter atau baris baru tidak diperhitungkan). Jika di-run menggunaka command prompt dan meng-input-kan sequence dari aureus FabH (3IL7), maka akan diperoleh output program berikut:

Gambar 25. Tampilan output dari program length2.pl menggunakan command prompt.

Data yang dimasukkan ke dalam program untuk dieksekusi, diperoleh dari BLAST dimana data ini berbentuk fasta. Hasil diatas sesuai dengan data panjang DNA yang diperoleh dari BLAST, yaitu 313.


PENCOCOKAN POLA

Pencocokan pola adalah perbandingan text string yang khusus. Pencocokan pola ini cenderung mirip dengan fungsi eq, tapi sebagai ganti pencocokan yang persis sama dari dua string. Pencocokan pola ini menguji sebuah string dan sebuah pola. Berikut ini adalah contoh pencocokan pola (matching patern) dalam stracthpad dan di-run di command prompt.

#!/usr/bin/perl
# length2.1.pl
print "masukkan sequence: \n";
$dna = <>;
if ($dna =~/SFAG/)
{print "ditemukan patern yang dimaksud dalam sequence";}
else {print "patern tidak ditemukan dalam sequence";}

Gambar 24. Contoh program matching patern

(a)

(b)
    Gambar 26. (a). Contoh output pattern matching ketika input yang dinerikan adalah
                     penggalan dari sequence Saccharomyces cerevisiae (2WAS)
 (b). Contoh output pattern matching ketika input yang dinerikan adalah penggalan dari sequence aureus FabH (3IL7)

Contoh lainnya adalah sebagai berikut:

#!/usr/bin/perl
# length2.2.pl
print "masukkan sequence: \n";
$dna = <>;
if ($dna =~/GG[VTAG]/)
{print "ditemukan patern yang dimaksud dalam sequence";}
else {print "patern tidak ditemukan dalam sequence";}

(a)

(b)


(c)
Gambar 27.    (a). Program patern matching dalam statchpad                                                                                                             
  (b). Contoh output pattern matching ketika input yang diberikan adalah penggalan dari sequence Saccharomyces cerevisiae (2WAS)
  (c). Contoh output pattern matching ketika input yang dinerikan adalah penggalan dari sequence aureus FabH (3IL7)
 

TRANSLETE PATTERN

Seperti yang telah disebutkan sebelumnya, bahwa perl adalah program yang memberikan banyak kemudahan untuk mengeksekusi fungsi atas text. Salah satu kemudahannya adalah fungsi translate (tr) oleh perl script. Fungsi ini adalah fungsi yang dapat mengganti suatu character dengan character lainnya, sesuai dengan kebutuhan. Berikut adalah contoh penggunaannya:

#!/usr/bin/perl
print "masukkan sequence: \n";
$dna = <>;
if ($dna =~/SFAG/)
{print "ditemukan patern yang dimaksud dalam
 sequence\n";}
else {print "patern tidak ditemukan dalam sequence\n";}
$dna =~ tr/ACGT/TGCA/;
print "sequence setelah ditranslate: ",$dna,"\n";

Bila di-run dalam command prompt dengan memberikan input berupa penggalan sequence Saccharomyces cerevisiae 2WAS, maka tampilan yang diperoleh adalah sebagai berikut:


(a)

(b)
  Gambar 28. (a). Tampilan stratchpad dari matching4.pl
       (b). Contoh output pattern matching ketika input yang diberikan adalah penggalan dari sequence Saccharomyces cerevisiae (2WAS)
 

DAFTAR PUSTAKA

[1].       Baxevanis Andreas D., B.F. Francis Ouellette. Bioinformatics: A Practical Guide to the Analysis of Genes and Proteins, Second Edition. 2001. John Wiley & Sons, Inc.
[2].         http://www.bioperl.org/