• Tidak ada hasil yang ditemukan

I. Mengenal PERL. 1.Tentang PERL. 2.Menjalankan Program PERL. 2.1.Eksekusi dari file

N/A
N/A
Protected

Academic year: 2021

Membagikan "I. Mengenal PERL. 1.Tentang PERL. 2.Menjalankan Program PERL. 2.1.Eksekusi dari file"

Copied!
119
0
0

Teks penuh

(1)
(2)
(3)

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: #!/usr/local/bin/perl

(4)

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: $area = $pi * $radius * $radius; # menghitung hitung luas

(5)

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 diinterpretasikan $str1  =  '\niman \nilmu \namal \n'; print $str1; # dicetak dalam 3 baris diikuti baris baru $str2  =  “\niman \nilmu\namal \n”;

(6)

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'

(7)

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 '=>'. Untuk membaca nilai anggota hash digunakan operator kurawal {} dan nama kunci. Contoh:

(8)

%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 eq kesamaan

(9)

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

(10)

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 {

(11)

    # 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;

(12)

} 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”); selanjutnya dapat ditulis dengan perintah print, menggunakan file handle, sbb:

(13)

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 $res;

(14)

}

# 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.

(15)

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 ach e/ and 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.net 2. Uncompress di sembarang direktori bash% tar zxvf php­5.2.0.tar.gz 3. Konfigurasi dan kompilasi

(16)

bash%  cd   php­5.2.0

bash%  ./configure –prefix=/d ir /i ns tala si /p hp/ an da –with­ apxs=/di r/ in stal as i/ ap ach e/ and a/ bin /a pxs  –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.

(17)

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:  ● 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";

(18)

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 :

(19)

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',

(20)

    'ruby' => 'aplikasi web',     'java' => 'aplikasi enterprise' ); 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: ● boolean FALSE ● integer 0 (nol)  ● float 0.0 (zero)  ● string kosong, dan string "0" ● array yang tidak mempunyai elemen. ● object yang tidak mempuyai variabel member (PHP4) ● tipe khusus NULL  ● semua variabel yang di­unset

(21)

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; Reference assignment =&, juga dapat digunakan untuk variabel primitif:

(22)

$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

(23)

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 $hasil =  true ? 'benar':'salah';

(24)

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 <> $b ? 'true':'false'  , "\n";  // false

(25)

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 ekspresi2 Menghasilkan 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

(26)

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 || true)?'true':'false',"\n"; //   TRUE

(27)

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 Menghasilkan bit yang di­set jika b1 tidak di­set, dan kebalikannya

(28)

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");

(29)

} 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 "slurp..slurp..\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: 

(30)

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.

(31)

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 {         echo 'benar...',"\n";

(32)

    } } 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

Statemen continue digunakan untuk mengubah alur eksekusi program agar segera 

(33)

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"; }

(34)

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.

(35)

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 : function fibonacci($max) {

(36)

    $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)

(37)

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 

(38)

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

(39)

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. Cara mensetup apache agar dapat mendukung PHP tidak dijelaskan.

(40)

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: ● membaca data dari request sebagai masukan, termasuk parameter request. ● Melakukan proses untuk menghasilkan keluaran berdasarkan data request ● 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.

(41)

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 OrderService {     private $produk = array('01'=>'Gado­gado', '02'=>'Bakmi Ayam',  '03'=>'Tong Seng');     private $pilihan = array (         '01' => array(       'cabe &gt; 10','banyak sayuran','ketupat','nasi'          ),         '02' => array(       'pangsit kering','pangsit basah','bakso'          ),         '03' => array(       'banyak tulang','banyak daging','banyak kuah'          ) );     // constructor     function OrderService() {

(42)

    }     // @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:

(43)

