Embed
Email

Bahasa Pemrograman Open Source _uli_

Document Sample

Shared by: sacralitcenter
Categories
Tags
Stats
views:
40
posted:
1/18/2012
language:
pages:
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 :

55 salam.pl

bash% chmod 7

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:

,, 1

11 7

@prima1 = (2,3,5,713, );

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

, "senin",2,"selasa", 3,"rabu",4,

@hari2 = (1 ”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:

0, 20, 30, 40);

@bil3 = (1

# mencetak 'ukuran array : 3'





4  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

print “ukuran array : $#bil3 \n”;





1

$bil3[10] = 1234;

1

# mencetak 'ukuran array : 10'

print “ukuran array : $#bil3 \n”;



Membaca dari array dengan indeks yang lebih besar tidak akan menyebabkan error dan tidak 

akan menambah ukuran array. Contoh:

0,20,30,40);

@bil4 = (1

$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

0,20,6, 1,22);

@arr = (1 9,

1 1

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'

..3]   # 'gareng', 'petruk', 'bagong' 

@arr3 = @arr1[1

..$#arr1] # semua kecuali 'semar'

@arr4 = @arr1[1



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

Lebih dari

= 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:

00; $b = 8

$a = 1

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:

jar”, “PERL

print “saya”, “bela ”;

# sama dengan





Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  7

jar”, “PERL

print (“saya”, “bela ”);



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

, $mday

($sec, $min, $hour , $wday

, $mon, $year , $isdst) = 

, $yday

localtime;

print "Bulan $bulan[$mon] hari $hari[$wday] tgl $mday tahun 

1

", ,"\n";

900+$year



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 .

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 ( ; ; ) {

# statemen­statemen

}



Ekspresi yang umum digunakan adalah sebagai berikut:

for ( $i = 0; $i  () {

}



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 = ) {

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

, $fnam) or die “gagal baca $fnam, $!”;

open($fh1

open($fh2, “>$fbaru”) or die “gagal menulis $fbaru, $!”;

while($line = ) {

print $fh2 $line;

}

close($fh1);

close($fh2);



Ekspresi  “or die ... “ digunakan sebagai error handler jika file tidak dapat dibuka. 

Variabel khusus $! digunakan untuk menampilkan pesan error dari sistem.



3.8.Subrutin

Pada program aplikasi umumnya, kumpulan statemen yang mengimplementasikan sebuah 

operasi tertentu didefinisikan dalam sebuah subrutin.

Beberapa subrutin biasanya didefinisikan dalam sebuah file tersendiri, sehingga dapat 

digunakan oleh berbagai program pemanggil.

Berikut ini bentuk pendefinisian subrutin :

sub  {

}



Subrutin dapat menerima parameter, tapi PERL tidak mengenal named formal parameter, 

parameter yang dikirimkan ke subrutin dapat diakses dalam subrutin melalui array khusus @_ 

, berikut ini contoh subrutin sederhana yang menghitung nilai faktorial :

sub faktorial {

my ($num) = @_;

my $res = 1;

f ..$num) {

oreach my $a (1

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

lib/math.pl”

req uire “/home/didi/my

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

.3.3 tar gz

bash% tar zxvf apache_1 7

. .



3. Konfigurasi dan kompilasi

.3.3

bash%  cd  apache_1 7

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:





Pastikan PHP CLI ada di PATH dengan perintah:

ATH=/dir/instalasi/php/anda/bi n:$P

bash% export P ATH



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 mengenal 3 jenis tag 

pembuka lainnya yang tidak direkomendasikan pada manual PHP, dan karenanya tidak 

dibahas disini.

Sebuah program PHP dapat terdiri 2 jenis statemen: 

● statemen PHP yang dibatasi oleh tag tersebut

● statement non­PHP (misal: HTML, WML, XML) 

Kedua jenis statemen dapat berselang­seling lebih dari satu kali dalam program.

PHP mengabaikan whitespace (spasi, tab, baris­baru) sebelum dan sesudah statemen, juga 

whitespace di antara token­token dalam statemen.



Semua contoh program dalam tulisan ini tidak menuliskan tag pembuka  untuk menghemat ruang/kertas, kecuali jika ada bagian program yang  

menggunakan statemen non­PHP.





3.2.Komentar

PHP Mengenal 3 jenis komentar:

1. Diawali dengan // , berlaku hanya untuk 1 baris 

2. Diawali dengan #, berlaku hanya untuk 1 baris

3. Diawali dengan /* dan diakhiri */ , berlaku untuk lebih dari 1 baris, dapat juga 

digunakan untuk menyisipkan komentar diantara token.

Ketiga jenis komentar dapat berada pada baris tersendiri atau dibelakang statement. Contoh:

// komentar 1

echo 'string satu',"\n"; // komentar 2

echo 'string dua',"\n"; # komentar 3

/*

 komentar 4 , komentar ini 

 melintas beberapa baris 

 */

echo /* komentar 5, di antara token */ 'string tiga',"\n";







Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  15

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:

890         # desimal

1234567

1234567           # octal

0

89abcdef  #hexadecimal

0x1234567









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:

1234567

. 89

1234567

0. 89

89e­9

1234567

89e­4

123.4567



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:

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

”\n” # php

echo $b[0],

”\n” # python

echo $b[1],

”\n” # ruby

echo $b[4],



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.

000;

$a = 1

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

0.$k2 = $k1;

1

1

1. $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;

”\n”; # 500

echo $x ,









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;

00 000

if ($a  = 1 0) { # selalu TRUE, seharusnya $a == 1

000\n”;

echo “$a sama dengan 1

}

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

0; $b = 20;

$a = 1

$c = $a + $b;  // penjumlahan ,  hasil 30 

0

$c = $a ­ $b;  // pengurangan , hasil ­1

$c = $a * $b;  // perkalian , hasil 200

$c = $a / $b;  // pembagian , hasil 0.5 

0

$c = $a % $b;  // modulus, hasil 1







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.

0;

$a = 1





$b = $a++; // post­increment

0 , a == 1

echo "b == $b , a == $a \n";    // b == 1 1





$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

0 , a == 1

echo "b == $b , a == $a \n";    // b == 1 0



3.5.3.Operator assignment

Assignment menghasilkan nilai baru sesuai nilai expresi disebelah kanan operator =.

0;

$a = 1

0) + $a; // $c == 20, $b == 1

$c = ($b = 1 0





0; // $a == 20

$a += 1





0) + $a; // $c == 40, $b == 20, $c == 20

$c = ($b += 1



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

0; $b = '1

$a = 1 0';

echo $a == $b ? 'true':'false'  , "\n";  // true



3.5.4.3.Identical

ekspresi1 === ekspresi2



Operator '===' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 samadengan nilai 

ekspresi2 dan tipe data kedua nilai ekspresi sama.

// identical

0; $b = '1

$a = 1 0;

0'; $c = 1

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

0; $b = '1

$a = 1 0'; $c =11;

echo $a != $b ? 'true':'false'  , "\n";  // false

echo $a != $c ? 'true':'false'  , "\n";  // true

// not eq ual

0; $b = '1

$a = 1 0'; $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

0; $b = '1

$a = 1 0;

0'; $c = 1

echo $a !== $b ? 'true':'false'  , "\n";  // true

echo $a !== $c ? 'true':'false'  , "\n";  // false



Operator greater than(>), smaller than(=), smaller equals ( ekspresi2

ekspresi1 = ekspresi2



Keempat operator ini membandingkan nilai ekspresi1 dan ekspresi2, operasi baru dijalankan 

setelah melakukan konversi tipe jika ekspresi2 berbeda tipedata dengan ekspresi1

0; $b = 1

$a = 1 0;

1; $c = 1

echo $a > $b ? 'true':'false'  ,"\n"; // false

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.

00

//  9 = 1 1

0 = 11

// 1 00

0,"\n"; //  8 = 1

echo 9 & 1 000



3.5.6.2.Bitwise OR

b1 | b2

Menghasilkan bit yang di­set jika salah satu dari bit1 dan bit2  di­set



0,"\n"; // 1

echo 9 | 1 01

1 = 11



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.





0,"\n"; //  3 = 00 1

echo 9 ^ 1 1



Bitwise NOT

~b1

Menghasilkan bit yang di­set jika b1 tidak di­set, dan kebalikannya



Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  25

Shift left (geser bit ke kiri)

b1 > n

Menggeser bit b1 sebanyak n ke kanan.

Setiap pergeseran satu bit sama dengan “bagi dengan 2”



0 >> 1

echo 1 11

, "\n"; //  5 = 00



3.5.7.Operator String

Operator dot (titik) digunakan untuk menggabungkan string dengan string atau tipe data 

lainnya.

Contoh:

$a = 'saya...';

jar php';

$b = 'bela

jar php'

$c = $a . $b;  // 'saya...bela









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 besar\n");







26  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

} else {

...',"\n";

    echo 'benar

}









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: 

.. bleek

        echo "yaak ..\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  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  $ditebak) {

        echo("terlalu besar\n");

    } else {

...',"\n";

        echo 'benar







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

1

1

1.         echo("terlalu besar\n");

12.    } else {

1 ...',"\n";

3.        echo 'benar

4.

1         break;

15.    }

6.

1   }  # akhir loop 2

1

7

.   echo "lanjut? ";

8.  ya = chop(fgets(STDIN));

1

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 besar\n");

        } else {

...',"\n";

            echo 'benar

            break;

        }

        if($coba  '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";

ja');

    throw new Exception('error yg disenga

    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

,

1

    $a = array(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:

00);

$deret = fibonacci(1

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

, $this­>j * $skalar);

        return new Vektor($this­>i*$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/V .

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





Warung Web



4.3.2.File ordersvc.php

File ini berisi definisi class yang diperlakukan aplikasi untuk memproses pesanan.

'Gado­gado', '02'=>'Bakmi A

    private $produk = array('0 yam', 

'03'=>'Tong Seng');

    private $pilihan = array (

1' => array(

        '0

; 1

                'cabe > 0','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) 

    {

erimakasih, ',"\n";

        echo 'T

        echo "Kami segera mengirimkan pesanan ke $kirimke, 

kalau kebetulan lewat..\n";

        if($konfig) {

            echo '';

            foreach($konfig as $d) {

                echo '', $this­>pilihan[$prod][$d],"\n";

            }

            echo '';

        } else {

                echo "Anda memilih menu standard\n";

        }

    }

}

?>



4.3.3.File menu.php

Menampilkan menu pilihan:



Selamat datang di warung 

Apa yang anda inginkan:







40  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source







produk() as $key => $value) {

    echo '',$value,'',"\n";

href="pesan.php?prod=',$key

}

?>











4.3.4.File pesan.php

Untuk memproses pesanan, dan menampilkan response.

Jika pesanan sudah diproses form tidak ditampilkan lagi

proses_pesanan($prod, $kirimke, $konfig);

            $sudahpesan = true;

        }

}

if (!$sudahpesan) {





Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  41

?>

or



le="border



background­color



Konfigurasi 

pilihan($prod);

$i = 0;

foreach($options as $value) {

    echo '', $value, "\n";

}

?>



kirim ke alamat









">

or













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

4

>>> 60 * 60 * 2

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

4 * 1

luas =  22 / 7 * 1 4

06 % 3  # menghitung sisa pembagian

sisa = 1









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

: variabel sebagai ref

v1 = 123   # assignment erensi 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. 

00

a = 1

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. 

148364

247 7 # integer terbesar untuk 32 bit arithmetic

1483648L # long

247

1234567 # octal

0

89abcdef # hexadecimal

0x1234567



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 / 70 * 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 []

,2,3,4,5,6,7 8]

[1 ,

,'senin',2,'selasa',3,'rabu']

[1

,[2,3],4,5,[6,7 8,[9, 1

[1 , 0,

1 1]]]



Berikut ini beberapa operasi yang dapat dilakukan terhadap list:

add, remove, slice, del

Perhatikan bahwa list melakukan pengecekan index range, pada operasi baca maupun tulis:



7.4.2.Tuples

Berbeda dengan list, maka tuples adalah sequence yang immutable. Persamaannya dengan list 

adalah elemen­elemen tuples juga diacu menggunakan indeks integer.

Tuple didefinisikan menggunakan (), contoh:

,2,3,4,5,6,7 8)

(1 ,







Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  49

,'senin',2,'selasa',3,'rabu')

(1

,(2,3),4,5,(6,7 8,(9, 1

(1 , 0,

1 1)))



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.

1', 'nama': 'Susu Sapi', 'harga': 12000, 'stok': 

d1 = {'kode': '000

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.

, 0] # comma separated expression

[1+2,30)) # 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')`

,2,3,('a','b','c')]`

`[1

`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:

.atribut1

objek1



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:

.atribut2

objek2.atribut1



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:

1 6, 7 0]

list1 = [5, 1 , 8, 1

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:

,2,3,4,5,6,7 8,9]

list1 = [1 ,

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':2,'c':3,'d':4,('e','f'):5,('g','h'):6,'h':7 'i':8}

b = {'a':1 ,

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

6**­2**­2 # ­0.5 = ­1

­1 6**0.25 

6**­0.25 =  ­1/1









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

,2,3)  # (1

3*(1 1

,2,3)

,2,3,



8.5.2.Pembagian

Terdiri atas '/' (division) dan '//'  (floor division).

Floor division mengenakan floor() pada hasil  pembagian.

# division

4*1

22/7*1 4       # 588

4*1 1

22./7*1 4       # 66.0

1/2*3*4           # 0

./2*3*4           # 6.0

1

1

4285 1

22./7             # 3. 74286

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.

0

22+1

jar '  + 'python'

'bela



8.5.5.Pengurangan

Operator ini menghitung selisih untuk bilangan.

0

22­1









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  (  00

4 >> 1  # 2  = biner 1 1

00 shift right 1 ­> 1

4 > 1  # 3  = biner 1 1 shift left  1 ­>  0 1

4 = biner 1 1 shift right 1 ­> 1 1

7  0 1

15 ^ 1 1 1 ^ 1

5 & 8  # 7 = 1 1 1 1 

000 => 01

(15 ^ 1 000 => 0

5) & 8  # 7 = 0 & 1



8.8.Operasi Perbandingan (comparison)

Operasi perbandingan menghasilkan nilai boolean True dan False.

Terdiri atas:



Operator Deskripsi

> Lebih besar dari

= Lebih dari atau sama dengan

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

,2,3 # a,b,c adalah ekspresi list 

a,b,c = 1

,        # x adalah tuple dengan 1 elemen

x = 1

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

        if coba  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

, hasil=None):

def fibonacci(n, a=0, b=1

    if hasil == None: hasil = []

    if b  puts "assalamu'alaikum"

irb(main):00

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

55 halo1

bash$ chmod 7 .rb

.rb

bash$ ./halo1



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

.a \'Matz\''

 oleh Yukihiro Matsumoto, a.k

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

0; l=20; t=1

p=1 ; puts "volume #{volume}"

5; volume=p*l*t









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

1 0 0 1 110

0b1 1_11_11  => 0b1 10 11



Floating point ditulis menggunakan . (titik) untuk separator desimal bulat dan pecahan, 

contoh:

123 89

0. 467

1

4285 1

3. 74

74285 1



Data numerik adalah objek sejati, sebagai contoh, dari data integer dapat dipanggil method :

1

# representasi l1 398634 dalam string hexadesimal

1 6)

l1 398634.to_s(1









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:

4 * 1

“Luas lingkaran = #{22.0/7 * 1 4}”



String literal diatas bernilai 'Luas lingkaran = 588'.

Kutip ganda pada string literal juga menyebabkan interpreter Ruby akan mengevaluasi 

berbagai karakter khusus (misal: control characters). 

Ada 3 cara lain untuk mendefinisikan string literal: %q, %Q dan here documents.

Prefix %q sama dengan kutip­tunggal dan %Q sama dengan kutip­ganda (menyebabkan 

interpolasi ekspresi), keduanya menggunakan delimiter ! , / , { , (,  #{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 = #{nama2}#{nama2} 'Susu Sapi', 'p002'=> 'T elur 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

000'

str1 = '1



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

num2 = num1 + str1



# str1 di­parse menghasilkan numerik

.to_i

num2 = num1 + str1



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

.to_s

str2 = str1 + num1









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  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 (b1)

.volume

    self.volume > b1

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

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 

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 :

.c

bash# gcc ­c vektor1



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 :

.c vektor2.c vektor3.c

bash# gcc ­c vektor1





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 

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

.h /usr/local/inc_ku/math

bash# mv vektor1



Dan ini file source vektor1.c:

#include 

#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 

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

.c vektor2.c

bash# gcc ­I/usr/local/inc_ku ­c vektor1



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:

.c 

bash# gcc ­I/usr/local/inc_ku ­I/home/local/include ­c vektor1

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 

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

.a vektor1

bash# ar rc libvektor1 .o vektor2.o

.a

bash# ranlib libvektor1



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

.a /usr/local/lib_ku

bash# mv libvektor1



Maka jika ingin men­link program utama ke library tersebut, gunakan option -L sebagai 

berikut:

.c ­l

bash# gcc ­I/usr/local/inc_ku ­L/usr/local/lib_ku testv1 vektor1 

­o testv1

bash# ./testv1



Seperti halnya option -I, maka option -L juga dapat digunakan berulang kali untuk me­link 

ke direktori library yang lain.



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_P ATH

ATH=/usr/local/lib_ku:$LD_LIBRARY_P

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


Related docs
Other docs by sacralitcenter
Photoshop.CS.5._202.Tips.57.Pages_
Views: 0  |  Downloads: 0
Adobe Photoshop 3D for Animators ebook
Views: 10  |  Downloads: 0
Seminar
Views: 4  |  Downloads: 0
daftar isi Bahasa Pemrograman Open Source
Views: 6  |  Downloads: 0
ppt-iptables-webmin-03-2006
Views: 2  |  Downloads: 0
ppt-peta-teknologi-network-security-4-2002_2
Views: 1  |  Downloads: 0
ppt-openssl-05-2001
Views: 3  |  Downloads: 0
ppt-security-issues-02-1999
Views: 4  |  Downloads: 0
Panduan_OSS_v1.00
Views: 1  |  Downloads: 0
OWP-2011112-buku-keamanan-jaringan
Views: 56  |  Downloads: 2
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!