bahasa pemerograman open source
Post on 30-May-2018
240 Views
Preview:
TRANSCRIPT
-
8/14/2019 Bahasa Pemerograman Open Source
1/119
-
8/14/2019 Bahasa Pemerograman Open Source
2/119
-
8/14/2019 Bahasa Pemerograman Open Source
3/119
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
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 1
-
8/14/2019 Bahasa Pemerograman Open Source
4/119
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
2 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
5/119
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;
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 3
-
8/14/2019 Bahasa Pemerograman Open Source
6/119
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'
4 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
7/119
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:
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 5
-
8/14/2019 Bahasa Pemerograman Open Source
8/119
%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
= Lebih dari atau sama dengan
Perbandingan String
eq kesamaan
6 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
9/119
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
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 7
-
8/14/2019 Bahasa Pemerograman Open Source
10/119
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 tanpaargumen:
@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 denganman perlfunc.
Penjelasan untuk fungsi tertentu dapat dicari denganperldoc -f .
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 {
8 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
11/119
# 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 ( ; ; ) {
# 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 () {
}
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;
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 9
-
8/14/2019 Bahasa Pemerograman Open Source
12/119
}
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 = ) {
# 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:
10 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
13/119
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 = ) {
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 dapatdigunakan oleh berbagai program pemanggil.
Berikut ini bentuk pendefinisian subrutin :
sub {
}
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;
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 11
-
8/14/2019 Bahasa Pemerograman Open Source
14/119
}
# 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.
12 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
15/119
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=/dir/instalasi/apache/anda --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
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 13
http://www.php.net/http://www.php.net/http://www.php.net/http://www.php.net/ -
8/14/2019 Bahasa Pemerograman Open Source
16/119
bash% cd php-5.2.0
bash% ./configure prefix=/dir/instalasi/php/anda with-apxs=/dir/instalasi/apache/anda/bin/apxs 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 KonsolBuat program salam.php berikut ini disebarang direktori:
-
8/14/2019 Bahasa Pemerograman Open Source
17/119
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 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 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";
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 15
-
8/14/2019 Bahasa Pemerograman Open Source
18/119
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 :
16 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
19/119
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 TunggalString 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:
'otomatisasi sysadmin',
'c' => 'aplikasi system',
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 17
-
8/14/2019 Bahasa Pemerograman Open Source
20/119
'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.NULLMenyatakan 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
18 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
21/119
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:
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 19
-
8/14/2019 Bahasa Pemerograman Open Source
22/119
$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 == 1000echo $a sama dengan 1000\n;
}
$b = 0;
if ($b = 0 ) { # selalu FALSE seharusnya $b == 0echo $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
20 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
23/119
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';
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 21
-
8/14/2019 Bahasa Pemerograman Open Source
24/119
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 dantipe 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
22 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
25/119
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 nilaiekspresi2 dantipe 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(=), smaller equals ( 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
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)?'tr ue':'false',"\n"; // TRUE
echo (true and false)?'true':'false',"\n"; // FALSE
echo (false and false)?'true':'false',"\n"; // FALSE
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 23
-
8/14/2019 Bahasa Pemerograman Open Source
26/119
3.5.5.2.Logical OR
ekspresi1 or ekspresi2
Operator OR menghasilkan nilai TRUE jika adasalah satu dari ekspresi1 dan ekspresi2
bernilai TRUE.
// or
echo (true or true)?'tr ue':'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)?'tr ue':'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)?'tr ue':'false',"\n"; // TRUE
24 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
27/119
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
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 25
-
8/14/2019 Bahasa Pemerograman Open Source
28/119
Shift left (geser bit ke kiri)
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");
26 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
29/119
} 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:
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 27
-
8/14/2019 Bahasa Pemerograman Open Source
30/119
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; $tm p=$a, $a = $b, $b += $tmp) {
echo $b," ";
}
Jika ekspresi blok kedua adalah kosong, maka loop for akan dieksekusi tanpa berhenti, dan
hanya dapat keluar dari dalam blok dengan statemen break.
3.6.3.1.while
Statemen while digunakan untuk menjalankan pengulangan selama ekspresi dalam while
adalah TRUE.
28 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
31/119
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";
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 29
-
8/14/2019 Bahasa Pemerograman Open Source
32/119
}
} 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
30 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
33/119
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";
}
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 31
-
8/14/2019 Bahasa Pemerograman Open Source
34/119
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.ExceptionException 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.
32 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
35/119
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) {
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 33
-
8/14/2019 Bahasa Pemerograman Open Source
36/119
$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)
34 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
37/119
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 classClass 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 melaluiobject 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
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 35
-
8/14/2019 Bahasa Pemerograman Open Source
38/119
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
Sama dengan include, tapi jika file sudah pernah di-include sebelumnya tidak akan
36 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
39/119
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.
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 37
-
8/14/2019 Bahasa Pemerograman Open Source
40/119
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.
38 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
41/119
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.
Warung Web
4.3.2.File ordersvc.php
File ini berisi definisi class yang diperlakukan aplikasi untuk memproses pesanan.
-
8/14/2019 Bahasa Pemerograman Open Source
42/119
}
// @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 $kirimke,
kalau kebetulan lewat..
\n";if($konfig) {
echo '';
foreach($konfig as $d) {
echo '', $this->pilihan[$prod][$d],"\n";
}
echo '';
} else {
echo "Anda memilih menu standard
\n";}
}
}
?>
4.3.3.File menu.php
Menampilkan menu pilihan:
Selamat datang di warung
Apa yang anda inginkan:
40 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
43/119
4.3.4.File pesan.php
Untuk memproses pesanan, dan menampilkan response.
Jika pesanan sudah diproses form tidak ditampilkan lagi
-
8/14/2019 Bahasa Pemerograman Open Source
44/119
?>
Konfigurasi
kirim ke alamat
-
8/14/2019 Bahasa Pemerograman Open Source
45/119
HTML (Hypertext Mark Up Language) dan gunakan HTML editor dan previewer yang cerdas
sehingga membantu dalam menemukan kesalahan-kesalahan sintaks penulisan.
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 43
-
8/14/2019 Bahasa Pemerograman Open Source
46/119
44 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
47/119
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
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 45
-
8/14/2019 Bahasa Pemerograman Open Source
48/119
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.
Variabel adalah referensi ke objek, variabel mereferensikan objek setelah melalui assignment.
46 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
49/119
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 operasiObjek 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
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 47
-
8/14/2019 Bahasa Pemerograman Open Source
50/119
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 adalahfirst-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\x0A baris kedua'print 'baris satu\012 baris 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'48 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
51/119
print u'baris satu\u000A baris kedua'# unicoderaw 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 datacontainer
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, delPerhatikan 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)
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 49
-
8/14/2019 Bahasa Pemerograman Open Source
52/119
(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).
50 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
53/119
Python membedakan huruf besar dan kecil pada identifier.
Panjang identifier adalah tak terbatas
8.1.2.Literal
Python mendukung berbagai literal string dan numerik.Pada bagian type data telahdiperkenalkan berbagai penulisan data numerik dan string secara literal.
8.1.3.Enclosure
Enclosure adalah bentuk-bentuk ekspresi yang dibatasi oleh reverse-quote (tanda petik
terbalik `), tanda kurung, kurung siku, dan kurung kurawal.Berikut ini bentuk ekspresi yang
termasuk enclosure:
1. Bentukan dalam kurung (Parenthesized forms)
2. List display
3. Generator expressions
4. Dictionary display
5. Konversi string
8.1.3.1.Bentukan dalam Kurung ( Parenthesized forms)
Bentukan dalam kurung adalah list ekspresi yang opsional ditempatkan dalam kurung ().
Jika berisi sedikitnya satu koma, akan membentuk tuple, jika tidak mengandung koma akanmembentuk ekspresi tunggal. Contoh:
(1+2) # ekspresi tunggal (atom)
(1+2,) # tuples
8.1.3.2.List display
Ekspresi list display akan membentuk objek list yang baru. Ekspresi list dapat dibentuk
menggunakan list dari ekspresi yang dipisahkan koma atau dari sebuah list comprehension.
[1+2,3
-
8/14/2019 Bahasa Pemerograman Open Source
54/119
(b for b in range(20) if(b%3==0 and b>0)) # generator bilangan
kelipatan tiga
(b for b in range(20) if(b%3==0)).next() # 3
8.1.3.4.Dictionary display
Dictionary display adalah ekspresi yang menghasilkan objek dictionary baru.
{'python':'GUI app', 'php':'web app','java':'mobile app','ruby':'web
app'}
8.1.3.5.Konversi String
Konversi ke string adalah ekspresi menggunakan tanda kutip tunggal terbalik (reverse quote).
Yang mengubah ekspresi dari tipe data lain ke string.
`('a','b','c')``[1,2,3,('a','b','c')]`
`1+2+3` # 6
8.2.Ekspresi Primer (Primaries)
Ekspresi primer adalah ekspresi yang mewakili operasi-operasi yang paling mengikat dalam
python. Meliputi:
1. Ekspresi Atom (dibahas pada bagian sebelumnya),
2. Referensi atribut
3. Subskrip (subscription)
4. Slicing
5. pemanggilan callable object (calls)
8.2.1.Referensi Atribut (Attribute Reference)
Referensi atribut adalah ekspresi yang mengacu kepada atribut objek. Contoh:
objek1.atribut1
Pada ekspresi referensi atribut, objek harus mendukung attribute yang diacu, jika tidak maka
akan menimbulkan AttributeError. Atribut yang direrensikan dapat berupa objek yang
memiliki atribut juga, contoh:
objek2.atribut1.atribut2
8.2.2.Subskrip
Ekspresi subskrip berlaku pada objek sequence (list, tuple, string) atau mapping (dictionary).
52 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
55/119
Subkrip menggunakan [] setelah objek.
objek1[ekspresi1]
Jika objek bertipe sequence, maka ekspresi1 haruslah integer. Ekspresi dalam subskrip pada
objek sequence dapat berupa bilangan negatif, untuk peng-indeks-an dari belakang. Contoh:
list1 = [51, 16, 7, 8, 10]
list1[3] # bilangan 8
string2 = 'bismillah'
string[3] # 'm'
string[-6] # m
tuple3 = ('hati','damai','ingat','ALLAH')
tuple[3] # ALLAH
tuple[-1] # ALLAH
Untuk objek bertipe mapping, ekspresi indeks haruslah sesuatu yang dapat di-hash (hashable)
dan tidak dapat diubah (immutable).
dict4 = {'python':'GUI app', 'php':'web app','java':'mobile
app','ruby':'web app'}
dict4['python'] # 'GUI app'
dict4['java'] # 'mobile app'
8.2.3.Irisan (Slicing)
Expresi slicing terdiri atas Simple Slicing dan Extended slicing.
Ekspresi simple slicing digunakan pada objek sequence (atau ekspresi yang menghasilkan
objek sequence) dan menghasilkan objek sequence baru. Berikut ini contohnya:
list1 = [1,2,3,4,5,6,7,8,9]
list1[1:] # list baru dari 2 sampai dengan 9
list1[1:5] # list baru dari 2 sampai dengan 5
list1[:-1] # list baru dari 1 sampai dengan 8
list1[1:-2] # list baru dari 2 sampai dengan 7
Ekspresi extend slicing, digunakan pada objek mapping menggunakan tuple sebagai key,
contoh:
b = {'a':1,'b':2,'c':3,'d':4,('e','f'):5,('g','h'):6,'h':7,'i':8}
print 'e,f', b['e','f']
print 'g,h', b['g','h']
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 53
-
8/14/2019 Bahasa Pemerograman Open Source
56/119
8.2.4.Pemanggilan callable (calls)
Ekspresi ini memanggil callable objek (misalnya fungsi), dengan menggunakan nol atau
beberapa argumen.
Yang dimaksud callable objek adalah: user-defined functions, built-in functions, method dari
built-in objects, class objects, methods of class instances, dan beberapa class instances sendiriadalah callable.
Argumen dapat berupa positional atau keyword argument.
Semua ekspresi pada argumen dievaluasi sebelumnya pemanggilan dilakukan.
8.3.Operasi Pangkat
Operasi pangkat berasosiasi lebih kuat dari operator unary disebelah kirinya, dan berasosiasi
lebih lemah dari operator unary di sebelah kanannya. Contoh:
2**2 # 4
-2**2 # -4
(-2)**2 # 4
(-2)**3 # -8
2**-2 # -0.25
2**2**3 # 256 = 2**8
2**-2**2 # 0.0625 = 2**-4 = 1/2**4
-16**-2**-2 # -0.5 = -16**-0.25 = -1/16**0.25
8.4.Operasi aritmetika unary
Semua operasi unary aritmetika dan biner memiliki prioritas yang sama, terdiri atas:
minus (-) , plus (+) dan bitwise inversion (~).
8.5.Operasi aritmetika biner
Operasi biner meliputi :
8.5.1.Perkalian
Perkalian (*) memerlukan argumen bilangan keduanya atau jika salah satunya integer maka
yang lainnya harus sequence.
2*3 # 6
54 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
57/119
3*'sip ' # sip sip sip
3*(1,2,3) # (1,2,3,1,2,3)
8.5.2.Pembagian
Terdiri atas '/' (division) dan '//' (floor division).
Floor division mengenakan floor() pada hasil pembagian.
# division
22/7*14*14 # 588
22./7*14*14 # 616.0
1/2*3*4 # 0
1./2*3*4 # 6.0
22./7 # 3.14285714286
22.//7 # 3.0
8.5.3.Modulus (%)
Menghitung sisa hasil bagi. Operator % juga dioverload untuk melakukan peng-format-an
string, contoh:
22%7 # 1
'%d ekor %s' % (3,'ayam')
8.5.4.Penjumlahan
Menjumlahkan bilangan dan menggabungkan concat sequence.
22+10
'belajar ' + 'python'
8.5.5.Pengurangan
Operator ini menghitung selisih untuk bilangan.
22-10
8.6.Operasi Pergeseran (shifting)
Operasi shift bit ini menerima dua argumen bilangan integer atau long, untuk argumen di kiri
harus positip.
Argumen di kanan operator adalah bilangan yang digeser bitnya dengan jumlah pergeseran bit
sebesar nilai argumen di kiri.
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 55
-
8/14/2019 Bahasa Pemerograman Open Source
58/119
Melakukan N pergeseran ke kanan (>>) sama dengan membagi bilangan dengan N pangkat 2.
Melakukan N pergeseran ke kiri ( 1 # 2 = biner 100 shift left 1 -> 010
4 1000
7 >> 1 # 3 = biner 111 shift left 1 -> 011
7 1110
8.7.Operasi Bit Biner (binary bitwise)
Operasi ini meliputi AND, OR dan XOR, yang beroperasi bit-per-bit.
Operator AND akan menset bit jika dan hanya jika kedua bit di-set
15 & 8 # 8
31 & 8 # 8
Operator OR akan menset bit jika salah satu dari kedua bit di-set
15 | 8 # 15
31 | 8 # 31
Operator XOR akan menset bit jika dan hanya jika salah satu bit diset. Urutan precedence
diamtara ketiganya mulai dari yang tertinggi : AND, XOR dan OR
15 8 # 7 = 1111 1000 => 0111
15 15 & 8 # 7 = 1111 1000 => 0111
(15 15) & 8 # 7 = 0 & 1000 => 0
8.8.Operasi Perbandingan (comparison)
Operasi perbandingan menghasilkan nilai boolean True dan False.
Terdiri atas:
Operator Deskripsi
> Lebih besar dari
< Kurang dari
>= Lebih dari atau sama dengan
-
8/14/2019 Bahasa Pemerograman Open Source
59/119
!= atau Tidak sama dengan
is Sama dengan identitas objek
is not Tidak sama dengan identitas objek
in Bagian dari
not in Bukan bagian dari
8.9.Operasi Boolean
Operasi boolean mengevaluasi ekspresi berdasarkan nilai True dan False dari ekspresi, python
mengenal aturan berikut ini untuk definisi tentang true dan false:
Nilai False, None, numerik 0 untuk semua tipe data, dan string kosong dan container
kosong adalah false, sedangkan nilai lainnya adalah true.
Perhatikan bahwa dibedakan menuliskan True dengan true dan False dengan false, True dan
False adalah objek atau instance dari tipe Boolean, sedangkan true dan false adalah nilai
abstrak yang dikenal dalam operasi boolean.
Ada 4 operasi boolean:
ekspresi1 if ekspresi2 else ekspresi3
Operasi ini mengevaluasi ekspresi2, jika bernilai true maka menghasilkan ekspresi1, dan jika
ekspresi2 bernilai false menghasilkan ekspresi3
and
ekspresi1 and ekspresi2
Operasi ini menghasilkan true jika ekspresi1 dan ekspresi2 keduanya bernilai true
xor
ekspresi1 xor ekspresi2
Operasi ini menghasilkan true jika dan hanya jika salah satu dari ekspresi1 dan ekspresi2
bernilai true
or
Operasi ini menghasilkan true jika salah satu dari ekspresi1 dan ekspresi2 bernilai true
ekspresi1 or ekspresi2
8.10.Lambda
Lambda adalah ekspresi yang menghasilkan fungsi anonim.
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 57
-
8/14/2019 Bahasa Pemerograman Open Source
60/119
Fungsi anonim tersebut tidak boleh berisi statemen, hanya ekspresi.
def pangkat(a):
return lambda b: a**b
fa = pangkat(2)
fa(2) # 2 pangkat 2
fa(3) # 2 pangkat 3
fa(4) # 2 pangkat 4
fb = pangkat(3)
fb(2) # 3 pangkat 2
fb(3) # 3 pangkat 3
fb(4) # 3 pangkat 4
8.11.Ekspresi Lists
Ekspresi list terdiri dari satu atau lebih ekspresi yang dipisahkan dengan koma.
Ekspresi list dengan sekurangnya satu koma dibelakang menghasilkan tuple. Contoh
a,b,c = 1,2,3 # a,b,c adalah ekspresi list
x = 1, # x adalah tuple dengan 1 elemen
y = 1 # y BUKAN tuple, y adalah variabel integer
z = () # z adalah tuple kosong
9.Fungsi
Fungsi digunakan untuk mengenkapsulasikan operasi.
Fungsi python didefinisikan menggunakan keyword def diikuti nama fungsi, selanjutnya
fungsi dapat menerima nol atau lebih parameter.
Fungsi dapat mengembalikan objek (yang bukan None) atau dapat mengembalikan None.
Pengembalian objek (yang bukan None) menggunakan statement return.
# mendefinisikan fungsi
# tidak menerima param, return None
def salam():
print "Assalamu'alaikum "
58 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
61/119
# menerima param, return None
def salam1(m):
print "Assalamu'alaikum " + m
# tidak menerima param , return string
def salam2():
return "Assalamu'alaikum "
# menerima param , return string
def salam3(m):
return salam2() + m #fungsi dapat memanggil fungsi lain
# pemanggilan fungsi
salam()
salam1('fadhilah')
print salam2()
print salam3('irfan')
Parameter fungsi dapat memiliki nilai default, pada contoh berikut berikut ini a dan b
memiliki nilai default masing-masing 0 dan 1 :
# generator bilangan fibonacci yg kurang dari n, dengan rekursi
def fibonacci(n, a=0, b=1):
if b < n:
print b, # cetak tanpa ganti baris
fibonacci(n, b, a+b)
# panggil fungsi
fibonacci(100)
10.Statemen Kendali Alur
10.1.Statemen if
Statemen if digunakan untuk pencabangan eksekusi statemen atau blok statemen berdasarkan
kondisi yang bernilai True atau False. Untuk pencabangan alternatif dari kondisi pertama
digunakan keyword elif, dan untuk pencabangan alternatif terakhir digunakan else.
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 59
-
8/14/2019 Bahasa Pemerograman Open Source
62/119
Pencabangan menggunakan elif dapat lebih dari satu.
import sys
print 'tebak integer: ',
ditebak = 67
# baca stdin 1 baris, potong whitespace depan & belakang,
# lalu konversi string ke integer
a = int(sys.stdin.readline().strip())
if ditebak < a :
print 'terlalu besar '
elif ditebak > a:
print 'terlalu kecil'
else:
print 'pas benar...'
10.2.while
Untuk melakukan pengulangan selama ekspresi di while bernilai True.
Contoh:
import sysprint 'tebak integer sampai ketemu: ',
ditebak = 67
a = int(sys.stdin.readline().strip())
while a != ditebak:
if ditebak < a :
print 'terlalu besar '
elif ditebak > a:
print 'terlalu kecil'
print 'tebak lagi: ',
a = int(sys.stdin.readline().strip())
print 'pas benar...'
Untuk keluar dari while loop dapat menggunakan break, untuk melanjutkan loop tanpa
mengeksekusi statemen berikutnya digunakan continue:
import sys
60 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
63/119
ditebak = 67
minimum_coba = 3
coba = 0
while True:
coba+=1
print 'tebak integer: ',
a = int(sys.stdin.readline().strip())
if ditebak < a :
print 'terlalu besar '
if coba < minimum_coba: continue
elif ditebak > a:
print 'terlalu kecil'
if coba < minimum_coba: continue
else:
print 'pass'
break
print 'menyerah ? [y/n]: ',
nyerah = sys.stdin.readline().strip()
if nyerah == 'y':
breakelse:
coba = 0
10.3.for
Digunakan untuk meng-iterasi sequences (tuples, list, string):
stooges = 'timbul','kadir','doyox'
for guyon in stooges:
print guyon
10.4.pass
Statemen ini tidak melakukan apapun, digunakan untuk mengisi blok program agar benar
secara sintaks.
Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 61
-
8/14/2019 Bahasa Pemerograman Open Source
64/119
10.5.exceptions
Python mengenal mekanisme yang elegan dalam menangani error pada program, yaitu
menggunakan exception.Penanganan exception terdiri atas 2 blok : try dan catch.
Blok try berisi statement(-statement) yang dapat mengakibatkan terjadinya error atau
exception.
Jika satu statement dalam blok mengakibatkan exception maka statemen-statemen berikutnya
tidak akan di-eksekusi, alur program segera beralih ke blok catch.
Block catch berisi statement(-statemen) yang akan menangani exception.
Contoh berikut ini mengangani exception jika pengguna menekan ctrl-c yang menyebabkan
exception KeyboardInterrupt:
import sys
print 'tebak integer sampai ketemu: ',
ditebak = 67
t r y:a = int(sys.stdin.readline().strip())
while a != ditebak:
if ditebak < a :
print 'terlalu besar '
elif ditebak > a:
print 'terlalu kecil'
print 'tebak lagi: ',
a = int(sys.stdin.readline().strip())
print 'pas benar...'
exce pt Keyb oar dIn terr upt:print '\nhmm.. menyerah?\n\
\rsmoga lebih lain kali lebih beruntung, bye!'
11.Modules
Module memudahkan pemakaian ulang berbagai sumberdaya program (fungsi, class,
variabel), dan menyediakan namespace untuk menghindari konflik penamaan.Sebuah module
62 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
-
8/14/2019 Bahasa Pemerograman Open Source
65/119
dapat berisi beberapa fungsi atau beberapa class.
11.1.Mendefinisikan Module
Sebagai contoh, pembangkit bilangan fibonacci ingin disimpan sebagai fungsi dalam module
pembangkit. Yang diperlukan adalah mendefinisikan fungsi tersebut dalam file
pembangkit.py.
# module pembangkit fibonacci
# return list bilangan fibonacci
def fibonacci(n, a=0, b=1, hasil=None):
if hasil == None: hasil = []
if b < n:
hasil.append(b)
fibonacci(n, b, a+b, hasil)
return hasil
Perhatikan bahwa tidak ada statement diluar definisi fungsi dalam file pembangkit.py.
11.2.Menggunakan Module
Berikut ini adalah program fib.py, yang menggunakan module pembangkit.
Program ini menggunakan statement import, sehingga fungsi fibonacci() dapat diakses
melalui object pembangkit. Perhatikan bahwa nama object yang di-import sama dengan nama
file module.
import pembangkit
for x in pembangkit.fibonacci(100):
print x,
11.3.Module search path
Secara praktis module-module ditempatkan dalam direktori terpisah dari program penggunamodul.
Sebagai contoh module pembangkit.py disimpan dalam direktori /home/hafizh/modulku.
Supaya program fib.py dapat menemukan module pembangkit, direktori
/home/hafizh/modulku harus dimasukkan dalam module search path.
Salah satu yang termasuk module sea
top related