<ol> <?php  $os = new OrderService(); 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 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) {

(44)

?> <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. Jika anda baru mulai mengembangkan aplikasi web pastikan anda lebih dahulu menguasai 

(45)

HTML (Hypertext Mark Up Language) dan gunakan HTML editor dan previewer yang cerdas  sehingga membantu dalam menemukan kesalahan­kesalahan sintaks penulisan.

(46)
(47)

III. Mengenal Python

1.Apa itu Python

Python adalah bahasa pemrograman yang interpreted. Program python dapat langsung  dieksekusi menggunakan interpreter, tanpa melalui proses kompilasi tersendiri. Python telah digunakan untuk berbagai aplikasi, mulai dari utilitas untuk administrasi sistem,  pemrograman game, aplikasi web terintegrasi dengan database sampai aplikasi desktop  berbasis Graphical User Interface. Python adalah bahasa tingkat lebih tinggi, lebih tinggi dari C/C++, memiliki struktur data  built­in dengan kemampuan operasi yang kaya dan luwes, sehingga memungkinkan program  Python lebih ringkas daripada jika ditulis dengan C/C++ atau bahkan Java. Python adalah bahasa yang modular, setiap program python adalah module, yang dapat  diimport oleh program lain untuk dimanfaatkan objek atau fungsinya. Library python sangat extensible, bagi anda yang menguasai pemrograman C, tidak sulit  untuk menambah fungsi baru atau module ke dalam library python.

2.Menjalankan Interpreter Python

Setelah interpreter python ter­instal, maka dapat dijalankan dengan cara­cara berikut ini: 1. Melalui shell, biasanya untuk menjalankan 1 statemen python:

bash$ python -c "print 'assalamu\'alaikum'"

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 * 24 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”

(48)

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 * 14 * 14 sisa = 106 % 3  # menghitung sisa pembagian

6.Objek dan variabel

Objek adalah abstraksi data, setiap data dalam python diwakili oleh objek atau oleh relasi  antara objek.  Setiap objek memiliki id yang unik dan tidak berubah, id objek dapat diketahui menggunakan  fungsi id(). Operator is dapat digunakan untuk membandingkan identitas objek.

Object memiliki tipe dan nilai. Tipe sebuah objek dapat diketahui menggunakan fungsi 

type(), tipe sebuah objek juga tidak dapat diubah.

(49)

print type(123)  # 123 adalah objek v1 = 123   # assignment: variabel sebagai referensi ke objek print type(v1)   # tipe v1 adalah tipe objek yg direferensikan print id(v1)     # id objek print v1         # mencetak nilai objek yang direferensikan 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 = 100 print id(a) b = a print a is b  # a dan b mengacu ke objek yang sama del(a)         # dimusnahkan # print a is b  # menyebabkan error, a tidak didefinisikan print b       # b dan objek yang direferensikan masih ada print id(b)

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.Tipe data, literal dan operasi

Objek dibedakan tipe data­nya karena setiap tipe data memiliki operasi­operasi tersendiri. Bagian ini menjelaskan berbagai tipe data dan operasi yang berasosiasi dengan tipe data  tersebut.

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.  2147483647 # integer terbesar untuk 32 bit arithmetic 2147483648L # long 01234567 # octal 0x123456789abcdef # hexadecimal Operasi aritmetika antara integer dengan integer, selalu menghasilkan integer, operasi  integer 

(50)

dengan float akan menghasilkan data float. Contoh : >>> 22 / 7 * 21 * 21 # integer dan integer 1323 >>> 22 / 7.0 * 21 * 21  # integer dan float 1386.0 Bilangan di python adalah first­class object, yang memiliki operasi­operasi nya sendiri,  contoh: bil = 1234 bil.__mod__(7) # sama dengan bil % 7

7.2.String dan Unicode String

Selain bilangan python juga dapat memanipulasi data String dengan pengkodean ASCII  maupun Unicode. Penulisan string literal menggunakan petik tunggal atau petik ganda. Python tidak  membedakan kedua cara tersebut.Kedua cara penulisan mengenal karakter khusus seperti  baris baru '\n' dan tab '\t', penulisan literal karakter ascii menggunakan octal dan decimal juga  didukung. Untuk menulis string tanpa pengenalan karakter khusus, digunakan prefix 'r' di depan  string. print 'Assalamu\'alaikum' print “Wa 'alaikum salaam” print 'saya bilang “Python keren”' print “saya bilang 'Python asyik'” print 'baris satu\n baris kedua' print 'baris satu\x 0A baris kedua' print 'baris satu\012baris kedua' # raw string print r'baris satu \n  dibaris satu juga' 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'

(51)

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.Tipe data container

Tipe data container adalah tipe data yang dapat menyimpan referensi ke objek lain sebagai  value­nya. Python memiliki tipe data container yang built­in. Tipe data container dalam python dapat menyimpan data yang tipenya berbeda­beda. Bahkan  data container di python dapat memiliki elemen berupa  data container juga.

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,10,11]]] 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)

(52)

(1,'senin',2,'selasa',3,'rabu') (1,(2,3),4,5,(6,7,8,(9,10,11))) 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': '0001', '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.Ekspresi dan operasi

8.1.Ekspresi Atom

Atom adalah ekspresi paling dasar dalam python.Yang termasuk ekspresi atom ada 3 jenis:

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).

Gambar

Gambar 1.0. Memulai Eclipse
Gambar 1.3.  Project Wizard
Gambar 1.7. Salam.java dengan Eclipse  10   Menjalankan aplikasi Pilih Run ­&gt; Run As ­&gt; Java Application Eclipse akan meng­eksekusi file Salam.java dan output akan ditampilkan dalam window  console dibagian bawah window Eclipse
Gambar 1.0 : Memulai instalasi NetBeans
+6

Referensi

Dokumen terkait

Sistem yang dikembangkan diharapkan dapat memenuhi kebutuhan fungsional agar dapat digunakan sesuai dengan proses bisnis yang telah berjalan pada sisi admin

Background dari halaman ini adalah permainan pada siang hari dengan tema yang dapat berubah dan terdapat kotak garis sebagai arena permainan seperti yang

Tutup Motor dibuat dari pelat ST 37 yang diikat dengan baut pada motor mesin cuci dan berfungsi untuk melindungi kabel – kabel dari percikan air maupun hasil parutan

Departemen Kesehatan Republik Indonesia, 1979, Farmakope Indonesia, Edisi III, Direktorat Jendral Pengawasan Obat dan Makanan: Jakarta... Departemen Kesehatan Republik

Profil spesifik dari simplisia kering daun kersen ialah berbentuk serbuk dengan bau aromatis dan berwarna hijau; secara mikroskopis memiliki fragmen stomata tipe

Berdasarkan observasi pada gambar 4.7 terlihat terlihat bahwa ada peningkatan keterampilan proses sains pada setiap aspek yang diamati yaitu pada aspek mengobservasi

Ranah kognitif adalah perubahan perilaku yang terjadi dalam kawasan kognisi. Proses belajar yang melibatkan kawasan kognitif imeliputi kegiatan sejak dari penerimaan

Peristiwa tanah longsor dikenal sebagai gerakan massa tanah, batuan atau kombinasinya, sering terjadi pada lereng-lereng alam atau buatan dan sebenarnya merupakan fenomena alam