You are on page 1of 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
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
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
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,
1
7);
# mencetak '5'
print $prima1[2];

Untuk mendapatkan jumlah anggota array digunakan variabel  $# diikuti nama variabel,  tapi 
nilainya adalah jumlah anggota array dikurangi satu. Nilai ini juga dapat digunakan untuk 
membaca elemen terakhir. Contoh :
@hari2 = (1, "senin",2,"selasa", 3,"rabu",4,”kamis”, 5, ”jumat”);
# mencetak 'jumlah anggota : 9'
print “jumlah anggota : $#hari2 \n”;
# mencetak 'elemen terakhir : jumat'
print “elemen terakhir : $hari2[$#hari2] \n”;

Jika sebuah program mencoba menulis anggota array pada posisi indeks yang lebih besar dari 
ukuran array, maka PERL secara otomatis menambah ukuran array sampai posisi baru 
tersebut. Contoh:
@bil3 = (10, 20, 30, 40);
# mencetak 'ukuran array : 3'

4  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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
%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

6  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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
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 {

8  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
    # 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;

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  9
}
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:

10  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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;

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  11
}
# 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
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.3.
7tar
.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

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  13
bash%  cd   php­5.2.0
bash%  ./configure –prefix=/d ir /i ns tala si /p hp/ an da –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.

14  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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";

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  15
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
3.3.1.4.1.Petik ganda
String dengan petik ganda mengenal karakter khusus (baris baru, tab) dan melakukan 
ekspansi variabel

3.3.1.4.2.Petik Tunggal
String dengan petik tunggal tidak mengenal karakter khusus (baris baru, tab) dan tidak 
melakukan ekspansi variabel

3.3.1.4.3.Heredoc
Sintak heredoc memperlakukan string seperti double quote, hanya saja menggunakan 
delimiter yang berbeda, yaitu deretan karakter alpahanumeric atau garis bawah, yang dimulai 
hanya dengan karakter non digit atau garis bawah. Contoh:
<<<Ini_Delimiter_heredoc
Berikut ini adalah string dalam heredoc, ini ganti baris \n
dan ini carriage return \r tulisan ini akan menimpa 'dan ini carriage
return'
Ini_Delimiter_heredoc;

3.3.2.Tipe Gabungan (compound)
Tipe gabungan adalah tipe yang dapat dibagi (decomposed) menjadi tipe yang lebih 
sederhana.
PHP mengenal 2 jenis tipe gabungan:

3.3.2.1.Array
Array di PHP pada dasarnya hanya ada satu jenis yaitu ordered map. Array di PHP dapat 
disamakan dengan associative array pada bahasa pemrograman lainnya (misal: PERL), yaitu 
merupakan deretan  pasangan key dan value yang berurutan sesuai dengan urutan 
penyimpanan.
Bedanya adalah array di PHP dapat diakses seperti list atau array ber­indeks integer berbasis 0 
(zero based indexed)
Array dibuat menggunakan constructor array(). Contoh
$a = array(
    'php' =>'aplikasi web', 
    'python' =>'aplikasi desktop',
    'perl' =>'otomatisasi sysadmin',
    'c' => 'aplikasi system',

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  17
    'ruby' => 'aplikasi web',
    'java' => 'aplikasi enter prise'
);
echo 'php tepat untuk ' , $a['php'],"\n";
echo 'python cocok untuk ' , $a['python'],"\n";

Array ber­indeks integer juga dapat dibuat dengan constructor array yang sama:
$b = array('php','python','perl','c','ruby','java');
echo $b[0],”\n” # php
echo $b[1],”\n” # python
echo $b[4],”\n” # ruby

3.3.2.2.Objek
Tipe data ini menyimpan referensi ke instance class. Tipe data objek dibuat menggunakan 
constructor class. Pembahasan selengkapnya ada di bagian Class.

3.3.3.Tipe Khusus

3.3.3.1.Resource
Resource adalah tipe khusus yang menyimpan referensi ke resource eksternal.

3.3.3.2.NULL 
Menyatakan ketiadaan nilai, tipe data ini hanya memiliki satu nilai: NULL

3.3.4.Konversi ke boolean 
PHP melakukan konversi dari tipe data lain ke boolean dalam konteks yang memerlukan tipe 
boolean berdasarkan aturan yang jelas.
Salah satu konteks yang memerlukan tipe boolean adalah statemen kondisional (misal: if).
Semua nilai berikut ini akan dianggap FALSE oleh PHP:
● 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
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
$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

20  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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
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

22  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  23
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

24  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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
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");

26  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
} else {
    echo 'benar...',"\n";
}

3.6.2.switch 
Switch dapat digunakan sebagaimana if elseif  else, tapi lebih tepat lagi digunakan untuk 
mengevaluasi sebuah kondisi lalu membandingkan hasil evaluasi tersebut dengan literal 
integer atau string.
Perhatikan setelah switch digunakan statemen break untuk mencegah statemen berikutnya 
dalam blok switch dieksekusi:
echo "3 rasa es krim:\n\t1)moka\n\t2)stroberi\n\t3)mengkudu\n";
echo "pilih: ";
$pilih = chop(fgets(STDIN));
switch($pilih) {
    case 1: 
        echo "yum yum yum\n";
        break;
    case 2: 
        echo "slur p..slur p..\n";
        break;
    case 3: 
        echo "yaak.. bleek..\n";
        break;
    default:
        echo 'tidak ada',"\n";
}

3.6.3.Struktur loop
Struktur loop adalah struktur untuk melakukan iterasi atau pengulangan eksekusi satu atau 
beberapa statement.
PHP memiliki beberapa struktur loop: for, while, do while, foreach.
for
Menggunakan 3  blok ekspresi yang dieksekusi secara berbeda: 

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  27
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.

28  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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
    }
} 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
.
1
7   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
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
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.

32  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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
    $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
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 

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  35
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
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
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
Seperti halnya $_GET, variabel ini juga array assosiatif.
Contoh aplikasi web sederhana:
Berikut ini contoh aplikasi web sederhana yang menerapkan berbagai subyek yang sudah 
dibahas.

4.3.Penjelasan Program

4.3.1.File head.php
Berisi header untuk setiap halaman web, agar tampilan konsisten.
Header juga cocok untuk menempatkan include ke file­file yang menyediakan class­class atau 
fungsi­fungsi yang diperlukan oleh aplikasi.
<?php
define ("PEMILIK", "Irfan Mahdi");
req uire_once("ordersvc.php");
?>
<html><body>
<h1>Warung Web</h1>

