Jakarta, 2007
Hak Cipta 2007 Kementerian Negara Riset dan Teknologi dan Yayasan Penggerak Linux Indonesia
Distribusi : Kementerian Negara Riset dan Teknologi Republik Indonesia Deputi Bidang Pendayagunaan dan Pemasyarakatan Iptek Asisten Deputi Pengembangan dan Pemanfaatan Teknologi Informasi Gedung II BPP Teknologi Lantai 6 Jl. MH. Thamrin No.8 Jakarta 10340 Telepon : (021) 316 9181 / 316 9166 Faksimili : (021) 310 1952 Web : www.ristek.go.id
Yayasan Penggerak Linux Indonesia (YPLI) Jln. Mampang Prapatan X No. 4 Jakarta Selatan 12790 Indonesia Telp. 021 93740960, Fax. 021 7874225, Email: info@ypli.or.id Pengurus YPLI: Rusmanto Maryanto (Ketua); Resza Ciptadi (Sekretaris); Effendy Kho (Bendahara); Penyusun: Firdaus Tjahyadi; Henry Saptono; Irfan Gustiarahman; Mgs. Hendri Thoyyib; Prihantoosa; Resza Ciptadi; Rusmanto Maryanto; Sirojul Munir; Yan Farmawan
ISBN 978-979-630-040-2
SAMBUTAN MENEGRISTEK
Pembangunan teknologi informasi merupakan sumber terbentuknya iklim yang menjadi landasan bagi tumbuhnya kreativitas sumberdaya manusia yang dapat menjadi sumberdaya pertumbuhan dan daya saing ekonomi. Dengan menyadari akan hal tersebut, peran teknologi informasi sangatlah penting dalam kehidupan masyarakat, sehingga mendorong peningkatan kemandirian, daya saing, kreativitas serta inovasi bangsa yang merupakan kunci utama keberhasilan pembangunan bangsa. Melalui semangat untuk membangkitkan inovasi ini, Program Indonesia, Go Open Source (IGOS) dideklarasikan. Tumbuhnya kesadaran untuk meraih kemandirian dalam pemanfaatan teknologi informasi dan komunikasi (information and communication technology-ICT), ditopang dengan tersedianya berbagai pilihan terhadap perangkat lunak (software) yang dapat digunakan oleh masyarakat. Pilihan untuk mengembangkan dan memanfaatkan open source software (OSS) merupakan pilihan yang rasional, baik dari segi legalitas, ekonomi, maupun tingkat keamanannya (security). Untuk kepentingan pendayagunaan open source serta memudahkan pengenalan perangkat lunak berbasis Open Source kepada masyarakat, Kementerian Negara Riset dan Teknologi menginisiasi penyusunan Panduan Pendayagunaan Open Source Software yang bekerjasama dengan komunitas Iptek, Yayasan Penggerak Linux Indonesia (YPLI). Dalam konteks ini, saya menyambut gembira penyusunan Panduan Pendayagunaan Open Source Software yang tentunya diharapkan dapat lebih memudahkan masyarakat dalam mengenal perangkat lunak berbasis open source. Dokumen tersebut terdiri atas delapan dokumen yaitu Perangkat Lunak Bebas dan Open Source, Petunjuk Instalasi IGOS Nusantara, Konfigurasi Server Linux, Aplikasi untuk Server, RDBMS (Relational Database Management System): MySQL, Bahasa Pemrograman Open Source, Aplikasi Perkantoran OpenOffice.org, dan CMS, CRM, dan ERP. Akhir kata, semoga kedelapan Dokumen ini dapat bermanfaat bagi peningkatan kemampuan masyarakat dalam penguasaan teknologi piranti lunak bebas dan open source. Dengan semangat Kreativitas Tanpa Batas dan maju bersama Indonesia, Go Open Source! Kita besarkan produk aplikasi perangkat lunak Indonesia. Jakarta, Juli 2007 Menteri Negara Riset dan Teknologi
Kusmayanto Kadiman
PENGANTAR
Dokumen ini disusun sebagai salah satu bahan acuan untuk pelatihan tentang perangkat lunak bebas dan open source dengan semangat IGOS (Indonesia, Go Open Source!) yang dimotori oleh Kementerian Negara Riset dan Teknologi Republik Indonesia. Dokumen ini merupakan bagian dari delapan dokumen IGOS Training Tool Kit yang disusun oleh Yayasan Penggerak Linux Indonesia dan diterbitkan oleh Kementerian Negara Riset dan Teknologi Republik Indonesia. Kedelapan dokumen itu adalah Perangkat Lunak Bebas dan Open Source, Petunjuk Instalasi IGOS Nusantara, Konfigurasi Server Linux, Aplikasi untuk Server, RDBMS (Relational Database Management System): MySQL, Bahasa Pemrograman Open Source, Aplikasi Perkantoran OpenOffice.org, dan CMS, CRM, dan ERP. Sebagian bahan penyusunan dokumen ini diambil dari Open Source Training Tool Kit yang diterbitkan oleh Open Source Resource Center (OSRC) - Pakistan Software Export Board (PSEB). Lisensi dokumen ini OPL (Open Publication License) versi 1.0 atau yang lebih baru dan dapat diakses di http://opencontent.org/openpub/.
iii Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
DAFTAR ISI
SAMBUTAN MENEGRISTEK.................................................................................................ii PENGANTAR............................................................................................................................iii DAFTAR ISI..............................................................................................................................iv I.Mengenal PERL........................................................................................................................1 1.Tentang PERL......................................................................................................................1 2.Menjalankan Program PERL..............................................................................................1 2.1.Eksekusi dari file.........................................................................................................1 2.2.Eksekusi dari command line........................................................................................2 3.Dasar-dasar PERL...............................................................................................................2 3.1.Program PERL.............................................................................................................2 3.1.1.Statemen................................................................................................................2 3.1.2.Komentar..............................................................................................................2 3.2.Variabel dan Tipe data.................................................................................................3 3.2.1.Skalar....................................................................................................................3 3.2.1.1.String petik tunggal (single quote) dan petik ganda (double quote).............3 3.2.2.Array....................................................................................................................4 3.2.3.Hash.....................................................................................................................5 3.3.Operator.......................................................................................................................6 3.4.Fungsi..........................................................................................................................7 3.5.Konstruksi Kondisional...............................................................................................8 3.5.1.if............................................................................................................................8 3.5.2.unless....................................................................................................................9 3.6.Konstruksi Loop..........................................................................................................9 3.6.1.for.........................................................................................................................9 3.6.2.foreach..................................................................................................................9 3.6.3.while...................................................................................................................10 3.7.Input dan Output ke file.............................................................................................10 3.7.1.Membaca dari file teks........................................................................................10 3.7.2.Menulis ke file teks............................................................................................10 3.8.Subrutin......................................................................................................................11 4.Penutup..............................................................................................................................12 II.Mengenal PHP.......................................................................................................................13 1.Menginstal PHP.................................................................................................................13 1.1.Instalasi Apache..........................................................................................................13 1.2.Instalasi module PHP dan PHP CLI:.........................................................................13 2.Menjalankan Program PHP...............................................................................................14 2.1.Aplikasi Konsol..........................................................................................................14 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source iv
2.2.Aplikasi web..............................................................................................................14 3.Bahasa PHP.......................................................................................................................14 3.1.Program PHP..............................................................................................................15 3.2.Komentar....................................................................................................................15 3.3.Tipe Data....................................................................................................................16 3.3.1.Tipe Primitif.......................................................................................................16 3.3.1.1.Boolean........................................................................................................16 3.3.1.2.Integer.........................................................................................................16 3.3.1.3.float.............................................................................................................16 3.3.1.4.string...........................................................................................................16 3.3.1.4.1.Petik ganda...........................................................................................17 3.3.1.4.2.Petik Tunggal.......................................................................................17 3.3.1.4.3.Heredoc...............................................................................................17 3.3.2.Tipe Gabungan (compound)...............................................................................17 3.3.2.1.Array...........................................................................................................17 3.3.2.2.Objek..........................................................................................................18 3.3.3.Tipe Khusus........................................................................................................18 3.3.3.1.Resource......................................................................................................18 3.3.3.2.NULL ........................................................................................................18 3.3.4.Konversi ke boolean ..........................................................................................18 3.4.Variabel......................................................................................................................19 3.4.1.Assignment.........................................................................................................19 3.5.Ekspresi dan Operator...............................................................................................20 3.5.1.Operator aritmetika............................................................................................20 3.5.2.Operator incrementing/decrementing................................................................21 3.5.3.Operator assignment..........................................................................................21 3.5.4.Operator Perbandingan.......................................................................................21 3.5.4.1.Ternary........................................................................................................21 3.5.4.2.Equal...........................................................................................................22 3.5.4.3.Identical......................................................................................................22 3.5.4.4.Not Equal....................................................................................................22 3.5.4.5.Not Identical...............................................................................................23 3.5.5.Operator Logika.................................................................................................23 3.5.5.1.Logical AND..............................................................................................23 3.5.5.2.Logical OR.................................................................................................24 3.5.5.3.Logical XOR..............................................................................................24 3.5.5.4.Logical NOT..............................................................................................24 3.5.5.5.Logical AND (&&)....................................................................................24 3.5.5.6.Logical OR (||)............................................................................................24 3.5.6.Operator bit.......................................................................................................25 3.5.6.1.Bitwise AND..............................................................................................25 3.5.6.2.Bitwise OR.................................................................................................25 v Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
3.5.6.3.Bitwise XOR..............................................................................................25 3.5.7.Operator String...................................................................................................26 3.6.Kendali Alur Program................................................................................................26 3.6.1.Conditional.........................................................................................................26 3.6.2.switch ................................................................................................................27 3.6.3.Struktur loop......................................................................................................27 3.6.3.1.while...........................................................................................................28 3.6.3.2.do while......................................................................................................29 3.6.3.3.break ..........................................................................................................30 3.6.3.4.continue......................................................................................................30 3.6.3.5.foreach........................................................................................................31 3.6.3.6.return..........................................................................................................32 3.6.3.7.Exception....................................................................................................32 3.7.Fungsi.........................................................................................................................33 3.7.1.Mendefinisikan Fungsi ......................................................................................33 3.7.2.Nilai Default untuk parameter............................................................................34 3.7.3.Pemanggilan Fungsi...........................................................................................34 3.8.Class...........................................................................................................................35 3.9.Reusabilitas................................................................................................................36 3.9.1.include................................................................................................................36 3.9.2.require................................................................................................................36 3.9.3.include_once......................................................................................................36 3.9.4.require_once.......................................................................................................37 3.10.Menggunakan Fungsi dan Class dan file lain..........................................................37 4.Aplikasi Web.....................................................................................................................37 4.1.Method GET dan POST.............................................................................................38 4.2.Menangani request.....................................................................................................38 4.2.1.Request GET.......................................................................................................38 4.2.2.Request POST....................................................................................................38 4.3.Penjelasan Program...................................................................................................39 4.3.1.File head.php......................................................................................................39 4.3.2.File ordersvc.php................................................................................................39 4.3.3.File menu.php....................................................................................................40 4.3.4.File pesan.php.....................................................................................................41 5.Penutup..............................................................................................................................42 III.Mengenal Python.................................................................................................................45 1.Apa itu Python...................................................................................................................45 2.Menjalankan Interpreter Python........................................................................................45 3.Program Python.................................................................................................................46 4.Statemen............................................................................................................................46 5.Komentar...........................................................................................................................46 6.Objek dan variabel............................................................................................................46 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source vi
7.Tipe data, literal dan operasi..............................................................................................47 7.1.Bilangan......................................................................................................................47 7.2.String dan Unicode String..........................................................................................48 7.3.Boolean......................................................................................................................49 7.4.Tipe data container.....................................................................................................49 7.4.1.List......................................................................................................................49 7.4.2.Tuples.................................................................................................................49 7.4.3.Sets.....................................................................................................................50 7.4.4.Dictionary...........................................................................................................50 8.Ekspresi dan operasi..........................................................................................................50 8.1.Ekspresi Atom............................................................................................................50 8.1.1.Identifier.............................................................................................................50 8.1.2.Literal..................................................................................................................51 8.1.3.Enclosure............................................................................................................51 8.1.3.1.Bentukan dalam Kurung (Parenthesized forms)..........................................51 8.1.3.2.List display..................................................................................................51 8.1.3.3.Generator expressions.................................................................................51 8.1.3.4.Dictionary display.......................................................................................52 8.1.3.5.Konversi String...........................................................................................52 8.2.Ekspresi Primer (Primaries) .....................................................................................52 8.2.1.Referensi Atribut (Attribute Reference).............................................................52 8.2.2.Subskrip.............................................................................................................52 8.2.3.Irisan (Slicing)...................................................................................................53 8.2.4.Pemanggilan callable (calls) .............................................................................54 8.3.Operasi Pangkat.........................................................................................................54 8.4.Operasi aritmetika unary...........................................................................................54 8.5.Operasi aritmetika biner............................................................................................54 8.5.1.Perkalian.............................................................................................................54 8.5.2.Pembagian..........................................................................................................55 8.5.3.Modulus (%)......................................................................................................55 8.5.4.Penjumlahan.......................................................................................................55 8.5.5.Pengurangan.......................................................................................................55 8.6.Operasi Pergeseran (shifting)....................................................................................55 8.7.Operasi Bit Biner (binary bitwise).............................................................................56 8.8.Operasi Perbandingan (comparison).........................................................................56 8.9.Operasi Boolean.........................................................................................................57 8.10.Lambda.....................................................................................................................57 8.11.Ekspresi Lists...........................................................................................................58 9.Fungsi................................................................................................................................58 10.Statemen Kendali Alur....................................................................................................59 10.1.Statemen if................................................................................................................59 10.2.while.........................................................................................................................60 vii Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
10.3.for.............................................................................................................................61 10.4.pass...........................................................................................................................61 10.5.exceptions.................................................................................................................62 11.Modules............................................................................................................................62 11.1.Mendefinisikan Module............................................................................................63 11.2.Menggunakan Module.............................................................................................63 11.3.Module search path..................................................................................................63 12.Class................................................................................................................................64 13.Penutup............................................................................................................................65 IV.Mengenal Ruby.....................................................................................................................67 1.Apakah Ruby.....................................................................................................................67 2.Mendapatkan dan Mengintal Ruby....................................................................................67 3.Menjalankan Ruby.............................................................................................................67 3.1.Menggunakan file skrip.............................................................................................67 3.2.Menggunakan command line.....................................................................................68 3.3.Secara Interaktif.........................................................................................................68 4.Struktur Program Ruby.....................................................................................................68 4.1.File program atau skrip..............................................................................................68 4.2.Statement...................................................................................................................69 4.3.Komentar...................................................................................................................69 4.4.Class...........................................................................................................................69 4.5.Module.......................................................................................................................70 5.Tipe Data Dasar, Literal dan Variabel...............................................................................70 5.1.Numerik.....................................................................................................................70 5.2.String..........................................................................................................................71 5.3.nil...............................................................................................................................72 6.Variabel..............................................................................................................................72 7.Variabel adalah Reference.................................................................................................72 8.Scope variabel dan penamaannya......................................................................................73 8.1.Variabel global...........................................................................................................73 8.2.Variabel lokal.............................................................................................................73 8.3.Variabel instance........................................................................................................73 8.4.Variabel class.............................................................................................................74 8.5.Array dan Hash..........................................................................................................74 9.Ekspresi dan Struktur kendali............................................................................................75 9.1.Ekspresi melibatkan string dan numerik...................................................................75 9.2.Eksekusi Conditional.................................................................................................76 9.2.1.If ... then ... end...................................................................................................76 9.2.2.Conditional Ternary...........................................................................................76 9.3.Loop...........................................................................................................................77 10.Method.............................................................................................................................77 10.1.Blok dan Iterator.......................................................................................................78 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source viii
11.Class.................................................................................................................................80 11.1.Mendefinisikan Class................................................................................................81 11.1.1.Bagian-bagian class...........................................................................................81 11.1.1.1.Constructor.................................................................................................81 11.1.1.2.Method Instance.........................................................................................81 11.1.1.3.Method Class.............................................................................................82 11.1.1.4.Variabel Instance.......................................................................................82 11.1.1.5.Variabel class.............................................................................................82 11.1.2.Inheritance (class turunan)................................................................................82 12.Modules...........................................................................................................................83 12.1.Mendefinisikan Module...........................................................................................83 12.2.Menggunakan module..............................................................................................84 12.2.1.Menggunakan path...........................................................................................84 12.2.2.Menggunakan variabel khusus $:.....................................................................84 12.2.3.Menggunakan ruby option -I ...........................................................................85 12.2.4.Menggunakan variabel environment RUBYLIB..............................................85 12.3.Mixin........................................................................................................................85 13.Penutup............................................................................................................................87 V.Mengenal GCC (GNU Compiler Collection)........................................................................89 1.Apakah GCC itu?...............................................................................................................89 2.Meng-compile satu file source ke file executable.............................................................89 3.Meng-compile ke file object..............................................................................................90 4.Menggunakan file header..................................................................................................90 5.Linking dari object file menjadi executable......................................................................92 6.Menggunakan library........................................................................................................93 6.1.Membuat static library...............................................................................................93 6.2.Linking ke static library.............................................................................................94 6.3.Membuat dynamic library.........................................................................................94 6.4.Menggunakan dynamic library..................................................................................94 6.5.Menjalankan program yang menggunakan dynamic library.....................................95 7.Penutup..............................................................................................................................95 VI.Pengenalan Aplikasi Eclipse................................................................................................97 1 . Instalasi...........................................................................................................................97 2 . Menjalankan Eclipse .....................................................................................................97 3 . Memilih Workspace.......................................................................................................98 4 . Mematikan aplikasi eclipse............................................................................................98 5 . Project Pertama..............................................................................................................99 6 . Memberi nama project..................................................................................................100 7 . Seting Project................................................................................................................101 8 . Membuat Aplikasi Java Sederhana...............................................................................101 9 . Edit dan Compile Kode Program..................................................................................102 10 . Menjalankan aplikasi..................................................................................................103 ix Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
11 .Referensi .....................................................................................................................103 VII.Pengenalan Aplikasi Netbeans..........................................................................................105 1 .Instalasi..........................................................................................................................105 1.1 Instalasi Java............................................................................................................105 1.2 Instalasi Netbeans...................................................................................................105 2 .Un-Instal NetBeans .......................................................................................................107 3 .Memulai Netbeans.........................................................................................................108 3.1 Memulai Projek.......................................................................................................109 3.2 Membuat Projek......................................................................................................110 3.3 Window Kerja NetBeans.........................................................................................111 3.4 Membuat Class........................................................................................................112 3.5 Compile dan Running Program ..............................................................................113 4 .Aplikasi Dekstop............................................................................................................113 5 .Aplikasi Web..................................................................................................................114 5.6 Referensi......................................................................................................................115
I. Mengenal PERL
1.Tentang PERL
PERL adalah bahasa pemrograman yang menggunakan tipe data dinamis, program PERL dapat langsung dieksekusi tanpa harus melalui proses kompilasi tersendiri ke format binary yang dapat dieksekusi. PERL banyak digunakan pada aplikasi manajemen sistem dan jaringan, pemrograman web, manipulasi teks, akses ke database. Berikut ini beberapa aplikasi yang menggunakan PERL yang cukup dikenal: mrtg, SQL Ledger (aplikasi akunting), Webmin (aplikasi admin), spam assasin (anti spam).
Agar dapat dieksekusi tanpa mengetikkan interpreter perl di command line, file salam.pl perlu diset permissionnya. Misalkan dengan perintah :
bash% chmod 7 55 salam.pl bash% ./salam.pl Hafizh assalamu'alaikum Hafizh
Pastikan program PERL diawali dengan path lengkap ke interpreter perl yang terinstal di sistem operasi anda, untuk sistem berbasis Linux dan Unix, path tersebut harus diawali dengan karakter '#!' , seperti contoh:
#!/usr/local/bin/perl
Perhatikan dua kutip tunggal di tengah kata, karena kutip tunggal digunakan untuk membatasi perintah. Jika menggunakan kutip ganda untuk membatasi perintah :
bash% perl -e print \ Assalamu'alaikum\n\
3.Dasar-dasar PERL
3.1.Program PERL
Program PERL atau skrip PERL, biasa disimpan dalam file teks berakhiran .pl. Walaupun demikian perl interpreter tetap akan mengeksekusi program PERL yang tidak menggunakan ekstensi .pl. Sebuah program PERL yang executable dapat menggunakan hanya statement, tanpa perlu mendefinisikan fungsi khusus seperti main() dalam program bahasa C. Program PERL dapat terdiri atas statemen, deklarasi subroutine, konstruksi kondisional, konstruksi loop, konstruksi block.
3.1.1.Statemen
Statemen diakhiri dengan tanda titik coma. Statemen dapat berbentuk deklarasi variabel, assignment variabel dan pemanggilan fungsi. White space (spasi, baris baru) diabaikan.
print "open source software ?!", " it's a miracle",
3.1.2.Komentar
Sebagaimana bahasa pemrograman lainnya, programmer PERL dapat menuliskan komentar dalam kode program, dengan menempatkan karakter '#' sebelum baris komentar, contoh:
# menghitung hitung luas $area = $pi * $radius * $radius;
3.2.1.Skalar
Variabel skalar menyimpan data bernilai tunggal, tipe data dapat berupa string atau bilangan. Tipe data secara otomatis ditentukan pada saat assignment variabel. tidak perlu mendeklarasikan tipe data sebelum assignment. Nama variabel skalar dimulai dengan karakter '$'. Contoh:
# string $file = '/etc/profile'; $kota = depok; # integer $_num = $byte_ = # float $konstanta_pi = 22/7; 255; 0x00ff;
3.2.1.1.String petik tunggal (single quote) dan petik ganda (double quote)
String dapat dinyatakan dalam petik tunggal (') dan petik ganda (). String dengan petik tunggal menyatakan data adalah seperti yang tertulis, tidak ada interpretasi terhadap karakter-karakter pada string. String dengan petik ganda menyatakan bahwa interpreter PERL harus melakukan interpretasi terhadap karakter-karakter pada string tersebut. Contoh:
# dicetak dalam satu baris, karakter \n tidak diinter pretasikan $str1 = '\niman \nilmu \namal \n';
print $str1;
# dicetak dalam 3 baris diikuti baris baru $str2 = \niman \nilmu\namal \n;
print $str2;
# mencetak 'honour the adzan' diikuti baris baru $str3 = 'honour'; $str4 = $str3 the adzan\n;
Variabel Khusus PERL juga mengenal beberapa variabel skalar khusus, seperti $ARG, $_, $!, $1, $2, $3, dan sebagainya yang dijelaskan di man perlvar
3.2.2.Array
Array menyimpan sekumpulan nilai secara berurutan (sekuensial), yang biasa disebut list, nilai-nilai yang disimpan dapat berbeda-beda tipe datanya. Untuk membaca nilai anggota array digunakan nomor indeks integer dimulai dari nol. Variabel array dideklarasikan menggunakan karakter @ di depan nama variabel, data anggota array ditempatkan dalam kurung (), nilai-nilai anggota dipisahkan oleh koma. Nilai anggota array dibaca menggunakan operator [] dan nomor indeks. Contoh:
@prima1 = (2,3,5,7 , 1 1 , 1 3, 1 7); # mencetak '5' print $prima1[2];
Untuk mendapatkan jumlah anggota array digunakan variabel $# diikuti nama variabel, tapi nilainya adalah jumlah anggota array dikurangi satu. Nilai ini juga dapat digunakan untuk membaca elemen terakhir. Contoh :
@hari2 = (1 , "senin",2,"selasa", 3,"rabu",4, kamis, 5, jumat); # mencetak 'jumlah anggota : 9' print jumlah anggota : $#hari2 \n; # mencetak 'elemen terakhir : jumat' print elemen terakhir : $hari2[$#hari2] \n;
Jika sebuah program mencoba menulis anggota array pada posisi indeks yang lebih besar dari ukuran array, maka PERL secara otomatis menambah ukuran array sampai posisi baru tersebut. Contoh:
@bil3 = (1 0, 20, 30, 40); # mencetak 'ukuran array : 3'
$bil3[1 1 0] = 1234; # mencetak 'ukuran array : 1 1 0' print ukuran array : $#bil3 \n;
Membaca dari array dengan indeks yang lebih besar tidak akan menyebabkan error dan tidak akan menambah ukuran array. Contoh:
@bil4 = (1 0,20,30,40); $t1 = $bil4[89]; # mencetak 'ukuran array : 3' print "ukuran array : $#bil4 \n";
Jika variabel array dievaluasi dalam konteks nilai skalar (scalar context) maka variabel tersebut dievaluasi sebagai jumlah anggota array, contoh:
# dievaluasi dalam scalar context @arr = (1 0,20,6, 1 9, 1 1 ,22); if(@arr == 6) { print "jumlah anggota array ada 6\n"; }
Array dapat disalin sebagian anggotanya ke array lain dengan mudah (array slice), menggunakan operator [], Contoh:
@arr1 = ('semar', 'srikandi'); @arr2 = @arr1[2,4] @arr3 = @arr1[1 ..3] 'gareng', 'petruk', 'bagong', 'arjuna',
3.2.3.Hash
Hash menyimpan sekumpulan nilai yang menggunakan pasangan nama kunci dan nilai. Nama kunci dalam sebuah variabel hash haruslah unik, tidak boleh ada 2 pasangan yang menggunakan nama kunci yang sama. Variabel hash didefinisikan menggunakan karakter % diikuti nama variabel. Nilai-nilai anggota hash terdiri atas pasangan nama kunci dan nilai yang dipisahkan oleh koma. Nama kunci dan pasangan dituliskan berurutan, dapat dipisahkan tanda koma atau dapat juga dipisahkan oleh karakter '=>'. Untuk membaca nilai anggota hash digunakan operator kurawal {} dan nama kunci. Contoh:
%rasa_buah1 = ('asam', 'asem djawa', 'manis', 'manggis', 'pahit' 'pare'); # mencetak 'yang pahit = pare' print yang pahit = $rasa_buah1{'pahit'} \n;
# dapat juga ditulis seperti ini %rasa_buah2 = ( 'asam' => 'asem djawa',
$rasa = 'manis'; # mencetak 'yang manis = manggis' print yang $rasa = $rasa_buah2{$rasa} \n;
3.3.Operator
PERL memiliki banyak operator dan fungsi yang built-in, berikut ini beberapa operator yang umum digunakan, selengkapnya dapat dilihat dengan man perlop. Manipulasi String . Concat (penggabungan) Aritmetika + * / Penjumlahan Pengurangan Perkalian Pembagian Perbandingan Bilangan '== '!= < > <= >= kesamaan Ketidaksamaan Kurang dari Lebih dari Kurang dari atau sama dengan Lebih dari atau sama dengan Perbandingan String eq kesamaan
ne lt gt le ge
Ketidak samaan Kurang dari Lebih dari Kurang dari atau sama dengan Lebih dari atau sama dengan
Perhatikan bahwa PERL menyediakan operasi pembanding string dan pembanding bilangan. String dibandingkan secara alpabetis. Secara alpabetis, string '100' lebih kecil dari '8'. Contoh:
$a = 1 00; $b = 8 if ( $a > $b ) { print Bilangan $a lebih besar dari $b\n; } else { print Bilangan $a tidak lebih besar dari $b\n; } if ( $a gt $b ) { print String $a secara alpabetis lebih besar dari $b; } else { print String $a secara alpabetis tidak lebih besar dari $b; }
Operasi perbandingan menghasilkan nilai benar (true) atau salah (false). TRUE dan FALSE dalam PERL PERL tidak mengenal tipe data khusus untuk mewakili TRUE dan FALSE. Dalam PERL nilai berikut ini adalah FALSE: bilangan 0, string '0', list kosong (), dan undef , selain nilai-nilai tersebut adalah TRUE.
3.4.Fungsi
PERL memiliki fungsi built-in yang kaya, salah satu yang sudah diperkenalkan adalah print. Fungsi dapat menerima nol atau lebih argumen. Argumen sebuah fungsi dapat berupa skalar, list, atau keduanya. Pemanggilan fungsi dapat menggunakan tanda kurung () diantara argumen, dapat juga tidak. Fungsi printadalah fungsi yang menerima argumen list. Contoh:
print saya, bela jar, PERL ; # sama dengan
Fungsi print juga dapat menerima argumen skalar berupa filehandle dan list. Tentang filehandle akan dijelaskan dibagian File Input dan Output. Fungsi dapat mengembalikan nilai skalar atau list. Berikut ini fungsi localtime, yang mengembalikan list berisi data waktu, dipanggil tanpa argumen:
@bulan = ('jan', 'peb', 'mar', 'apr', 'mei', 'jun', 'jul', 'ags', 'sep', 'okt', 'nop', 'des'); @hari = ('minggu', 'senin', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu'); ($sec, $min, $hour , $mday , $mon, $year , $wday , $yday , $isdst) = localtime; print "Bulan $bulan[$mon] hari $hari[$wday] tgl $mday tahun ", 1 900+$year ,"\n";
Perlu diingat bahwa PERL pertamakali dikembangkan di lingkungan Unix, jadi akan banyak ditemukan fungsi-fungsi yang familiar dengan sistem operasi ini, misalnya yang berhubungan dengan file system, socket, network, interprocess communication, dan process control. Daftar fungsi built-in secara lengkap dapat dibaca dengan man perlfunc. Penjelasan untuk fungsi tertentu dapat dicari dengan perldoc -f <nama fungsi>. Contoh:
bash% perldoc -f localtime
3.5.Konstruksi Kondisional
Berikut ini konstruksi kondisional yang disediakan PERL
3.5.1.if
Mengeksekusi statemen jika kondisi bernilai benar. Untuk percabangan menggunakan elsif dan else. Bentuknya :
if ( kondisi1) { # statemen-statemen } elsif (kondisi2) { # statemen-statemen } elsif (kondisi3) { # statemen-statemen } else {
# statemen-statemen }
3.5.2.unless
Adalah kebalikan dari if.
3.6.Konstruksi Loop
PERL mengenal beberapa jenis loop:
3.6.1.for
Digunakan untuk melakukan pengulangan berdasarkan 3 ekspresi yang masing-masing untuk : memulai loop, menentukan apakah melanjutkan eksekusi loop, dieksekusi pada akhir loop supaya kondisi untuk mengakhiri loop dapat dicapai. Bentuknya:
f or ( <ekspresi1>; <ekpresi2>; <ekspresi3>) { # statemen-statemen }
3.6.2.foreach
Digunakan untuk melakukan iterasi berdasarkan anggota sebuah array atau list. Bentuknya:
f oreach <variabel_skalar> (<ekspresi list>) { }
} print "faktorial 6 = $p\n"; # atau terhadap array slice f oreach $q (@hari[2..5]) { print "$q\n"; }
3.6.3.while
Loop dieksekusi selama kondisi adalah TRUE. Untuk keluar dari loop harus dengan mengubah kondisi menjadi false atau menggunakan statement last; Bentuknya :
while(kondisi) { # statemen }
Variable $fh adalah filehandle yang diperlukan untuk membaca dan menutup file. Selanjutnya setiap baris dibaca dengan operator <>. sebagai berikut:
while($line = <$fh>) { # memproses $line }
selanjutnya dapat ditulis dengan perintah print, menggunakan file handle, sbb: 10 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Seperti halnya dalam hal membaca, maka filehandle harus ditutup dengan close. Berikut ini contoh membaca dari file dan menulis ke file baru, atau mengcopy file:
# mengcopy /etc/profile $fnam = '/etc/profile'; $fbaru = '/home/didi/copyprofile'; open($fh1 , $fnam) or die gagal baca $fnam, $!; open($fh2, >$fbaru) or die gagal menulis $fbaru, $!; while($line = <$fh1>) { print $fh2 $line; } close($fh1); close($fh2);
Ekspresi or die ... digunakan sebagai error handler jika file tidak dapat dibuka. Variabel khusus $! digunakan untuk menampilkan pesan error dari sistem.
3.8.Subrutin
Pada program aplikasi umumnya, kumpulan statemen yang mengimplementasikan sebuah operasi tertentu didefinisikan dalam sebuah subrutin. Beberapa subrutin biasanya didefinisikan dalam sebuah file tersendiri, sehingga dapat digunakan oleh berbagai program pemanggil. Berikut ini bentuk pendefinisian subrutin :
sub <nama subrutin> { }
Subrutin dapat menerima parameter, tapi PERL tidak mengenal named formal parameter, parameter yang dikirimkan ke subrutin dapat diakses dalam subrutin melalui array khusus @_ , berikut ini contoh subrutin sederhana yang menghitung nilai faktorial :
sub faktorial { my ($num) = @_; my $res = 1; f oreach my $a (1 ..$num) { $res *= $a; } return $res; # atau $res = $res * a
Perhatikan bahwa jika subrutin didefinisikan di file tersendiri, maka file tersebut harus mengembalikan nilai TRUE, dalam program diatas digunakan bilangan 1. Jika subrutin tersebut disimpan di file /home/didi/mylib/math.pl, maka dapat dipanggil dari program lainnya sebagai berikut:
req uire /home/didi/my lib/math.pl print "Faktorial 6 = ", faktorial(6),"\n";
Penjelasan lebih lengkap tentang subrutin dapat dibaca dari man perlsub
4.Penutup
PERL adalah bahasa pemrograman yang berdaya guna tinggi, yang terus digunakan dan dikembangkan oleh komunitas open source. Seperti halnya bahasa open source lain, PERL memiliki sistem dokumentasi yang sangat lengkap, pembaca sangat dianjurkan menelaah manual PERL yang terdistribusi bersama source code PERL.
1.Menginstal PHP
PHP diinstal sebagai module apache dan sekaligus menginstal PHP CLI (command line interpreter), nama-nama direktori (misal: /dir/instalasi/xxx/anda) dapat anda ubah sesuai dengan keinginan anda. Karenanya harus menginstal apache terlebih dahulu jika apache belum terinstal. Berikut ini cara instalasi PHP 5 dari source code.
1.1.Instalasi Apache
1. Instal Apache, pertama download dari httpd.apache.org, dalam hal ini kami menggunakan apache 1.3.37 2. Uncompress disembarang direktori
bash% tar zxvf apache_1 .3.3 . 7tar .gz
4. Instal
bash% make install
3. Konfigurasi dan kompilasi Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 13
bash%
cd
php-5.2.0
bash% ./configure prefix=/d ir /i ns tala si /p hp/ an da withapxs=/di r/ in stal as i/ ap ach e/ and a/ bin /a pxs with-configfile-path=/etc bash% make
4. Instal
bash% make install
2.1.Aplikasi Konsol
Buat program salam.php berikut ini disebarang direktori:
<?php echo assalamu'alaikum, Brother \n; ?>
2.2.Aplikasi web
Agar dapat dieksekusi melalui aplikasi web maka anda perlu menyalin (copy) salam.php ke document root dari server apache anda:
bash% cp salam.php /dir/instalasi/apache/anda/htdocs/
3.Bahasa PHP
Bagian ini membahas PHP sebagai bahasa pemrograman umum (general purpose), contohcontoh dijalankan menggunakan PHP CLI (Command Line Interface). Pada bagian Aplikasi Web dibahas PHP sebagai bahasa pemrograman web, contoh-contoh dijalankan menggunakan server web, keluaran ditampilkan menggunakan klien web.
3.1.Program PHP
File program PHP adalah file teks yang dapat dibuat dengan editor teks biasa (misal: vim, gedit, kedit). Sebuah file program PHP paling sedikit terdiri atas satu baris statemen yang dibatasi oleh tag pembuka blok statemen dan tag penutup blok statemen. Tag pembuka blok adalah <?php dan penutupnya adalah ?>. PHP mengenal 3 jenis tag pembuka lainnya yang tidak direkomendasikan pada manual PHP, dan karenanya tidak dibahas disini. Sebuah program PHP dapat terdiri 2 jenis statemen:
1 1
statemen PHP yang dibatasi oleh tag tersebut statement non-PHP (misal: HTML, WML, XML)
Kedua jenis statemen dapat berselang-seling lebih dari satu kali dalam program. PHP mengabaikan whitespace (spasi, tab, baris-baru) sebelum dan sesudah statemen, juga whitespace di antara token-token dalam statemen. Semua contoh program dalam tulisan ini tidak menuliskan tag pembuka <?php dan penutup ?> untuk menghemat ruang/kertas, kecuali jika ada bagian program yang menggunakan statemen non-PHP.
3.2.Komentar
PHP Mengenal 3 jenis komentar: 1. Diawali dengan // , berlaku hanya untuk 1 baris 2. Diawali dengan #, berlaku hanya untuk 1 baris 3. Diawali dengan /* dan diakhiri */ , berlaku untuk lebih dari 1 baris, dapat juga digunakan untuk menyisipkan komentar diantara token. Ketiga jenis komentar dapat berada pada baris tersendiri atau dibelakang statement. Contoh:
// komentar 1 echo 'string satu',"\n"; // komentar 2 echo 'string dua',"\n"; # komentar 3 /* komentar 4 , komentar ini melintas beberapa baris */ echo /* komentar 5, di antara token */ 'string tiga',"\n";
3.3.Tipe Data
PHP membedakan operasi yang dapat dilakukan terhadap setiap tipe data.
3.3.1.Tipe Primitif
Tipe primitif adalah tipe data dasar yang tidak dapat dibagi lagi (decompose) atas tipe data yang lebih dasar lainnya.
3.3.1.1.Boolean
PHP mengenal tipe boolean yaitu : TRUE dan FALSE, keduanya case-insenstive. Jadi True, true, atau TRUE adalah sama.
3.3.1.2.Integer
Integer atau bilangan bulat di PHP tidak membedakan panjang byte (long atau integer biasa), keduanya adalah integer. Integer literal dapat dituliskan sebagai desimal (default, tanpa prefiks), octal (dengan prefix '0') atau hexadecimal (dengan prefix 0x). Contoh:
123 4567 890 0 123 4567 0x123 4567 89abcdef # desimal # octal #hexadecimal
3.3.1.3.float
Literal float menggunakan '.' untuk pembatas pecahan desimal, dan menggunakan simbol e untuk pangkat desimal. Pada contoh berikut ini ke 4 bilangan yang ditulis dengan cara berbeda adalah sama besarnya:
. 123 4567 89 0. 123 4567 89 123 4567 89e-9 123.4567 89e-4
3.3.1.4.string
String dalam PHP adalah dereten karakter. Literal string dapat ditulis dengan 3 cara :
3.3.1.4.1.Petik ganda
String dengan petik ganda mengenal karakter khusus (baris baru, tab) dan melakukan ekspansi variabel
3.3.1.4.2.Petik Tunggal
String dengan petik tunggal tidak mengenal karakter khusus (baris baru, tab) dan tidak melakukan ekspansi variabel
3.3.1.4.3.Heredoc
Sintak heredoc memperlakukan string seperti double quote, hanya saja menggunakan delimiter yang berbeda, yaitu deretan karakter alpahanumeric atau garis bawah, yang dimulai hanya dengan karakter non digit atau garis bawah. Contoh:
<<<Ini_Delimiter_heredoc Berikut ini adalah string dalam heredoc, ini ganti baris \n dan ini carriage return \r tulisan ini akan menimpa 'dan ini carriage
return'
Ini_Delimiter_heredoc;
3.3.2.1.Array
Array di PHP pada dasarnya hanya ada satu jenis yaitu ordered map. Array di PHP dapat disamakan dengan associative array pada bahasa pemrograman lainnya (misal: PERL), yaitu merupakan deretan pasangan key dan value yang berurutan sesuai dengan urutan penyimpanan. Bedanya adalah array di PHP dapat diakses seperti list atau array ber-indeks integer berbasis 0 (zero based indexed) Array dibuat menggunakan constructor array(). Contoh
$a = array( 'php' =>'aplikasi web', 'python' =>'aplikasi desktop', 'perl' =>'otomatisasi sysadmin', 'c' => 'aplikasi system',
'ruby' => 'aplikasi web', 'java' => 'aplikasi enter prise' ); echo 'php tepat untuk ' , $a['php'],"\n"; echo 'python cocok untuk ' , $a['python'],"\n";
Array ber-indeks integer juga dapat dibuat dengan constructor array yang sama:
$b = array('php','python','perl','c','ruby','java'); echo $b[0], \n # php echo $b[1], \n # python echo $b[4], \n # ruby
3.3.2.2.Objek
Tipe data ini menyimpan referensi ke instance class. Tipe data objek dibuat menggunakan constructor class. Pembahasan selengkapnya ada di bagian Class.
3.3.3.2.NULL
Menyatakan ketiadaan nilai, tipe data ini hanya memiliki satu nilai: NULL
3.3.4.Konversi ke boolean
PHP melakukan konversi dari tipe data lain ke boolean dalam konteks yang memerlukan tipe boolean berdasarkan aturan yang jelas. Salah satu konteks yang memerlukan tipe boolean adalah statemen kondisional (misal: if). Semua nilai berikut ini akan dianggap FALSE oleh PHP: 1 boolean FALSE 1 integer 0 (nol) 1 float 0.0 (zero) 1 string kosong, dan string "0" 1 array yang tidak mempunyai elemen. 1 object yang tidak mempuyai variabel member (PHP4) 1 tipe khusus NULL 1 semua variabel yang di-unset
3.4.Variabel
Variabel digunakan untuk menyimpan data, selanjutnya data dimanipulasi melalui variabel.
3.4.1.Assignment
Variabel diberi nilai (= data) melalui assignment. Variabel tidak perlu dideklarasikan sebelum diberi nilai.
$a = 1 000; $b = 'ini adalah string'; $c = string ini bergabung dengan '$b' ;
Jika ekspresi mengacu ke variabel yang belum didefinisikan tidak menyebabkan error.
echo $a, $b, $c, \n;
Assignment ke variabel dapat menghasilkan data baru (dengan nilai yang sama), atau tidak menghasilkan data baru tapi hanya menghasilkan referensi baru.
$a = 1234; $b = $a; # $b berisi sama dengan a
Pada PHP 5, assignment dari variabel (yang di-assign ke) objek ke variabel lain, tidak menyebabkan adanya data baru, tapi hanya menghasilkan referensi baru.
1 . /* REQUIRE PHP 5 */ 2. class Koordinat 3. { 4. 5. 6. . 7 8. } 9. $k1 = new Koordinat(5,5); 1 0.$k2 = $k1; 1 1 . $k2->X += 222; 12.echo $k1->X ,"\n"; # X di $k2 diubah = 22 7 # X $k1 juga berubah = 22 7 } function Koordinat($x, $y) { $this->X = $x; $this->Y = $y ;
Untuk mendapatkan hasil yang sama di PHP 4, perlu menggunakan reference assignment =&, baris 10 ditulis sbb:
$k2 =& $k1;
Pada bagian berikutnya dibahas berbagai operator, setiap penjelasan langsung menggunakan contoh.
3.5.1.Operator aritmetika
Berlaku untuk tipe data bilangan. penjumlahan, perkalian, pembagian, pengurangan, modulus.
$a = 1 0; $b = 20; $c = $a + $b; $c = $a - $b; $c = $a * $b; $c = $a / $b; $c = $a % $b; // penjumlahan , hasil 30
// pengurangan , hasil -1 0 // perkalian , hasil 200 // pembagian , hasil 0.5 // modulus, hasil 1 0
3.5.2.Operator incrementing/decrementing
Menambah atau mengurangi bilangan dengan 1, terdiri atas: post-increment, pre-increment, post-decrement, pre-decrement.
$a = 1 0;
3.5.3.Operator assignment
Assignment menghasilkan nilai baru sesuai nilai expresi disebelah kanan operator =.
$a = 1 0; $c = ($b = 1 0) + $a; // $c == 20, $b == 1 0
$a += 1 0; // $a == 20
3.5.4.Operator Perbandingan
Membandingkan antara 2 nilai. Berikut ini operasi dan contohnya:
3.5.4.1.Ternary
ekspresi1 ? ekspresi2 : ekspresi3
Operator '?' ini mengembalikan nilai ekspresi2 jika ekspresi1 bernilai TRUE dan mengembalikan nilai ekspresi3 jika ekspresi1 bernilai FALSE.
// ternary $hasil = true ? 'benar':'salah';
3.5.4.2.Equal
ekspresi1 == ekspresi2
Operator '==' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 samadengan nilai ekspresi2, jika tipe data kedua ekspresi berbeda maka sebelum operasi dijalankan ekspresi2 dikonversikan tipe datanya ke tipe data ekspresi1.
// eq ual $a = 1 0; $b = '1 0'; echo $a == $b ? 'true':'false' , "\n"; // true
3.5.4.3.Identical
ekspresi1 === ekspresi2
Operator '===' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 samadengan nilai ekspresi2 dan tipe data kedua nilai ekspresi sama.
// identical $a = 1 0; $b = '1 0'; $c = 1 0; echo $a === $b ? 'true':'false' , "\n"; echo $a === $c ? 'true':'false' , "\n"; // false // true
3.5.4.4.Not Equal
ekspresi1 != ekspresi2 ekspresi1 <> ekspresi2
Operator '!=' dan '<>' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 tidak samadengan nilai ekspresi2, jika tipe data kedua ekspresi berbeda maka sebelum operasi dijalankan ekspresi2 dikonversikan tipe datanya ke tipe data ekspresi1.
// not eq ual $a = 1 0; $b = '1 0'; $c =1 1; echo $a != $b ? 'true':'false' echo $a != $c ? 'true':'false' // not eq ual $a = 1 0; $b = '1 0'; $c =1 1; echo $a <> $b ? 'true':'false' , "\n"; // false , "\n"; , "\n"; // false // true
, "\n";
// true
3.5.4.5.Not Identical
ekspresi1 !== ekspresi2
Operator '!==' hanya menghasilkan nilai TRUE jika nilai ekspresi1 tidak samadengan nilai ekspresi2 dan tipe data kedua nilai ekspresi sama.
// not identical $a = 1 0; $b = '1 0'; $c = 1 0; echo $a !== $b ? 'true':'false' echo $a !== $c ? 'true':'false' , "\n"; , "\n"; // true // false
Operator greater than(>), smaller than(<), greater equals(>=), smaller equals (<=)
ekspresi1 > ekspresi2 ekspresi1 < ekspresi2 ekspresi1 <= ekspresi2 ekspresi1 >= ekspresi2
Keempat operator ini membandingkan nilai ekspresi1 dan ekspresi2, operasi baru dijalankan setelah melakukan konversi tipe jika ekspresi2 berbeda tipedata dengan ekspresi1
$a = 1 0; $b = 1 1; $c = 1 0; echo $a > $b ? 'true':'false' echo $a < $b ? 'true':'false' ,"\n"; // false ,"\n"; // true
echo $a <= $c ? 'true':'false' ,"\n"; // true echo $a >= $c ? 'true':'false' ,"\n"; // true
Menghasilkan nilai TRUE jika ekspresi1 dan ekspresi2 keduanya bernilai TRUE.
//and echo (true and true)?'true':'false',"\n"; // echo (true and false)?'true':'false',"\n"; // echo (false and false)?'true':'false',"\n"; // TRUE FALSE FALSE
3.5.5.2.Logical OR
ekspresi1 or ekspresi2
Operator OR menghasilkan nilai TRUE jika ada salah satu dari ekspresi1 dan ekspresi2 bernilai TRUE.
// or echo (true or true)?'true':'false',"\n"; // echo (true or false)?'true':'false',"\n"; // echo (false or false)?'true':'false',"\n"; // TRUE TRUE FALSE
3.5.5.3.Logical XOR
ekspresi1 xor ekspresi2
Operator XOR menghasilkan nilai TRUE jika salah satu dari ekspresi1 dan ekspresi2 bernilai TRUE, tapi tidak kedua-duanya.
// xor echo (true xor true)?'true':'false',"\n"; // echo (true xor false)?'true':'false',"\n"; // echo (false xor false)?'true':'false',"\n"; // FALSE TRUE FALSE
3.5.5.4.Logical NOT
! ekspresi1
Operator NOT menghasilkan nilai TRUE jika ekspresi1 bernilai FALSE, dan menghasilkan nilai FALSE jika ekspresi1 bernilai TRUE.
3.5.5.6.Logical OR (||)
Samadengan operator OR sebelumnya tapi precedence nya lebih tinggi.
TRUE FALSE
PHP melakukan optimasi pada ekspresi yang menggunakan operator logika. Contoh:
ekspresi1 && ekspresi2 && ekspresi3
Pada ekspresi tersebut jika ekspresi1 bernilai FALSE maka ekspresi2 dan ekspresi3 tidak akan dieksekusi. Begitu juga pada contoh berikut:
ekspresi1 || ekspresi2 || ekspresi3
Pada ekspresi tersebut jika ekspresi1 bernilai TRUE maka ekspresi2 dan ekspresi3 tidak akan dieksekusi.
3.5.6.Operator bit
Operator ini berlaku untuk integer dan karakter ASCII.
3.5.6.1.Bitwise AND
b1 & b2 Menghasilkan bit yang di-set jika bit1 dan bit2 juga di-set.
// 9 = 1 00 1 // 1 0 = 1 0 1 0 echo 9 & 1 0,"\n"; // 8 = 1 000
3.5.6.2.Bitwise OR
b1 | b2 Menghasilkan bit yang di-set jika salah satu dari bit1 dan bit2 di-set
echo 9 | 1 0,"\n"; // 1 1 = 1 0 1 1
3.5.6.3.Bitwise XOR
b1 ^ b2 Menghasilkan bit yang di-set jika salah satu dari bit1 dan bit2 di-set, tapi tidak keduanya.
echo 9 ^ 1 0,"\n"; // 3 = 00 1 1
Bitwise NOT
~b1
Menghasilkan bit yang di-set jika b1 tidak di-set, dan kebalikannya Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 25
Menggeser bit b1 sebanyak n ke kiri. Setiap pergeseran satu bit sama dengan kalikan dengan 2
echo 1 0 << 1 , "\n"; // 20 = 1 0 1 00
Menggeser bit b1 sebanyak n ke kanan. Setiap pergeseran satu bit sama dengan bagi dengan 2
echo 1 0 >> 1 , "\n"; // 5 = 0 1 0 1
3.5.7.Operator String
Operator dot (titik) digunakan untuk menggabungkan string dengan string atau tipe data lainnya. Contoh:
$a = 'saya...'; $b = 'bela jar php'; $c = $a . $b; // 'saya...bela jar php'
3.6.2.switch
Switch dapat digunakan sebagaimana if elseif else, tapi lebih tepat lagi digunakan untuk mengevaluasi sebuah kondisi lalu membandingkan hasil evaluasi tersebut dengan literal integer atau string. Perhatikan setelah switch digunakan statemen break untuk mencegah statemen berikutnya dalam blok switch dieksekusi:
echo "3 rasa es krim:\n\t1)moka\n\t2)stroberi\n\t3)mengkudu\n"; echo "pilih: "; $pilih = chop(fgets(STDIN)); switch($pilih) { case 1: echo "yum yum yum\n"; break; case 2: echo "slur p..slur p..\n"; break; case 3: echo "yaak .. bleek ..\n"; break; default : echo 'tidak ada',"\n"; }
3.6.3.Struktur loop
Struktur loop adalah struktur untuk melakukan iterasi atau pengulangan eksekusi satu atau beberapa statement. PHP memiliki beberapa struktur loop: for, while, do while, foreach. for Menggunakan 3 blok ekspresi yang dieksekusi secara berbeda:
1. satu kali di awal eksekusi statemen for 2. setiap kali di awal loop di evaluasi nilainya untuk menentukan apakah eksekusi loop berikutnya akan dilakukan 3. setiap kali di akhir loop
1 . echo "hitung faktorial dari :"; 2. $n = chop(fgets(STDIN)); 3. $faktorial = 1; 4. f or($a = $n; $a > 0; $a--) 5. { 6. . 7 } 8. echo "$faktorial \n"; $faktorial *= $a;
Statement for dieksekusi dengan langkah-langkah sebagai berikut : 1. Pada awal eksekusi statemen for nilai $a di set sama dengan $n (baris 4), langkah ini hanya dilakukan satu kali saja. 2. Masih di baris 4: diperiksa apakah $a masih lebih besar dari 0, jika benar maka blok for mulai di-eksekusi (antara baris 5 dan 7), jika tidak benar maka eksekusi statemen for berakhir. 3. Sebelum mengulang eksekusi loop, nilai $a dikurangi 1 4. Kembali ke langkah 2. Ketiga blok dapat terdiri lebih dari satu ekspresi, yang dipisahkan oleh koma (,). Jika blok kedua terdiri lebih dari satu ekpresi maka blok ekspresi tersebut diperlakukan seperti halnya jika koma diganti dengan operator || (logical operator or).
# pembangkit fibonacci echo "hitung fibonacci sampai: "; $maks = chop(fgets(STDIN)); f or($a = 0, $b = 1; $b < $maks; $tmp=$a, $a = $b, $b += $tmp) { echo $b," "; }
Jika ekspresi blok kedua adalah kosong, maka loop for akan dieksekusi tanpa berhenti, dan hanya dapat keluar dari dalam blok dengan statemen break.
3.6.3.1.while
Statemen while digunakan untuk menjalankan pengulangan selama ekspresi dalam while adalah TRUE. 28 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
3.6.3.2.do while
Loop do-while dieksekusi minimum satu kali. Blok dalam loop akan dieksekusi selama ekspresi yang diuji dalam while bernilai TRUE.
$ditebak = 123; do { echo "ayo tebak: "; $tebak = chop(fgets(STDIN)); if($tebak == '') { echo("kosong!\n"); } elseif($tebak < $ditebak) { echo("terlalu kecil\n"); } elseif ($tebak > $ditebak) { echo("terlalu besar\n"); } else { echo 'benar ...',"\n";
} } while($tebak != $ditebak)
3.6.3.3.break
Statement break digunakan di dalam loop untuk mengubah alur eksekusi sehingga keluar dari loop tersebut. Tapi jika loop tersebut ada di dalam loop yang lain, maka eksekusi beralih ke loop luar, tepat setelah akhir loop dalam tersebut.
1 . $ditebak = 123; 2. while(true) { # loop 1 3. 4. 5. 6. . 7 8. 9. 1 0. 1 1 . 12. 1 3. 1 4. 1 5. 1 6. . 1 7 1 8. 1 9. } } # akhir loop 2 while(true) { # loop 2
echo "ayo tebak: "; $tebak = chop(fgets(STDIN)); if($tebak == '') { echo("kosong!\n"); } elseif($tebak < $ditebak) { echo("terlalu kecil\n"); } elseif ($tebak > $ditebak) { echo("terlalu besar\n"); } else { echo 'benar ...',"\n"; break;
Perhatikan pada contoh ada 2 loop (dimulai dari baris 2 dan 3) . Perintah break pada baris 14 hanya mengalihkan eksekusi dari loop2 ke loop 1, tapi tidak mengeluarkan dari loop 1. Diperlukan statemen break (baris 19) dari loop 1 untuk dapat keluar dari loop tersebut.
3.6.3.4.continue
Statemen continue digunakan untuk mengubah alur eksekusi program agar segera
menjalankan iterasi berikutnya sehingga statemen-statemen di bawah statemen continue ini tidak dieksekusi.
$ditebak = 123; $min_coba = 3; $coba = 0; while(true) { $coba++; echo "ayo tebak: "; $tebak = chop(fgets(STDIN)); if($tebak == '') { echo("kosong!\n"); } elseif($tebak < $ditebak) { echo("terlalu kecil\n"); } elseif ($tebak > $ditebak) { echo("terlalu besar\n"); } else { echo 'benar ...',"\n"; break; } if($coba < $min_coba) continue; echo "menyerah?[y/n] : "; $insap = chop(fgets(STDIN)); if($insap == break; else $coba = 0; } 'y')
3.6.3.5.foreach
Statement foreach digunakan khusus untuk mengiterasi array, ada 2 bentuk untuk array dengan indeks integer mulai dari 0:
$array = array(1 0,20,30,40,50); f oreach($array as $value) { echo $value , "\n"; }
3.6.3.6.return
Mengubah alur eksekusi sehingga baris-baris berikutnya tidak dijalankan lagi. Jika digunakan dalam fungsi statemen return dapat digunakan untuk mengembalikan nilai ke pemanggil fungsi.
3.6.3.7.Exception
Exception adalah object yang digunakan untuk mengubah ekselusi program ketika terjadi kesalahan (error). Untuk menangani exception digunakan konstruksi blok try dan catch. Konstruksi blok try{} berisi statemen yang dapat mengakibatkan terjadinya exception, konstruksi catch terdiri atas bagian deklarasi object exception yang ditangani dan bagian blok statemen yang menangani objek exception tersebut. Untuk mengakibatkan exception program menggunakan statement throw, yang menjadi parameter dari throw adalah objek Exception. Exception baru dikenal pada PHP 5. Contoh:
try { echo 'baris berikutnya akan menghasilkan exception',"\n"; throw new Exception('error yg disenga ja'); echo 'baris ini akan diabaikan',"\n"; } catch (Exception $e) { echo 'ada exception.. ',$e,"\n"; }
Melalui penggunaan exception secara tepat, dapat memudahkan penanganan error. Exception adalah cara alternatif untuk pen-signal-an error yang lebih baik dari cara konvensional menggunakan return value. Return value seharusnya hanya digunakan untuk mengembalikan hasil komputasi, dan tidak pernah mengembalikan signal (kode) error.
3.7.Fungsi
PHP mengenal 3 jenis fungsi: 1. Fungsi yang merupakan bagian dari PHP (bult-in) Fungsi ini selalu tersedia untuk digunakan. 2. Fungsi yang disediakan oleh extension module. Fungsi jenis ini baru tersedia setelah user menginstal extension module tertentu. 3. Fungsi yang didefinisikan oleh pengguna bahasa PHP (user defined function) Fungsi jenis ini dibuat sendiri oleh pengguna bahasa PHP, baru tersedia jika definisi fungsi dimasukkan ke dalam scope program melalui statement : require, include, dan sejenisnya, Fungsi yang dibahas pada bagian ini adalah yang terakhir.
3.7.1.Mendefinisikan Fungsi
Fungsi didefinisikan menggunakan keyword function, diikuti nama fungsi. Fungsi dapat menerima nol atau lebih parameter fungsi dan dapat menghasilkan nilai keluaran, dapat pula tidak. Berikut ini contoh fungsi yang tidak menerima parameter fungsi, dan tidak mengembalikan nilai , hanya mencetak bentuk piramida ke stdout:
function piramida() { $t = 20; f or($i = $t, $j=0; $i > 0; $i--, $j++) { echo str_repeat(' ', $i); echo str_repeat('^', $j*2+1),"\n"; } }
Fungsi piramida, menggunakan fungsi built-in str_repeat untuk menghasilkan string yang berulang.
piramida();
PHP 5 mendukung jumlah parameter fungsi yang panjangnya tidak tertentu. Berikut ini contoh fungsi yang menghasilkan deret fibonacci yang dikembalikan sebagai array, menerima parameter fungsi bilangan maksimum :
function fibonacci($max) {
$a = array(1 , 1); $i = 1; while(true) { $z = $a[$i]+$a[$i-1]; echo $z,"\n"; if($z > $max) break; $a[++$i]= $z; } return $a; # mengembalikan array }
Fungsi ini menerima parameter $max untuk membatasi bilangan terbesar yang akan dihasilkan, dan mengembalikan deretan bilangan dalam bentuk array. Berikut cara pemanggilannya:
$deret = fibonacci(1 00); print_r($deret) # cetak array
3.7.3.Pemanggilan Fungsi
Pemanggilan fungsi harus selalu menggunakan kurung, baik untuk fungsi yang menerima parameter maupun yang tidak. Pada contoh-contoh sebelumnya echo seringkali dipanggil tanpa kurung, hal ini karena echo sesungguhnya bukanlah fungsi, tapi echo adalah language construct (seperti halnya if, for, while, return)
3.8.Class
PHP sebagai bahasa yang mendukung pemrograman ber-orientasi objek (Object Oriented Programming) mengenal struktur class. Class memudahkan enkapsulasi data dan reusabilitas kode program. Mendefinisikan class Class didefinisikan menggunakan keyword class diikuti nama class yang biasanya diawali dengan huruf kapital, badan (implementasi) class dibatasi oleh kurung kurawal. Sebuah class dapat memiliki satu atau lebih method, yaitu fungsi yang berasosiasi dengan class atau objek dari class tersebut. Sebuah class dapat memiliki method khusus untuk meng-inisialisasi-kan objek dari class tersebut yang disebut constructor, constructor adalah method pertama dari class yang dieksekusi sebelumnya objek tersebut dipanggil. Jika constructor tidak didefinisikan maka PHP menyediakan default constructor. Class dapat mendefinisikan member variabel, yaitu variabel yang hanya dapat diakses melalui object dari class tersebut. Member variabel dapat didefinisikan langsung dalam method melalui objek khusus $this. Berikut ini class Vektor:
class Vektor { // awal definisi /* constructor */ function Vektor($i, $j) { $this->i = $i; // member variable i $this->j = $j; // member variable j } /* @return vektor */ function tambah($v) { return new Vektor($this->i + $v->i, $this->j + $v->j); } /* @return vektor */ function kali($skalar) { return new Vektor($this->i*$skalar , $this->j * $skalar); } /* @return panjang vektor */ function to_skalar() { return sqrt($this->i * $this->i + $this->j * $this->j); } /* method khusus untuk merepresentasikan sbg string (hanya di PHP
Untuk mengakses member variable atau member method dari sebuah class melalui objeknya maka digunakan operator -> . Objek sebuah class hanya dapat diadakan melalui constructor class tersebut, baik secara langsung dipanggil menggunakan new atau melalui method lain.
$v1 = new V ektor(3,4); // objek $v1 diadakan $v2 = new V ektor(7 ,8); // objek $v2 diadakan $v3 = $v1->tambah($v2); echo "$v1 + $v2 = $v3", "\n"; echo $v1->to_skalar(), "\n"; echo '$v3->i == ', $v3->i ,"\n"; echo '$v3->j == ', $v3->j ,"\n";
3.9.Reusabilitas
PHP menyediakan konstruksi untuk mendukung reusabilitas kode program dalam bentuk class, fungsi, konstanta atau variabel global. Ada 4 statemen yang digunakan untuk reusabilitas kode program
3.9.1.include
Digunakan untuk memasukkan (to include) file ke baris ditempatkannya statemen include ini , statemen include memerlukan parameter berupa path ke file yang akan di-include . Path dapat berupa path relatif atau path absolut.
3.9.2.require
Statemen require persis sama dengan include hanya saja jika file yang akan dimasukkan tidak ditemukan dapat menyebabkan fatal error sehingga menghentikan eksekusi program. Menggunakan require lebih menjamin disertakannya file atau definisi fungsi yang diperlukan.
3.9.3.include_once
Sama dengan include, tapi jika file sudah pernah di-include sebelumnya tidak akan
dimasukkan lagi.
3.9.4.require_once
Sama dengan include_once, tapi jika file yang di-include tidak ditemukan menyebabkan fatal error.
Dapat juga mengubah include_path dari PHP dengan fungsi set_include_path, baris 1 digantikan oleh 2 baris berikut:
set_include_path(get_include_path()./home/fadhilah/classes/); req uire_once('Vektor .php');
Keuntungan menggunakan set_include_path adalah statemen require_once tidak perlu menyertakan path ke file-file tersebut, hanya perlu menyebutkan nama filenya saja.
4.Aplikasi Web
Bagian ini menjelaskan aspek-aspek bahasa PHP yang khusus berhubungan dengan pengembangan aplikasi Web. Agar contoh-contoh pada bagian ini dapat dijalankan, diperlukan web server (misal: apache) yang mendukung aplikasi PHP. Cara mensetup apache agar dapat mendukung PHP tidak dijelaskan.
4.2.Menangani request
Aplikasi PHP yang baik, dirancang untuk menangani request dengan benar. Menangani request terdiri atas: 1 membaca data dari request sebagai masukan, termasuk parameter request. 1 Melakukan proses untuk menghasilkan keluaran berdasarkan data request 1 mengirimkan response
4.2.1.Request GET
Pada aplikasi PHP, parameter dari request GET dapat diakses menggunakan variabel khusus $_GET yang sudah didefinisikan oleh PHP. Variabel $_GET ini adalah array assosiatif, semua value harus diakses menggunakan key.
4.2.2.Request POST
Parameter dari request POST diakses menggunakan variabel $_POST. 38 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Seperti halnya $_GET, variabel ini juga array assosiatif. Contoh aplikasi web sederhana: Berikut ini contoh aplikasi web sederhana yang menerapkan berbagai subyek yang sudah dibahas.
4.3.2.File ordersvc.php
File ini berisi definisi class yang diperlakukan aplikasi untuk memproses pesanan.
<?php class OrderService { private $produk = array('0 1'=>'Gado-gado', '02'=>'Bakmi A yam', '03'=>'T ong Seng'); private $pilihan = array ( '0 1' => array( 'cabe > ; 1 0','banyak sayuran','ketupat','nasi' ), '02' => array( 'pangsit kering','pangsit basah','bakso' ), '03' => array( 'banyak tulang','banyak daging','banyak kuah' ) ); // constructor function OrderService() {
} // @return daftar produk function produk() { return $this->produk; } // @return pilihan function pilihan($prod) { return $this->pilihan[$prod]; } // proses pesanan function proses_pesanan($prod, $kirimke, $konfig) { echo 'T erimakasih, ',"\n"; echo "Kami segera mengirimkan pesanan ke <em>$kirimke</em>, kalau kebetulan lewat..<br/>\n"; if($konfig) { echo '<ul>'; f oreach($konfig as $d) { echo '<li>', $this->pilihan[$prod][$d],"</li>\n"; } echo '</ul>'; } else { echo "Anda memilih menu standard<br>\n"; } } } ?>
4.3.3.File menu.php
Menampilkan menu pilihan:
<?php include('head.php') ?> Selamat datang di warung <em><?php echo PEMILIK?></em><br/> Apa yang anda inginkan:
<ol>
<?php $os = new OrderService(); f oreach($os->produk() as $key => $value) { echo '<li><a href="pesan.php?prod=',$key ,'">',$value,'</li>',"\n"; } ?>
4.3.4.File pesan.php
Untuk memproses pesanan, dan menampilkan response. Jika pesanan sudah diproses form tidak ditampilkan lagi
<?php include('head.php'); $os = new OrderService(); if (!empty($_POST)) { $konfig = $_POST['konfig']; $kirimke = $_POST['kirimke']; $prod = $_POST['prod']; if(empty($kirimke)) { echo "mau dikirim kemana?\n"; } else { $os->proses_pesanan($prod, $kirimke, $konfig); $sudahpesan = true; } } if (!$sudahpesan) {
?> <f or m method="post"> <table sty le="border : 1px solid;padding: 1 0px 1 0px 1 0px 1 0px; background-color : lightgreen;"> <tr><td> Konfigurasi </td><td> <?php $prod = $_GET['prod']; $options = $os->pilihan($prod); $i = 0; f oreach($options as $value) { echo '<input type="checkbox" name="konfig[]" value="', $i++,'">', $value, "</option>\n"; } ?> </td> <tr><td>kirim ke alamat</td><td> <input type="text" name="kirimke" value=""></td> <tr><td colspan="2"> <input type="submit" name="ok" value="Pesan"> </td></tr> <input type="hidden" name="prod" value="<?php echo $prod;?>"></td> </f or m> <?php } include('tail.php'); ?>
5.Penutup
PHP adalah bahasa pemrograman yang relatif mudah dipelajari. PHP saat ini adalah bahasa pemrograman web paling populer, sehingga dukungan library untuk aplikasi web dengan PHP cukup kaya. Jika anda baru mulai mengembangkan aplikasi web pastikan anda lebih dahulu menguasai
HTML (Hypertext Mark Up Language) dan gunakan HTML editor dan previewer yang cerdas sehingga membantu dalam menemukan kesalahan-kesalahan sintaks penulisan.
2. eksekusi statemen secara interaktif, menggunakan python sebagaimana shell sistem, setiap statemen di-ketik pada python shell prompt, dan langsung di-eksekusi oleh interpreter,
bash$ python >>> print assalamu'alaikum assalamu'alaikum >>> 60 * 60 * 2 4 86400
Pada tulisan ini, beberapa contoh diberikan dalam mode eksekusi interaktif, baris contoh tersebut diawali dengan '>>>' 3. Menggunakan program atau script python. Buat program salam.py, seperti berikut:
#!/usr/local/bin/python print assalamu'alaikum
1. Perhatikan baris pertama mengacu ke path interpreter python, dijalankan sebagai berikut:
bash$ chmod 755 salam.py bash$ ./salam.py
3.Program Python
Program python adalah program teks dengan encoding ASCII, dan dapat juga ditulis dengan encoding lain (misal: Unicode). Penulisan identifer harus menggunakan ASCII.
4.Statemen
Statemen diakhiri dengan baris baru, tapi statemen dapat melintas baris jika interpreter menganggap statemen tersebut belum sempurna. Tidak perlu karakter khusus untuk mengakhiri statemen. Python memperlakukan indentasi di awal baris secara khusus, indentasi digunakan sebagai penanda blok statemen. Pada bagian tentang kendali alur program hal ini akan dibahas lebih lanjut.
5.Komentar
Setiap baris komentar harus diawali dengan '#'. Komentar tidak harus selalu di awal baris. Contoh:
# rumus luas lingkaran # ini komentar baris kedua luas = 22 / 7 * 1 4 * 1 4 # menghitung sisa pembagian
sisa = 1 06 % 3
# assignment : variabel sebagai ref erensi ke objek # tipe v1 adalah tipe objek yg diref erensikan # id objek # mencetak nilai objek yang diref erensikan oleh v1
Variabel dapat langsung di-assign tanpa dideklarasikan terlebih dahulu, ekspresi yang mengacu ke sebuah variabel sebelum variabel tersebut di-assign menyebabkan error.
a = 1 00 print id(a) b = a print a is b del(a) # print a is b print b print id(b) # a dan b mengacu ke objek yang sama # dimusnahkan # menyebabkan error , a tidak didefinisikan # b dan objek yang diref erensikan masih ada
Setelah assignment, sebuah variabel dapat dimusnahkan dengan fungsi del(), jika sebuah ekspresi mencoba mengacu variabel yang sudah di-del() akan menyebabkan error. Variabel dapat di-assign ke objek khusus yang merepresentasikan ketiadaan, yaitu None.
7.1.Bilangan
Python mendukung bilangan integer , long integer dan floating point. Penulisan literal bilangan bulat dapat dengan integer, long integer, dan keduanya dapat ditulis dalam basis octal, desimal dan heksadesimal. Penulisan literal float menggunakan tanda '.' (titik) desimal.
2 1 4 7 48364 7 # integer terbesar untuk 32 bit arithmetic 2 1 4 7 483648L # long 0 123 4567 # octal 0x123 4567 89abcdef # hexadecimal
Operasi aritmetika antara integer dengan integer, selalu menghasilkan integer, operasi integer
Bilangan di python adalah first-class object, yang memiliki operasi-operasi nya sendiri, contoh:
bil = 123 4 bil.__mod__(7) # sama dengan bil % 7
Python, sejak versi 2.0 sudah mengenal string unicode, untuk mendukung internationalization (i18n). Penulisan string unicode menggunakan prefix 'u', untuk menuliskan string tanpa penerjemahan karakter khusus digunakan prefix 'ur'.
print u'baris satu\n baris kedua'
print u'baris satu\u0 00 Abaris kedua' # unicode raw string print ur'baris satu\u000A baris kedua'
7.3.Boolean
Tipe data boolean hanya memiliki 2 nilai: True dan False.Bahkan hanya True dan False sajalah object yang ada di tipe data Boolean.
7.4.1.List
List adalah himpunan yang elemennya tersimpan secara berurutan, sebuah list dapat ditambah elemen baru, dikurangi elemennya, atau diubah nilai setiap elemennya, list adalah sequence yang mutable. Elemen list diacu menggunakan indeks integer. List literal didefinisikan menggunakan []
[1 ,2,3,4,5,6,7 ,8] [1 ,'senin',2,'selasa',3,'rabu'] [1 ,[2,3],4,5,[6,7 ,8,[9, 1 0, 1 1]]]
Berikut ini beberapa operasi yang dapat dilakukan terhadap list: add, remove, slice, del Perhatikan bahwa list melakukan pengecekan index range, pada operasi baca maupun tulis:
7.4.2.Tuples
Berbeda dengan list, maka tuples adalah sequence yang immutable. Persamaannya dengan list adalah elemen-elemen tuples juga diacu menggunakan indeks integer. Tuple didefinisikan menggunakan (), contoh:
(1 ,2,3,4,5,6,7 ,8)
Berikut ini beberapa operasi yang dapat dilakukan terhadap tupe: slice, packing, unpacking, but you can't del Sebagaimana list, tuples juga melakukan pengecekan range index.
7.4.3.Sets
Set adalah data kontainer yang tidak berurutan (un-ordered) yang tidak mengandung duplikasi pada elemen-elemennya. Set memiliki operasi untuk pengecekan membership, juga operasi himpunan seperti union, intersection, dan symmetric-difference
7.4.4.Dictionary
Berbeda dengan kedua data container sebelumnya, dictionary di-indeks menggunakan key.Key yang digunakan harus data yang immutable. Jadi string, number, tuple yang tidak memiliki value yang mutable, dapat digunakan sebagai key.
d1 = {'kode': '000 1', 'nama': 'Susu Sapi', 'harga': 12000, 'stok': 12} print d1['kode']
Mengacu ke dictionary menggunakan key yang belum didefinisikan akan menyebabkan error, direpresentasikan oleh exception KeyError, contoh:
print d1['satuan'] # KeyError
8.1.1.Identifier
Identifier adalah nama yang merupakan ekspresi atom. Contohnya adalah nama variabel, nama fungsi, nama class, nama module. Sebuah nama yang telah diasosiasikan (bound) dengan objek, jika dievaluasi akan menghasilkan objek tersebut, nama yang belum diasosiasikan (unbound) dengan objek akan menghasilkan error NameError jika dievaluasi. Karakter penyusun identifier dalam python dapat terdiri atas kombinasi dari huruf besar dan kecil (a-zA-Z), angka (0-9) dan garis bawah (underscore).
Python membedakan huruf besar dan kecil pada identifier. Panjang identifier adalah tak terbatas
8.1.2.Literal
Python mendukung berbagai literal string dan numerik.Pada bagian type data telah diperkenalkan berbagai penulisan data numerik dan string secara literal.
8.1.3.Enclosure
Enclosure adalah bentuk-bentuk ekspresi yang dibatasi oleh reverse-quote (tanda petik terbalik `), tanda kurung, kurung siku, dan kurung kurawal.Berikut ini bentuk ekspresi yang termasuk enclosure: 1. Bentukan dalam kurung (Parenthesized forms) 2. List display 3. Generator expressions 4. Dictionary display 5. Konversi string
8.1.3.2.List display
Ekspresi list display akan membentuk objek list yang baru. Ekspresi list dapat dibentuk menggunakan list dari ekspresi yang dipisahkan koma atau dari sebuah list comprehension.
[1+2,3<4,5*6+7 ,8,9!=1 0] # comma separated expression [a*2 f or a in range(1 0)] # list comprehension [a f or a in range(20) if a%3==0] # list comprehension
8.1.3.3.Generator expressions
Generator ekspresion menghasilkan generator objek. Generator ekpression adalah notasi generator dalam tanda kurung ().
(b f or b in range(20)) # generator bilang 0 s/d 1 9
(b f or b in range(20) if(b%3==0 and b>0)) # generator bilangan kelipatan tiga (b f or b in range(20) if(b%3==0)).next() # 3
8.1.3.4.Dictionary display
Dictionary display adalah ekspresi yang menghasilkan objek dictionary baru.
{'python':'GUI app', 'php':'web app','java':'mobile app','ruby':'web app'}
8.1.3.5.Konversi String
Konversi ke string adalah ekspresi menggunakan tanda kutip tunggal terbalik (reverse quote). Yang mengubah ekspresi dari tipe data lain ke string.
`('a','b','c')` `[1 ,2,3,('a','b','c')]` `1+2+3` # 6
Pada ekspresi referensi atribut, objek harus mendukung attribute yang diacu, jika tidak maka akan menimbulkan AttributeError. Atribut yang direrensikan dapat berupa objek yang memiliki atribut juga, contoh:
objek2.atribut1 .atribut2
8.2.2.Subskrip
Ekspresi subskrip berlaku pada objek sequence (list, tuple, string) atau mapping (dictionary).
Jika objek bertipe sequence, maka ekspresi1 haruslah integer. Ekspresi dalam subskrip pada objek sequence dapat berupa bilangan negatif, untuk peng-indeks-an dari belakang. Contoh:
list1 = [5 1 , 1 6, 7 , 8, 1 0] list1[3] # bilangan 8
string2 = 'bismillah' string[3] # 'm' string[-6] # m tuple3 = ('hati','damai','ingat','ALLAH') tuple[3] # ALLAH tuple[-1] # ALLAH
Untuk objek bertipe mapping, ekspresi indeks haruslah sesuatu yang dapat di-hash (hashable) dan tidak dapat diubah (immutable).
dict4 = {'python':'GUI app', 'php':'web app','java':'mobile app','ruby':'web app'} dict4['python'] # 'GUI app' dict4['java'] # 'mobile app'
8.2.3.Irisan (Slicing)
Expresi slicing terdiri atas Simple Slicing dan Extended slicing. Ekspresi simple slicing digunakan pada objek sequence (atau ekspresi yang menghasilkan objek sequence) dan menghasilkan objek sequence baru. Berikut ini contohnya:
list1 = [1 ,2,3,4,5,6,7 ,8,9] list1[1:] # list baru dari 2 sampai dengan 9 list1[1:5] # list baru dari 2 sampai dengan 5 list1[:-1] # list baru dari 1 sampai dengan 8 list1[1:-2] # list baru dari 2 sampai dengan 7
Ekspresi extend slicing, digunakan pada objek mapping menggunakan tuple sebagai key, contoh:
b = {'a':1 ,'b':2,'c':3,'d':4,('e','f'):5,('g','h'):6,'h':7 ,'i':8} print 'e,f', b['e','f'] print 'g,h', b['g','h']
8.3.Operasi Pangkat
Operasi pangkat berasosiasi lebih kuat dari operator unary disebelah kirinya, dan berasosiasi lebih lemah dari operator unary di sebelah kanannya. Contoh:
2**2 # 4 -2**2 # -4 (-2)**2 # 4 (-2)**3 # -8 2**-2 # -0.25 2**2**3 # 256 = 2**8 2**-2**2 # 0.0625 = 2**-4 = 1/2**4 -1 6**-2**-2 # -0.5 = -1 6**-0.25 = -1/1 6**0.25
8.5.1.Perkalian
Perkalian (*) memerlukan argumen bilangan keduanya atau jika salah satunya integer maka yang lainnya harus sequence.
2*3 # 6
8.5.2.Pembagian
Terdiri atas '/' (division) dan '//' (floor division). Floor division mengenakan floor() pada hasil pembagian.
# division 22/7*1 4*1 4 22./7*1 4*1 4 1/2*3*4 1 ./2*3*4 22./7 22.//7 # 588 # 6 1 6.0 # 0 # 6.0 # 3. 1 4285 7 1 4286 # 3.0
8.5.3.Modulus (%)
Menghitung sisa hasil bagi. Operator % juga dioverload untuk melakukan peng-format-an string, contoh:
22%7 # 1
8.5.4.Penjumlahan
Menjumlahkan bilangan dan menggabungkan concat sequence.
22+1 0 'bela jar ' + 'python'
8.5.5.Pengurangan
Operator ini menghitung selisih untuk bilangan.
22-1 0
Melakukan N pergeseran ke kanan (>>) sama dengan membagi bilangan dengan N pangkat 2. Melakukan N pergeseran ke kiri (<<) sama dengan mengalikan bilangan dengan N pangkat 2.
4 >> 1 4 << 1 7 >> 1 7 << 1 # 2 # 8 # 3 = biner 1 00 shift left 1 -> 0 1 0
Operator OR akan menset bit jika salah satu dari kedua bit di-set
1 5 | 8 3 1 | 8 # 1 5 # 3 1
Operator XOR akan menset bit jika dan hanya jika salah satu bit diset. Urutan precedence diamtara ketiganya mulai dari yang tertinggi : AND, XOR dan OR
1 5 ^ 8 # 7 = 1 1 1 1 ^ 1 000 => 0 1 1 1 # 7 = 1 1 1 1 ^ 1 000 => 0 1 1 1 # 7 = 0 & 1 000 => 0
1 5 ^ 1 5 & 8 (1 5 ^ 1 5) & 8
Tidak sama dengan Sama dengan identitas objek Tidak sama dengan identitas objek Bagian dari Bukan bagian dari
8.9.Operasi Boolean
Operasi boolean mengevaluasi ekspresi berdasarkan nilai True dan False dari ekspresi, python mengenal aturan berikut ini untuk definisi tentang true dan false: Nilai False, None, numerik 0 untuk semua tipe data, dan string kosong dan container kosong adalah false, sedangkan nilai lainnya adalah true. Perhatikan bahwa dibedakan menuliskan True dengan true dan False dengan false, True dan False adalah objek atau instance dari tipe Boolean, sedangkan true dan false adalah nilai abstrak yang dikenal dalam operasi boolean. Ada 4 operasi boolean:
ekspresi1 if ekspresi2 else ekspresi3
Operasi ini mengevaluasi ekspresi2, jika bernilai true maka menghasilkan ekspresi1, dan jika ekspresi2 bernilai false menghasilkan ekspresi3 and
ekspresi1 and ekspresi2
Operasi ini menghasilkan true jika ekspresi1 dan ekspresi2 keduanya bernilai true xor
ekspresi1 xor ekspresi2
Operasi ini menghasilkan true jika dan hanya jika salah satu dari ekspresi1 dan ekspresi2 bernilai true or Operasi ini menghasilkan true jika salah satu dari ekspresi1 dan ekspresi2 bernilai true
ekspresi1 or ekspresi2
8.10.Lambda
Lambda adalah ekspresi yang menghasilkan fungsi anonim. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 57
fa = pangkat(2) fa(2) # 2 pangkat 2 fa(3) # 2 pangkat 3 fa(4) # 2 pangkat 4 fb = pangkat(3) fb(2) # 3 pangkat 2 fb(3) # 3 pangkat 3 fb(4) # 3 pangkat 4
8.11.Ekspresi Lists
Ekspresi list terdiri dari satu atau lebih ekspresi yang dipisahkan dengan koma. Ekspresi list dengan sekurangnya satu koma dibelakang menghasilkan tuple. Contoh
a,b,c = 1 ,2,3 # a,b,c adalah ekspresi list x = 1 , y = 1 z = () # x adalah tuple dengan 1 elemen # y BUKAN tuple, y adalah variabel integer # z adalah tuple kosong
9.Fungsi
Fungsi digunakan untuk mengenkapsulasikan operasi. Fungsi python didefinisikan menggunakan keyword def diikuti nama fungsi, selanjutnya fungsi dapat menerima nol atau lebih parameter. Fungsi dapat mengembalikan objek (yang bukan None) atau dapat mengembalikan None. Pengembalian objek (yang bukan None) menggunakan statement return.
# mendefinisikan fungsi # tidak menerima param, return None def salam(): print "Assalamu'alaikum "
# tidak menerima param , return string def salam2(): return "Assalamu'alaikum "
# menerima param , return string def salam3(m): return salam2() + m #fungsi dapat memanggil fungsi lain
Parameter fungsi dapat memiliki nilai default, pada contoh berikut berikut ini a dan b memiliki nilai default masing-masing 0 dan 1 :
# generator bilangan fibonacci yg kurang dari n, dengan rekursi def fibonacci(n, a=0, b=1): if b < n: print b, # cetak tanpa ganti baris
fibonacci(n, b, a+b)
10.2.while
Untuk melakukan pengulangan selama ekspresi di while bernilai True. Contoh:
import sys print 'tebak integer sampai ketemu: ', ditebak = 67 a = int(sys.stdin.readline().strip()) while a != ditebak: if ditebak < a : print 'terlalu besar ' elif ditebak > a: print 'terlalu kecil' print 'tebak lagi: ', a = int(sys.stdin.readline().strip())
Untuk keluar dari while loop dapat menggunakan break, untuk melanjutkan loop tanpa mengeksekusi statemen berikutnya digunakan continue:
import sys
ditebak = 67 minimum_coba = 3 coba = 0 while T rue: coba+=1 print 'tebak integer : ', a = int(sys.stdin.readline().strip()) if ditebak < a : print 'terlalu besar ' if coba < minimum_coba: continue elif ditebak > a: print 'terlalu kecil' if coba < minimum_coba: continue else: print 'pass' break print 'menyerah ? [y/n]: ', nyerah = sys.stdin.readline().strip() if nyerah == 'y': break else: coba = 0
10.3.for
Digunakan untuk meng-iterasi sequences (tuples, list, string):
stooges = 'timbul','kadir','doyox' f or guyon in stooges: print guyon
10.4.pass
Statemen ini tidak melakukan apapun, digunakan untuk mengisi blok program agar benar secara sintaks. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 61
10.5.exceptions
Python mengenal mekanisme yang elegan dalam menangani error pada program, yaitu menggunakan exception. Penanganan exception terdiri atas 2 blok : try dan catch. Blok try berisi statement(-statement) yang dapat mengakibatkan terjadinya error atau exception. Jika satu statement dalam blok mengakibatkan exception maka statemen-statemen berikutnya tidak akan di-eksekusi, alur program segera beralih ke blok catch. Block catch berisi statement(-statemen) yang akan menangani exception. Contoh berikut ini mengangani exception jika pengguna menekan ctrl-c yang menyebabkan exception KeyboardInterrupt:
import sys print 'tebak integer sampai ketemu: ', ditebak = 67 tr y : a = int(sys.stdin.readline().strip()) while a != ditebak: if ditebak < a : print 'terlalu besar ' elif ditebak > a: print 'terlalu kecil' print 'tebak lagi: ', a = int(sys.stdin.readline().strip()) print 'pas benar ...' except Keyb oar dIn ter r upt : print '\nhmm.. menyerah?\n\ \rsmoga lebih lain kali lebih beruntung, bye!'
11.Modules
Module memudahkan pemakaian ulang berbagai sumberdaya program (fungsi, class, variabel), dan menyediakan namespace untuk menghindari konflik penamaan.Sebuah module 62 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
11.1.Mendefinisikan Module
Sebagai contoh, pembangkit bilangan fibonacci ingin disimpan sebagai fungsi dalam module pembangkit. Yang diperlukan adalah mendefinisikan fungsi tersebut dalam file pembangkit.py.
# module pembangkit fibonacci
# return list bilangan fibonacci def fibonacci(n, a=0, b=1 , hasil=None): if hasil == None: hasil = [] if b < n: hasil.append(b) fibonacci(n, b, a+b, hasil) return hasil
Perhatikan bahwa tidak ada statement diluar definisi fungsi dalam file pembangkit.py.
11.2.Menggunakan Module
Berikut ini adalah program fib.py, yang menggunakan module pembangkit. Program ini menggunakan statement import, sehingga fungsi fibonacci() dapat diakses melalui object pembangkit. Perhatikan bahwa nama object yang di-import sama dengan nama file module.
import pembangkit f or x in pembangkit.fibonacci(1 00): print x,
python fib.py
Yang juga termasuk module search path adalah list sys.path, dapat digunakan jika tidak mungkin mendefinisikan PYTHONPATH. Program pemanggil diubah sebagai berikut:
import sys sys.path.append('/home/hafizh/modulku') import pembangkit f or x in pembangkit.fibonacci(1 00): print x,
12.Class
Class didefinisikan menggunakan keyword class. Dalam class dapat didefinisikan method atau operator. Pada class ini di definisikan constructor, operator +, operator -, method untuk menampilkan representasi string, dan menghitung besar vektor. Python mengenal nama-nama method khusus yang dapat digunakan untuk mengimplementasikan operator bagi class tersebut. Dalam contoh ini method khusus yang diimplementasikan adalah __add__ untuk operator +, __sub__ untuk operator class V ektor : # constructor def __init__(self,x,y ,z): self.x, self.y , self.z = x, y , z # menghitung besar vektor def to_skalar(self): import math return math.sqrt(self.x * self.x + self.y * self.y + self.z * self.z) # operator + def __add__(self,v): return Vektor(self.x + v .x, self.y + v .y , self.z + v .z) # operator def __sub__(self,v):
return Vektor(self.x - v .x, self.y - v .y , self.z v .z) # representasi string def __repr__(self): return '(%d,%d,%d)'%(self.x,self.y ,self.z)
13.Penutup
Python adalah bahasa scripting yang sangat menarik untuk ditekuni dan diterapkan dalam berbagai aplikasi. Beberapa keunggulan yang menarik dari sisi potensi untuk menggunakan python pada aplikasi bisnis diantaranya adalah: Python melakukan pengecekan bound dan unbound variabel, tidak seperti, misalnya, PHP4 yang membiarkan programer melakukan kesalahan dengan mengevaluasi variabel yang belum diberi nilai (unassigned). Python juga melakukan pengecekan batas array (index boundary checking) dan juga index key-checking, tidak seperti misalnya, PHP atau PERL. Sintaks python yang memperhitungkan indentasi juga menuntut kerapihan source code yang diperlukan untuk me-maintain program dalam jangka panjang.
3. Sebagai user biasa lakukan configure dan make, lalu make install sebagai super-user:
bash$ cd ruby-1 .8.5 bash$ ./configure bash$ make bash$ su bash$ make install
3.Menjalankan Ruby
Paling sedikit, ada 3 cara mengeksekusi interpreter ruby.
Satu-satunya statemen pada program tersebut memanggil method puts, yang mencetak objek ke standard-output (stdout) dan diakhiri dengan baris baru.
3.3.Secara Interaktif
bash$ irb irb(main):00 1:0> puts "assalamu'alaikum" assalamu'alaikum => nil
Ubah file tersebut sehingga executable, dan eksekusi di shell (perhatikan ./ di baris kedua):
bash$ chmod 7 55 halo1 .rb bash$ ./halo1 .rb
anda akan mendapat warning karena penggunaan variabel khusus $_ tidak disarankan lagi. Ruby juga mengenal baris khusus yang opsional untuk mengakhiri program, yaitu baris yang hanya berisi keyword __END__ yang tidak diawali dan diakhiri whitespace. Baris-baris 68 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
4.2.Statement
Program Ruby adalah line-oriented, terdiri dari statement yang diakhiri cukup dengan akhir baris (end-of-line), tidak perlu karakter khusus (semisal titik koma) untuk menandai akhir statement. Ruby juga tidak memperlakukan karakter indentasi (tab) atau spasi secara istimewa untuk awal statement, contoh:
puts 'ini baris pertama' puts 'ini yang kedua' puts 'dan ini yang terakhir'
beberapa statemen ditulis satu baris jika dipisahkan oleh titik koma, contoh:
p=1 0; l=20; t=1 5; volume=p*l*t ; puts "volume #{volume}"
4.3.Komentar
Seperti sudah anda lihat pada contoh-contoh sebelumnya, Ruby menggunakan '#' sebagai penanda awal komentar, dan setiap baris komentar harus diawali dengan '#'. Khusus untuk baris pertama, jika '#' diikuti dengan '!' maka baris ini digunakan untuk mengeksekusi interpreter jika program dijalankan langsung dari command-line.
4.4.Class
Sebagai bahasa object-oriented, data Ruby adalah instance dari suatu class. Class merepresentasikan sebuah konsep yang meliputi struktur data dan operasi-operasi yang berasosiasi dengan struktur data tersebut. Class memberikan sebuah namespace tersendiri bagi operasi-operasi dan variabel-variabel di dalam class tersebut. Semua class yang didefinisikan dalam Ruby memiliki satu class induk yaitu class Object. Sebuah class biasanya didefinisikan dalam satu file tersendiri, walau tidak ada keharusan seperti itu. Nama class biasanya diawali dengan huruf kapital. Selanjutnya class akan dibahas di bagian tersendiri.
4.5.Module
Module adalah sebuah cara mengumpulkan class-class, method-method dan konstantakonstanta dalam sebuah namespace. Module memudahkan pemakaian bersama dan berulang berbagai konsep tersebut (class, method, konstanta). Dengan adanya module, kemungkinan konflik nama (name-conflict atau name-collision) dapat diminimalkan. Module akan dibahas lebih lengkap pada bagian tersendiri.
5.1.Numerik
Numerik terdiri atas integer dan floating point.Integer dapat menampung jumlah digit yang hampir tak terbatas (dibatasi oleh jumlah free memory di sistem). Integer pada range tertentu adalah objek dari class FixNum dan pada range lainnya adalah dari class BigNum. Ruby mendukung optional base indicator untuk penulisan literal integer:
Base
Penulisan numerik dapat menggunakan underscore (garis bawah) untuk memudahkan pembacaan, contoh:
123_456_7 89 => 1234567 89 0b1 1 1_1 0 1_1 0 1 => 0b1 1 1 1 0 1 1 0 1
Floating point ditulis menggunakan . (titik) untuk separator desimal bulat dan pecahan, contoh:
0. 123467 89 3. 1 4285 7 1 4285 7 1 4
Data numerik adalah objek sejati, sebagai contoh, dari data integer dapat dipanggil method :
# representasi l1 1 398634 dalam string hexadesimal l1 1 398634.to_s(1 6)
5.2.String
String dalam Ruby adalah sederetan bytes yang tiap byte-nya terdiri dari 8-bit. String literal dinyatakan dalam kutip tunggal atau kutip ganda, contoh:
'Saya suka coding dengan Ruby ..' 'Saya bilang \'Saya suka coding dengan Ruby ..\' ' Saya bilang \Saya suka coding dengan Ruby ..\
Pada string literal menggunakan kutip ganda, interpreter ruby akan melakukan interpolasi ekspresi jika ekspresi ditulis dalam #{}, sehingga memudahkan anda menggabungkan (concat) string dengan ekspresi:
Luas lingkaran = #{22.0/7 * 1 4 * 1 4}
String literal diatas bernilai 'Luas lingkaran = 588'. Kutip ganda pada string literal juga menyebabkan interpreter Ruby akan mengevaluasi berbagai karakter khusus (misal: control characters). Ada 3 cara lain untuk mendefinisikan string literal: %q, %Q dan here documents. Prefix %q sama dengan kutip-tunggal dan %Q sama dengan kutip-ganda (menyebabkan interpolasi ekspresi), keduanya menggunakan delimiter ! , / , { , (, <. dan [ . Contoh:
%q{select index from table where column='area'} %Q/select type from object where area > #{22.0/7 * 2 1 * 2 1}/
Literal dengan here documents menggunakan string pembatas, cocok untuk mendefinisikan string literal yang panjang (misal: code javascript), yang mungkin memuat karakter-karakter khusus pembatas string yang dikenal Ruby, contoh berikut menggunakan string pembatas KODE_JAVASCRIPT:
js1 = <<KODE _JAVAS CR IPT window .onload = function () { document.f or m2.text5.onchange = function () { // prevent user from entering invalid customer code }; } KODE _JA VA SCR IP T
5.3.nil
Ruby mengenal sebuah objek khusus untuk menyatakan ketiadaan yaitu nil, jadi nil bukanlah 'tidak ada objek'.
6.Variabel
Seperti dijelaskan sebelumnya semua data Ruby adalah objek atau instance suatu class, dan variabel adalah reference ke objek tersebut. Variabel bukanlah objek itu sendiri, hal tersebut akan dibahas lebih lanjut pada akhir bagian ini. Variabel langsung di-definisikan menggunakan assignment ke ekspresi atau literal. Contoh:
# variabel string nama1 = 'hafizh amrullah' # variabel numerik , juga dapat di-assign dari ekspresi size1 = nama1 .length
Tapi variabel yang belum pernah di-definisikan tidak dapat di-evaluasi, interpreter ruby menganggap hal ini sebagai error yang menghentikan eksekusi program. Contoh:
# error : 'blah' belum di-definisikan puts blahblah # error : 'alas' dan 'tinggi' belum didefinisikan luas = alas * tinggi / 2
nama2 = ' irfan mahdi ' nama3 = nama2 puts "-->#{nama2}<--" nama3.strip! # hilangkan whitespace di awal dan akhir melalui nama3 puts "-->#{nama2}<--"
Variabel nama2 menyimpan referensi ke objek string, variabel nama3 di-assign ke nama2, sehingga menunjuk ke objek string yang sama. Jika semua semua spasi di awal dan akhir string dihapus melalui variabel nama3, maka perubahan ini juga dapat dilihat melalui variabel nama2. Berikut ini contoh yang lain:
k1 = coding Ruby sungguh tiDaK asik 'kali k2 = k1 k2.slice!(/tidak/i) # hilangkan 'tidak' puts k1
Sedikit penjelasan tentang nama method pada dua contoh diatas. Contoh pertama menggunakan method 'strip!' dan kedua menggunakan 'slice!' , kedua method diakhiri tanda '!' Dokumentasi Ruby menyarankan nama method yang mengubah state objek receiver (objek yang dipanggil methodnya) diakhiri tanda '!'. Konvensi penamaan method ini bertujuan memudahkan pengguna method membedakan antara method yang mengubah object receiver dan yang tidak.
8.1.Variabel global
Variabel global dapat diakses dari class lain atau module lain, nama variabel global diawali dengan $, contoh:
$debug = false
8.2.Variabel lokal
Variabel lokal hanya dapat diakses dari dalam method, nama variabel global diawali huruf kecil, contoh:
hitung = 1 0 array1 = [2,3, 1 1 ,34,300]
8.3.Variabel instance
Variabel instance hanya dapat diakses dari dalam method instance. Nama variabel instance diawali dengan @, contoh, class Vektor berikut memiliki variabel instance @i dan @j :
class V ektor def initialize(i, j) @i = i @j = j end end
8.4.Variabel class
Variabel class dapat diakses dari dalam method instance maupun method class. Nama variabel class diawali dengan @@, contoh, class Vektor berikut memiliki variabel class @@totalcount:
class V ektor @@totalcount = 0 def initialize(i, j) @i = i @j = j @@totalcount = @@totalcount + 1 end end
Elemen hash yang belum didefinisikan key-nya bernilai nil. Tapi, hash di Ruby dapat di-set nilai default-nya. Misal, mendefinisikan variabel hash untuk menghitung sesuatu yang diindeks dengan nama, defaultnya 100:
hitung1 = Hash.new(1 00) puts hitung1['p00 1'] # 1 00
Begitu juga kebalikannya, jika menggabungkan string dengan numerik tanpa #{} :
str1 = 'Biayanya ... ' num1 = 2000 #BARIS BERIKUT ERROR: operator+ str1 butuh operand dari class String str2 = str1 + num1 # num1 di-parse menghasilkan string str2 = str1 + num1 .to_s
Perhatikan dalam kedua pemanggilan method to_i dan to_str, objek dari str1 dan num1 tidak berubah, tapi menghasilkan objek baru.
9.2.Eksekusi Conditional
Eksekusi conditional didasarkan nilai boolean (true atau false) suatu ekspresi. Ruby menganggap semua nilai yang tidak sama dengan konstanta false atau tidak sama dengan nil adalah true.
Penjelasan: baris 2 menggunakan method gets yang mengambil input dari stdin, input diterima sebagai string dan menyertakan karakter end-of-line, agar dapat dibandingkan secara benar terhadap data numerik di variabel ditebak maka karakter end-of-line harus di-potong (=chopped) dari input ini, dan hasilnya di-parse ke integer dengan method to_i . Sebagai kebalikannya dapat juga digunakan ekspres unless..then..else..end, contoh sebelumnya ditulis menggunakan unless:
1 . ditebak = 123 2. tebak = gets.chop.to_i 3. unless tebak == ditebak then 4. unless tebak < ditebak then 5. puts 'terlalu besar' 6. else . 7 puts 'terlalu kecil' 8. end 9. else 1 0. puts 'pas benar' 1 1 . end
9.2.2.Conditional Ternary
Ruby juga mengenal ekspresi ternary, bentuknya: 76 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
expr0
? expr1 : expr2
Jika expr0 bernilai true maka dikembalikan expr1, jika salah dikembalikan expr2. Ternary memungkinkan ekpresi nested, contoh:
bil = 123; print 'tebaklah:'; tebak = gets.chop.to_i puts tebak == bil ? 'benar ..': tebak > bil ? 'kebesaran': 'kekecilan'
9.3.Loop
Loop mengenal while..end untuk mengeksekusi statemen-statemen dalam loop selama kondisi yang dievaluasi pada bagian while adalah true. Program berikut ini akan terus meminta input selama tebakan yang masuk belum benar:
1 . ditebak = 123 2. print 'tebak:' 3. tebakan = gets.chop.to_i 4. while ditebak != tebakan 5. if ditebak < tebakan then 6. puts 'terlalu besar' . 7 else 8. puts 'terlalu kecil' 9. end 1 0. print 'tebak lagi:' 1 1 . tebakan = gets.chop.to_i 12.end 1 3.puts 'benar sekali !'
Baris 4 sampai dengan 11 akan dieksekusi selama tebakan belum benar. Kebalikan dari while adalah until, yang terus mengulang statemen dalam loop sampai kondisi yang di-evaluasi adalah true. Contoh:
1 . 2. 3. 4. 5. 6. . 7 ditebak = 123 print 'tebak:' tebakan = gets.chop.to_i until ditebak == tebakan # sama dengan sebelumnya end puts 'benar sekali !'
10.Method
Method dapat berdiri sendiri atau merupakan bagian dari class. Method didefinisikan menggunakan keyword def, dan diakhiri end. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 77
Nama method dimulai dengan huruf kecil, nama method yang melakukan query biasanya diakhiri dengan '?' Nama method yang mengubah objek receiver biasanya diakhiri '!'. Method dapat menerima parameter, untuk method yang menerima parameter, biasanya digunakan karakter kurung (). Penggunaan () untuk definisi method maupun pemanggilan tidak diharuskan. Jika method mengembalikan nilai, dapat menggunakan keyword return dapat juga tidak, Ruby mengembalikan nilai ekspresi dari statemen terakhir dari definisi method (sebelum end) Contoh method dan pemanggilannya:
def luas_segitiga(alas, tinggi) alas * tinggi / 2.0
end luas1 = luas_segitiga(20,30) luas2 = luas_segitiga 20,30 # memanggil method tanpa () # parameter tanpa () def volume_bola jari2 return 4.0/3 * 22/7 * jari2 * jari2 * jari2 end volum1 = volume_bola(1 4)
Ruby membolehkan pemberian nilai default pada parameter default. Parameter rekuris pada contoh berikut ini, di-set true jika pemanggilan method tidak menyertakan parameter tersebut.
def buatdir ( path, rekursi=true,mode=0 7 55 ) if !File.exists?(path) && rekursi then d = File.dirname(path) buat_dir(d, rekursi, mode) Dir .mkdir(path, mode) elsif !File.exists?(path) Dir .mkdir(path) else puts "#{path} sudah ada" end end # create dir recursivel y buatdir ('/home/didi/dir/yg/belum/ada') # create dir NOT recursivel y , possibl y error buatdir ('/home/didi/dir/yg/sdh/ada/dirbaru', false, 0 7 7 7)
Blok baru berguna jika dipanggil dari iterator, yaitu sebuah method yang didefinisikan untuk memanggil blok. Iterator memanggil blok menggunakan statemen yield. Berikut ini contoh iterator yang memanggil blok 3 kali:
# iterator yang memanggil blok 3 kali def panggil3x yield yield yield end # panggil blok panggil3x {puts 'ding...'}
Statemen yield dapat mengirimkan parameter ke blok, asalkan blok didefinisikan dapat menerima parameter. Sebuah blok dapat menerima lebih dari satu parameter. Parameter yang diterima blok didefinisikan diantara || (dua pipe), jika ada lebih dari satu parameter dipisahkan tanda koma. Berikut ini contoh blok yang menerima 2 parameter :
def panggil4x
end # blok mendefinisikan parameter para1 ,para2 sebagai parameter blok panggil4x do |para1 ,para2| n = 0 while n < para2 print para1 # 'print' tidak mencetak baris baru n = n + 1 end puts '' # ganti baris end
Perhatikan program di atas menggunakan do...end sebagai pembatas blok. Anda dapat menggunakan {} sebagai pengganti do...end .
11.Class
Berikut ini contoh class yang digunakan dalam penjelasan selanjutnya:
1 . class Vektor 2. # variabel class 3. @@totalobj = 0 4. 5. # constructor 6. def initialize i,j . 7 @i = i 8. @j = j 9. @@totalobj = @@totalobj + 1 1 0. end 1 1 . 12. # operator+ sebagai method instance 1 3. def +(v) 1 4. Vektor .new(@i + v .i , @j + v .j) 1 5. end 1 6. . 1 7 # besar/magnitude vektor (method instance) 1 8. def to_skalar 1 9. Math.sqrt( @i*@i + @j*@j ) 20. end 2 1 . 22. # attribute i (method instance) 23. def i 2 4. @i 25. end
26. 2 . 7 # attribute j (method instance) 28. def j 29. @j 30. end 3 1 . 32. # representasi string (method instance) 33. def to_s 3 4. "( #{@i} , #{@j} )" 35. end 36. 3 . 7 # method class, 38. # mengembalikan total objek vektor yg sdh di-create 39. def Vektor .totalobj 40. @@totalobj 4 1 . end 42.end # akhir definisi class Vektor 43. 4 4.x = Vektor .new(1 ,2) # panggil constructor 45.y = Vektor .new(2,2) # panggil constructor 46.z = x + y # panggil method + 4 . 7 puts "vektor z #{z}" # panggil method to_s 48.puts "magnitude vektor z: #{z.to_skalar}" # panggil method to_skalar 49.# memanggil method class 50.puts Vektor ::totalobj
11.1.Mendefinisikan Class
Class di Ruby didefinisikan dalam file program seperti program Ruby lainnya. Tidak ada aturan penamaan khusus untuk nama file. Definisi class diawali dengan keyword class yang diikuti nama class, nama class di Ruby biasanya diawali dengan huruf kapital. (contoh: baris 1 class Vektor) Definisi class diakhiri dengan keyword end. (contoh: baris 34 class Vektor)
11.1.1.2.Method Instance
Adalah method yang hanya dapat dipanggil melalui class instance atau objek. Diantara method instance ada yang digunakan mengakses variabel instance (akan dijelaskan kemudian), method seperti ini disebut juga attribut. Pada contoh class Vektor ada 5 method instance, yaitu : operator +, to_skalar, attribute i, attribute j dan to_s
11.1.1.3.Method Class
Adalah method yang hanya dapat dipanggil melalui class, tidak dapat dipanggil melalui class instance. Penamaannya diawali dengan nama class diikuti '.' dan nama method dimulai dengan huruf kecil. Pada contoh class Vektor ada 1 method class, yaitu : totalobj. Pemanggilan method class menggunakan nama class diikuti '::' dan nama method.
11.1.1.4.Variabel Instance
Variabel yang didefinisikan dalam class dan hanya dapat diakses dari method instance, dan hanya dapat diakses melalui objek itu sendiri, tidak dapat diakses melalui objek lain. Setiap objek memiliki variabel instance-nya sendiri-sendiri. Penamaannya diawali dengan @ diikuti nama variabel yang dimulai dengan huruf kecil. Pada contoh class Vektor ada 2 variabel instance: @i dan @j
11.1.1.5.Variabel class
Variabel yang didefinisikan dalam class dan dapat diakses dari method class maupun method instance. Variabel class dapat diakses bersama-sama oleh semua instance dari class tersebut. Penamaannya diawali dengan @@ diikuti nama variabel yang dimulai dengan huruf kecil. Pada contoh class Vektor ada 1 variabel class: @totalobj
@panjang = panjang @lebar = lebar @tinggi = tinggi end def volume @panjang * @lebar * @tinggi end def to_s "(#{@panjang}, #{@lebar}, #{@tinggi})" end end # akhir class Balok
Berikutnya didefinisikan class Kubus sebagai turunan dari Balok, karena kubus dapat dianggap sebagai balok yang khusus, yaitu ketiga sisinya sama panjang. Ruby menggunakan '<' untuk menyatakan sebuah class adalah turunan class lainnya. Perhatikan constructor Kubus memanggil constructor class induknya dengan method khusus super(). Selanjutnya method to_s di-redefinisikan di clas Kubus.
class Kubus < Balok def initialize (sisi) super(sisi, sisi, sisi) end def to_s "(#{@panjang})" end end # akhir class Kubus z = Kubus.new(4) puts z.volume
12.Modules
Ketika sebuah program Ruby sudah menjadi aplikasi yang cukup besar, maka aspek reusability menjadi sangat penting. Bahkan untuk aplikasi yang kecilpun sebaiknya aspek reusability diperhatikan. Modules memungkinkan suatu fungsionalitas, baik dalam bentuk class, method atau konstanta, dipakai bersama dan berulang kali dengan mudah. Module memberikan namespace tersendiri yang memudahkan pengembang library
12.1.Mendefinisikan Module
Sebuah module dapat didefinisikan dalam file tersendiri, atau bersama module lain. Definisi module dimulai dengan keyword module diikuti nama module yang diawali dengan huruf kapital, definisi module diakhiri oleh keyword end, pada baris tersendiri. Berikut ini contoh mendefinisikan modules, di file mod1.rb:
# module contoh module ModSatu KONSTAN_1 = 123 # method dalam module def ModSatu.method1 puts 'method 1 ...' end end # akhir module
12.2.Menggunakan module
Agar program dapat mengakses module, module harus dimuat kedalam program menggunakan statemen require. Ada 4 cara menggunakan require:
12.2.1.Menggunakan path
Statemen require diikuti relative path atau absolute path file module. Nama file dapat menyertakan extension .rb, dapat juga tidak. Misal sebuah module Mod1 didefinisikan di dalam file /home/irfan/moddir/mod1.rb Sebuah program usemod1.rb, disebarang direktori yang berbeda dengan module, akan mengakses Mod1 sebagai berikut:
# load module req uire '/home/irfan/moddir/mod1' #panggil method di module ModSatu.method1 puts ModSatu::KONSTAN_1
di-eksekusi dengan:
bash$ ruby -I /home/irfan/moddir usemod1 .rb
12.3.Mixin
Salah satu fitur Ruby yang menarik yang berhubungan dengan module adalah mixin, yaitu method di dalam sebuah module dapat dijadikan method instance dari sebuah class lain. Sebuah class dapat mengasosiasikan diri dengan module menggunakan statemen include, sehingga method-method dalam module tersebut tersedia seolah method tersebut terdefinisi dalam class tersebut. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 85
Berikut ini didefinisikan module BandingV olume, di file banding.rb, yang membandingkan volume, perhatikan semua method membandingkan operand dengan self, variabel ini adalah reference dari instance class yang meng-include module.
module BandingV olume # apakah volume b1 lebih besar? def <(b1) self.volume < b1 .volume end # apakah volume b1 lebih kecil? def >(b1) self.volume > b1 .volume end # apakah volume sama ? def ==(b1) self.volume == b1 .volume end end # akhir module
Berikut ini class Balok memanfaatkan module BandingVolume dengan mixin, perhatikan bahwa method yang di-mixin juga diwariskan ke class Kubus:
req uire 'banding.rb' class Balok include BandingV olume # mixin BandingV olume def initialize panjang, lebar , tinggi @panjang = panjang @lebar = lebar @tinggi = tinggi end def volume @panjang * @lebar * @tinggi end def to_s "(#{@panjang}, #{@lebar}, #{@tinggi})" end end # akhir Balok class Kubus < Balok def initialize sisi super(sisi, sisi, sisi) end def to_s "(#{@panjang})"
end end # akhir Kubus a = Balok .new(8,2,2) b = Balok .new(8,2,4) z = Kubus.new(4) puts z.volume # semua operasi perbandingan ini ada di module BandingV olume puts z < a # false puts z > a # true puts z == b # true
13.Penutup
Ruby cukup mudah digunakan, sangat berdayaguna dan library-nya sangat lengkap. Ruby siap untuk menjadi alternatif dari bahasa pemrograman open-source yang populer lainnya seperti PERL, python atau PHP.
GCC adalah compiler yang mendukung banyak platforms, termasuk microcontroller. GCC mendukung cross compilation, yaitu program yang di-compile pada satu platform untuk agar dapat dieksekusi pada platform yang lain. Ini sangat berguna untuk sistem embedded.
Pada bahasan ini akan diperkenalkan program yang paling umum digunakan dari GCC yaitu compiler bahasa C.
Apabila diinginkan nama file executable, yang berbeda dapat menggunakan option -o, contoh:
bash# gcc salam.c -o salam_ku
Maka akan dihasilkan file object vektor1.o Beberapa file sekaligus dapat di-compile dengan cara yang sama. Misal, ada file vektor1.c , vektor2.c, vektor3.c :
bash# gcc -c vektor1 .c vektor2.c vektor3.c
misalnya jika dikerjakan oleh programmer yang berbeda. Pada bahasan ini dicontohkan, file vektor1.c sebelumnya dibagi menjadi 1 file header, yaitu vektor1.h, serta 2 file source code, yaitu vektor1.c dan vektor2.c Berikut file vektor1.h
#ifndef _VEKTOR_H #define _VEKTOR_H 1 #include <stdio.h> typedef struct t_vektor { int i; int j; } vektor; void vektor_cetak(FILE *out, const vektor* v); vektor vektor_tambah(const vektor* v1, const vektor* v2); #endif /* _VEKTOR_H */
Lebih jauh lagi, header file biasanya disimpan pada direktori tersendiri, dalam contoh ini misalkan vektor1.h disimpan di directori /usr/local/inc_ku/math
bash# mkdir -p /usr/local/inc_ku/math bash# mv vektor1 .h /usr/local/inc_ku/math
return h; }
Maka untuk meng-compile vektor1.c menjadi file object, gunakan option -I untuk menginformasikan lokasi file header yang diperlukan kepada compiler :
bash# gcc -I/usr/local/inc_ku -c vektor1 .c vektor2.c
Jika ada beberapa header file yang tersimpan di directory yang berbeda, misal di /usr/local dan di /home/local/include maka options -I dapat diulang:
bash# gcc -I/usr/local/inc_ku -I/home/local/include -c vektor1 .c vektor2.c
Jika ingin meng-compile semua source code c dalam current directory, dapat juga digunakan *.c sebagai pengganti nama file, sebagai berikut :
bash# gcc -I/usr/local/inc_ku -I/home/local/include -c *.c
3. Eksekusi
bash# ./testv1 vektor (10, 20) vektor (30, 40) vektor (40, 60)
6.Menggunakan library
Library adalah kumpulan fungsi-fungsi. Library dibuat agar fungsi-fungsi lebih mudah dipergunakan berulang kali, bahkan untuk program aplikasi yang berbeda. Berbagai aplikasi terkenal di dunia open source dimudahkan pengembangannya karena ketersediaan library yang handal, misal: library openSSL, openGL, Gzip, PNG, GPG dan sebagainya. Library tersedia dalam 2 format, yaitu static dan dynamic. Perbedaan utama terletak pada penggunaanya pada sebuah program:
2
Program yang menggunakan static library, memuat kode mesin dari program itu sendiri dan kode mesin fungsi-fungsi yang berasal dari file object lain, yang digunakan oleh program tersebut Program yang menggunakan dynamic library, hanya memuat referensi ke fungsi-fungsi dari file object lain yang digunakan, disamping tentu saja kode mesin dari program itu sendiri. Dynamic library juga biasa disebut shared library.
File berakhiran .a ini juga biasa disebut file arsip. Program ranlib digunakan untuk
membuat indeks dari isi file arsip ini, yang merupakan simbol-simbol (antara lain: nama fungsi) yang didefinisikan dalam file object. Oleh ranlib, indeks ini disimpan di dalam file arsip.
Maka jika ingin men-link program utama ke library tersebut, gunakan option -L sebagai berikut:
bash# gcc -I/usr/local/inc_ku -L/usr/local/lib_ku testv1 .c -l vektor1 -o testv1 bash# ./testv1
Seperti halnya option -I, maka option -L juga dapat digunakan berulang kali untuk me-link ke direktori library yang lain.
2. Membuat dynamic library (shared object library) dengan menggunakan option -shared dan options -o , contoh:
bash# gcc -shared -o libvektor1.so vektor1.o vektor2.o
Maka dihasilkan file libvektor1.so yang merupakan file dynamic library. Seperti halnya static library, maka file dynamic library juga ditempatkan pada direktori tersendiri, biasanya sama dengan direktori static library, pindahkan library ke directori /usr/local/lib_ku:
bash# cp libvektor1.so /usr/local/lib_ku
1. Compile program utama ke file object, selain option -c untuk compile, tambahkan option -fPIC, karena akan menggunakan dynamic library, contoh:
bash# gcc -I/usr/local/inc_ku -fPIC -c testv1.c
2. Buat executable dengan option -o dan linking dengan ke library (dengan option -lnama_library) jika diperlukan menambahkan path direktori ke library gunakan option -L, contoh:
bash# gcc -o testv1 -L/usr/local/lib_ku -lvektor1 testv1.o
7.Penutup
Tutorial singkat tentang gcc ini masih jauh dari lengkap, namun demikian diharapkan dapat menjadi titik awal untuk penggunaan yang lebih maksimal. Berikut ini referensi ke situs-situs yang berhubungan dengan GCC, untuk pembahasan lebih mendalam :
1
Instalasi
1. Pastikan sudah menginstal Java Development Kit (JDK), JDK versi terakhir JDK-1.6 dapat didownload di http://java.sun.com 2. Tentukan lokasi direktori untuk instal Eclipse, biasanya untuk aplikasi diletakan pada direktori /opt. # cd /opt 3. Ekstrak file # tar -xvzf eclipse-SDK-3.2.2-linux-gtk.tar.gz 4. Seting PATH aplikasi Edit file /etc/profile tambahkan baris berikut ini :
JAVA_HOME="/opt/jdk1.6.0" ECLIPSE_HOME="/opt/eclipse" PATH="$JAVA_HOME/bin:$ECLIPSE_HOME:$PATH" export JAVA_HOME ECLIPSE_HOME PATH
Menjalankan Eclipse
Memilih Workspace
Workspace adalah lokasi direktori dari file-file aplikasi ketika bekerja dengan Eclipse pada saat membuat project, workspace berisi file-file kode program aplikasi, direktori utama aplikasi dan file-file konfigurasi aplikasi.
Click tanda 'X' (close windown) dipojok kanan atas window IDE Eclipse untuk keluar, atau dari menu File -> Exit GUI Eclipse Eclipse mempunyai style tampilan untuk GUI sesuai dengan kebutuhan programmer, ada tiga jenis tampilan (perspective) : Menu Window -> Open Perspective -> 1 Debug 1 Java 100 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
1 Java Browsing
Gambar 1.2. Perspective Java Dalam pilihan style perspective Java: 1 Window informasi project, struktur direktori (package) : terletak di sebelah kiri 1 Window untuk kode program : terletak di tengah 1 Window informasi class ( member class : variabel dan fungsi ) : terletak di sebelah kanan 1 Window Log hasil compile program : terletak di bawah
Project Pertama
Pastikan JDK sudah di install dan di set pada Eclipse dengan benar. Konfigurasi JDK bisa di lihat dalam Menu Window -> Preferences, Pilih Java kemudian pilih Installed JRE'S. Kita juga bisa men-set ANT Home, CVS. Membuat sebuah project Pilih File -> New -> Project dan pilih Java Project, dan kemudian pilih Next.
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 101
Gambar 1.4. Perspective Java 102 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Seting Project
Dalam wizard seting Java ini, kita bisa menentukan direktori output project, paket library ( *.jar) yang ingin disertakan, misalnya library koneksi database (JDBC Driver), library aplikasi web dengan Servlet atau JSP ( j2ee.jar ).
Gambar 1.5. Setting Project Pilih Finish, project java telah dibuat dan akan muncul Window Perspective Java.
Berikut tahap membuat aplikasi sederhana untuk mencetak String ke ouput dengan menggunakan Eclipse. Menbuat Class Java Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 103
Gambar 1.6. Wizard membuat Class Java Isi field dengan : Packgae : contoh Name : Salam Checklist : public static void main (String[] args ) Kemudian clik Finish, dan akan muncul class Java dalam Window Kode program.
dalam method main. Dengan menyimpan file, secara otomatis Eclipse akan mencompile class Java. Anda bisa mengabaikan fitur ini dengan memilih menu Project -> Build Automatically dan kemudian secara manual compile class java dengan memilih menu Project ->Build All
104 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
10
Menjalankan aplikasi
Pilih Run -> Run As -> Java Application Eclipse akan meng-eksekusi file Salam.java dan output akan ditampilkan dalam window console dibagian bawah window Eclipse. Mendapatkan Help Jika anda ingin mendapatkan informasi atau Help dari Eclipse pilih Help ->Help Contents
11 Referensi
1 Eclipse : http://www.eclipse.org 1 Jboss : http://www.jboss.com 1 Java : http://java.sun.com
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 105
106 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
1 . Instalasi
1.1 Instalasi Java
Pastikan sudah menginstal Java Standard Development Kit (Java-SDK), versi terakhir Java SDK-1.6 dapat di download http://java.sun.com.
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 107
Gambar 1.0 : Memulai instalasi NetBeans 1. Tentukan lokasi direktori untuk instal Netbeans, biasanya untuk aplikasi diletakan pada direktori /opt.
Gambar 1.1 : Memilih lokasi instalasi 2. Pilih Java SDK yang akan digunakan oleh
108 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Gambar 1.2 : Memilih Java SDK 3. Seting PATH aplikasi Edit file /etc/profile , untuk meng-set PATH aplikasi NetBeans yang diinstal dalam direktori /opt/netbeans-5.5.1 tambahkan baris berikut ini :
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 109
Memulai Netbeans
Jika PATH aplikasi NetBeans telah di set, untuk memanggil aplikasi NetBeans jalankan perintah berikut :
$ netbeans
Atau
$ opt/netbeans-5.5.1/bin/netbeans
110 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 111
Gambar 1.5 : Memulai Projek dengan NetBeans Setelah menentukan kategori projek yang dibuat, kemudian klik Next.
112 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Pada step 2 ini, anda diminta untuk mengisi nama dan lokasi projek : Project Name : HelloDunia Project Location : /home/rojul/labs
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 113
Gambar 1.8. Membuat Class Dari window, pilih Kategori Java Class dan Tipe File Java Class, kemudian pilih Next
Isi Nama, Lokasi dan Paket dari File, kemudian pilih tombol Finish. 114 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Compile Project Compile Project digunakan untuk compile seluruh file yang ada dalam project. Build -> MainProject Compile File Java Compile File digunakan untuk compile satu file tertentu Build -> Compile NamaFile.java Running Project Run -> Run Main Project Running File Java Run -> Run File -> Nama File
Aplikasi Dekstop
Anda bisa membuat sebuah project Dekstop atau Aplikasi Web dengan NetBeans, untuk graphic bisa dipilih jenis file dari kategori Java GUI Forms pada saat ingin membuat file.
Gambar 1.10 : Tampilan IDE NetBeans untuk aplikasi Dekstop Dalam window NetBeans ketika membuat GUI tersedia window property yang digunakan Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 115
5.
Aplikasi Web
NetBeans juga dilengkapi dengan Tomcat Web Server, Konfigurasi tomcat server bisa dilihat dengan memilih tab runtime :
Gambar 1.11 : Runtime Explorer Untuk mengubah konfigurasi tomcat server dengan memilih : Click Kanan pada Bundled Tomcat -> pilih Properties
Gambar 1.12 : Tomcat Server Manager Konfigurasi file tomcat server untuk user sistem berada dalam direktori : /home/NAMA_USER/.netbeans/5.5.1/apache-tomcat-5.5.17_base/
116 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
6
1 1
Referensi
NetBeans IDE : http://www.netbeans.org/products/ Java: http://java.sun.com
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 117