Kementerian Negara Riset dan Teknologi Republik Indonesia
Panduan Pendayagunaan Open Source Software
Bahasa Pemrograman Open Source
(Open Source Programming Language)
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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
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
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/.
Jakarta, Juli 2007
Rusmanto Maryanto
DAFTAR ISI
SAMBUTAN MENEGRISTEK...ii PENGANTAR...iii DAFTAR ISI...iv I.Mengenal PERL...1 1.Tentang PERL...12.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.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.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
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.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
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
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
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).
2.Menjalankan Program PERL
2.1.Eksekusi dari file
Berikut ini sebuah program PERL salam.pl, yang mencetak salam universal di konsol, jika ada argumen pada command line maka ditampilkan setelah salam.
#!/usr/local/bin/perl if ($#ARGV > -1) {
print "assalamu'alaikum $ARGV[0]\n"; } else {
print "assalamu'alaikum\n"; }
Eksekusi di shell menggunakan PERL interpreter, sbb:
bash% perl salam.pl Hafizh assalamu'alaikum Hafizh
Agar dapat dieksekusi tanpa mengetikkan interpreter perl di command line, file salam.pl perlu diset permissionnya. Misalkan dengan perintah :
bash% chmod 755 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:
2.2.Eksekusi dari command line
PERL dapat mengeksekusi perintah secara langsung dari command line, tanpa perlu membuat file program, menggunakan options -e di interpreter perl, contoh:
bash% perl -e 'print ”Assalamu''alaikum\n”'
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",
", do you believe miracle?\n";
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;
Atau dapat juga setelah bagian kode:
Komentar diperlakukan sebagaimana white space.
3.2.Variabel dan Tipe data
Variabel digunakan untuk menyimpan data. PERL memiliki 3 tipe variabel utama: skalar, array dan hash. Nama-nama variabel, dan identifier lainnya dalam PERL adalah case-sensitive.
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 = 255; $byte_ = 0x00ff; # float $konstanta_pi = 22/7;
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,11,13,17); # 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 = (10, 20, 30, 40); # mencetak 'ukuran array : 3'
print “ukuran array : $#bil3 \n”;
$bil3[110] = 1234;
# mencetak 'ukuran array : 110' 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 = (10,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 = (10,20,6,19,11,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', 'gareng', 'petruk', 'bagong', 'arjuna', 'srikandi');
@arr2 = @arr1[2,4] # 'petruk' dan 'arjuna'
@arr3 = @arr1[1..3] # 'gareng', 'petruk', 'bagong' @arr4 = @arr1[1..$#arr1] # semua kecuali 'semar'
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 '=>'.
%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', 'manis' =>' manggis',
'pahit' => 'pare'); $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
ne Ketidak samaan
lt Kurang dari
gt Lebih dari
le Kurang dari atau sama dengan
ge 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 = 100; $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”, “belajar”, “PERL”; # sama dengan
print (“saya”, “belajar”, “PERL”);
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 ",1900+$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:
for ( <ekspresi1>; <ekpresi2>; <ekspresi3>) { # statemen-statemen
}
Ekspresi yang umum digunakan adalah sebagai berikut:
for ( $i = 0; $i < $jumlah_pengulangan; $i++ ) { # statemen
}
3.6.2.foreach
Digunakan untuk melakukan iterasi berdasarkan anggota sebuah array atau list. Bentuknya:
foreach <variabel_skalar> (<ekspresi list>) { }
Contoh:
# iterasi atas array
@hari = ('senin','selasa','rabu','kamis','jumat','sabtu','minggu'); foreach $h (@hari) { print "hari $h\n"; } # terhadap list $p = 1; foreach $q (2..6) { $p *= $q;
}
print "faktorial 6 = $p\n"; # atau terhadap array slice foreach $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 }
3.7.Input dan Output ke file
3.7.1.Membaca dari file teks
Sebelum file dapat dibaca maka harus file dibuka dengan fungsi open, dengan mode “baca”, contoh:
open($fh, '/etc/passwd');
Variable $fh adalah filehandle yang diperlukan untuk membaca dan menutup file. Selanjutnya setiap baris dibaca dengan operator <>. sebagai berikut:
while($line = <$fh>) { # memproses $line }
Setelah selesai file ditutup dengan fungsi close, contoh:
close($fh)
3.7.2.Menulis ke file teks
Perintah yang sama dengan program di atas dapat digunakan untuk menulis ke file. Pertama, file dibuka dengan mode 'tulis':
open($fh, “> /path/ke/file”);
print $fh “baris teks yang ditulis ...\n”;
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;
foreach my $a (1..$num) {
$res *= $a; # atau $res = $res * a }
}
# return TRUE value 1;
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/mylib/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.
II. Mengenal PHP
PHP adalah bahasa pemrograman script yang dinamis. Program PHP dapat dijalankan sebagai aplikasi web yang memerlukan web server dan dapat juga dijalankan menggunakan interpreter PHP, sebagai aplikasi konsol atau desktop-based.
PHP adalah bahasa pemrograman yang kaya dengan library untuk pengembangan aplikasi mulai dari dukungan ke berbagai database management system, dukungan library Graphical User Interface, sampai library untuk sistem administrasi.
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.37.tar.gz
3. Konfigurasi dan kompilasi
bash% cd apache_1.3.37
bash% ./configure –prefix=/ di r/ in stal as i/ ap a ch e/ a nd a --enable-shared=max
bash% make
4. Instal
bash% make install
5. Instalasi apache selesai
1.2.Instalasi module PHP dan PHP CLI:
1. Download dari situs www.php.net2. Uncompress di sembarang direktori
bash% tar zxvf php-5.2.0.tar.gz
bash% cd php-5.2.0
bash% ./configure –prefix=/d ir /i ns ta la si /p h p/ an d a –with-apxs=/ di r/ in stal as i/ ap a ch e/ a nd a/ b in /a p xs –with-config-file-path=/etc
bash% make
4. Instal
bash% make install
5. Instalasi module php dan php-cli selesai
2.Menjalankan Program PHP
Program PHP dapat dijalankan dengan 2 modus:2.1.Aplikasi Konsol
Buat program salam.php berikut ini disebarang direktori:
<?php
echo “assalamu'alaikum, Brother \n”; ?>
Pastikan PHP CLI ada di PATH dengan perintah:
bash% export PATH=/dir/instalasi/php/anda/bi n :$PATH
Jalankan program dengan perintah php
bash% php salam.php
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/ Lalu akses URL ini dengan web browser pilihan anda:
http://localhost/salam.php
3.Bahasa PHP
Bagian ini membahas PHP sebagai bahasa pemrograman umum (general purpose), contoh-contoh 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 statemen PHP yang dibatasi oleh tag tersebut
1 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 */
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:
1234567890 # desimal 01234567 # octal
0x123456789abcdef #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:
.123456789 0.123456789 123456789e-9 123.456789e-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.Tipe Gabungan (compound)
Tipe gabungan adalah tipe yang dapat dibagi (decomposed) menjadi tipe yang lebih sederhana.
PHP mengenal 2 jenis tipe gabungan:
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.Tipe Khusus
3.3.3.1.Resource
Resource adalah tipe khusus yang menyimpan referensi ke resource eksternal.
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
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 = 1000;
$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. function Koordinat($x, $y) { 5. $this->X = $x; 6. $this->Y = $y; 7 . } 8. } 9. $k1 = new Koordinat(5,5); 10.$k2 = $k1; 11. $k2->X += 222; # X di $k2 diubah = 227 12.echo $k1->X ,"\n"; # X $k1 juga berubah = 227
Untuk mendapatkan hasil yang sama di PHP 4, perlu menggunakan reference assignment =&, baris 10 ditulis sbb:
$k2 =& $k1;
$x = 200; $y =& $x; $y += 300;
echo $x ,”\n”; # 500
3.5.Ekspresi dan Operator
Ekspresi adalah segala sesuatu yang memiliki nilai.
Ekspresi meliputi nilai literal, pemanggilan fungsi yang mengembalikan nilai, hasil operasi, termasuk assignment.
Assignment dalam PHP memiliki nilai dan adalah ekspresi juga. Hal ini dapat menjadi sumber error yang tidak mudah ditemukan, ketika yang ingin dilakukan adalah uji kesamaan (equality ==) :
# program berikut ini contoh penggunaan ekspresi yang SALAH $a = 123;
if ($ a = 100 0 ) { # selalu TRUE, seharusnya $a == 1000 echo “$a sama dengan 1000\n”;
}
$b = 0;
if ($ b = 0 ) { # selalu FALSE seharusnya $b == 0 echo “$b sama dengan 0\n”;
}
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 = 10; $b = 20; $c = $a + $b; // penjumlahan , hasil 30 $c = $a - $b; // pengurangan , hasil -10 $c = $a * $b; // perkalian , hasil 200 $c = $a / $b; // pembagian , hasil 0.5 $c = $a % $b; // modulus, hasil 10
3.5.2.Operator incrementing/decrementing
Menambah atau mengurangi bilangan dengan 1, terdiri atas: post-increment, pre-increment, post-decrement, pre-decrement.$a = 10; $b = $a++; // post-increment echo "b == $b , a == $a \n"; // b == 10 , a == 11 $b = ++$a; // pre-increment echo "b == $b , a == $a \n"; // b == 12 , a == 12 $b = $a--; // post-decrement echo "b == $b , a == $a \n"; // b == 12 , a == 11 $b = --$a; // pre-decrement echo "b == $b , a == $a \n"; // b == 10 , a == 10
3.5.3.Operator assignment
Assignment menghasilkan nilai baru sesuai nilai expresi disebelah kanan operator =.
$a = 10;
$c = ($b = 10) + $a; // $c == 20, $b == 10
$a += 10; // $a == 20
$c = ($b += 10) + $a; // $c == 40, $b == 20, $c == 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
echo $hasil , "\n"; // benar
$hasil = false ? 'benar':'salah'; echo $hasil , "\n"; // 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 = 10; $b = '10';
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 = 10; $b = '10'; $c = 10;
echo $a === $b ? 'true':'false' , "\n"; // false echo $a === $c ? 'true':'false' , "\n"; // 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 = 10; $b = '10'; $c =11;
echo $a != $b ? 'true':'false' , "\n"; // false echo $a != $c ? 'true':'false' , "\n"; // true // not eq ual
$a = 10; $b = '10'; $c =11;
echo $a <> $c ? 'true':'false' , "\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 = 10; $b = '10'; $c = 10;
echo $a !== $b ? 'true':'false' , "\n"; // true echo $a !== $c ? 'true':'false' , "\n"; // 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 = 10; $b = 11; $c = 10;
echo $a > $b ? 'true':'false' ,"\n"; // false echo $a < $b ? 'true':'false' ,"\n"; // true echo $a <= $c ? 'true':'false' ,"\n"; // true echo $a >= $c ? 'true':'false' ,"\n"; // true
3.5.5.Operator Logika
3.5.5.1.Logical AND
ekspresi1 and ekspresi2Menghasilkan nilai TRUE jika ekspresi1 dan ekspresi2 keduanya bernilai TRUE.
//and
echo (true and true)?'true':'false',"\n"; // TRUE echo (true and false)?'true':'false',"\n"; // FALSE echo (false and false)?'true':'false',"\n"; // 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"; // TRUE echo (true or false)?'true':'false',"\n"; // TRUE echo (false or false)?'true':'false',"\n"; // 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"; // FALSE echo (true xor false)?'true':'false',"\n"; // TRUE echo (false xor false)?'true':'false',"\n"; // 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.5.Logical AND (&&)
Samadengan operator AND sebelumnya tapi precedence nya lebih tinggi,
// &&
echo (true && true)?'true':'false',"\n"; // TRUE echo (true && false)?'true':'false',"\n"; // FALSE echo (false && false)?'true':'false',"\n"; // FALSE
3.5.5.6.Logical OR (||)
Samadengan operator OR sebelumnya tapi precedence nya lebih tinggi.
// ||
echo (true || false)?'true':'false',"\n"; // TRUE echo (false || false)?'true':'false',"\n"; // FALSE
Operatir || lebih tinggi precedencenya dari or
echo (true xor false || true) ? 'true':'false',"\n"; // FALSE echo (true xor false or true) ? 'true':'false',"\n"; // TRUE
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 = 1001 // 10 = 1010
echo 9 & 10,"\n"; // 8 = 1000
3.5.6.2.Bitwise OR
b1 | b2
Menghasilkan bit yang di-set jika salah satu dari bit1 dan bit2 di-set
echo 9 | 10,"\n"; // 11 = 1011
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 ^ 10,"\n"; // 3 = 0011
Bitwise NOT
~b1
Shift left (geser bit ke kiri)
b1 << n
Menggeser bit b1 sebanyak n ke kiri.
Setiap pergeseran satu bit sama dengan “kalikan dengan 2”
echo 10 << 1, "\n"; // 20 = 10100
Shift right (geser bit ke kanan)
b1 >> n
Menggeser bit b1 sebanyak n ke kanan.
Setiap pergeseran satu bit sama dengan “bagi dengan 2”
echo 10 >> 1, "\n"; // 5 = 0101
3.5.7.Operator String
Operator dot (titik) digunakan untuk menggabungkan string dengan string atau tipe data lainnya.
Contoh:
$a = 'saya...'; $b = 'belajar php';
$c = $a . $b; // 'saya...belajar php'
3.6.Kendali Alur Program
3.6.1.Conditional
Statemen if elseif else digunakan untuk menguji beberapa kondisi.
Berikut ini contoh program membaca bilangan dari stdin (keyboard), lalu membandingkan dengan yang ada di program:
$ditebak = 123; 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"; }
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
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. for($a = $n; $a > 0; $a--) 5. { 6. $faktorial *= $a; 7 . } 8. echo "$faktorial \n";
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));
for($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.
Contoh pada penghitung faktorial jika menggunakan while:
echo "hitung faktorial dari :"; $a = chop(fgets(STDIN)); $faktorial = 1; while($a > 0) { $faktorial *= $a; $a--; } echo "$faktorial \n";
Pembangkit deret fibonacci menggunakan statement while:
# pembangkit fibonacci
echo "hitung fibonacci sampai :"; $maks = chop(fgets(STDIN)); $a = 0; $b = 1; while($b < $maks) { echo $b," "; $tmp=$a; $a = $b; $b += $tmp; }
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 {
}
} 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. while(true) { # loop 2 4. echo "ayo tebak: ";
5. $tebak = chop(fgets(STDIN)); 6. if($tebak == '') { 7 . echo("kosong!\n"); 8. } elseif($tebak < $ditebak) { 9. echo("terlalu kecil\n"); 10. } elseif ($tebak > $ditebak) { 11. echo("terlalu besar\n"); 12. } else { 13. echo 'benar...',"\n"; 14. break; 15. } 16. } # akhir loop 2 17 . echo "lanjut? "; 18. ya = chop(fgets(STDIN)); 19. if($ya == 'n') break; 20.} # akhir loop 1
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
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 == 'y') break; else $coba = 0; }
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(10,20,30,40,50); foreach($array as $value) { echo $value , "\n"; }
untuk array asosiatif:
$hash = array('kode'=> 'A123', 'nama'=> 'susu sapi', 'harga'=> 12000, 'satuan'=> 'liter');
foreach($hash as $key => $value) {
echo $key , ' => ', $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 disengaja');
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;
for($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 ber-ulang.
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 :
$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(100); print_r($deret) # cetak array
3.7.2.Nilai Default untuk parameter
Untuk parameter fungsi bertipe skalar (numerik, string, array, bukan objek) , dapat ditentukan nilai defaultnya, contoh mencetak bilangan fibonacci secara rekursif :
function fibonacci($max, $a=0, $b=1) { if($b < $max) {
echo $b, " ";
fibonacci($max, $b, $b+$a); # rekursi }
}
fibonacci(100);
Parameter default memudahkan penggunaan fungsi.
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); }
5) */
function __toString() {
return "($this->i, $this->j)"; }
} // akhir definisi class
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 Vektor(3,4); // objek $v1 diadakan $v2 = new Vektor(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
dimasukkan lagi.
3.9.4.require_once
Sama dengan include_once, tapi jika file yang di-include tidak ditemukan menyebabkan fatal error.
3.10.Menggunakan Fungsi dan Class dan file lain
Agar sebuah fungsi atau sebuah class dapat digunakan oleh program pemanggil yang berbeda, maka fungsi atau class tersebut di simpan dalam file tersendiri.
Statemen require_once sangat tepat digunakan untuk menyertakan definisi fungsi atau class dari file tersebut, karena menjamin definisi fungsi atau class hanya satu kali dipanggil. Misal class Vektor disimpan dalam file Vektor.php di dalam direktori: /home/fadhilah/classes, maka jika program testvektor1.php perlu menggunakan class tersebut, digunakan
require_once: 1. req uire_once('/home/fadhilah/classes/Vektor.php'); 2. $v1 = new Vektor(3,4); 3. $v2 = new Vektor(7,8); 4. $v3 = $v1->tambah($v2); 5. echo "$v1 + $v2 = $v3", "\n"; 6. echo $v1->to_skalar(), "\n"; 7
. echo '$v3->i == ', $v3->i ,"\n"; 8. echo '$v3->j == ', $v3->j ,"\n";
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.
4.1.Method GET dan POST
Aplikasi web adalah berbasiskan interaksi antara 2 program, yang masing-masing berperan sebagai client dan server.
Dalam konteks bahasan ini, server adalah web server (misal: apache httpd 2, apache httpd 1, tomcat, jetty) dan client adalah web browser (misal: mozilla firefox, konqueror, epiphany, opera)
Server adalah program pertama yang berjalan dan menyediakan service yang dapat di-request oleh client.
Selanjutnya client berjalan, dan mengirimkan request kepada server, server menerima dan memproses request tersebut dan menghasilkan response.
Client menerima response dan merepresentasikan response tersebut ke pengguna. Web request dapat dikirimkan dalam 2 method (cara) GET dan POST.
Method GET digunakan apabila operasi yang diharapkan terjadi di sisi server, akibat adanya request ini, tidak akan mengakibatkan perubahan (pada data atau sumber data).
Method POST digunakan apabila operasi yang diharapkan terjadi di sisi server, akibat adanya request ini, akan mengakibatkan perubahan (pada data atau sumber data).
Web request dapat memiliki parameter, yang diperlakukan oleh aplikasi sebagai data string. Pada method GET, parameter tersebut dikirimkan sebagai bagian dari URL, dan panjang parameter dibatasi oleh panjang maksimum URL.
Pada method POST, parameter tersebut dikirimkan dalam body request. Panjang parameter tidak terbatas.
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
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.Penjelasan Program
4.3.1.File head.php
Berisi header untuk setiap halaman web, agar tampilan konsisten.
Header juga cocok untuk menempatkan include ke file-file yang menyediakan class-class atau fungsi-fungsi yang diperlukan oleh aplikasi.
<?php
define ("PEMILIK", "Irfan Mahdi"); req uire_once("ordersvc.php"); ?>
<html><body>
<h1>Warung Web</h1>
4.3.2.File ordersvc.php
File ini berisi definisi class yang diperlakukan aplikasi untuk memproses pesanan.
<?php
class OrderSer vice {
private $produk = array('01'=>'Gado-gado', '02'=>'Bakmi Ayam', '03'=>'Tong Seng');
private $pilihan = array ( '01' => array(
'cabe > 10','banyak sayuran','ketupat','nasi' ),
'02' => array(
'pangsit kering','pangsit basah','bakso' ),
'03' => array(
'banyak tulang','banyak daging','banyak kuah' )
);
// constructor
}
// @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 'Terimakasih, ',"\n";
echo "Kami segera mengirimkan pesanan ke <em>$kirimke</em>, kalau kebetulan lewat..<br/>\n";
if($konfig) { echo '<ul>';
foreach($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 OrderSer vice();
foreach($os->produk() as $key => $value) { echo '<li><a href="pesan.php?prod=',$key,'">',$value,'</li>',"\n"; } ?> </ol> <?php include('tail.php'); ?>
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 OrderSer vice(); 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;
} }
?>
<for m method="post">
<table style="border: 1px solid;padding: 10px 10px 10px 10px; background-color: lightgreen;"> <tr><td> Konfigurasi </td><td> <?php $prod = $_GET['prod']; $options = $os->pilihan($prod); $i = 0; foreach($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> </for 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.
HTML (Hypertext Mark Up Language) dan gunakan HTML editor dan previewer yang cerdas sehingga membantu dalam menemukan kesalahan-kesalahan sintaks penulisan.