4.3.2.File ordersvc.php
File ini berisi definisi class yang diperlakukan aplikasi untuk memproses pesanan.
<?php 
class OrderSer vice {
    private $produk = array('01'=>'Gado­gado', '02'=>'Bakmi Ayam', 
'03'=>'Tong Seng');
    private $pilihan = array (
        '01' => array(
                'cabe &gt; 10','banyak sayuran','ketupat','nasi'
         ),
        '02' => array(
                'pangsit kering','pangsit basah','bakso'
         ),
        '03' => array(
                'banyak tulang','banyak daging','banyak kuah'
         )
);
    // constructor
    function OrderSer vice() {

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  39
    }
    // @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:

40  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
<ol>

<?php 
$os = new OrderSer vice();
foreach($os­>produk() as $key => $value) {
    echo '<li><a 
href="pesan.php?prod=',$key,'">',$value,'</li>',"\n";
}
?>

</ol>
<?php
include('tail.php');
?>

4.3.4.File pesan.php
Untuk memproses pesanan, dan menampilkan response.
Jika pesanan sudah diproses form tidak ditampilkan lagi
<?php
include('head.php');
$os = new OrderSer vice();
if (!empty($_POST)) {
        $konfig = $_POST['konfig'];
        $kirimke = $_POST['kirimke'];
        $prod = $_POST['prod'];
        if(empty($kirimke)) {
            echo "mau dikirim kemana?\n";
        }
        else
        {
            $os­>proses_pesanan($prod, $kirimke, $konfig);
            $sudahpesan = true;
        }
}
if (!$sudahpesan) {

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  41
?>
<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 

42  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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
44  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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
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
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 

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  47
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'

48  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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)

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  49
(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
Python membedakan huruf besar dan kecil pada identifier.
Panjang identifier adalah tak terbatas

8.1.2.Literal
Python mendukung berbagai literal string dan numerik.Pada bagian type data  telah 
diperkenalkan berbagai penulisan data numerik dan string secara literal.

8.1.3.Enclosure
Enclosure adalah bentuk­bentuk ekspresi yang dibatasi oleh reverse­quote (tanda petik 
terbalik `), tanda kurung, kurung siku, dan kurung kurawal.Berikut ini bentuk ekspresi yang 
termasuk enclosure:
1. Bentukan dalam kurung (Parenthesized forms)
2. List display
3. Generator expressions
4. Dictionary display
5. Konversi string

8.1.3.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 akan 
membentuk 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<4,5*6+7
,8,9!=10] # comma separated expression
[a*2 for a in range(10)] # list comprehension
[a for a in range(20) if a%3==0] # list comprehension

8.1.3.3.Generator expressions
Generator ekspresion menghasilkan generator objek.
Generator ekpression adalah notasi generator dalam tanda kurung (). 
(b for b in range(20)) # generator bilang 0 s/d 19

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  51
(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
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.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 sendiri 
adalah 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
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
Melakukan N pergeseran ke kanan (>>) sama dengan membagi bilangan  dengan N pangkat 2.
Melakukan N pergeseran ke kiri  (<<) sama dengan mengalikan bilangan  dengan N pangkat 
2.
4 >> 1  # 2  = biner 100 shift left  1 ­>  010
4 << 1  # 8  = biner 100 shift right 1 ­> 1000
7 >> 1  # 3  = biner 111 shift left  1 ­>  011
7 << 1  # 14 = biner 111 shift right 1 ­> 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
<= Kurang dari atau sama dengan
==  Sama dengan

56  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
!= 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
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
# 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
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 sys
print 'tebak integer sampai ketemu: ',
ditebak = 67
a = int(sys.stdin.readline().strip())
while a != ditebak:
    if ditebak < a :
        print 'terlalu besar '
    elif ditebak > a:
        print 'terlalu kecil'
    print 'tebak lagi: ',
    a = int(sys.stdin.readline().strip())

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
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': 
        break
    else:
        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
10.5.exceptions
Python mengenal mekanisme yang elegan dalam menangani error pada program, yaitu 
menggunakan exception.
Penanganan exception terdiri atas 2 blok : try dan catch. 
Blok try berisi statement(­statement) yang dapat mengakibatkan terjadinya error atau 
exception.
Jika satu statement dalam blok mengakibatkan exception maka statemen­statemen berikutnya 
tidak akan di­eksekusi, alur program segera beralih ke blok catch.
Block catch berisi statement(­statemen) yang akan menangani exception.
Contoh berikut ini mengangani exception jika pengguna menekan ctrl­c yang menyebabkan 
exception KeyboardInterrupt:
import sys
print 'tebak integer sampai ketemu: ',
ditebak = 67
tr y:
    a = int(sys.stdin.readline().strip())
    while a != ditebak:
        if ditebak < a :
            print 'terlalu besar '
        elif ditebak > a:
            print 'terlalu kecil'
        print 'tebak lagi: ',
        a = int(sys.stdin.readline().strip())
    print 'pas benar...'
except Keyb oar dIn ter r upt:
    print '\nhmm.. menyerah?\n\
           \rsmoga lebih lain kali lebih beruntung, bye!'

11.Modules
Module memudahkan pemakaian ulang berbagai sumberdaya program (fungsi, class, 
variabel), dan menyediakan namespace untuk menghindari konflik penamaan.Sebuah module 

62  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
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 pengguna 
modul.
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 search path adalah environment variable PYTHONPATH.
Direktori tempat module harus masuk ke PYTHONPATH:
export PYTHONPATH=/home/hafizh/modulku:$PYTHONPATH

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  63
python fib.py

Yang juga termasuk module search path adalah list sys.path, dapat digunakan jika tidak 
mungkin mendefinisikan PYTHONPATH.
Program pemanggil diubah sebagai berikut:
import sys
sys.path.append('/home/hafizh/modulku')
import pembangkit
for x in pembangkit.fibonacci(100): 
    print x,

12.Class
Class didefinisikan menggunakan keyword class.
Dalam class dapat didefinisikan method atau operator. Pada class ini di definisikan 
constructor, operator +, operator ­, method untuk menampilkan representasi string, dan 
menghitung besar vektor.
Python mengenal nama­nama method khusus yang dapat digunakan untuk 
mengimplementasikan operator bagi class tersebut.
Dalam contoh ini method khusus yang diimplementasikan adalah __add__ untuk operator +, 
__sub__ untuk operator ­
class Vektor:
# constructor
    def __init__(self,x,y,z):
        self.x, self.y, self.z = x, y, z
# menghitung besar vektor
    def to_skalar(self):
        import math
        return math.sqrt(self.x * self.x + self.y * self.y + self.z 
* self.z)
# operator +
    def  __add__(self,v):
        return Vektor(self.x + v
.x, self.y + v
.y, self.z + v
.z)
# operator ­
    def  __sub__(self,v):

64  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
        return Vektor(self.x ­ v
.x, self.y ­ v
.y, self.z – v
.z)
# representasi string
    def __repr__(self):
        return '(%d,%d,%d)'%(self.x,self.y,self.z)

Berikut ini program pemakai class tersebut:
from vektor import Vektor
a = Vektor(1,2,3)
b = Vektor(4,5,6)
c = a + b
print '%s + %s = %s' % (a,b,c)
print 'besar c: %.2f' % c.to_skalar()
c = a ­ b
print '%s ­ %s = %s' % (a,b,c)
print 'besar c: %.2f' % c.to_skalar()

13.Penutup
Python adalah bahasa scripting yang sangat menarik untuk ditekuni dan diterapkan dalam 
berbagai aplikasi. 
Beberapa keunggulan yang menarik dari sisi potensi untuk menggunakan python pada 
aplikasi bisnis diantaranya adalah:
Python melakukan pengecekan bound dan unbound variabel, tidak seperti, misalnya, PHP4 
yang membiarkan programer melakukan kesalahan dengan mengevaluasi variabel yang belum 
diberi nilai (unassigned).
Python juga melakukan pengecekan batas array (index boundary checking) dan juga index  
key­checking, tidak seperti misalnya, PHP atau PERL.
Sintaks python yang memperhitungkan indentasi juga menuntut kerapihan source code yang 
diperlukan untuk me­maintain program dalam jangka panjang.

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  65
IV. Mengenal Ruby
1.Apakah Ruby
Ruby adalah bahasa pemrograman scripting yang dinamis dan  object­oriented, semua data di 
Ruby adalah instance dari sebuah class.
Ruby dikembangkan pertamakali oleh Yukihiro Matsumoto ('Matz') pada tahun 1995.
Sudah beberapa tahun belakangan ini Ruby dipakai untuk mengembangkan aplikasi web yang 
komersial maupun non­komersial. library Ruby untuk aplikasi berbasis GUI non­web juga 
tersedia.

2.Mendapatkan dan Mengintal Ruby
1. Download source http://www.ruby­lang.org
2. Uncompress disembarang direktori:
bash$ tar zxvf ruby­1.8.5.tar
.gz

3. Sebagai user biasa lakukan configure dan make, lalu make install sebagai 
super­user:
bash$ cd ruby­1.8.5
bash$ ./configure
bash$ make 
bash$ su ­
bash$ make install

3.Menjalankan Ruby
Paling sedikit, ada 3 cara mengeksekusi interpreter ruby.

3.1.Menggunakan file skrip
Berikut ini file salam.rb, mencetak salam diakhiri baris baru
puts "assalamu'alaikum"

dieksekusi dengan interpreter ruby:
bash$ ruby salam.rb

Satu­satunya statemen pada program tersebut memanggil method puts, yang mencetak 
objek ke standard­output (stdout) dan diakhiri dengan baris baru.

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  67
3.2.Menggunakan command line
bash$ ruby ­e “puts \”assalamu'alaikum\””

3.3.Secara Interaktif
bash$ irb
irb(main):001:0> puts "assalamu'alaikum"
assalamu'alaikum
=> nil

4.Struktur Program Ruby

4.1.File program atau skrip
Program Ruby adalah file teks dengan encoding ASCII 7 bit, yang dapat dibuat dengan text 
editor yang biasa anda digunakan.
Nama file program Ruby biasanya diakhiri dengan '.rb', ini bukan keharusan, hanya kebiasaan 
umum. Nama file yang sah pada file sistem dapat digunakan sebagai nama file program 
(walau demikian, bukan ide yang baik menamakan file program anda '~@~.rb')
Sebuah file program dapat dieksekusi dari shell secara langsung tanpa menuliskan interpreter 
ruby, dengan menambahkan baris khusus di awal program, baris ini harus mengacu ke path 
ruby interpreter, berikut ini file halo1.rb sebagai contoh:
#!/usr/local/bin/ruby
puts 'Halo Ruby !'

Ubah file tersebut sehingga executable, dan eksekusi di shell (perhatikan ./ di baris kedua):
bash$ chmod 755 halo1.rb
bash$ ./halo1.rb

Beberapa option di interpreter juga dapat dituliskan, misalnya ­w untuk warning:
#!/usr/local/bin/ruby ­w
while gets.chop
    if /ruby/i
        puts 'ya, anda ketik '+ $_ + ' ...'
    end
end

anda akan mendapat warning karena penggunaan variabel khusus $_ tidak disarankan lagi.
Ruby juga mengenal baris khusus yang opsional untuk mengakhiri program, yaitu baris yang 
hanya berisi keyword __END__  yang tidak diawali dan diakhiri whitespace. Baris­baris 

68  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
apapun setelah baris ini tidak akan dieksekusi oleh interpreter.

4.2.Statement
Program Ruby adalah line­oriented, terdiri dari statement yang diakhiri cukup dengan akhir 
baris (end­of­line), tidak perlu karakter khusus (semisal titik koma) untuk menandai akhir 
statement. 
Ruby juga tidak memperlakukan karakter indentasi (tab) atau spasi secara istimewa untuk 
awal statement,  contoh:
puts 'ini baris pertama'
puts 'ini yang kedua'
puts 'dan ini yang terakhir'

Sebuah statemen dapat ditulis dalam beberapa baris, contoh:
# statemen dapat multi­line
puts 'ruby adalah bahasa pemrograman 
 yang dinamik dan object oriented
 dikembangkan pertama kali
 oleh Yukihiro Matsumoto, a.k.a \'Matz\''
# multi­line memudahkan penulisan q uery yg panjang
q uery = '
select p.nama, p.stok, s.nama from produk p, supplier s
p.idsup = s.id and p.stok > 100
order by p.nama
limit 10 offset 21'
puts q uery

beberapa statemen ditulis satu baris jika dipisahkan oleh titik koma, contoh:
p=10; l=20; t=15; volume=p*l*t; puts "volume #{volume}"

4.3.Komentar
Seperti sudah anda lihat pada contoh­contoh sebelumnya, Ruby menggunakan '#' sebagai 
penanda awal komentar, dan setiap baris komentar harus diawali dengan '#'.
Khusus untuk baris pertama, jika '#' diikuti dengan '!' maka baris ini digunakan untuk 
mengeksekusi interpreter jika program dijalankan langsung dari command­line.

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  69
4.4.Class
Sebagai bahasa object­oriented, data Ruby adalah instance dari suatu class. Class 
merepresentasikan sebuah konsep yang meliputi struktur data dan operasi­operasi yang 
berasosiasi dengan struktur data tersebut. 
Class memberikan sebuah namespace tersendiri bagi operasi­operasi dan variabel­variabel di 
dalam class tersebut.
Semua class yang didefinisikan dalam Ruby memiliki satu class induk yaitu class Object.
Sebuah class biasanya didefinisikan dalam satu file tersendiri, walau tidak ada keharusan 
seperti itu. 
Nama class biasanya diawali dengan huruf kapital. Selanjutnya class akan dibahas di bagian 
tersendiri.

4.5.Module
Module adalah sebuah cara mengumpulkan class­class, method­method dan konstanta­
konstanta dalam sebuah namespace.
Module memudahkan pemakaian bersama dan berulang berbagai konsep tersebut (class, 
method, konstanta).
Dengan adanya module, kemungkinan konflik nama (name­conflict atau name­collision) 
dapat diminimalkan. Module akan dibahas lebih lengkap pada bagian tersendiri.

5.Tipe Data Dasar, Literal dan Variabel
Ruby mendukung berbagai tipe data dasar yaitu: numerik, string, range, array, hashes dan 
regular expression. Semua data Ruby adalah objek atau instance dari suatu class.

5.1.Numerik
Numerik terdiri atas integer dan floating point.Integer dapat menampung jumlah digit yang 
hampir tak terbatas (dibatasi oleh jumlah free memory di sistem). Integer pada range tertentu 
adalah objek dari class FixNum dan pada range lainnya adalah dari class BigNum. 
Ruby mendukung optional base indicator untuk penulisan literal integer: 

70  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Base indicator Base Contoh
0 Octal 01234567
0d Desimal (default) 0d123456789
0x Hexadesimal 0x123456789abcdef
0b Binary 0b1110010010011
Penulisan numerik dapat menggunakan underscore (garis bawah) untuk memudahkan 
pembacaan, contoh:
123_456_789    => 123456789
0b111_101_101  => 0b111101101

Floating point ditulis menggunakan . (titik) untuk separator desimal bulat dan pecahan, 
contoh:
0.12346789
3.14285714285714

Data numerik adalah objek sejati, sebagai contoh, dari data integer dapat dipanggil method :
# representasi l11398634 dalam string hexadesimal
l11398634.to_s(16)

5.2.String
String dalam Ruby adalah sederetan bytes yang tiap byte­nya terdiri dari 8­bit.
String literal dinyatakan dalam kutip tunggal atau kutip ganda, contoh:
'Saya suka coding dengan Ruby
..'
'Saya bilang \'Saya suka coding dengan Ruby
..\'  '
“Saya bilang \”Saya suka coding dengan Ruby
..\” ”

Pada string literal menggunakan kutip ganda,  interpreter ruby akan melakukan interpolasi 
ekspresi jika ekspresi ditulis dalam #{}, sehingga memudahkan anda menggabungkan 
(concat) string dengan ekspresi:
“Luas lingkaran = #{22.0/7 * 14 * 14}”

String literal diatas bernilai 'Luas lingkaran = 588'.


Kutip ganda pada string literal juga menyebabkan interpreter Ruby akan mengevaluasi 
berbagai karakter khusus (misal: control characters). 
Ada 3 cara lain untuk mendefinisikan string literal: %q, %Q dan here documents.
Prefix %q sama dengan kutip­tunggal dan %Q sama dengan kutip­ganda (menyebabkan 
interpolasi ekspresi), keduanya menggunakan delimiter ! , / , { , (, <. dan [ .
Contoh:

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  71
%q{select “index” from “table” where “column”='area'}
%Q/select “type” from “object” where area > #{22.0/7 * 21 * 21}/

Literal dengan here documents menggunakan string pembatas,  cocok untuk mendefinisikan 
string literal yang panjang (misal: code javascript), yang mungkin memuat karakter­karakter 
khusus pembatas string yang dikenal Ruby, contoh berikut menggunakan string pembatas 
KODE_JAVASCRIPT:
js1 = <<KODE _JAVAS CR IPT
window.onload = function () {
document.for m2.text5.onchange = function () {
// prevent user from entering invalid customer code
};
}
KODE _JAVA SCR IP T

5.3.nil
Ruby mengenal sebuah objek khusus untuk menyatakan ketiadaan yaitu nil, jadi nil 
bukanlah 'tidak ada objek'. 

6.Variabel
Seperti dijelaskan sebelumnya semua data Ruby adalah objek atau instance suatu class, dan 
variabel adalah reference ke objek tersebut. Variabel bukanlah objek itu sendiri, hal tersebut 
akan dibahas lebih lanjut pada akhir bagian ini.
Variabel langsung di­definisikan menggunakan assignment ke ekspresi atau literal. Contoh:
# variabel string
nama1 = 'hafizh amrullah'
# variabel numerik, juga dapat di­assign dari ekspresi
size1 = nama1.length

Tapi variabel yang belum pernah di­definisikan tidak dapat di­evaluasi, interpreter ruby 
menganggap hal ini sebagai error yang menghentikan eksekusi program. Contoh:
# error: 'blah' belum di­definisikan
puts blahblah
# error: 'alas' dan 'tinggi' belum didefinisikan
luas = alas * tinggi / 2

7.Variabel adalah Reference
Variabel merupakan reference ke object, object dapat diubah menggunakan variabel, misalnya 
dengan memanggil method melalui variabel tersebut. Berikut ini contohnya:

72  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
nama2 = '     irfan mahdi     '
nama3 = nama2
puts "­­>#{nama2}<­­"
nama3.strip!     # hilangkan whitespace di awal dan akhir melalui 
nama3
puts "­­>#{nama2}<­­"

Variabel nama2 menyimpan referensi ke objek string, variabel nama3 di­assign ke nama2, 
sehingga menunjuk ke objek string yang sama. Jika semua semua spasi di awal dan akhir 
string dihapus melalui variabel nama3, maka perubahan ini juga dapat dilihat melalui variabel 
nama2. Berikut ini contoh yang lain:
k1 = “coding Ruby sungguh tiDaK asik 'kali”
k2 = k1
k2.slice!(/tidak/i)  # hilangkan 'tidak'
puts k1

Nama method yang diakhiri '!'

Sedikit penjelasan tentang nama method pada dua contoh diatas. Contoh pertama 
menggunakan method 'strip!' dan  kedua menggunakan 'slice!' ,  kedua method diakhiri tanda 
'!' 
Dokumentasi Ruby menyarankan nama method yang mengubah state objek receiver (objek 
yang dipanggil methodnya) diakhiri tanda '!'. Konvensi penamaan method ini bertujuan 
memudahkan pengguna method membedakan antara method yang mengubah object receiver 
dan yang tidak.

8.Scope variabel dan penamaannya
Ruby mengenal 4 jenis variabel:

8.1.Variabel global
Variabel global dapat diakses dari class lain atau module lain, nama variabel global diawali 
dengan $, contoh:
$debug =  false

8.2.Variabel lokal
Variabel lokal hanya dapat diakses dari dalam method, nama variabel global diawali huruf 
kecil, contoh:
hitung = 10
array1 = [2,3,
11,34,300]

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  73
8.3.Variabel instance
Variabel instance hanya dapat diakses dari dalam method instance. Nama variabel instance 
diawali dengan @, contoh, class Vektor berikut memiliki variabel instance @i dan @j :
class Vektor 
def initialize(i, j)
@i = i
@j = j
end
end

8.4.Variabel class
Variabel class dapat diakses dari dalam method instance maupun method class. Nama variabel 
class diawali dengan @@, contoh, class Vektor berikut memiliki variabel class 
@@totalcount:
class Vektor 
@@totalcount = 0
def initialize(i, j)
@i = i
@j = j
@@totalcount = @@totalcount + 1
end
end

8.5.Array dan Hash
Array dan Hash adalah objek yang merupakan koleksi data secara ter­indeks (indexed). 
Array di­indeks dengan key integer, Hash di­indeks menggunakan sembarang objek sebagai 
key.
Array dan hash dapat berisi elemen­elemen yang berbeda tipe data­nya.
Array dapat didefinisikan secara literal, dengan menggunakan operator kurung siku berisi 
elemen­elemen array, contoh:
a1 = [1,'senin',2,'selasa',3,'rabu',4, 'kamis',5,'jumat']

Mengakses array a1 menggunakan key integer:
puts a1[0] # 1
puts a1[1] # 'senin'
puts a1[2] # 2

Array dapat berisi array lain, membentuk array multidimensi:
a2 = [['a','b','c'],['d','e','f'],['g','hihi','i']]
# mengakses
puts a2[2][1] # 'hihi'

74  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Hash didefinisikan menggunakan kurawal {}, contoh:
produk1 = {'p001' => 'Susu Sapi', 'p002'=> 'Telur Ayam', 'p003'=> 
'Gula Pasir'}
puts produk1['p002']  # 'Telur Ayam'
# nested hash
produk2 = {
'p001' => { 'nama' => 'Susu Sapi', 'harga' => 10000 },
'p002' => { 'nama' => 'Telur Ayam','harga' => 12000 },
'p003' => { 'nama' => 'Gula Pasir', 'harga' => 6000 }
}
puts produk2['p003']['harga'] # 6000

Elemen hash yang belum didefinisikan key­nya bernilai nil. Tapi, hash di Ruby dapat di­set 
nilai default­nya.  Misal, mendefinisikan variabel hash untuk menghitung sesuatu yang 
diindeks dengan nama, defaultnya 100:
hitung1 = Hash.new(100)
puts hitung1['p001'] # 100

9.Ekspresi dan Struktur kendali

9.1.Ekspresi  melibatkan string dan numerik
Jika anda terbiasa dengan bahasa script lainnya seperti PHP atau PERL, mungkin anda 
mengalami kesulitan menuliskan ekspresi yang melibatkan variabel string dan variabel 
numerik, karena Ruby tidak melakukan konversi otomatis dari ekspresi numerik ke string atau 
sebaliknya seperti yang mungkin anda harapkan, objek harus di­parse menghasilkan objek 
baru dengan tipe yang sesuai secara eksplisit menggunakan method yang tepat, contoh:
num1 = 2000
str1 = '1000'

#BARIS BERIKUT ERROR: operator+ num1 butuh operand  dari class FixNum
num2 = num1 + str1

# str1 di­parse menghasilkan numerik
num2 = num1 + str1.to_i

Begitu juga kebalikannya, jika menggabungkan string dengan numerik tanpa #{} :
str1 = 'Biayanya ... '
num1 = 2000

#BARIS BERIKUT ERROR: operator+ str1 butuh operand dari class String
str2 = str1 + num1

# num1 di­parse menghasilkan string
str2 = str1 + num1.to_s

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  75
# atau menggunakan #{} dan double q uote
str2 = “#{str1}#{num1}”

Perhatikan dalam kedua pemanggilan method to_i dan to_str, objek dari str1 dan num1 
tidak berubah, tapi menghasilkan objek baru.

9.2.Eksekusi Conditional
Eksekusi conditional didasarkan nilai boolean (true atau false) suatu ekspresi.
Ruby menganggap semua nilai yang tidak sama dengan konstanta false atau tidak sama 
dengan nil adalah true.

9.2.1.If ... then ... end
Ruby mengenal ekspresi conditional if..then..end untuk mengevaluasi satu kondisi dan 
if..then..elsif..then..else..end untuk lebih dari satu kondisi. Contoh:
1. ditebak = 123
2. tebakan = gets.chop.to_i
3. if tebakan > ditebak
4. puts 'terlalu besar'
5. elsif tebakan < ditebak
6. puts 'terlalu kecil'
.
7 else
8. puts 'pas benar ...'

Penjelasan: baris 2 menggunakan method gets yang mengambil input dari stdin, input 
diterima sebagai string dan menyertakan karakter end­of­line, agar dapat dibandingkan secara 
benar terhadap data numerik di variabel ditebak maka karakter end­of­line harus di­potong 
(=chopped) dari input ini, dan hasilnya di­parse ke integer dengan method to_i .
Sebagai kebalikannya dapat juga digunakan ekspres unless..then..else..end, 
contoh sebelumnya ditulis menggunakan unless:
1. ditebak = 123
2. tebak = gets.chop.to_i
3. unless tebak == ditebak then
4.     unless tebak < ditebak then
5.         puts 'terlalu besar'
6.     else
.
7         puts 'terlalu kecil'
8.     end
9. else
10.    puts 'pas benar'
11. end

9.2.2.Conditional Ternary
Ruby juga mengenal ekspresi ternary, bentuknya:

76  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
expr0  ? expr1 : expr2

Jika expr0 bernilai true maka dikembalikan expr1, jika salah dikembalikan expr2. 
Ternary memungkinkan ekpresi nested, contoh:
bil = 123; print 'tebaklah:'; tebak = gets.chop.to_i
puts tebak == bil ? 'benar..': tebak > bil ? 'kebesaran': 'kekecilan'

9.3.Loop
Loop mengenal while..end untuk mengeksekusi statemen­statemen dalam loop selama 
kondisi yang dievaluasi pada bagian while adalah true. Program berikut ini akan terus 
meminta input selama tebakan yang masuk belum benar:
1. ditebak = 123
2. print 'tebak:'
3. tebakan = gets.chop.to_i
4. while ditebak != tebakan
5.     if ditebak < tebakan then
6.             puts 'terlalu besar'
.
7     else
8.             puts 'terlalu kecil'
9.     end
10.    print 'tebak lagi:'
11.     tebakan = gets.chop.to_i
12.end
13.puts 'benar sekali !'

Baris 4 sampai dengan 11 akan dieksekusi selama tebakan belum benar.
Kebalikan dari while adalah until, yang terus mengulang statemen dalam loop sampai kondisi 
yang di­evaluasi adalah true. Contoh:
1. ditebak = 123
2. print 'tebak:'
3. tebakan = gets.chop.to_i
4. until ditebak == tebakan
5.   # sama dengan sebelumnya
6. end
.
7 puts 'benar sekali !'

10.Method
Method dapat berdiri sendiri atau merupakan bagian dari class.
Method didefinisikan menggunakan keyword def, dan diakhiri end.  

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  77
Nama method dimulai dengan huruf kecil, nama method yang melakukan query biasanya 
diakhiri dengan '?' 
Nama method yang mengubah objek receiver biasanya diakhiri '!'.
Method dapat menerima parameter, untuk method yang menerima parameter, biasanya 
digunakan karakter kurung (). Penggunaan () untuk definisi method maupun pemanggilan 
tidak diharuskan. 
Jika method mengembalikan nilai, dapat menggunakan keyword return dapat juga tidak, Ruby 
mengembalikan nilai ekspresi dari statemen terakhir dari definisi method (sebelum end)
Contoh method dan pemanggilannya:
def  luas_segitiga(alas, tinggi)
alas * tinggi / 2.0
end
luas1 = luas_segitiga(20,30)
luas2 = luas_segitiga 20,30  # memanggil method tanpa ()

# parameter tanpa ()
def volume_bola jari2
return 4.0/3 * 22/7 * jari2 * jari2 * jari2
end
volum1 = volume_bola(14)

Ruby membolehkan pemberian nilai default pada parameter default. 
Parameter rekuris pada contoh berikut ini, di­set true jika pemanggilan method tidak 
menyertakan parameter tersebut.
def buatdir ( path, rekursi=true,mode=0755 )
        if !File.exists?(path) && rekursi then
            d =  File.dirname(path)
            buat_dir(d, rekursi, mode)
            Dir.mkdir(path, mode)
        elsif !File.exists?(path)
            Dir.mkdir(path)
        else
            puts "#{path} sudah ada"
        end
end
# create dir recursively
buatdir ('/home/didi/dir/yg/belum/ada')
# create dir NOT recursively, possibly error
buatdir ('/home/didi/dir/yg/sdh/ada/dirbaru', false, 0777)

78  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
10.1.Blok dan Iterator
Blok adalah sederetan baris statemen yang dapat diasosiasikan dengan pemanggilan method.
Blok biasa digunakan sebagai callback, jika anda pernah belajar Java, kegunaan blok dapat 
disejajarkan seperti anonymous class yang digunakan sebagai callback. Tapi blok­nya Ruby 
lebih luwes karena tidak perlu ada class yang didefinisikan.
Blok dimulai dengan keyword do dan diakhiri dengan end, atau menggunakan {}.
Delimiter blok do...end digunakan jika statemen dalam blok lebih dari satu baris, jika 
hanya satu baris maka digunakan {}, hal ini bukan keharusan, hanya sesuatu yang telah 
menjadi standard.
Berikut ini contoh block:
# blok do..end
do 
puts 'statement 1'
puts 'statement 2'
puts 'statement 3'
end
# blok {}
{ puts 'statemen tunggal'}

Blok baru berguna jika dipanggil dari iterator, yaitu sebuah method yang didefinisikan untuk 
memanggil blok.
Iterator memanggil blok menggunakan statemen yield.
Berikut ini contoh iterator yang memanggil blok 3 kali:
# iterator yang memanggil blok 3 kali
def panggil3x 
        yield
        yield
        yield
end
# panggil blok
panggil3x {puts 'ding...'}

Statemen yield dapat mengirimkan parameter ke blok, asalkan blok didefinisikan dapat 
menerima parameter.
Sebuah blok dapat menerima lebih dari satu parameter.  Parameter yang diterima blok 
didefinisikan diantara || (dua pipe), jika ada lebih dari satu parameter dipisahkan tanda 
koma.
Berikut ini contoh blok yang menerima 2 parameter :
def panggil4x

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  79
        yield 'ding...',2  # memanggil blok, passing 2 parameter
        yield '...dong',3
        yield 'ding...',4
        yield '...dong',5
end
# blok mendefinisikan parameter para1,para2 sebagai parameter blok
panggil4x do |para1,para2| 
    n = 0
    while n < para2
        print para1 # 'print' tidak mencetak baris baru
        n = n + 1
    end
    puts '' # ganti baris
end

Perhatikan program di atas menggunakan do...end sebagai pembatas blok. Anda dapat 
menggunakan {} sebagai pengganti do...end .

11.Class
Berikut ini contoh class yang digunakan dalam penjelasan selanjutnya:
1. class Vektor
2. # variabel class
3. @@totalobj = 0
4.
5. # constructor
6. def initialize i,j
.
7 @i = i
8. @j = j
9. @@totalobj = @@totalobj + 1
10. end
11.
12. # operator+ sebagai method instance
13. def +(v)
14.       Vektor.new(@i + v
.i , @j + v
.j)
15. end
16.      
.
1
7      # besar/magnitude vektor (method instance)
18. def to_skalar
19.      Math.sqrt( @i*@i + @j*@j )
20. end
21.
22.      # attribute i (method instance)
23.      def i
24.       @i
25.      end

80  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
26.
2.
7       # attribute j (method instance)
28.      def j
29.         @j
30.      end
31.
32.      # representasi string (method instance)
33.      def to_s
34.       "( #{@i} , #{@j} )"
35.      end
36.
3.
7       # method class,
38.      # mengembalikan total objek vektor yg sdh di­create
39.      def Vektor.totalobj
40.          @@totalobj
41.       end
42.end # akhir definisi class Vektor
43.
44.x = Vektor.new(1,2)  # panggil constructor
45.y = Vektor.new(2,2)  # panggil constructor
46.z = x + y            # panggil method +
4.
7 puts "vektor z #{z}" # panggil method to_s
48.puts "magnitude vektor z: #{z.to_skalar}"  # panggil method 
to_skalar
49.# memanggil method class
50.puts Vektor::totalobj

11.1.Mendefinisikan Class
Class di Ruby didefinisikan dalam file program seperti program Ruby lainnya. Tidak ada 
aturan penamaan khusus untuk nama file. 
Definisi class diawali dengan keyword class yang diikuti nama class, nama class di Ruby 
biasanya diawali dengan huruf kapital. (contoh: baris 1 class Vektor)
Definisi class diakhiri dengan keyword end. (contoh: baris 34 class Vektor)

11.1.1.Bagian­bagian class

11.1.1.1.Constructor
Constructor adalah method khusus yang digunakan untuk meng­inisialisasi state objek 
instance dari class. Method constructor di Ruby harus dinamakan initialize, method ini 
dapat menerima nol atau lebih parameter.

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  81
11.1.1.2.Method Instance
Adalah method yang hanya dapat dipanggil melalui class instance atau objek.
Diantara method instance ada yang digunakan mengakses variabel instance (akan dijelaskan 
kemudian),  method seperti ini disebut juga attribut.
Pada contoh class Vektor ada 5 method instance, yaitu : operator +, to_skalar,
attribute i, attribute j dan to_s

11.1.1.3.Method Class
Adalah method yang hanya dapat dipanggil melalui class, tidak dapat dipanggil melalui class 
instance.
Penamaannya diawali dengan nama class diikuti '.'  dan nama method dimulai dengan huruf 
kecil.
Pada contoh class Vektor ada 1 method class, yaitu : totalobj.
Pemanggilan method class menggunakan nama class diikuti '::' dan nama method.

11.1.1.4.Variabel Instance
Variabel yang didefinisikan dalam class dan hanya dapat diakses dari method instance, dan 
hanya dapat diakses melalui objek itu sendiri, tidak dapat diakses melalui objek lain.
Setiap objek memiliki variabel instance­nya sendiri­sendiri.
Penamaannya diawali dengan @ diikuti nama variabel yang dimulai dengan huruf kecil.
Pada contoh class Vektor ada 2 variabel instance: @i dan @j

11.1.1.5.Variabel class
Variabel yang didefinisikan dalam class dan dapat diakses dari method class maupun method 
instance.
Variabel class dapat diakses bersama­sama oleh semua instance dari class tersebut.
Penamaannya diawali dengan @@ diikuti nama variabel yang dimulai dengan huruf kecil.
Pada contoh class Vektor ada 1 variabel class: @totalobj

11.1.2.Inheritance (class turunan)
Sebuah class dapat didefinisikan sebagai turunan dari class lain. Class turunan akan mewarisi 
method dan variabel dari class induknya.
Berikut ini didefinisikan class Balok
class Balok
    def initialize panjang, lebar, tinggi

82  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
        @panjang = panjang
        @lebar = lebar
        @tinggi = tinggi
    end

    def volume
        @panjang * @lebar * @tinggi
    end

    def to_s
        "(#{@panjang}, #{@lebar}, #{@tinggi})"
    end
end # akhir class Balok

Berikutnya didefinisikan class Kubus sebagai turunan dari Balok, karena kubus dapat 
dianggap sebagai  balok yang khusus, yaitu ketiga sisinya sama panjang. 
Ruby menggunakan '<' untuk menyatakan sebuah class adalah turunan class lainnya.
Perhatikan constructor Kubus memanggil constructor class induknya dengan method khusus 
super().
Selanjutnya method to_s di­redefinisikan di clas Kubus.
class Kubus < Balok
    def initialize (sisi)
        super(sisi, sisi, sisi)
    end

    def to_s
        "(#{@panjang})"
    end
end # akhir class Kubus

z = Kubus.new(4)
puts z.volume

12.Modules
Ketika sebuah program Ruby sudah menjadi aplikasi yang cukup besar, maka aspek 
reusability menjadi sangat penting. Bahkan untuk aplikasi yang kecilpun sebaiknya aspek 
reusability diperhatikan.
Modules memungkinkan suatu fungsionalitas, baik dalam bentuk class, method atau 
konstanta, dipakai bersama dan berulang kali dengan mudah.
Module memberikan namespace tersendiri yang memudahkan pengembang library 

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  83
menghindari konflik nama (name­conflict/name­collision) di antara class, method, atau 
konstanta.

12.1.Mendefinisikan Module
Sebuah module dapat didefinisikan dalam file tersendiri, atau bersama module lain. 
Definisi module dimulai dengan keyword module diikuti nama module yang diawali dengan 
huruf kapital, definisi module diakhiri oleh keyword end, pada baris tersendiri.
Berikut ini contoh mendefinisikan modules, di file mod1.rb:
# module contoh
module ModSatu

KONSTAN_1 = 123
# method dalam module
def ModSatu.method1
puts 'method 1...'
end
end # akhir module

12.2.Menggunakan module
Agar program dapat mengakses module, module harus dimuat kedalam program 
menggunakan statemen require.
Ada 4 cara menggunakan require:

12.2.1.Menggunakan path
Statemen require diikuti relative path atau absolute path file module. Nama file dapat 
menyertakan extension .rb, dapat juga tidak. Misal sebuah module Mod1 didefinisikan di 
dalam file  /home/irfan/moddir/mod1.rb
Sebuah program usemod1.rb, disebarang direktori yang berbeda dengan module, akan 
mengakses Mod1 sebagai berikut:
# load module
req uire '/home/irfan/moddir/mod1'

#panggil method di module
ModSatu.method1
puts ModSatu::KONSTAN_1

12.2.2.Menggunakan variabel khusus $:
Ruby mencari module dalam file­file yang terdapat dalam direktori­direktori yang tersimpan 
di array $: , pada array $: tersebut dapat ditambahkan direktori baru. 

84  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Anda dapat menampilkan direktori­direktori tersebut dengan interpreter Ruby, sbb:
bash$  ruby ­e “puts $:”

Berikut contoh penggunaan $: untuk meload module, di program usemod2.rb :
# masukkan direktori ke dalam array
$:.push('/home/irfan/moddir')
# load module
req uire 'mod1'
#panggil method di module
ModSatu.method1
puts ModSatu::KONSTAN_1

12.2.3.Menggunakan ruby option ­I 
Kedua cara sebelumnya memerlukan penyebutan direktori module secara eksplisit dalam 
program pemanggil. Dengan menggunakan option ­I  di interpreter ruby, file pemanggil 
module tidak harus menyebutkan path ke direktori module, berikut ini file pemanggil modul, 
usemod3.rb:
# load
req uire 'mod1'
# panggil method
ModSatu.method1
puts ModSatu::KONSTAN_1

di­eksekusi dengan:
bash$ ruby ­I /home/irfan/moddir usemod1.rb

12.2.4.Menggunakan variabel environment RUBYLIB
Program usemod3.rb yang sama dapat dieksekusi tanpa perlu menambah option ­I di 
interpreter ruby, dengan menambahkan direktori module, ke dalam variabel environment 
RUBYLIB :
bash$ export RUBYLIB=/home/irfan/moddir:$RUBYLIB
bash$ ruby usemod1.rb

12.3.Mixin
Salah satu fitur Ruby yang menarik yang berhubungan dengan module adalah mixin, yaitu 
method di dalam sebuah module  dapat dijadikan method instance dari sebuah class lain.
Sebuah class dapat mengasosiasikan diri dengan module menggunakan statemen include, 
sehingga method­method dalam module tersebut tersedia seolah method tersebut terdefinisi 
dalam class tersebut.

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  85
Berikut ini didefinisikan module BandingVolume, di file banding.rb, yang membandingkan 
volume, perhatikan semua method membandingkan operand dengan self,  variabel ini 
adalah reference dari instance class yang meng­include module.
module BandingVolume
# apakah volume b1 lebih besar?
def <(b1)
    self.volume < b1.volume
end
# apakah volume b1 lebih kecil?
def >(b1)
    self.volume > b1.volume
end
# apakah volume sama ?
def ==(b1)
    self.volume == b1.volume
end
end # akhir module

Berikut ini class Balok memanfaatkan module BandingVolume dengan mixin, perhatikan 
bahwa method yang di­mixin juga diwariskan ke class Kubus:
req uire 'banding.rb'

class Balok
    include BandingVolume  # mixin BandingVolume
    def initialize panjang, lebar, tinggi
        @panjang = panjang
        @lebar = lebar
        @tinggi = tinggi
    end

    def volume
        @panjang * @lebar * @tinggi
    end

    def to_s
        "(#{@panjang}, #{@lebar}, #{@tinggi})"
    end
end # akhir Balok

class Kubus < Balok
    def initialize sisi
        super(sisi, sisi, sisi)
    end

    def to_s
        "(#{@panjang})"

86  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
    end
end # akhir Kubus

a = Balok.new(8,2,2)
b = Balok.new(8,2,4)

z = Kubus.new(4)
puts z.volume
# semua operasi perbandingan ini ada di module BandingVolume
puts z < a # false
puts z > a # true
puts z == b # true

13.Penutup
Ruby cukup mudah digunakan, sangat berdayaguna dan library­nya sangat lengkap. 
Ruby siap untuk menjadi alternatif dari bahasa pemrograman open­source yang populer 
lainnya seperti PERL, python atau PHP.

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  87
88  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
 

90  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
V. Mengenal GCC (GNU Compiler Collection)
1.Apakah GCC itu?
GCC adalah kumpulan kompiler­kompiler, termasuk compiler bahasa C, C++, Fortran dan 
Java.
Beberapa kemampuan GCC antara lain:
• GCC adalah compiler yang mendukung banyak platforms, termasuk microcontroller.
• GCC mendukung cross compilation, yaitu program yang di­compile pada satu platform 
untuk agar dapat dieksekusi pada platform yang lain. Ini sangat berguna untuk sistem 
embedded.
Pada bahasan ini akan diperkenalkan program yang paling umum digunakan dari GCC yaitu 
compiler bahasa C.

2.Meng­compile satu file source ke file executable
Berikut ini adalah contoh source code program C yang akan di­compile, nama filenya salam.c 
:
#include <stdio.h>
int main(int argc, char** arg) {
        /* mencetak salam */
        if(argc > 1) {
            fprintf(stdout, "assalamu'alaikum %s\n", arg[1]);
        }
        else {
            fprintf(stdout, "assalamu'alaikum\n");
        }
}

Maka cara meng­compile­nya menjadi file executable,  menggunakan gcc :
bash# gcc salam.c

Perintah ini menghasilkan file a.out, yang dieksekusi dengan cara:
bash# ./a.out fadhilah
assalamu'alaikum fadhilah

Apabila diinginkan nama file executable, yang berbeda dapat menggunakan option ­o, contoh:
bash# gcc salam.c ­o salam_ku

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  91
bash# ./salam_ku fadhilah
assalamu'alaikum fadhilah

3.Meng­compile ke file object
Dalam praktek sehari­hari, untuk membangun sebuah aplikasi, berbagai fungsi yang 
diperlukan oleh aplikasi disimpan pada beberapa file source code. File­file ini biasanya tidak 
dapat langsung dieksekusi, karena tidak memiliki fungsi main().
Untuk file­file seperti ini maka dilakukan kompilasi ke file object, bukan ke file executable. 
Berikut ini contoh source code vektor1.c berisi fungsi operasi vektor sederhana:
#include <stdio.h>
typedef struct t_vektor {
    int i;
    int j;
} vektor;
void vektor_cetak(FILE *out, const vektor* vek) {
        fprintf(out, "vektor (%d, %d)\n", vek­>i, vek­>j);
}
vektor vektor_tambah(const vektor* v1, const vektor* v2) {
        vektor h;
        h.i = v1­>i + v2­>i;
        h.j = v1­>j + v2­>j;
        return h;
}

Selanjutnya file tersebut di­compile menggunakan opsi -c :
bash# gcc ­c vektor1.c

Maka akan dihasilkan file object vektor1.o
Beberapa file sekaligus dapat di­compile dengan cara yang sama. Misal, ada file vektor1.c , 
vektor2.c, vektor3.c :
bash# gcc ­c vektor1.c vektor2.c vektor3.c

4.Menggunakan file header
Pada kenyataan sehari­hari, file source code yang hanya berisi fungsi (bukan program utama) 
akan dibagi menjadi sedikitnya 2 file, yaitu file header yang berisi deklarasi fungsi dan file 
source yang berisi implementasi fungsi. Dapat juga file source dibagi menjadi beberapa file, 

92  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
misalnya jika dikerjakan oleh programmer yang berbeda.
Pada bahasan ini dicontohkan, file vektor1.c sebelumnya dibagi menjadi 1 file header, yaitu 
vektor1.h, serta 2 file source code, yaitu vektor1.c dan vektor2.c
Berikut file vektor1.h
#ifndef _VEKTOR_H
#define _VEKTOR_H 1
#include <stdio.h>
typedef struct t_vektor {
    int i;
    int j;
} vektor;
void vektor_cetak(FILE *out, const vektor* v);
vektor vektor_tambah(const vektor* v1, const vektor* v2);
#endif /* _VEKTOR_H */

Lebih jauh lagi, header file biasanya disimpan pada direktori tersendiri, dalam contoh ini 
misalkan vektor1.h disimpan di directori /usr/local/inc_ku/math
bash# mkdir ­p /usr/local/inc_ku/math
bash# mv vektor1.h /usr/local/inc_ku/math

Dan ini file source vektor1.c:
#include <stdio.h>
#include "math/vektor1.h"
void vektor_cetak(FILE *out, const vektor* vek) {
/* cetak dg baris baru */
        fprintf(out, "vektor (%d, %d)\n", vek­>i, vek­>j);
}

Dan ini file source vektor2.c:
#include <stdio.h>
#include "math/vektor1.h"
vektor vektor_tambah(const vektor* v1, const vektor* v2) {
        vektor h;
        h.i = v1­>i + v2­>i;
        h.j = v1­>j + v2­>j;

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  93
        return h;
}

Maka untuk meng­compile vektor1.c menjadi file object, gunakan option -I untuk 
menginformasikan lokasi file header yang diperlukan kepada compiler :
bash# gcc ­I/usr/local/inc_ku ­c vektor1.c vektor2.c

Jika ada beberapa header file yang tersimpan di directory yang berbeda, misal di /usr/local 
dan di /home/local/include maka options -I dapat diulang:
bash# gcc ­I/usr/local/inc_ku ­I/home/local/include ­c vektor1.c 
vektor2.c

Jika ingin meng­compile semua source code c dalam current directory, dapat juga digunakan 
*.c sebagai pengganti nama file, sebagai berikut :
bash# gcc ­I/usr/local/inc_ku ­I/home/local/include ­c *.c

5.Linking dari object file menjadi executable
Proses linking diperlukan untuk menghasilkan file executable. Pada bahasa C, file yang 
executable dihasilkan dari source code yang mendefinisikan fungsi main().
Berikut ini file program utama yang menggunakan kedua fungsi vektor yang ada di  vektor1.h, 
di direktori /usr/local/include/math, nama filenya testv1.c
#include <stdio.h>
#include "math/vektor1.h"
int main(int argc, char** arg) {
    vektor v1, v2, v3;
    v1.i = 10;
    v1.j = 20;
    v2.i = 30;
    v2.j = 40;
    v3 = vektor_tambah(&v1, &v2);
    vektor_cetak(stdout, &v1);
    vektor_cetak(stdout, &v2);
    vektor_cetak(stdout, &v3);
    return 0;
}

94  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
1. Compile source code menjadi file object
bash# gcc -I/usr/local/inc_ku -c vektor1.c vektor2.c testv1.c

2. Link object file menjadi file executable testv1 :
bash# gcc vektor1.o vektor2.o testv1.o -o testv1

3. Eksekusi 
bash# ./testv1
vektor (10, 20)
vektor (30, 40)
vektor (40, 60)

6.Menggunakan library
Library adalah kumpulan fungsi­fungsi. Library dibuat agar fungsi­fungsi lebih mudah 
dipergunakan berulang kali, bahkan untuk program aplikasi yang berbeda.
Berbagai aplikasi terkenal di dunia open source dimudahkan pengembangannya karena 
ketersediaan library yang handal, misal: library openSSL, openGL, Gzip, PNG, GPG dan 
sebagainya.
Library tersedia dalam 2 format, yaitu static dan dynamic.
Perbedaan utama terletak pada penggunaanya pada sebuah program: 
• Program yang menggunakan static library, memuat kode mesin dari program itu sendiri 
dan kode mesin fungsi­fungsi yang berasal dari file object lain, yang digunakan oleh 
program tersebut
• Program yang menggunakan dynamic library, hanya memuat referensi ke fungsi­fungsi 
dari file object lain yang digunakan, disamping tentu saja kode mesin dari program itu 
sendiri. Dynamic library juga biasa disebut shared library.

6.1.Membuat static library
Dari sekumpulan file object dapat dibuat file static library, berdasarkan konvensi, file library 
berawalan lib dan berekstensi .a, contoh: libssl.a, libz.a libmath.a, libsocket.a, libvektor.a
Static library dibuat menggunakan program ar, yang sebenarnya bukan bagian dari GCC, 
tapi termasuk diantara produk proyek GNU, Berikut ini cara membuat static library:
bash# ar rc libvektor1.a vektor1.o vektor2.o
bash# ranlib libvektor1.a

File berakhiran .a ini juga biasa disebut file arsip. Program ranlib digunakan untuk 

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  95
membuat indeks dari isi file arsip ini, yang merupakan simbol­simbol (antara lain: nama 
fungsi) yang didefinisikan dalam file object. Oleh ranlib, indeks ini disimpan di dalam file 
arsip.

6.2.Linking ke static library
Seperti halnya file header, maka file arsip atau file library juga biasa disimpan dalam direktori 
khusus, misal pada contoh di atas, di direktori  /usr/local/lib_ku
bash# mkdir ­p /usr/local/lib_ku
bash# mv libvektor1.a /usr/local/lib_ku

Maka jika ingin men­link program utama ke library tersebut, gunakan option -L sebagai 
berikut:
bash# gcc ­I/usr/local/inc_ku ­L/usr/local/lib_ku testv1.c ­lvektor1 
­o testv1
bash# ./testv1

Seperti halnya option -I, maka option -L juga dapat digunakan berulang kali untuk me­link 
ke direktori library yang lain.

6.3.Membuat dynamic library
Gcc juga dapat digunakan membuat dynamic library. Caranya:
1.  Meng­compile source code menjadi object file, dengan menggunakan option -fPIC
untuk menghasilkan file object dengan Position Independence Code (PIC). Contoh:
bash# gcc -I/usr/local/inc_ku -fPIC -c vektor1.c vektor2.c

2. Membuat dynamic library (shared object library) dengan menggunakan option -shared
dan options -o , contoh:
bash# gcc -shared -o libvektor1.so vektor1.o vektor2.o

Maka dihasilkan file  libvektor1.so yang merupakan file dynamic library.
Seperti halnya static library, maka file dynamic library juga ditempatkan pada direktori 
tersendiri, biasanya sama dengan direktori static library,  pindahkan library ke directori 
/usr/local/lib_ku:
bash# cp libvektor1.so /usr/local/lib_ku

6.4.Menggunakan dynamic library
Selanjutnya dynamic library, dapat digunakan oleh program lainnya, dengan menghasilkan 
file executable, langkahnya :

96  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
1. Compile program utama ke file object, selain option -c untuk compile, tambahkan option 
-fPIC, karena akan menggunakan dynamic library, contoh:
bash# gcc -I/usr/local/inc_ku -fPIC -c testv1.c

2. Buat executable dengan option -o dan linking dengan ke library (dengan option 
-lnama_library) jika diperlukan menambahkan path direktori ke library gunakan 
option -L, contoh:
bash# gcc -o testv1 -L/usr/local/lib_ku -lvektor1 testv1.o

Selanjutnya file output dapat dieksekusi, lihat bagian berikutnya.

6.5.Menjalankan program yang menggunakan dynamic library
Untuk menjalankan program yang menggunakan dynamic library, kita perlu menambahkan 
direktori library yang akan digunakan, ke variabel environment LD_LIBRARY_PATH, 
sehingga pada saat program dieksekusi, library yang diperlukan dapat ditemukan di 
LD_LIBRARY_PATH tersebut:
bash# export LD_LIBRARY_PATH=/usr/local/lib_ku:$LD_LIBRARY_PATH
bash#./testv1

7.Penutup
Tutorial singkat tentang gcc ini masih jauh dari lengkap, namun demikian diharapkan dapat 
menjadi titik awal untuk penggunaan yang lebih maksimal.
Berikut ini referensi ke situs­situs yang berhubungan dengan GCC, untuk pembahasan lebih 
mendalam :
● Situs gcc: http://gcc.gnu.org

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  97
98  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
VI. Pengenalan Aplikasi Eclipse
Eclipse adalah IDE (Integrated Development Environment) yang sangat populer untuk Java 
dan C++, dengan menggunakan Eclipse pengembangan aplikasi akan lebih mudah dan 
mempercepat pengerjaan dari sisi waktu.
Eclipse tersedia dalam berbagai platform, dan juga tersedia plug­ins untuk berbagai 
pengguanan aplikasi dalam berbagai industri.
Berikut website yang populer berhubungan dengan Eclipse :

● Download Eclipse : http://www.eclipse.org
● Download Tools Eclipse : http://www.eclipse.org/tools
● Eclipse­JBoss : http://www.jboss.com
● Eclipse ­ Object Web Lomboz : http://lomboz.objectweb.org

 1   Instalasi
1. Pastikan sudah menginstal Java Development Kit (JDK), JDK versi terakhir JDK­1.6 
dapat didownload di http://java.sun.com
2. Tentukan lokasi direktori untuk instal Eclipse, biasanya untuk aplikasi diletakan pada 
direktori /opt.
# cd /opt 
3.  Ekstrak file 
# tar ­xvzf eclipse­SDK­3.2.2­linux­gtk.tar.gz
4. Seting PATH aplikasi
Edit file /etc/profile 
tambahkan baris berikut ini :

JAVA_HOME="/opt/jdk1.6.0"
ECLIPSE_HOME="/opt/eclipse"
PATH="$JAVA_HOME/bin:$ECLIPSE_HOME:$PATH"
export JAVA_HOME ECLIPSE_HOME PATH

Jalankan perintah berikut untuk mengupdate PATH
# source /etc/profile

 2   Menjalankan Eclipse
Jalankan perintah berikut dalam terminal program:
$ eclipse

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  99
Gambar 1.0. Memulai Eclipse

 3   Memilih Workspace
Workspace adalah lokasi direktori dari file­file aplikasi ketika bekerja dengan Eclipse pada 
saat   membuat   project,   workspace   berisi   file­file   kode   program   aplikasi,   direktori   utama 
aplikasi dan file­file konfigurasi aplikasi.

Gambar 1.1. Memilih Workspace

 4   Mematikan aplikasi eclipse
Click tanda 'X' (close windown) dipojok kanan  atas window IDE Eclipse untuk keluar, atau 
dari menu File ­> Exit
 GUI Eclipse
Eclipse mempunyai style tampilan untuk GUI sesuai dengan kebutuhan programmer, ada tiga 
jenis tampilan (perspective) :  Menu Window ­> Open Perspective ­> 
● Debug 
● Java

100  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
● Java Browsing

Gambar 1.2. Perspective Java

Dalam pilihan style perspective Java:
● Window informasi project, struktur direktori (package) : terletak di sebelah kiri
● Window untuk kode program : terletak di tengah
● Window informasi  class ( member class : variabel dan fungsi ) : terletak di sebelah 
kanan
● Window Log hasil compile program : terletak di bawah

 5   Project Pertama
Pastikan JDK sudah di  install dan di set pada Eclipse dengan benar. Konfigurasi JDK bisa di 
lihat dalam Menu Window ­> Preferences, Pilih Java kemudian pilih “Installed JRE'S”. Kita 
juga bisa men­set ANT Home, CVS.
 Membuat sebuah project
Pilih File ­> New ­> Project dan pilih “Java Project”, dan kemudian pilih Next.

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  101
Gambar 1.3.  Project Wizard

 6   Memberi nama project
Beri nama project “HelloDunia” kemudian clik Next

Gambar 1.4. Perspective Java

102  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
 7   Seting Project
Dalam wizard seting Java ini, kita bisa menentukan direktori output project,   paket 
library   (   *.jar)   yang   ingin   disertakan,   misalnya   library   koneksi   database   (JDBC   Driver), 
library aplikasi web dengan Servlet atau JSP ( j2ee.jar ).

Gambar 1.5. Setting Project 

Pilih Finish, project java telah dibuat dan akan muncul Window Perspective Java.

 8   Membuat Aplikasi Java Sederhana

Berikut tahap membuat aplikasi sederhana untuk mencetak String ke ouput dengan 
menggunakan Eclipse.

 Menbuat Class Java

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  103
Pilih File ­> New ­> Class :

Gambar 1.6. Wizard membuat Class Java
Isi field dengan :
Packgae : contoh
Name : Salam
Checklist : public static void main (String[] args )

Kemudian clik Finish, dan akan muncul class Java dalam Window Kode program. 

 9   Edit dan Compile Kode Program
Edit class Salam.java dengan menambahkan baris kode berikut pada :

System.out.println (“ Selamat Belajar Java”)


dalam method main.
Dengan  menyimpan file,  secara  otomatis  Eclipse  akan  mencompile class Java.  Anda bisa 
mengabaikan fitur ini dengan memilih menu Project ­> Build Automatically dan kemudian 
secara manual compile class java dengan memilih menu Project ­>Build All

104  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Gambar 1.7. Salam.java dengan Eclipse

 10   Menjalankan aplikasi
Pilih Run ­> Run As ­> Java Application
Eclipse akan meng­eksekusi file Salam.java dan output akan ditampilkan dalam window 
console dibagian bawah window Eclipse.
 Mendapatkan Help
Jika anda ingin mendapatkan  informasi atau “Help” dari Eclipse pilih Help ­>Help Contents

 11  Referensi 
● Eclipse : http://www.eclipse.org
● Jboss : http://www.jboss.com
● Java : http://java.sun.com

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  105
106  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
VII. Pengenalan Aplikasi Netbeans
NetBeans adalah IDE (Integrated Development Environment) open source yang berbasis Java 
dan   dikeluarkan   oleh   Sun   Microsystem   (http://java.sun.com).   NetBeans   berjalan   diatas 
program GUI   dengan menggunakan Swing. Swing sendiri adalah paket library Java untuk 
aplikasi desktop atau grafis.
Netbeans didistribusikan dengan dua versi yaitu Netbeans platform dan Netbeans IDE, dalam 
Netbeans IDE telah terintegrasi dengan modul­modul pengembangan standard Java. Netbeans 
terbaru   dapat   di   download   di   http://www.netbeans.org.   Dalam   website   tersedia   paket 
tambahan (add­on) :
● Mobile Pack : Mobile application (Teknologi J2ME untuk HP, PDA)
● Visual Web Pack :  Komponen aplikasi untuk web
● Enterprise Pack :  Komponen dan Model aplikasi SOA (XML,WSDL,Web 
Service,UML)
● Profiler : Untuk memory aplikasi ( Bottleneck & Memory Leak)
● C/C++  Pack : Membuat aplikasi C/C++ dengan IDE NetBeans

 1 . Instalasi

 1.1 Instalasi Java
Pastikan sudah menginstal Java Standard Development Kit (Java­SDK), versi terakhir 
Java SDK­1.6 dapat di download http://java.sun.com.

 1.2  Instalasi Netbeans
1. Download binary Netbeans  versi terakhir netbeans­5_5_1­linux.bin dari 
http://www.netbeans.org.
2. Sebagai root ubah file netbeans­5_5_1­linux.bin menjadi file yang bisa diekseksusi
# chmod 755  netbeans­5_5_1­linux.bin
3. Mulai proses instalasi :
# ./netbeans­5_5_1­linux.bin

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  107
Gambar 1.0 : Memulai instalasi NetBeans

1. Tentukan lokasi direktori untuk instal Netbeans, biasanya untuk aplikasi diletakan 
pada direktori /opt.

Gambar 1.1 : Memilih lokasi instalasi

2.  Pilih Java SDK yang akan digunakan oleh 

108  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Gambar 1.2 : Memilih Java SDK

3. Seting PATH aplikasi
Edit file /etc/profile , untuk meng­set PATH aplikasi NetBeans yang diinstal dalam 
direktori /opt/netbeans­5.5.1
tambahkan baris berikut ini :

JAVA_HOME="/opt/jdk1.6.0"
NETBEANS_HOME="/opt/netbeans-5.5.1"
PATH="$JAVA_HOME/bin:$NETBEANS_HOME/bin:$PATH"
export JAVA_HOME NETBEANS_HOME PATH

Jalankan perintah berikut untuk mengupdate PATH
# source /etc/profile

.2. Un­Instal NetBeans
Untuk melakukan un­instalasi NetBeans, jalankan perintah berikut :
# /opt/netbeans­5.5.1/_uninst/uninstaller

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  109
Gambar 1.3 : Un­instal NetBeans

 3  Memulai Netbeans
Jika   PATH   aplikasi   NetBeans   telah   di   set,   untuk   memanggil   aplikasi   NetBeans   jalankan 
perintah berikut :
$ netbeans
Atau
$ opt/netbeans-5.5.1/bin/netbeans

110  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Gambar 1.4 : Memulai NetBeans

3.1 Memulai Projek
Sebelum memulai projek, kita harus menentukan kategori projek yang akan kita buat, ada 
beberapa pilihan kategori projek :
● General :
○ Membuat aplikasi yang menggunakan library J2SE dengan main class 
○ Membuat class­class untuk library aplikasi
○ Membuat aplikasi dengan meng­import direktori berisi sumber kode program
○ Membuat aplikasi dengan perintah ANT yang didefinisikan sendiri. 
● Web
○ Membuat aplikasi web standard.
○ Membuat aplikasi web dengan meng­import aplikasi web kedalam projek web.
○ Membuat aplikasi web dengan perintah ANT yang didefinisikan sendiri
● Enterprise
○ Membuat aplikasi­aplikasi enterprise dengan menggunakan class­class EJB
○ Membuat modul­modul class EJB
● NetBeans­Plug­in Modules
○ Membuat modul­modul untuk NetBeans

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  111
Pilih dari Menu : File ­>New Project :

Gambar 1.5 : Memulai Projek dengan NetBeans

Setelah menentukan  kategori projek yang dibuat, kemudian klik Next.

 3.2 Membuat Projek

Gambar 1.6 : Memberi Nama Projek

112  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
Pada step 2 ini, anda diminta untuk mengisi nama dan lokasi projek :
Project Name : HelloDunia
Project Location : /home/rojul/labs

 3.3 Window Kerja NetBeans

Gambar 1.7. Window Kerja NetBeans

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  113
            3.4 Membuat Class
File ­> NewFile 

Gambar 1.8. Membuat Class

Dari window, pilih Kategori Java Class dan Tipe File Java Class, kemudian pilih Next 

Gambar 1.9. Memberi Nama Class

Isi Nama, Lokasi dan Paket dari File, kemudian pilih tombol Finish.

114  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
 3.5 Compile dan Running Program 
● Compile Project
Compile Project digunakan untuk compile seluruh file yang ada dalam project.
Build ­> MainProject 
● Compile File Java 
Compile File digunakan untuk compile satu file tertentu
      Build ­> Compile “NamaFile.java”
● Running Project
      Run ­> Run Main Project
● Running File Java
      Run ­> Run File ­> Nama File

 4  Aplikasi Dekstop
Anda   bisa   membuat   sebuah   project   Dekstop   atau   Aplikasi   Web   dengan   NetBeans,   untuk 
graphic bisa dipilih jenis file dari kategori Java GUI Forms pada saat ingin membuat file. 

Gambar 1.10 : Tampilan IDE NetBeans untuk aplikasi Dekstop

Dalam window NetBeans ketika membuat GUI tersedia window property yang digunakan 

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  115
untuk men­set nilai property dari object.

 5. Aplikasi Web
NetBeans juga dilengkapi dengan Tomcat Web Server, Konfigurasi tomcat server bisa dilihat 
dengan memilih tab runtime :

Gambar 1.11 : Runtime Explorer
Untuk mengubah konfigurasi tomcat server dengan memilih :
Click Kanan pada Bundled Tomcat ­> pilih Properties

Gambar 1.12 : Tomcat Server Manager 

Konfigurasi file tomcat server  untuk user sistem berada dalam direktori :
/home/NAMA_USER/.netbeans/5.5.1/apache­tomcat­5.5.17_base/ 

116  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source
 6  Referensi
● NetBeans IDE : http://www.netbeans.org/products/
● Java: http://java.sun.com

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  117

You might also like