P. 1
Bahasa Pemrograman Open Source (uli)

Bahasa Pemrograman Open Source (uli)

|Views: 436|Likes:
Dipublikasikan oleh gwgilaa12

More info:

Published by: gwgilaa12 on Feb 27, 2011
Hak Cipta:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/14/2013

pdf

text

original

Sections

  • 2.1.Eksekusi dari file
  • 2.2.Eksekusi dari command line
  • 3.1.Program PERL
  • 3.1.1.Statemen
  • 3.1.2.Komentar
  • 3.2.Variabel dan Tipe data
  • 3.2.1.Skalar
  • 3.2.1.1.String petik tunggal (single quote) dan petik ganda (double quote)
  • 3.2.2.Array
  • 3.2.3.Hash
  • 3.3.Operator
  • 3.4.Fungsi
  • 3.5.Konstruksi Kondisional
  • 3.5.1.if
  • 3.5.2.unless
  • 3.6.Konstruksi Loop
  • 3.6.1.for
  • 3.6.2.foreach
  • 3.6.3.while
  • 3.7.Input dan Output ke file
  • 3.7.1.Membaca dari file teks
  • 3.7.2.Menulis ke file teks
  • 3.8.Subrutin
  • 1.1.Instalasi Apache
  • 1.2.Instalasi module PHP dan PHP CLI:
  • 2.1.Aplikasi Konsol
  • 2.2.Aplikasi web
  • 3.1.Program PHP
  • 3.2.Komentar
  • 3.3.Tipe Data
  • 3.3.1.Tipe Primitif
  • 3.3.1.1.Boolean
  • 3.3.1.2.Integer
  • 3.3.1.3.float
  • 3.3.1.4.string
  • 3.3.2.Tipe Gabungan (compound)
  • 3.3.2.1.Array
  • 3.3.2.2.Objek
  • 3.3.3.Tipe Khusus
  • 3.3.3.1.Resource
  • 3.3.3.2.NULL
  • 3.3.4.Konversi ke boolean
  • 3.4.Variabel
  • 3.4.1.Assignment
  • 3.5.Ekspresi dan Operator
  • 3.5.1.Operator aritmetika
  • 3.5.2.Operator incrementing/decrementing
  • 3.5.3.Operator assignment
  • 3.5.4.Operator Perbandingan
  • 3.5.4.1.Ternary
  • 3.5.4.2.Equal
  • 3.5.4.3.Identical
  • 3.5.4.4.Not Equal
  • 3.5.4.5.Not Identical
  • 3.5.5.Operator Logika
  • 3.5.5.1.Logical AND
  • 3.5.5.2.Logical OR
  • 3.5.5.3.Logical XOR
  • 3.5.5.4.Logical NOT
  • 3.5.5.5.Logical AND (&&)
  • 3.5.5.6.Logical OR (||)
  • 3.5.6.Operator  bit
  • 3.5.6.1.Bitwise AND
  • 3.5.6.2.Bitwise OR
  • 3.5.6.3.Bitwise XOR
  • 3.5.7.Operator String
  • 3.6.Kendali Alur Program
  • 3.6.1.Conditional
  • 3.6.2.switch
  • 3.6.3.Struktur loop
  • 3.6.3.1.while
  • 3.6.3.2.do while
  • 3.6.3.3.break
  • 3.6.3.4.continue
  • 3.6.3.5.foreach
  • 3.6.3.6.return
  • 3.6.3.7.Exception
  • 3.7.Fungsi
  • 3.7.1.Mendefinisikan Fungsi
  • 3.7.2.Nilai Default untuk parameter
  • 3.7.3.Pemanggilan Fungsi
  • 3.8.Class
  • 3.9.Reusabilitas
  • 3.9.1.include
  • 3.9.2.require
  • 3.9.3.include_once
  • 3.9.4.require_once
  • 3.10.Menggunakan Fungsi dan Class dan file lain
  • 4.1.Method GET dan POST
  • 4.2.Menangani request
  • 4.2.1.Request GET
  • 4.2.2.Request POST
  • 4.3.Penjelasan Program
  • 4.3.1.File head.php
  • 4.3.2.File ordersvc.php
  • 4.3.3.File menu.php
  • 4.3.4.File pesan.php
  • 7.1.Bilangan
  • 7.2.String dan Unicode String
  • 7.3.Boolean
  • 7.4.Tipe data container
  • 7.4.1.List
  • 7.4.2.Tuples
  • 7.4.3.Sets
  • 7.4.4.Dictionary
  • 8.1.Ekspresi Atom
  • 8.1.1.Identifier
  • 8.1.2.Literal
  • 8.1.3.Enclosure
  • 8.1.3.1.Bentukan dalam Kurung (Parenthesized forms)
  • 8.1.3.2.List display
  • 8.1.3.3.Generator expressions
  • 8.1.3.4.Dictionary display
  • 8.1.3.5.Konversi String
  • 8.2.Ekspresi Primer (Primaries)
  • 8.2.1.Referensi Atribut (Attribute Reference)
  • 8.2.2.Subskrip
  • 8.2.3.Irisan (Slicing)
  • 8.2.4.Pemanggilan callable (calls)
  • 8.3.Operasi Pangkat
  • 8.4.Operasi aritmetika unary
  • 8.5.Operasi aritmetika biner
  • 8.5.1.Perkalian
  • 8.5.2.Pembagian
  • 8.5.3.Modulus (%)
  • 8.5.4.Penjumlahan
  • 8.5.5.Pengurangan
  • 8.6.Operasi Pergeseran (shifting)
  • 8.7.Operasi Bit Biner (binary bitwise)
  • 8.8.Operasi Perbandingan (comparison)
  • 8.9.Operasi Boolean
  • 8.10.Lambda
  • 8.11.Ekspresi Lists
  • 10.1.Statemen if
  • 10.2.while
  • 10.3.for
  • 10.4.pass
  • 10.5.exceptions
  • 11.1.Mendefinisikan Module
  • 11.2.Menggunakan Module
  • 11.3.Module search path
  • 3.1.Menggunakan file skrip
  • 3.2.Menggunakan command line
  • 3.3.Secara Interaktif
  • 4.1.File program atau skrip
  • 4.2.Statement
  • 4.3.Komentar
  • 4.4.Class
  • 4.5.Module
  • 5.1.Numerik
  • 5.2.String
  • 5.3.nil
  • 8.1.Variabel global
  • 8.2.Variabel lokal
  • 8.3.Variabel instance
  • 8.4.Variabel class
  • 8.5.Array dan Hash
  • 9.1.Ekspresi  melibatkan string dan numerik
  • 9.2.Eksekusi Conditional
  • 9.2.1.If ... then ... end
  • 9.3.Loop
  • 10.1.Blok dan Iterator
  • 11.1.Mendefinisikan Class
  • 11.1.1.Bagian­bagian class
  • 11.1.1.1.Constructor
  • 11.1.1.2.Method Instance
  • 11.1.1.3.Method Class
  • 11.1.1.4.Variabel Instance
  • 11.1.1.5.Variabel class
  • 11.1.2.Inheritance (class turunan)
  • 12.1.Mendefinisikan Module
  • 12.2.Menggunakan module
  • 12.2.1.Menggunakan path
  • 12.2.2.Menggunakan variabel khusus $:
  • 12.2.3.Menggunakan ruby option ­I
  • 12.2.4.Menggunakan variabel environment RUBYLIB
  • 12.3.Mixin
  • 6.1.Membuat static library
  • 6.2.Linking ke static library
  • 6.3.Membuat dynamic library
  • 6.4.Menggunakan dynamic library
  • 6.5.Menjalankan program yang menggunakan dynamic library
  • 1.1 Instalasi Java
  • 3.5 Compile dan Running Program

I. Mengenal PERL
1.Tentang PERL
PERL adalah bahasa pemrograman yang menggunakan tipe data dinamis, program PERL  dapat langsung dieksekusi tanpa harus melalui proses kompilasi tersendiri ke format binary  yang dapat dieksekusi. PERL banyak digunakan pada aplikasi manajemen sistem dan jaringan, pemrograman web,  manipulasi teks, akses ke database.  Berikut ini beberapa aplikasi yang menggunakan PERL yang cukup dikenal: mrtg, SQL  Ledger (aplikasi akunting), Webmin (aplikasi admin), spam assasin (anti spam).

2.Menjalankan Program PERL
2.1.Eksekusi dari file
Berikut ini sebuah program PERL salam.pl, yang mencetak salam universal  di konsol, jika  ada argumen pada command line maka ditampilkan setelah salam.
#!/usr/local/bin/perl if ($#ARGV > ­1) {     print "assalamu'alaikum $ARGV[0]\n"; } else {     print "assalamu'alaikum\n"; }

Eksekusi di shell menggunakan PERL interpreter, sbb:
bash% perl salam.pl Hafizh assalamu'alaikum Hafizh

Agar dapat dieksekusi tanpa mengetikkan interpreter perl di command line, file salam.pl  perlu diset permissionnya. Misalkan dengan perintah :
bash% chmod 7 55 salam.pl bash% ./salam.pl Hafizh assalamu'alaikum Hafizh

Pastikan program PERL diawali dengan path lengkap ke interpreter perl yang terinstal di  sistem operasi anda, untuk sistem berbasis Linux dan Unix, path tersebut harus diawali  dengan karakter '#!' , seperti contoh:
#!/usr/local/bin/perl

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  1

  assignment variabel dan pemanggilan fungsi.2. baris baru) diabaikan.  konstruksi loop.  Atau dapat juga setelah bagian kode: $area = $pi * $radius * $radius. print "open source software ?!". Jika menggunakan kutip ganda untuk membatasi perintah : bash% perl ­e “print \” Assalamu'alaikum\n\”” 3.1.  menggunakan options ­e di interpreter perl.Statemen Statemen diakhiri dengan tanda titik coma. tanpa perlu membuat  file program.2. # menghitung hitung luas 2  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . 3. Statemen dapat berbentuk deklarasi variabel.Komentar Sebagaimana bahasa pemrograman lainnya.2. Sebuah program PERL yang executable dapat menggunakan hanya statement. karena kutip tunggal digunakan untuk membatasi  perintah.1. do you believe miracle?\n". konstruksi block.Eksekusi dari command line PERL dapat mengeksekusi perintah secara langsung dari command line.             " it's a miracle". Program PERL dapat terdiri atas statemen. contoh: # menghitung hitung luas $area = $pi * $radius * $radius. biasa disimpan dalam file teks berakhiran . dengan menempatkan karakter '#' sebelum baris komentar. Walaupun  demikian perl interpreter tetap akan mengeksekusi program PERL yang tidak menggunakan  ekstensi .Program PERL Program PERL atau skrip PERL. 3.pl. contoh: bash% perl ­e 'print ” Assalamu''alaikum\n”' Perhatikan dua kutip tunggal di tengah kata.Dasar­dasar PERL 3.                   ". programmer PERL dapat menuliskan komentar  dalam kode program. deklarasi subroutine.1. White space (spasi.1. konstruksi kondisional. tanpa perlu  mendefinisikan fungsi khusus seperti main() dalam program bahasa C.pl.

1. String dengan petik tunggal menyatakan data adalah seperti yang tertulis. Contoh: # dicetak dalam satu baris.2. PERL memiliki 3 tipe variabel utama: skalar. dan identifier lainnya dalam PERL adalah case­ sensitive. tidak ada  interpretasi terhadap karakter­karakter pada string. $kota = “depok”. 3. tidak perlu  mendeklarasikan tipe data sebelum assignment.  Tipe data secara otomatis ditentukan pada saat assignment variabel. 3.Variabel dan Tipe data Variabel digunakan untuk menyimpan data. tipe data dapat berupa string atau bilangan. Contoh: # string $file = '/etc/profile'.  array dan hash.1. # float $konstanta_pi = 22/7. # dicetak dalam 3 baris diikuti baris baru $str2  =  “\niman \nilmu\namal \n”.2. $byte_ =  0x00ff.String petik tunggal (single quote) dan petik ganda (double quote) String dapat dinyatakan dalam petik tunggal (') dan petik ganda (“). String dengan petik ganda menyatakan bahwa interpreter PERL harus melakukan interpretasi  terhadap karakter­karakter pada string tersebut. print $str1.2.Skalar Variabel skalar menyimpan data bernilai tunggal. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  3 . Nama­nama variabel. # integer $_num =  255.  Nama variabel skalar dimulai dengan karakter '$'.1. karakter \n tidak diinter pretasikan $str1  =  '\niman \nilmu \namal \n'.Komentar diperlakukan sebagaimana white space. 3.

 20. $str4 = “$str3 the adzan\n”. ). Jika sebuah program mencoba menulis anggota array pada posisi indeks yang lebih besar dari  ukuran array. Contoh : @hari2 = (1 . ”jumat”). $3. Contoh: @bil3 = (1 0. ”kamis”. data anggota  array ditempatkan dalam kurung (). $2. # mencetak 'jumlah anggota : 9' print “jumlah anggota : $#hari2 \n”.2.3.print $str2. $1.Array Array menyimpan sekumpulan nilai secara berurutan (sekuensial).4..  nilai­nilai yang disimpan dapat berbeda­beda tipe datanya. # mencetak 'elemen terakhir : jumat' print “elemen terakhir : $hari2[$#hari2] \n”.  Nilai anggota array dibaca menggunakan operator [] dan nomor indeks. "senin". Contoh: @prima1 = (2. Untuk membaca nilai anggota  array digunakan nomor indeks integer dimulai dari nol.2. ."selasa". 40). 3. Variabel array dideklarasikan menggunakan karakter @ di depan nama variabel. maka PERL secara otomatis menambah ukuran array sampai posisi baru  tersebut. 30. 5. dan  sebagainya yang dijelaskan di man perlvar 3.  tapi  nilainya adalah jumlah anggota array dikurangi satu. $_.5.713. seperti $ARG. $!. # mencetak 'honour the adzan' diikuti baris baru $str3 = 'honour'. 1 11 7 # mencetak '5' print $prima1[2].2. Nilai ini juga dapat digunakan untuk  membaca elemen terakhir. Variabel Khusus PERL juga mengenal beberapa variabel skalar khusus. nilai­nilai anggota dipisahkan oleh koma. yang biasa disebut list. Untuk mendapatkan jumlah anggota array digunakan variabel  $# diikuti nama variabel."rabu". # mencetak 'ukuran array : 3' 4  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

 'arjuna'. Contoh: @arr1 = ('semar'.. contoh: # dievaluasi dalam scalar context @arr = (1 0.4]  # 'petruk' dan 'arjuna' @arr3 = @arr1[1 . 1 1 9. tidak boleh ada 2 pasangan yang  menggunakan nama kunci yang sama.3]   # 'gareng'.22).40). if(@arr == 6) {     print "jumlah anggota array ada 6\n". Contoh: @bil4 = (1 0.print “ukuran array : $#bil3 \n”.  menggunakan operator []. Jika variabel array dievaluasi dalam konteks nilai skalar (scalar context) maka variabel  tersebut dievaluasi sebagai jumlah anggota array.20. 1.30.6. @arr2 = @arr1[2.  'srikandi').  Nama kunci dalam sebuah variabel hash haruslah unik. } Array dapat disalin sebagian anggotanya ke array lain dengan mudah (array slice). Variabel hash didefinisikan menggunakan karakter % diikuti nama variabel. Nilai­nilai anggota hash terdiri atas pasangan nama kunci dan nilai yang dipisahkan oleh  koma.3. 'bagong'  @arr4 = @arr1[1 . 1 # mencetak 'ukuran array : 10' 1 print “ukuran array : $#bil3 \n”.  'bagong'.  'petruk'. $t1 = $bil4[89].. 'petruk'.$#arr1] # semua kecuali 'semar' 3. $bil3[10] = 1234.  'gareng'.20.Hash Hash  menyimpan sekumpulan nilai yang menggunakan pasangan nama kunci dan nilai. Nama kunci dan pasangan dituliskan berurutan. # mencetak 'ukuran array : 3' print "ukuran array : $#bil4 \n". Contoh: Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  5 . dapat dipisahkan tanda koma atau  dapat juga dipisahkan oleh karakter '=>'. Membaca dari array dengan indeks yang lebih besar tidak akan menyebabkan error dan tidak  akan menambah ukuran array. Untuk membaca nilai anggota hash digunakan operator kurawal {} dan nama kunci.2.

 selengkapnya dapat dilihat dengan man perlop. 'manggis'. # dapat juga ditulis seperti ini %rasa_buah2 = ( 'asam'  => 'asem djawa'.  'pare'). 'manis'. $rasa = 'manis'.%rasa_buah1 = ('asam'. berikut ini beberapa operator yang  umum digunakan. 'pahit'   . # mencetak 'yang manis = manggis' print “yang $rasa = $rasa_buah2{$rasa} \n”. 3.3. + ­ * / '== '!= < > <= >= eq Concat (penggabungan) Aritmetika Penjumlahan Pengurangan Perkalian Pembagian Perbandingan Bilangan kesamaan Ketidaksamaan Kurang dari Lebih dari Kurang dari atau sama dengan Lebih dari atau sama dengan Perbandingan String kesamaan 6  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .       'manis' =>' manggis'. # mencetak 'yang pahit = pare' print “yang pahit = $rasa_buah1{'pahit'} \n”. 'asem djawa'.     'pahit'  =>  'pare'). Manipulasi String .Operator PERL memiliki banyak operator dan fungsi yang built­in.

  Contoh: print “saya”. } if ( $a gt $b ) { print “String $a secara alpabetis lebih besar dari $b”. string '0'. } else { print “Bilangan $a tidak lebih besar dari $b\n”. string '100' lebih kecil dari '8'.  list.  String dibandingkan secara alpabetis. } else { print “String $a secara alpabetis tidak lebih besar dari $b”.  TRUE dan FALSE dalam PERL  PERL tidak mengenal tipe data khusus untuk mewakili TRUE dan FALSE. } Operasi perbandingan menghasilkan nilai benar (true) atau salah (false). dapat juga tidak.4. $b = 8 if ( $a > $b ) { print “Bilangan $a lebih besar dari $b\n”.  selain nilai­nilai tersebut adalah TRUE. Dalam PERL nilai berikut ini adalah FALSE:  bilangan 0. atau keduanya. “PERL ”. Contoh: $a = 1 00. list kosong (). salah satu yang sudah diperkenalkan adalah  print. Secara alpabetis. Pemanggilan fungsi dapat menggunakan tanda kurung () diantara argumen.ne lt gt le ge Ketidak samaan Kurang dari  Lebih dari Kurang dari atau sama dengan Lebih dari atau sama dengan Perhatikan bahwa PERL menyediakan operasi pembanding string dan pembanding bilangan. 3. # sama dengan Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  7 .Fungsi PERL memiliki fungsi built­in yang kaya. Argumen sebuah fungsi dapat berupa skalar.  Fungsi printadalah fungsi yang menerima argumen list. Fungsi dapat menerima nol atau lebih argumen. “bela jar”. dan undef .

 'senin'. Bentuknya : if ( kondisi1) {     # statemen­statemen }  elsif (kondisi2) {     # statemen­statemen } elsif (kondisi3) {     # statemen­statemen } else { 8  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . $isdst) =  localtime. ($sec. 'rabu'.  Penjelasan untuk fungsi tertentu dapat dicari dengan perldoc -f <nama fungsi>. 'jumat'. 'nop'. Tentang  filehandle akan dijelaskan dibagian File Input dan Output. 'jun'. 'mei'.if Mengeksekusi statemen jika kondisi bernilai benar.5. 'selasa'. $min. print "Bulan $bulan[$mon] hari $hari[$wday] tgl $mday tahun  ". socket.  dipanggil tanpa  argumen: @bulan = ('jan'. yang mengembalikan list berisi data waktu.  'sabtu'). @hari = ('minggu'. Daftar fungsi built­in secara lengkap dapat dibaca dengan man perlfunc. $mon. $hour . 1 900+$year . dan process control. interprocess communication. “PERL ”). $wday . Fungsi dapat mengembalikan nilai skalar atau list. $year .5. 'okt'. “bela jar”. 'mar'. Berikut ini fungsi localtime. Fungsi print juga dapat menerima argumen skalar berupa filehandle dan list. Perlu diingat bahwa PERL pertamakali dikembangkan di lingkungan Unix.Konstruksi Kondisional Berikut ini konstruksi kondisional yang disediakan PERL 3. 'peb'.1. misalnya yang berhubungan  dengan file system.print (“saya”. network. 'des'). 'ags'. Contoh: bash% perldoc -f localtime 3. 'jul'. 'kamis'.  'sep'. $mday . 'apr'."\n". $yday . Untuk percabangan menggunakan elsif dan else. jadi akan banyak  ditemukan fungsi­fungsi yang familiar dengan sistem operasi ini.

 <ekpresi2>. } # terhadap list $p = 1.    # statemen­statemen } 3.for Digunakan untuk melakukan pengulangan berdasarkan 3 ekspresi yang masing­masing  untuk  :  memulai loop.6) { $p *= $q.foreach Digunakan untuk melakukan iterasi berdasarkan anggota sebuah array atau list. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  9 .'minggu'). f oreach $h (@hari) {     print "hari $h\n".unless Adalah kebalikan dari if. Bentuknya: f or ( <ekspresi1>.5.'kamis'. dieksekusi pada akhir loop  supaya kondisi untuk mengakhiri loop dapat dicapai.6. $i < $jumlah_pengulangan.Konstruksi Loop PERL mengenal beberapa jenis loop: 3.2. <ekspresi3>) { # statemen­statemen } Ekspresi yang umum digunakan adalah sebagai berikut: f or ( $i = 0. Bentuknya: f oreach <variabel_skalar> (<ekspresi list>) { } Contoh: # iterasi atas array @hari = ('senin'. f oreach $q (2.'sabtu'. menentukan apakah melanjutkan eksekusi loop.1.6. 3.'jumat'. $i++ ) { # statemen } 3.'selasa'.2..6.'rabu'.

Selanjutnya setiap baris dibaca dengan operator <>.while Loop dieksekusi selama kondisi adalah TRUE. } 3. '/etc/passwd').7.} print "faktorial 6 = $p\n". selanjutnya dapat ditulis dengan perintah print.  file dibuka dengan mode 'tulis': open($fh. Variable $fh adalah filehandle yang diperlukan untuk membaca dan menutup file. Bentuknya : while(kondisi) {   # statemen } 3.1.Membaca dari file teks Sebelum file dapat dibaca maka harus file dibuka dengan fungsi open. contoh: close($fh) 3. “> /path/ke/file”). Pertama. dengan mode “baca”. sebagai berikut: while($line = <$fh>) { # memproses $line } Setelah selesai file ditutup dengan fungsi close..7.6.Menulis ke file teks Perintah yang sama dengan program di atas dapat digunakan untuk menulis ke file.2.5]) {         print "$q\n".7. menggunakan file handle. sbb: 10  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .3. # atau terhadap array slice f oreach $q (@hari[2.  contoh: open($fh.Input dan Output ke file 3. Untuk keluar dari loop harus dengan  mengubah kondisi menjadi false atau menggunakan statement last.

 maka filehandle harus ditutup dengan close.  parameter yang dikirimkan ke subrutin dapat diakses dalam subrutin melalui array khusus @_  . “>$fbaru”) or die “gagal menulis $fbaru.. Berikut ini contoh membaca dari file dan menulis ke file baru. sehingga dapat  digunakan oleh berbagai program pemanggil.. } close($fh1).. $!”.$num) { $res *= $a. while($line = <$fh1>) { print $fh2 $line. “ digunakan sebagai error handler jika file tidak dapat dibuka..8.\n”. $fbaru = '/home/didi/copyprofile'. Beberapa subrutin biasanya didefinisikan dalam sebuah file tersendiri. open($fh1 .Subrutin Pada program aplikasi umumnya. Ekspresi  “or die . $fnam) or die “gagal baca $fnam. Seperti halnya dalam hal membaca. tapi PERL tidak mengenal named formal parameter.    # atau $res = $res * a } return $res. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  11 . close($fh2). kumpulan statemen yang mengimplementasikan sebuah  operasi tertentu didefinisikan dalam sebuah subrutin. berikut ini contoh subrutin sederhana yang menghitung nilai faktorial : sub faktorial { my ($num) = @_.. 3. atau mengcopy file: # mengcopy /etc/profile $fnam = '/etc/profile'.print $fh “baris teks yang ditulis . f oreach my $a (1 . my $res = 1. open($fh2.  Variabel khusus $! digunakan untuk menampilkan pesan error dari sistem. $!”. Berikut ini bentuk pendefinisian subrutin : sub <nama subrutin> { } Subrutin dapat menerima parameter.

Penutup PERL adalah bahasa pemrograman yang berdaya guna tinggi."\n". 12  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .} # return TRUE value 1.pl.  pembaca sangat dianjurkan menelaah manual PERL yang terdistribusi bersama  source code PERL. dalam program diatas digunakan bilangan 1. yang terus digunakan dan  dikembangkan oleh komunitas open source. PERL memiliki sistem dokumentasi yang sangat  lengkap.  Seperti halnya bahasa open source lain. faktorial(6).pl” print "Faktorial 6 = ". maka file tersebut harus  mengembalikan nilai TRUE. maka dapat  dipanggil dari program lainnya sebagai berikut: req uire “/home/didi/my lib/math. Perhatikan bahwa jika subrutin didefinisikan di file tersendiri. Penjelasan lebih lengkap tentang subrutin dapat dibaca dari man perlsub 4. Jika subrutin tersebut disimpan di file /home/didi/mylib/math.

II.3. Instalasi apache selesai 1. Konfigurasi dan kompilasi Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  13 .org. 7 3.3 tar gz .Instalasi module PHP dan PHP CLI: 1. Instal Apache.37 2.php.3 7 bash%  . Karenanya harus menginstal apache terlebih dahulu jika apache belum terinstal.Menginstal PHP PHP diinstal sebagai module apache dan sekaligus menginstal PHP CLI (command line  interpreter). 1. dukungan library Graphical  User Interface. sebagai aplikasi konsol atau desktop­based. Mengenal PHP PHP adalah bahasa pemrograman script yang dinamis.apache. pertama download dari httpd. 3. PHP adalah bahasa pemrograman yang kaya dengan library untuk pengembangan aplikasi  mulai dari dukungan ke berbagai database management system. nama­nama direktori (misal: /dir/instalasi/xxx/anda) dapat anda ubah  sesuai dengan keinginan anda. Uncompress disembarang direktori bash% tar zxvf apache_1 . sampai library untuk sistem administrasi.net 2. Download dari situs www. Program PHP dapat dijalankan sebagai  aplikasi web yang memerlukan web server dan dapat juga dijalankan menggunakan interpreter  PHP.3./configure –prefix=/di r/ in stal as i/ ap ach e/ and a ­­ enable­shared=max bash%  make 4.Instalasi Apache 1. dalam hal ini kami  menggunakan apache 1. Instal bash%  make install 5. 1.1.tar gz . .2.0.2.3. Uncompress di sembarang direktori bash% tar zxvf php­5. Konfigurasi dan kompilasi bash%  cd  apache_1 . Berikut ini cara instalasi PHP 5 dari source code.

php /dir/instalasi/apache/anda/htdocs/ Lalu akses URL ini dengan web browser pilihan anda: http://localhost/salam.Aplikasi Konsol Buat program salam. Instal bash%  make install 5. ?> Pastikan PHP CLI ada di PATH dengan perintah: bash% export P ATH=/dir/instalasi/php/anda/bi n:$P ATH Jalankan program dengan perintah php bash% php salam./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. contoh­contoh  dijalankan menggunakan server web.php ke  document root dari server apache anda: bash% cp salam.2. contoh­ contoh dijalankan menggunakan PHP CLI (Command Line Interface).Bahasa PHP Bagian ini membahas PHP sebagai bahasa pemrograman umum (general purpose).bash%  cd   php­5.php 2. Brother \n”.2. keluaran ditampilkan menggunakan klien web.Menjalankan Program PHP Program PHP dapat dijalankan dengan 2 modus: 2. Instalasi module php dan php­cli selesai 2. 14  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .1.Aplikasi web Agar dapat dieksekusi melalui aplikasi web maka anda perlu menyalin (copy) salam.php 3.php berikut ini disebarang direktori: <?php echo “assalamu'alaikum. Pada bagian Aplikasi Web dibahas PHP sebagai bahasa  pemrograman web.0 bash%  .

Semua contoh program dalam tulisan ini tidak menuliskan tag pembuka <?php dan   penutup ?> untuk menghemat ruang/kertas.3. 3.  Tag pembuka blok adalah <?php dan penutupnya adalah ?>. PHP mengenal 3 jenis tag  pembuka lainnya yang tidak direkomendasikan pada manual PHP. kecuali jika ada bagian program yang   menggunakan statemen non­PHP.Program PHP File program PHP adalah file teks yang dapat dibuat dengan editor teks biasa (misal: vim.Komentar PHP Mengenal 3 jenis komentar: 1. Diawali dengan // . Sebuah program PHP dapat terdiri 2 jenis statemen:  ● ● statemen PHP yang dibatasi oleh tag tersebut statement non­PHP (misal: HTML.  gedit. Contoh: // komentar 1 echo 'string satu'. tab. # komentar 3 /*  komentar 4 . juga  whitespace di antara token­token dalam statemen. berlaku untuk lebih dari 1 baris. XML)  Kedua jenis statemen dapat berselang­seling lebih dari satu kali dalam program. Ketiga jenis komentar dapat berada pada baris tersendiri atau dibelakang statement."\n". Sebuah file program PHP paling sedikit terdiri atas satu baris statemen yang dibatasi oleh tag  pembuka blok statemen dan tag penutup blok statemen."\n". kedit). PHP mengabaikan whitespace (spasi. berlaku hanya untuk 1 baris  2."\n". Diawali dengan #. di antara token */ 'string tiga'. dan karenanya tidak  dibahas disini.1. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  15 . dapat juga  digunakan untuk menyisipkan komentar diantara token. komentar ini   melintas beberapa baris   */ echo /* komentar 5. Diawali dengan /* dan diakhiri */ . // komentar 2 echo 'string dua'. WML. berlaku hanya untuk 1 baris 3. baris­baru) sebelum dan sesudah statemen.2.

Literal string dapat ditulis dengan 3 cara : 16  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . atau TRUE adalah sama.3. octal (dengan prefix  '0') atau hexadecimal (dengan prefix 0x).' untuk pembatas pecahan desimal. 1234567 89 0.1.Tipe Data PHP membedakan operasi yang dapat dilakukan terhadap setiap tipe data.1. Integer literal dapat dituliskan sebagai desimal (default.float Literal float menggunakan '.1.3.Integer Integer atau bilangan bulat di PHP tidak membedakan panjang byte (long atau integer biasa). 3. 1234567 89 1234567 89e­9 123.3.  keduanya adalah integer.1. 3.3. true.4. Pada contoh berikut ini ke 4 bilangan yang ditulis dengan cara berbeda adalah sama besarnya: . tanpa prefiks).4567 89e­4 3.string String dalam PHP adalah dereten karakter. Contoh: 1234567 890         # desimal 0 1234567           # octal 0x1234567 89abcdef  #hexadecimal 3. keduanya case­insenstive. Jadi True.2.3.Boolean PHP mengenal tipe boolean yaitu : TRUE dan FALSE.Tipe Primitif Tipe primitif adalah tipe data dasar yang tidak dapat dibagi lagi (decompose) atas tipe data  yang lebih dasar lainnya.3.1.3.3. 3. dan menggunakan simbol e  untuk pangkat desimal.1.

3.2.1.Tipe Gabungan (compound) Tipe gabungan adalah tipe yang dapat dibagi (decomposed) menjadi tipe yang lebih  sederhana.3. Contoh: <<<Ini_Delimiter_heredoc Berikut ini adalah string dalam heredoc.3.2.1.3.Heredoc Sintak heredoc memperlakukan string seperti double quote. yang dimulai  hanya dengan karakter non digit atau garis bawah.Array Array di PHP pada dasarnya hanya ada satu jenis yaitu ordered map. Contoh $a = array(     'php' =>'aplikasi web'. 3. hanya saja menggunakan  delimiter yang berbeda. yaitu deretan karakter alpahanumeric atau garis bawah. PHP mengenal 2 jenis tipe gabungan: 3.3. Array di PHP dapat  disamakan dengan associative array pada bahasa pemrograman lainnya (misal: PERL).     'c' => 'aplikasi system'. yaitu  merupakan deretan  pasangan key dan value yang berurutan sesuai dengan urutan  penyimpanan. Bedanya adalah array di PHP dapat diakses seperti list atau array ber­indeks integer berbasis 0  (zero based indexed) Array dibuat menggunakan constructor array().2. tab) dan tidak  melakukan ekspansi variabel 3. ini ganti baris \n dan ini carriage return \r tulisan ini akan menimpa 'dan ini carriage return' Ini_Delimiter_heredoc.4.Petik Tunggal String dengan petik tunggal tidak mengenal karakter khusus (baris baru.3.4.1.Petik ganda String dengan petik ganda mengenal karakter khusus (baris baru.     'perl' =>'otomatisasi sysadmin'.1. tab) dan melakukan  ekspansi variabel 3.1.4. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  17 .3.      'python' =>'aplikasi desktop'.

”\n” # ruby 3. Salah satu konteks yang memerlukan tipe boolean adalah statemen kondisional (misal: if). 3.3.0 (zero)  ● string kosong.     'java' => 'aplikasi enter prise' ).Objek Tipe data ini menyimpan referensi ke instance class. ”\n” # php echo $b[1]. echo 'php tepat untuk ' .3.Resource Resource adalah tipe khusus yang menyimpan referensi ke resource eksternal.2.NULL  Menyatakan ketiadaan nilai.3.    'ruby' => 'aplikasi web'. ”\n” # python echo $b[4].3. Pembahasan selengkapnya ada di bagian Class.1. Tipe data objek dibuat menggunakan  constructor class. $a['php'].3.'ruby'.3. tipe data ini hanya memiliki satu nilai: NULL 3.4.'python'. ● 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 .2."\n".'c'. 3.'java').Konversi ke boolean  PHP melakukan konversi dari tipe data lain ke boolean dalam konteks yang memerlukan tipe  boolean berdasarkan aturan yang jelas.'perl'.2. $a['python']. Array ber­indeks integer juga dapat dibuat dengan constructor array yang sama: $b = array('php'.3. dan string "0" ● array yang tidak mempunyai elemen.3. echo 'python cocok untuk ' . Semua nilai berikut ini akan dianggap FALSE oleh PHP: ● boolean FALSE ● integer 0 (nol)  ● float 0.Tipe Khusus 3. echo $b[0]."\n".

. $a = 1234.4. echo $a.  # X $k1 juga berubah = 22 7 Untuk mendapatkan hasil yang sama di PHP 4. 6. $a = 1 000. $k2­>X += 222. # $b berisi sama dengan a Pada PHP 5. 1 /* REQUIRE PHP 5 */ . 3.4.Variabel Variabel digunakan untuk menyimpan data. tidak  menyebabkan adanya data baru.         $this­>Y = $y . atau tidak  menghasilkan data baru tapi hanya menghasilkan referensi baru.5). } 9. $b = $a. Variabel tidak perlu dideklarasikan sebelum diberi nilai. 2. 1. $y) { 5.       # X di $k2 diubah = 22 1 7 12.  baris 10 ditulis sbb: $k2 =& $k1. Assignment ke variabel dapat menghasilkan data baru (dengan nilai yang sama). $c = “string  ini bergabung dengan '$b' “. tapi hanya menghasilkan referensi baru. class Koordinat 3.$k2 = $k1. assignment dari variabel (yang di­assign ke) objek ke variabel lain. { 4.3.     function Koordinat($x.echo $k1­>X  . $b = 'ini adalah string'. Reference assignment =&.1. $b. juga dapat digunakan untuk variabel primitif: Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  19 . $k1 = new Koordinat(5. Jika ekspresi mengacu ke variabel yang belum didefinisikan tidak menyebabkan error. perlu menggunakan reference assignment =&.         $this­>X = $x. $c. 1 0."\n". “\n”. selanjutnya data dimanipulasi melalui variabel.Assignment Variabel diberi nilai (= data)  melalui assignment.     } 7 8.

 ketika yang ingin dilakukan adalah uji kesamaan  (equality ==) : # program berikut ini contoh penggunaan ekspresi yang SALAH $a = 123. Assignment dalam PHP memiliki nilai dan adalah ekspresi juga. $c = $a + $b.Operator aritmetika Berlaku untuk tipe data bilangan.5  $c = $a % $b. pemanggilan fungsi yang mengembalikan nilai. penjumlahan.  // modulus.  // pembagian . } Pada bagian berikutnya dibahas berbagai operator.1.  // pengurangan . ”\n”. seharusnya $a == 1 00 000 echo “$a sama dengan 1 000\n”. $y =& $x. hasil operasi.  // perkalian . if ($a  = 1 0) { # selalu TRUE. echo $x . $y += 300. hasil ­1 0 $c = $a * $b. hasil 1 0 20  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .  hasil 30  $c = $a ­ $b. Hal ini dapat menjadi  sumber error yang tidak mudah ditemukan. perkalian. 3. Ekspresi meliputi nilai literal.5. hasil 200 $c = $a / $b. setiap penjelasan langsung menggunakan  contoh. $a = 1 0. } $b = 0. modulus. pengurangan.5.  termasuk assignment. pembagian. $b = 20.Ekspresi dan Operator Ekspresi adalah segala sesuatu yang memiliki nilai.$x = 200. # 500 3. hasil 0.  // penjumlahan . if ($b  = 0 ) { # selalu FALSE seharusnya $b ==  0 echo “$b sama dengan 0\n”.

1.Operator incrementing/decrementing Menambah atau mengurangi bilangan dengan 1. // ternary $hasil =  true ? 'benar':'salah'. // pre­increment echo "b == $b . a == $a \n". $b == 1 0 $a += 1 0. a == $a \n". $c == 20 3.4. pre­decrement. $a = 1 0. a == 1 1 $b = ++$a. a == 1 1 $b = ­­$a. $b == 20.3. // $c == 40. Berikut ini operasi dan contohnya: 3. // $a == 20 $c = ($b += 1 0) + $a. a == 1 0 3. // $c == 20.Operator assignment Assignment menghasilkan nilai baru sesuai nilai expresi disebelah kanan operator =. terdiri atas: post­increment.    // b == 12 . a == $a \n". // post­increment echo "b == $b .    // b == 1 0 .5.4.5. a == 12 $b = $a­­.5. $a = 1 0. pre­increment. // pre­decrement echo "b == $b .    // b == 12 .3. a == $a \n".5.2. $b = $a++.Ternary ekspresi1 ? ekspresi2 : ekspresi3 Operator '?' ini mengembalikan nilai ekspresi2 jika ekspresi1 bernilai TRUE dan  mengembalikan nilai ekspresi3 jika ekspresi1 bernilai FALSE.    // b == 1 0 .Operator Perbandingan Membandingkan antara 2 nilai. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  21 . $c = ($b = 1 0) + $a. // post­decrement echo "b == $b . post­decrement.

  // true 3. // benar $hasil =  false ? 'benar':'salah'.  // true // not eq ual $a = 1 0. "\n".4.Identical ekspresi1 === ekspresi2 Operator '===' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 samadengan nilai  ekspresi2 dan tipe data kedua nilai ekspresi sama.5. jika tipe data kedua ekspresi berbeda maka sebelum operasi dijalankan ekspresi2  dikonversikan tipe datanya ke tipe data ekspresi1.2. $c = 1 0. $b = '1 0'. "\n". // not eq ual $a = 1 0. echo $a <> $b ? 'true':'false'  .  // false echo $a != $c ? 'true':'false'  .3.4. echo $a != $b ? 'true':'false'  . echo $hasil .5.  // true 3. // identical $a = 1 0. "\n".Equal ekspresi1 == ekspresi2 Operator '==' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 samadengan nilai  ekspresi2.5.echo $hasil . $b = '1 0'.Not Equal ekspresi1 != ekspresi2 ekspresi1 <> ekspresi2 Operator '!='  dan '<>' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 tidak  samadengan nilai ekspresi2. echo $a === $b ? 'true':'false' . $c =1 1. "\n". $b = '1 0'. "\n". // salah 3. "\n". "\n".  // false echo $a === $c ? 'true':'false' . // eq ual $a = 1 0.4. "\n".  // false 22  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . $c =1 1. echo $a == $b ? 'true':'false'  . jika tipe data kedua ekspresi berbeda maka sebelum operasi  dijalankan ekspresi2 dikonversikan tipe datanya ke tipe data ekspresi1.4. $b = '1 0'.

5. echo $a !== $b ? 'true':'false'  . $c = 1 0. greater equals(>=).5. smaller than(<)."\n".  // true 3.echo $a <> $c ? 'true':'false'  ."\n". "\n". $b = '1 0'. //  FALSE echo (false and false)?'true':'false'."\n". // true echo $a >= $c ? 'true':'false' .  // false Operator greater than(>).5.Operator Logika 3. echo $a > $b ? 'true':'false'  . //and  echo (true and true)?'true':'false'. // not identical $a = 1 0.5."\n"."\n". $b = 1 1. smaller equals (<=) ekspresi1 > ekspresi2 ekspresi1 < ekspresi2 ekspresi1 <= ekspresi2 ekspresi1 >= ekspresi2 Keempat operator ini membandingkan nilai ekspresi1 dan ekspresi2. //   TRUE echo (true and false)?'true':'false'.4.1.5.Logical AND ekspresi1 and ekspresi2 Menghasilkan nilai TRUE jika ekspresi1 dan ekspresi2 keduanya bernilai TRUE. operasi baru dijalankan  setelah melakukan konversi tipe jika ekspresi2 berbeda tipedata dengan ekspresi1 $a = 1 0. "\n". // true echo $a <= $c ? 'true':'false' . "\n".5. //  FALSE Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  23 .  // true echo $a !== $c ? 'true':'false'  ."\n".Not Identical ekspresi1 !== ekspresi2 Operator '!=='  hanya menghasilkan nilai TRUE jika nilai ekspresi1 tidak samadengan nilai  ekspresi2 dan tipe data kedua nilai ekspresi sama. $c = 1 0."\n". // true 3. // false echo $a < $b ? 'true':'false'  .

5.Logical XOR ekspresi1 xor ekspresi2 Operator XOR menghasilkan nilai TRUE jika salah satu dari ekspresi1 dan ekspresi2 bernilai  TRUE."\n"."\n". dan menghasilkan  nilai FALSE  jika ekspresi1 bernilai TRUE. //   TRUE echo (true && false)?'true':'false'. //  FALSE 3.5.5.5.Logical AND (&&) Samadengan operator AND sebelumnya tapi precedence nya lebih tinggi.5.6.5."\n".  // && echo (true && true)?'true':'false'."\n"."\n".5. //  FALSE 3. //   TRUE echo (false xor false)?'true':'false'. tapi tidak kedua­duanya. 3. // xor echo (true xor true)?'true':'false'. // or echo (true or true)?'true':'false'.5.5. //  FALSE 3.Logical OR (||) Samadengan operator OR sebelumnya  tapi precedence nya lebih tinggi.Logical OR ekspresi1 or ekspresi2 Operator OR menghasilkan nilai TRUE jika ada salah satu dari ekspresi1 dan ekspresi2  bernilai TRUE.3. //   TRUE echo (true or false)?'true':'false'.4. // || echo (true || true)?'true':'false'.3. //   TRUE 24  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . //   FALSE echo (true xor false)?'true':'false'."\n"."\n"."\n".2.5.Logical NOT ! ekspresi1 Operator NOT menghasilkan nilai TRUE jika ekspresi1 bernilai FALSE."\n". //  FALSE echo (false && false)?'true':'false'."\n".5. //   TRUE echo (false or false)?'true':'false'.

Bitwise XOR b1 ^ b2 Menghasilkan bit yang di­set jika salah satu dari bit1 dan bit2  di­set.Bitwise AND b1 & b2 Menghasilkan bit yang di­set jika bit1 dan bit2 juga di­set.6. //  8 = 1 000 3.6."\n".5."\n".5.5."\n".3. 3. tapi tidak keduanya.Operator  bit Operator ini berlaku untuk integer dan karakter ASCII.  3. // FALSE echo (true xor false or true) ? 'true':'false'.echo (true || false)?'true':'false'. echo 9 ^ 1 0."\n".5.1.6. dan kebalikannya Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  25 . //  FALSE Operatir || lebih tinggi precedencenya dari or echo (true xor false || true) ? 'true':'false'.  // TRUE PHP melakukan optimasi pada ekspresi yang menggunakan operator logika."\n". Begitu juga pada contoh berikut: ekspresi1 || ekspresi2 || ekspresi3 Pada ekspresi tersebut jika ekspresi1 bernilai TRUE maka ekspresi2 dan ekspresi3 tidak akan  dieksekusi."\n"."\n". //  3 = 00 1 1 Bitwise NOT ~b1 Menghasilkan bit yang di­set jika b1 tidak di­set.6. //   TRUE echo (false || false)?'true':'false'. Contoh: ekspresi1 && ekspresi2 && ekspresi3 Pada ekspresi tersebut jika ekspresi1 bernilai FALSE maka ekspresi2 dan ekspresi3 tidak  akan dieksekusi.2. //  9 = 1 1 00 // 1 0 = 11 00 echo 9 & 1 0.Bitwise OR b1 | b2 Menghasilkan bit yang di­set jika salah satu dari bit1 dan bit2  di­set echo 9 | 1 0. // 1 1 = 11 01 3.

 //  5 = 00 11 3. $b = 'bela jar php'.Shift left (geser bit ke kiri) b1 << n Menggeser bit b1 sebanyak n ke kiri. } elseif ($tebak > $ditebak) {     echo("terlalu besar\n"). Setiap pergeseran satu bit sama dengan “kalikan dengan 2” echo 1 0 << 1 .. echo "ayo tebak: ". Setiap pergeseran satu bit sama dengan “bagi dengan 2” echo 1 0 >> 1 .'.. $b.6. $c = $a . "\n". lalu membandingkan  dengan yang ada di program: $ditebak = 123.6..Kendali Alur Program 3.bela jar php' 3. if($tebak == '') {     echo("kosong!\n"). } elseif($tebak < $ditebak) {     echo("terlalu kecil\n"). // 20 = 11 000 Shift right (geser bit ke kanan) b1 >> n Menggeser bit b1 sebanyak n ke kanan.. Contoh: $a = 'saya.1.Operator String Operator dot (titik) digunakan untuk menggabungkan string dengan string atau tipe data  lainnya.  // 'saya.Conditional Statemen if elseif else digunakan untuk menguji beberapa kondisi. Berikut ini contoh program membaca bilangan dari stdin (keyboard). $tebak = chop(fgets(STDIN)). "\n".5.7. 26  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

 do while.. for Menggunakan 3  blok ekspresi yang dieksekusi secara berbeda:  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  27 .switch  Switch dapat digunakan sebagaimana if elseif  else. bleek . } 3.Struktur loop Struktur loop adalah struktur untuk melakukan iterasi atau pengulangan eksekusi satu atau  beberapa statement..\n"."\n". PHP memiliki beberapa struktur loop: for.         break.2.."\n". 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". switch($pilih) {     case 1:          echo "yum yum yum\n".         break..         break.slur p. while.} else {     echo 'benar . echo "pilih: ".'.     default :         echo 'tidak ada'.\n".. tapi lebih tepat lagi digunakan untuk  mengevaluasi sebuah kondisi lalu membandingkan hasil evaluasi tersebut dengan literal  integer atau string. $pilih = chop(fgets(STDIN)).3. } 3.6.     case 3:          echo "yaak ..6.     case 2:          echo "slur p. foreach.

 nilai $a dikurangi 1 4. } Jika ekspresi blok kedua adalah kosong.6. Statement for dieksekusi dengan langkah­langkah sebagai berikut : 1. 2. $b += $tmp) { echo $b. $tmp=$a. Ketiga blok dapat terdiri lebih dari satu ekspresi. 3. Jika blok  kedua terdiri lebih dari satu ekpresi maka blok ekspresi tersebut diperlakukan seperti halnya  jika koma diganti dengan operator || (logical operator or). 3. { 6. $n = chop(fgets(STDIN)).  jika benar maka blok  for mulai di­eksekusi (antara baris 5 dan 7).1. dan  hanya dapat keluar dari dalam blok dengan statemen break. Sebelum mengulang eksekusi loop. f or($a = 0. echo "$faktorial \n". $a­­) 5.3. $b = 1. f or($a = $n. . Kembali ke langkah 2. $b < $maks. $faktorial = 1. 3. setiap kali di awal loop di evaluasi nilainya untuk menentukan apakah eksekusi loop  berikutnya akan dilakukan 3. Pada awal eksekusi statemen for nilai $a di set sama dengan $n (baris 4). $maks = chop(fgets(STDIN)). maka loop for akan dieksekusi tanpa berhenti.). $a = $b. Masih di baris 4: diperiksa apakah $a masih lebih besar dari 0. langkah ini  hanya dilakukan satu kali saja. yang dipisahkan oleh koma (.while Statemen while digunakan untuk menjalankan pengulangan selama ekspresi dalam while  adalah TRUE." ". 4.1. satu kali di awal eksekusi statemen for 2. setiap kali di akhir loop 1 echo "hitung faktorial dari :". } 7 8. $a > 0. 28  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . 2. # pembangkit fibonacci echo "hitung fibonacci sampai: ". .     $faktorial *= $a. jika tidak benar maka eksekusi statemen  for berakhir.

$faktorial = 1. } echo "$faktorial \n"."\n".'. $a = $b.     $a­­. $b = 1. } 3.Contoh pada penghitung faktorial jika menggunakan while: echo "hitung faktorial dari :".     $tmp=$a.     } elseif ($tebak > $ditebak) {         echo("terlalu besar\n"). $maks = chop(fgets(STDIN)). Blok dalam loop akan dieksekusi selama  ekspresi yang diuji dalam while bernilai TRUE.. $ditebak = 123.     if($tebak == '') {         echo("kosong!\n")." ". $b += $tmp. while($a > 0) {     $faktorial *= $a. do {     echo "ayo tebak: ".. Pembangkit deret fibonacci menggunakan statement while: # pembangkit fibonacci echo "hitung fibonacci sampai :". Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  29 . while($b < $maks) {     echo $b.     } elseif($tebak < $ditebak) {         echo("terlalu kecil\n").2.     $tebak = chop(fgets(STDIN)).do while Loop do­while dieksekusi minimum satu kali.3. $a = 0.     } else {         echo 'benar . $a = chop(fgets(STDIN)).6.

  echo "lanjut? ".3.   while(true) {  # loop 2 4.     $tebak = chop(fgets(STDIN))."\n".    } else { 1 3. Diperlukan statemen break (baris 19) dari loop 1 untuk dapat  keluar dari loop tersebut.3. 4.         echo("terlalu besar\n").'. 1 5. 7 8. maka eksekusi beralih ke  loop luar.         echo("terlalu kecil\n"). 1         break.  if($ya == 'n') break. 1 $ditebak = 123.  ya = chop(fgets(STDIN)). while(true) { # loop 1 3.. Tapi jika loop tersebut ada di dalam loop yang lain.        echo 'benar . 1 7 1 8.. tapi tidak  mengeluarkan dari loop 1. 1 0.         echo("kosong!\n").    } elseif ($tebak > $ditebak) { 1. 6.    } 1   }  # akhir loop 2 6.3. . 1 12.6. 5. . 3.break  Statement break digunakan di dalam loop untuk mengubah alur eksekusi sehingga keluar dari  loop tersebut. 1 9.     } elseif($tebak < $ditebak) { 9.continue Statemen continue digunakan untuk mengubah alur eksekusi program agar segera  30  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .     echo "ayo tebak: ".    } } while($tebak != $ditebak) 3.  Perintah break pada baris 14 hanya mengalihkan eksekusi dari loop2 ke loop 1. 2.} # akhir loop 1 Perhatikan pada contoh ada 2 loop (dimulai dari baris 2 dan 3) .6.   20. tepat setelah akhir loop dalam tersebut.     if($tebak == '') { .4.

.         echo "ayo tebak: ".         } elseif ($tebak > $ditebak) {             echo("terlalu besar\n").             break.         if($tebak == '') {             echo("kosong!\n").         else             $coba = 0. $min_coba = 3.30.20. $coba = 0.50). } Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  31 .         $tebak = chop(fgets(STDIN)). ada 2 bentuk  untuk array dengan indeks integer mulai dari 0: $array = array(1 0.         } elseif($tebak < $ditebak) {             echo("terlalu kecil\n").         } else {             echo 'benar .menjalankan iterasi berikutnya sehingga statemen­statemen di bawah statemen continue ini  tidak dieksekusi.         echo "menyerah?[y/n] : ".         $insap = chop(fgets(STDIN)). "\n"."\n".         }         if($coba < $min_coba) continue.'.6.foreach Statement foreach digunakan khusus untuk mengiterasi array.. while(true) {         $coba++. } 3. $ditebak = 123.40.3. f oreach($array as $value) {         echo $value .5.         if($insap ==  'y')             break.

7."\n". dapat memudahkan penanganan error. Return value seharusnya hanya digunakan untuk  mengembalikan hasil komputasi. Untuk mengakibatkan exception program menggunakan statement throw. } Melalui penggunaan exception secara tepat. dan tidak pernah mengembalikan signal (kode) error.3.$e. $value . '.3.6.6.     echo 'baris ini akan diabaikan'.return Mengubah alur eksekusi sehingga baris­baris berikutnya tidak dijalankan lagi. 32  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .. Exception adalah cara alternatif untuk pen­signal­an error yang lebih baik dari cara  konvensional menggunakan return value. 'nama'=> 'susu sapi'. 'satuan'=> 'liter'). f oreach($hash as $key => $value) {         echo $key . "\n". Untuk menangani exception digunakan konstruksi blok try dan catch. yang menjadi  parameter dari throw adalah objek Exception. Konstruksi blok try{}  berisi statemen yang dapat mengakibatkan terjadinya exception. } 3. Exception baru dikenal pada PHP 5.  konstruksi catch terdiri atas bagian deklarasi object exception yang ditangani dan bagian blok  statemen yang menangani objek exception tersebut. Contoh: try {     echo 'baris berikutnya akan menghasilkan exception'. } catch (Exception $e) {     echo 'ada exception. 3. Jika digunakan dalam fungsi statemen return dapat digunakan untuk mengembalikan nilai ke  pemanggil fungsi.Exception Exception adalah object yang digunakan untuk mengubah ekselusi program ketika terjadi  kesalahan (error)."\n".     throw new Exception('error yg disenga ja'). ' => '."\n".6.untuk array asosiatif: $hash = array('kode'=> 'A123'.  'harga'=>  12000.

 hanya mencetak bentuk piramida ke stdout: function piramida() {     $t = 20. $j=0. dan  sejenisnya. Berikut ini contoh fungsi yang tidak menerima parameter fungsi.Fungsi PHP mengenal 3 jenis fungsi: 1.     } } Fungsi piramida. Fungsi dapat menerima nol atau lebih parameter fungsi dan dapat menghasilkan nilai  keluaran.7.3. menggunakan fungsi built­in str_repeat untuk menghasilkan string yang ber­ ulang. Fungsi yang didefinisikan oleh pengguna bahasa PHP (user defined function) Fungsi jenis ini dibuat sendiri oleh pengguna bahasa PHP.     f or($i = $t. 3. 2.7. piramida(). dan tidak mengembalikan  nilai  . Fungsi jenis ini baru tersedia setelah user menginstal extension module tertentu. $j++) {        echo str_repeat(' '. Fungsi yang merupakan bagian dari PHP (bult­in) Fungsi ini selalu tersedia untuk digunakan. Fungsi yang dibahas pada bagian ini adalah yang terakhir. PHP 5 mendukung jumlah parameter fungsi yang panjangnya tidak tertentu. 3. Berikut ini contoh fungsi yang menghasilkan deret fibonacci yang dikembalikan sebagai  array.Mendefinisikan Fungsi  Fungsi didefinisikan menggunakan keyword function. $i­­. menerima parameter fungsi bilangan maksimum : function fibonacci($max) { Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  33 . $j*2+1). baru tersedia jika definisi  fungsi dimasukkan ke dalam scope program melalui statement : require. diikuti nama fungsi. $i). include."\n".        echo str_repeat('^'. $i > 0.1. Fungsi yang disediakan oleh extension module. dapat pula tidak.

 $b+$a). . return) 34  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . dapat ditentukan  nilai defaultnya. " ".Nilai Default untuk parameter Untuk parameter fungsi bertipe skalar (numerik. dan mengembalikan deretan bilangan dalam bentuk array.   while. $b=1) {     if($b < $max) {             echo $b. 1     $i = 1.2.Pemanggilan Fungsi Pemanggilan fungsi harus selalu menggunakan kurung. tapi echo adalah language construct (seperti halnya if.             echo $z. bukan objek) . Pada contoh­contoh sebelumnya echo seringkali dipanggil tanpa kurung. baik untuk fungsi yang menerima  parameter maupun yang tidak.7.             $a[++$i]= $z. 3. # rekursi     } } fibonacci(1 00). $b.    $a = array(1 )."\n". $a=0.             fibonacci($max.3. Berikut cara  pemanggilannya: $deret = fibonacci(1 00). for. # mengembalikan array } Fungsi ini menerima parameter $max untuk membatasi bilangan terbesar yang akan  dihasilkan.     while(true) {             $z = $a[$i]+$a[$i­1]. array. Parameter default memudahkan penggunaan fungsi. print_r($deret) # cetak array 3. hal ini karena echo  sesungguhnya bukanlah fungsi.     }     return $a. contoh mencetak bilangan fibonacci secara rekursif : function fibonacci($max.             if($z > $max) break.7. string.

 badan (implementasi) class dibatasi oleh kurung kurawal. $this­>j + $v­>j).     }     /* @return panjang vektor */     function to_skalar() {         return sqrt($this­>i * $this­>i + $this­>j * $this­>j). Mendefinisikan class Class didefinisikan menggunakan keyword class diikuti nama class yang biasanya diawali  dengan huruf kapital. Berikut ini class Vektor: class Vektor { // awal definisi     /* constructor */     function Vektor($i.3. // member variable j     }     /* @return vektor */     function tambah($v) {         return new Vektor($this­>i + $v­>i. $this­>j * $skalar). Class memudahkan enkapsulasi data dan reusabilitas kode program. Sebuah class dapat memiliki method khusus untuk meng­inisialisasi­kan objek dari class  tersebut yang disebut constructor.Class PHP sebagai bahasa yang mendukung pemrograman ber­orientasi objek (Object Oriented   Programming) mengenal struktur class.     }     /* method khusus untuk merepresentasikan sbg string (hanya di PHP  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  35 . Sebuah class dapat memiliki satu atau lebih method. Jika constructor tidak didefinisikan maka  PHP menyediakan default constructor. // member variable i         $this­>j = $j. Class dapat mendefinisikan member variabel.     }     /* @return vektor */     function kali($skalar) {         return new Vektor($this­>i*$skalar . yaitu fungsi yang berasosiasi dengan  class atau objek dari class tersebut. yaitu variabel yang hanya dapat diakses melalui  object dari class tersebut.8. constructor adalah method pertama dari class yang  dieksekusi sebelumnya objek tersebut dipanggil. $j) {         $this­>i = $i. Member variabel dapat didefinisikan langsung dalam method  melalui objek khusus $this.

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"; . echo '$v3­>i == ', $v3­>i ,"\n"; 7 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

php").'pangsit basah'.  '03'=>'T ong Seng').'bakso'          ).'nasi' . Header juga cocok untuk menempatkan include ke file­file yang menyediakan class­class atau  fungsi­fungsi yang diperlukan oleh aplikasi.3.File ordersvc.     // constructor     function OrderSer vice() { Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  39 .Seperti halnya $_GET.php File ini berisi definisi class yang diperlakukan aplikasi untuk memproses pesanan.     private $pilihan = array (         '0 1' => array(                 'cabe &gt 0'.'banyak sayuran'.'banyak daging'. "Irfan Mahdi").'banyak kuah'          ) ).3.1.         '02' => array(                 'pangsit kering'. variabel ini juga array assosiatif. agar tampilan konsisten. req uire_once("ordersvc.File head.         '03' => array(                 'banyak tulang'.php Berisi header untuk setiap halaman web. Contoh aplikasi web sederhana: Berikut ini contoh aplikasi web sederhana yang menerapkan berbagai subyek yang sudah  dibahas. <?php define ("PEMILIK".2.Penjelasan Program 4. <?php  class OrderSer vice {     private $produk = array('0 1'=>'Gado­gado'.3. ?> <html><body> <h1>Warung Web</h1> 4. '02'=>'Bakmi A yam'. 1          ).'ketupat'. 4.

php Menampilkan menu pilihan: <?php include('head. $kirimke.     }     // proses pesanan     function proses_pesanan($prod.    }     // @return daftar produk     function produk() {             return $this­>produk.3. '.             f oreach($konfig as $d) {                 echo '<li>'.         } else {                 echo "Anda memilih menu standard<br>\n".File menu. $this­>pilihan[$prod][$d]. $konfig)      {         echo 'T erimakasih.  kalau kebetulan lewat.         if($konfig) {             echo '<ul>'.<br/>\n".             }             echo '</ul>'..         }     } } ?> 4.     }     // @return pilihan     function pilihan($prod) {             return $this­>pilihan[$prod].3.         echo "Kami segera mengirimkan pesanan ke <em>$kirimke</em>."\n".php') ?> Selamat datang di warung <em><?php echo PEMILIK?></em><br/> Apa yang anda inginkan: 40  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source ."</li>\n".

if (!empty($_POST)) {         $konfig = $_POST['konfig'].             $sudahpesan = true. $kirimke.php?prod='.File pesan.php Untuk memproses pesanan.'">'. $konfig)."\n".$value.<ol> <?php  $os = new OrderSer vice().         $kirimke = $_POST['kirimke']. } ?> </ol> <?php include('tail. Jika pesanan sudah diproses form tidak ditampilkan lagi <?php include('head. ?> 4.'</li>'. dan menampilkan response.4.$key .         } } if (!$sudahpesan) { Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  41 .php').         if(empty($kirimke)) {             echo "mau dikirim kemana?\n".php').3.         $prod = $_POST['prod'].         }         else         {             $os­>proses_pesanan($prod. $os = new OrderSer vice(). f oreach($os­>produk() as $key => $value) {     echo '<li><a  href="pesan.

?>"></td> </f m> or <?php } include('tail. $options = $os­>pilihan($prod). "</option>\n".?> <f m method="post"> or <table sty le="border : 1px solid. background­color : lightgreen. $i = 0.  $i++.Penutup PHP adalah bahasa pemrograman yang relatif mudah dipelajari. $value.php'). ?> 5.padding: 1 0px 1 0px 1 0px 1 0px. } ?> </td> <tr><td>kirim ke alamat</td><td> <input type="text" name="kirimke" value=""></td> <tr><td colspan="2"> <input type="submit" name="ok" value="Pesan"> </td></tr> <input type="hidden" name="prod" value="<?php echo $prod."> <tr><td> Konfigurasi </td><td> <?php  $prod = $_GET['prod']. PHP saat ini adalah bahasa pemrograman web paling populer. f oreach($options as $value) {     echo '<input type="checkbox" name="konfig[]" value="'.'">'. Jika anda baru mulai mengembangkan aplikasi web pastikan anda lebih dahulu menguasai  42  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . sehingga dukungan library  untuk aplikasi web dengan PHP cukup kaya.

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  43 .HTML (Hypertext Mark Up Language) dan gunakan HTML editor dan previewer yang cerdas  sehingga membantu dalam menemukan kesalahan­kesalahan sintaks penulisan.

44  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

 baris  contoh tersebut diawali dengan '>>>' 3. maka dapat dijalankan dengan cara­cara berikut ini: 1.Menjalankan Interpreter Python Setelah interpreter python ter­instal.  pemrograman game. eksekusi statemen secara interaktif. Library python sangat extensible. Python telah digunakan untuk berbagai aplikasi. Mengenal Python 1.  setiap statemen di­ketik pada python shell prompt. 2. bash$ python >>> print “assalamu'alaikum” assalamu'alaikum >>> 60 * 60 * 2 4 86400 Pada tulisan ini. memiliki struktur data  built­in dengan kemampuan operasi yang kaya dan luwes. Program python dapat langsung  dieksekusi menggunakan interpreter.Apa itu Python Python adalah bahasa pemrograman yang interpreted. lebih tinggi dari C/C++. tidak sulit  untuk menambah fungsi baru atau module ke dalam library python. Python adalah bahasa tingkat lebih tinggi. menggunakan python sebagaimana shell sistem.py. seperti berikut: #!/usr/local/bin/python print “assalamu'alaikum” Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  45 . bagi anda yang menguasai pemrograman C. tanpa melalui proses kompilasi tersendiri. Melalui shell. beberapa contoh diberikan dalam mode eksekusi interaktif. setiap program python adalah module. dan langsung di­eksekusi oleh  interpreter. Menggunakan program atau script python. aplikasi web terintegrasi dengan database sampai aplikasi desktop  berbasis Graphical User Interface. Python adalah bahasa yang modular. yang dapat  diimport oleh program lain untuk dimanfaatkan objek atau fungsinya. biasanya untuk menjalankan 1 statemen python: bash$ python -c "print 'assalamu\'alaikum'" 2.III. sehingga memungkinkan program  Python lebih ringkas daripada jika ditulis dengan C/C++ atau bahkan Java. mulai dari utilitas untuk administrasi sistem.  Buat program salam.

Statemen Statemen diakhiri dengan baris baru. dan dapat juga ditulis  dengan  encoding lain (misal: Unicode). Tipe sebuah objek dapat diketahui menggunakan fungsi  type(). indentasi digunakan sebagai  penanda blok statemen. Python memperlakukan indentasi di awal baris secara khusus. Pada bagian tentang kendali alur program hal ini akan dibahas lebih  lanjut.Objek dan variabel Objek adalah abstraksi data. 5. Object memiliki tipe dan nilai. Operator is dapat digunakan untuk membandingkan identitas objek. setiap data dalam python diwakili oleh objek atau oleh relasi  antara objek. Perhatikan baris pertama mengacu ke path interpreter python. Variabel adalah referensi ke objek. 4. dijalankan sebagai  berikut: bash$ chmod 755 salam. id objek dapat diketahui menggunakan  fungsi id(). tapi statemen dapat melintas baris jika interpreter  menganggap statemen  tersebut belum sempurna. Contoh: # rumus luas lingkaran # ini komentar baris kedua luas =  22 / 7 * 1 4 * 1 4 sisa = 1 06 % 3  # menghitung sisa pembagian 6. Penulisan identifer harus menggunakan ASCII. Tidak perlu karakter khusus untuk mengakhiri statemen. tipe sebuah objek juga tidak dapat diubah. 46  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .Komentar Setiap baris komentar harus diawali dengan '#'. variabel mereferensikan objek setelah melalui assignment./salam.1.Program Python Program python adalah program teks dengan encoding ASCII.py bash$ .py 3.  Setiap objek memiliki id yang unik dan tidak berubah. Komentar tidak harus selalu di awal baris.

  Penulisan literal bilangan bulat dapat dengan integer.  24 148364 7 7 # integer terbesar untuk 32 bit arithmetic 24 1483648L # long 7 0 1234567 # octal 0x1234567 89abcdef # hexadecimal Operasi aritmetika antara integer dengan integer.' (titik) desimal. yaitu None. 7. operasi  integer  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  47 .  a = 1 00 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 . Variabel dapat di­assign ke objek khusus yang merepresentasikan ketiadaan. dan keduanya dapat ditulis  dalam basis octal. Bagian ini menjelaskan berbagai tipe data dan operasi yang berasosiasi dengan tipe data  tersebut. literal dan operasi Objek dibedakan tipe data­nya karena setiap tipe data memiliki operasi­operasi tersendiri.Tipe data. selalu menghasilkan integer. ekspresi yang  mengacu ke sebuah variabel sebelum variabel tersebut di­assign menyebabkan error. Penulisan literal float menggunakan tanda '.Bilangan Python mendukung bilangan integer . a tidak didefinisikan print b       # b dan objek yang diref erensikan masih ada print id(b) Setelah assignment.print type(123)  # 123 adalah objek v1 = 123   # assignment : variabel sebagai ref erensi ke objek print type(v1)   # tipe v1 adalah tipe objek yg diref erensikan print id(v1)     # id objek print v1         # mencetak nilai objek yang diref erensikan oleh v1 Variabel dapat langsung di­assign tanpa dideklarasikan terlebih dahulu. long integer dan floating point. long integer. 7. desimal dan heksadesimal.1. jika sebuah  ekspresi mencoba mengacu variabel yang sudah di­del() akan menyebabkan error. sebuah variabel dapat dimusnahkan dengan fungsi del().

 penulisan literal karakter ascii menggunakan octal dan decimal juga  didukung. Penulisan string unicode menggunakan prefix 'u'. digunakan prefix 'r' di depan  string. sejak versi 2. Contoh : >>> 22 / 7 * 2 1 * 2 1 # integer dan integer 1 323 >>> 22 / 70 * 2 .String dan Unicode String Selain bilangan python juga dapat memanipulasi data String dengan pengkodean ASCII  maupun Unicode. 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.2. Penulisan string literal menggunakan petik tunggal atau petik ganda. yang memiliki operasi­operasi nya sendiri.dengan float akan menghasilkan data float. untuk menuliskan string tanpa  penerjemahan karakter khusus digunakan prefix 'ur'. untuk mendukung internationalization  (i18n).Kedua cara penulisan mengenal karakter khusus seperti  baris baru '\n' dan tab '\t'.0 sudah mengenal string unicode.  contoh: bil = 1234 bil. Untuk menulis string tanpa pengenalan karakter khusus. print u'baris satu\n baris kedua' 48  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .__mod__(7) # sama dengan bil % 7 7. 1 * 2 1  # integer dan float 1 386. Python tidak  membedakan kedua cara tersebut.0 Bilangan di python adalah first­class object.

5. del Perhatikan bahwa list melakukan pengecekan index range.1.[6.2. Elemen list diacu menggunakan indeks integer. Bahkan  data container di python dapat memiliki elemen berupa  data container juga. Berikut ini beberapa operasi yang dapat dilakukan terhadap list: add.2. [1 . contoh: (1 . pada operasi baca maupun tulis: 7. sebuah list dapat ditambah  elemen baru.7 8.Tipe data container Tipe data container adalah tipe data yang dapat menyimpan referensi ke objek lain sebagai  value­nya. Tipe data container dalam python dapat menyimpan data yang tipenya berbeda­beda.3.2. remove.6. 7.3]. Python memiliki tipe data container yang built­in.4.List List adalah himpunan yang elemennya tersimpan secara berurutan.'selasa'.'senin'. slice.4.  list adalah sequence   yang mutable.Tuples Berbeda dengan list.print u'baris satu\u0 00 Abaris kedua' # unicode raw string print ur'baris satu\u000A baris kedua' 7. Tuple didefinisikan menggunakan ().[2. dikurangi elemennya.3.4.6.'rabu'] [1 . Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  49 . List literal didefinisikan menggunakan [] [1 .5. 7.Bahkan hanya True dan False  sajalah object yang ada di tipe data Boolean.4. 1 1]]] 0.5.2. 1 .7 8) .7 8] .4. atau diubah nilai setiap elemennya. maka tuples adalah sequence yang immutable. Persamaannya dengan list  adalah elemen­elemen tuples juga diacu menggunakan indeks integer.3.4.Boolean Tipe data boolean hanya memiliki 2 nilai: True dan False.[9.3.

 but you can't del Sebagaimana list.4. Contohnya adalah nama variabel. 7. contoh: print d1['satuan'] # KeyError 8.(9. 'stok':  12} print d1['kode'] Mengacu ke dictionary menggunakan key yang belum didefinisikan akan menyebabkan error.Ekspresi dan operasi 8.Sets Set adalah data kontainer yang tidak berurutan (un­ordered) yang tidak mengandung duplikasi  pada elemen­elemennya.Key yang digunakan harus data yang immutable. 'nama': 'Susu Sapi'.Dictionary Berbeda dengan kedua data container sebelumnya.'selasa'.2.(2.1.1. nama class.4.  intersection. number.5.Yang termasuk ekspresi atom ada 3 jenis: 8. Sebuah nama yang telah diasosiasikan (bound) dengan objek. dictionary di­indeks menggunakan  key. dan symmetric­difference 7.(1 . jika dievaluasi akan  menghasilkan objek tersebut.3. nama module. angka (0­9) dan garis bawah (underscore).7 8.  nama fungsi.1.'rabu') (1 .Ekspresi Atom Atom adalah ekspresi paling dasar dalam python. unpacking. 50  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .4. Berikut ini beberapa operasi yang dapat dilakukan terhadap tupe: slice. 1 . tuples juga melakukan pengecekan range index. dapat digunakan sebagai key. 'harga': 12000. nama yang belum diasosiasikan (unbound) dengan objek akan  menghasilkan error NameError jika dievaluasi. 1 1))) 0.3.(6.3). tuple yang tidak  memiliki value yang mutable.4. Set memiliki operasi untuk pengecekan membership. d1 = {'kode': '000 1'. juga operasi himpunan seperti union.  direpresentasikan oleh exception KeyError. Karakter penyusun identifier dalam python dapat terdiri atas kombinasi dari huruf besar dan  kecil (a­zA­Z). packing. Jadi string.'senin'.Identifier Identifier adalah nama yang merupakan ekspresi atom.

2.3. tanda kurung. Ekspresi list dapat dibentuk  menggunakan list dari ekspresi yang dipisahkan koma atau dari sebuah list comprehension. 8.9!=1 .1.1.Enclosure Enclosure adalah bentuk­bentuk ekspresi yang dibatasi oleh reverse­quote (tanda petik  terbalik `).1. Bentukan dalam kurung (Parenthesized forms) 2. Jika berisi sedikitnya satu koma.Bentukan dalam Kurung (Parenthesized forms) Bentukan dalam kurung adalah list ekspresi yang opsional ditempatkan dalam kurung ().) # tuples 8. Dictionary display 5.List display Ekspresi list display akan membentuk objek list yang baru.  (b f or b in range(20)) # generator bilang 0 s/d 1 9 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  51 .3<4. List display 3.1. Generator expressions 4. 0] # comma separated expression [a*2 f or a in range(1 0)] # list comprehension [a f or a in range(20) if a%3==0] # list comprehension 8. Konversi string 8. Contoh: (1+2) # ekspresi tunggal (atom) (1+2.3. akan membentuk tuple.Berikut ini bentuk ekspresi yang  termasuk enclosure: 1.Pada bagian type data  telah  diperkenalkan berbagai penulisan data numerik dan string secara literal.Literal Python mendukung berbagai literal string dan numerik.Generator expressions Generator ekspresion menghasilkan generator objek.3.5*6+7 8.2.3. kurung siku. Panjang identifier adalah tak terbatas 8.Python membedakan huruf besar dan kecil pada identifier.3.1.  jika tidak mengandung koma akan  membentuk ekspresi tunggal.1. [1+2. dan kurung kurawal. Generator ekpression adalah notasi generator dalam tanda kurung ().

4.1. Contoh: objek1 .Referensi Atribut (Attribute Reference) Referensi atribut adalah ekspresi yang mengacu kepada atribut objek.  2. Subskrip (subscription)  4.(b f or b in range(20) if(b%3==0 and b>0)) # generator bilangan  kelipatan tiga (b f or b in range(20) if(b%3==0)).Konversi String Konversi ke string adalah ekspresi menggunakan tanda kutip tunggal terbalik (reverse quote). 52  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . Referensi atribut  3.2. tuple.3. Yang mengubah ekspresi dari tipe data lain ke string.next() # 3  8.'b'.2.2.2.5.1. objek harus mendukung attribute yang diacu.Ekspresi Primer (Primaries)  Ekspresi primer adalah ekspresi yang mewakili operasi­operasi yang paling mengikat dalam  python.'b'.atribut1 Pada ekspresi referensi atribut.'ruby':'web  app'} 8.'java':'mobile app'.3.1.3. contoh: objek2.Dictionary display Dictionary display adalah ekspresi yang menghasilkan objek dictionary baru. pemanggilan callable object (calls) 8.('a'. Meliputi: 1. string) atau mapping (dictionary). {'python':'GUI app'.atribut2 8.atribut1 .'c')]` `1+2+3` # 6 8. Atribut yang direrensikan dapat berupa objek yang  memiliki atribut juga. jika tidak maka  akan menimbulkan AttributeError. 'php':'web app'. `('a'.Subskrip Ekspresi subskrip berlaku pada objek sequence (list.2. Ekspresi Atom (dibahas pada bagian sebelumnya). Slicing 5.'c')` `[1 .

3. print 'e.3.('e'.f'. untuk peng­indeks­an dari belakang. maka ekspresi1 haruslah integer.('g'.'h'] Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  53 .h'.'h':7 'i':8} . Berikut ini contohnya: list1 = [1 .'ALLAH') tuple[3] # ALLAH tuple[­1] # ALLAH Untuk objek bertipe mapping.  contoh: b = {'a':1 .Irisan (Slicing) Expresi slicing terdiri atas Simple Slicing dan Extended slicing. 8. Ekspresi simple slicing digunakan pada objek sequence (atau ekspresi yang menghasilkan  objek sequence) dan menghasilkan objek sequence baru.7 8. objek1[ekspresi1] Jika objek bertipe sequence.'java':'mobile  app'.4. 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. Ekspresi dalam subskrip pada  objek sequence dapat berupa bilangan negatif.'d':4.'f'):5.'b':2. 1 .'ingat'. Contoh: list1 = [5. 1 1 6.2. ekspresi indeks haruslah sesuatu yang dapat di­hash (hashable)  dan tidak dapat diubah (immutable).'ruby':'web app'} dict4['python'] # 'GUI app' dict4['java'] # 'mobile app' 8. 7 0] list1[3]  # bilangan 8 string2 = 'bismillah' string[3] # 'm' string[­6] # m tuple3 = ('hati'.2. digunakan pada objek mapping menggunakan tuple sebagai key.'h'):6.9] .'damai'.'c':3.5.6. 'php':'web app'. dict4 = {'python':'GUI app'.'f'] print 'g. b['g'.Subkrip menggunakan [] setelah objek. b['e'.

25  8. Argumen dapat berupa positional atau keyword argument.1.Operasi Pangkat Operasi pangkat berasosiasi lebih kuat dari operator unary disebelah kirinya. plus (+) dan bitwise inversion (~).25 2**2**3 # 256 = 2**8 2**­2**2 # 0. class objects. 8. methods of class instances. 2*3       # 6 54  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .4.2.0625 = 2**­4 = 1/2**4 ­1 6**­2**­2 # ­0.8.5. built­in functions.4.Operasi aritmetika biner Operasi biner meliputi : 8. Yang dimaksud callable objek adalah: user­defined functions.5. method dari  built­in objects. Contoh: 2**2 # 4 ­2**2 # ­4 (­2)**2 # 4 (­2)**3 # ­8 2**­2 # ­0.Perkalian Perkalian (*) memerlukan argumen bilangan keduanya atau jika salah satunya integer maka  yang lainnya harus sequence. 8.3.Operasi aritmetika unary Semua operasi unary aritmetika dan biner memiliki prioritas yang sama. dan berasosiasi  lebih lemah dari operator unary di sebelah kanannya. dengan menggunakan nol atau  beberapa argumen. dan beberapa class instances sendiri  adalah callable. terdiri atas: minus (­) .25 =  ­1/1 6**0.Pemanggilan callable (calls)  Ekspresi ini memanggil callable objek (misalnya fungsi). Semua  ekspresi pada argumen dievaluasi sebelumnya pemanggilan dilakukan.5 = ­1 6**­0.

Argumen di kanan operator adalah bilangan yang digeser bitnya dengan jumlah pergeseran bit  sebesar nilai argumen di kiri.2.0 4*1 1 1/2*3*4           # 0 1 .Operasi Pergeseran (shifting) Operasi shift bit ini menerima dua argumen bilangan integer atau long.5./7             # 3.3*'sip '  # sip sip sip 3*(1 .4.6.5.2./7*1 4       # 66.3)  # (1 .5.Pengurangan Operator ini menghitung selisih untuk bilangan. contoh: 22%7            # 1 '%d ekor %s' % (3.5.3. # division 22/7*1 4       # 588 4*1 22.Penjumlahan Menjumlahkan bilangan dan menggabungkan concat sequence.'ayam') 8. 22+1 0 'bela jar '  + 'python' 8.Modulus (%) Menghitung sisa hasil bagi.0 8./2*3*4           # 6.Pembagian Terdiri atas '/' (division) dan '//'  (floor division).0 22. 1 4285 1 74286 22. Floor division mengenakan floor() pada hasil  pembagian.2. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  55 .3) 8. Operator % juga dioverload untuk melakukan peng­format­an  string. 22­1 0 8. untuk argumen di kiri  harus positip.3.//7            # 3. 1 .5.2.

Melakukan N pergeseran ke kanan (>>) sama dengan membagi bilangan  dengan N pangkat 2. Operator AND akan menset bit jika dan hanya jika kedua bit di­set 1 5 & 8  #  8 3 1 & 8  #  8 Operator OR akan menset bit jika salah satu dari kedua bit di­set 1 5 | 8  # 1 5 3 1 | 8  # 3 1 Operator XOR akan menset bit jika dan hanya jika salah satu bit diset. Urutan precedence  diamtara ketiganya mulai dari yang tertinggi : AND.Operasi Bit Biner (binary bitwise) Operasi ini meliputi AND.8. yang beroperasi bit­per­bit. Terdiri atas: Operator > < >= <= ==  Lebih besar dari Kurang dari Lebih dari atau sama dengan Kurang dari atau sama dengan Sama dengan Deskripsi 56  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . 4 >> 1  # 2  = biner 1 00 shift left  1 ­>  00 1 4 << 1  # 8  = biner 1 00 shift right 1 ­> 1 000 7 >> 1  # 3  = biner 1 1 shift left  1 ­>  0 1 1 1 7 << 1  # 1 4 = biner 1 1 shift right 1 ­> 1 1 1 10 8.Operasi Perbandingan (comparison) Operasi perbandingan menghasilkan nilai boolean True dan False. XOR dan OR 1 5 ^ 8  # 7 = 1 1 1 1 ^ 1 000 => 0 1 1 1  1 5 ^ 1 5 & 8  # 7 = 1 1 1 1 ^ 1 000 => 01 1 1  (1 5 ^ 1 5) & 8  # 7 = 0 & 1 000 => 0 8. Melakukan N pergeseran ke kiri  (<<) sama dengan mengalikan bilangan  dengan N pangkat  2. OR dan XOR.7.

 jika bernilai true maka menghasilkan ekspresi1.Lambda Lambda adalah ekspresi yang menghasilkan fungsi anonim. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  57 .9.Operasi Boolean Operasi boolean mengevaluasi ekspresi berdasarkan nilai True dan False dari ekspresi. sedangkan true dan false adalah nilai  abstrak yang dikenal dalam operasi boolean. 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. numerik 0 untuk semua tipe data. dan string kosong dan container  kosong adalah false.!= atau <> is is not in not in Tidak sama dengan Sama dengan identitas objek Tidak sama dengan identitas objek Bagian dari Bukan bagian dari 8. None. Ada 4 operasi boolean: ekspresi1 if ekspresi2 else ekspresi3 Operasi ini mengevaluasi ekspresi2.10. Perhatikan bahwa dibedakan menuliskan True dengan true dan False dengan false. python  mengenal aturan berikut ini untuk definisi tentang true dan false: Nilai False. True dan  False adalah objek atau instance dari tipe Boolean. sedangkan nilai lainnya adalah true.

3 # a.        # x adalah tuple dengan 1 elemen y = 1         # y BUKAN tuple.  Fungsi python didefinisikan menggunakan keyword def diikuti nama fungsi. hanya ekspresi. # mendefinisikan fungsi # tidak menerima param.b. y adalah variabel integer z = ()        # z adalah tuple kosong 9.c adalah ekspresi list  x = 1 . return None def salam():         print "Assalamu'alaikum " 58  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . Fungsi dapat mengembalikan objek (yang bukan None) atau dapat mengembalikan None.b.11. 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.Ekspresi Lists Ekspresi list terdiri dari satu atau lebih ekspresi yang dipisahkan dengan koma.  Pengembalian objek (yang bukan None) menggunakan statement return.2. Contoh a.Fungsi anonim tersebut tidak boleh berisi statemen.Fungsi Fungsi digunakan untuk mengenkapsulasikan operasi. Ekspresi list dengan sekurangnya satu koma dibelakang  menghasilkan tuple. selanjutnya  fungsi dapat menerima nol atau lebih parameter.c = 1 .

 return string def salam2():         return "Assalamu'alaikum " # menerima param .Statemen if Statemen if digunakan untuk pencabangan eksekusi statemen atau blok statemen berdasarkan  kondisi yang bernilai True atau False.1.Statemen Kendali Alur 10.  dan untuk pencabangan alternatif terakhir digunakan else. pada contoh berikut berikut ini a dan b  memiliki nilai default masing­masing 0 dan 1 : # generator bilangan fibonacci yg kurang dari n. a=0. a+b) # panggil fungsi fibonacci(1 00) 10.# menerima param. Untuk pencabangan alternatif dari kondisi pertama  digunakan keyword elif. 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. return None def salam1(m):         print "Assalamu'alaikum " + m # tidak menerima param . dengan rekursi def fibonacci(n.    # cetak tanpa ganti baris fibonacci(n. b=1): if b < n: print b. b. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  59 .

readline().  # lalu konversi string ke integer a = int(sys...' Untuk keluar dari while loop dapat menggunakan break.2. import sys print 'tebak integer : '..strip()) print 'pas benar .readline(). ditebak = 67 # baca stdin 1 baris.stdin.readline().while Untuk melakukan pengulangan selama ekspresi di while bernilai True.strip()) while a != ditebak:     if ditebak < a :         print 'terlalu besar '     elif ditebak > a:         print 'terlalu kecil'     print 'tebak lagi: '.' 10. potong whitespace depan & belakang.stdin. Contoh: import sys print 'tebak integer sampai ketemu: '.Pencabangan menggunakan elif dapat lebih dari satu.     a = int(sys.stdin.strip()) if ditebak < a :     print 'terlalu besar ' elif ditebak > a:     print 'terlalu kecil' else:     print 'pas benar . ditebak = 67 a = int(sys.. untuk melanjutkan loop tanpa  mengeksekusi  statemen  berikutnya digunakan continue: import sys 60  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

readline().     a = int(sys.pass Statemen ini tidak melakukan apapun.stdin.'kadir'.'doyox' f or guyon in stooges:     print guyon 10. string): stooges = 'timbul'.4.     nyerah = sys. digunakan untuk mengisi blok program agar benar  secara sintaks. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  61 . list.strip())     if ditebak < a :         print 'terlalu besar '         if coba < minimum_coba: continue     elif ditebak > a:         print 'terlalu kecil'         if coba < minimum_coba: continue     else:         print 'pass'         break     print 'menyerah ? [y/n]: '.for Digunakan untuk meng­iterasi sequences (tuples.ditebak = 67 minimum_coba = 3 coba = 0 while T rue:     coba+=1     print 'tebak integer : '.readline().strip()     if nyerah == 'y':          break     else:         coba = 0 10.3.stdin.

.Sebuah module  62  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .5.strip())     while a != ditebak:         if ditebak < a :             print 'terlalu besar '         elif ditebak > a:             print 'terlalu kecil'         print 'tebak lagi: '. class.stdin. yaitu  menggunakan exception. bye!' 11.         a = int(sys.  variabel).  Blok try berisi statement(­statement) yang dapat mengakibatkan terjadinya error atau  exception. Penanganan exception terdiri atas 2 blok : try dan catch.strip())     print 'pas benar .Modules Module memudahkan pemakaian ulang berbagai sumberdaya program (fungsi. alur program segera beralih ke blok catch. Block catch berisi statement(­statemen) yang akan menangani exception.' except Keyb oar dIn ter r upt :     print '\nhmm.10.exceptions Python mengenal mekanisme yang elegan dalam menangani error pada program. dan menyediakan namespace untuk menghindari konflik penamaan. Contoh berikut ini mengangani exception jika pengguna menekan ctrl­c yang menyebabkan  exception KeyboardInterrupt: import sys print 'tebak integer sampai ketemu: '. menyerah?\n\            \rsmoga lebih lain kali lebih beruntung.stdin.readline(). ditebak = 67 tr y :     a = int(sys.readline(). Jika satu statement dalam blok mengakibatkan exception maka statemen­statemen berikutnya  tidak akan di­eksekusi...

3.Module search path Secara praktis module­module ditempatkan dalam direktori terpisah dari program pengguna  modul. import pembangkit f or x in pembangkit.py.py disimpan dalam direktori /home/hafizh/modulku. yang menggunakan module pembangkit. Yang diperlukan adalah mendefinisikan fungsi tersebut dalam file  pembangkit.append(b)         fibonacci(n. Sebagai contoh module pembangkit.py dapat menemukan module pembangkit.py. Perhatikan bahwa nama object yang di­import sama dengan nama  file module. Program ini menggunakan statement import.Menggunakan Module Berikut ini adalah program fib. pembangkit bilangan fibonacci ingin disimpan sebagai fungsi dalam module  pembangkit. Supaya program fib. 11.1. direktori  /home/hafizh/modulku harus dimasukkan dalam module search path. Salah satu yang termasuk module search path adalah environment variable PYTHONPATH.dapat berisi beberapa fungsi atau beberapa class. Direktori tempat module harus masuk ke PYTHONPATH: export PYTHONP ATH=/home/hafizh/modulku:$PYTHONP ATH Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  63 .py. sehingga fungsi fibonacci() dapat diakses  melalui object pembangkit. hasil=None):     if hasil == None: hasil = []     if b < n:         hasil. b.fibonacci(1 00):      print x. hasil)     return hasil Perhatikan bahwa tidak ada statement diluar definisi  fungsi dalam file pembangkit. a=0. # module pembangkit fibonacci # return list bilangan fibonacci def fibonacci(n.Mendefinisikan Module Sebagai contoh.2. b=1 . 11. 11. a+b.

 self. method untuk menampilkan representasi string. .z  * self.py Yang juga termasuk module search path adalah list sys. # operator ­     def  __sub__(self. dan  menghitung besar vektor. .v): 64  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . 12.Class Class didefinisikan menggunakan keyword class.y . operator ­.x + self. Program pemanggil diubah sebagai berikut: import sys sys. self.python fib.x.append('/home/hafizh/modulku') import pembangkit f or x in pembangkit.  __sub__ untuk operator ­ class Vektor : # constructor     def __init__(self. Dalam contoh ini method khusus yang diimplementasikan adalah __add__ untuk operator +.y . z # menghitung besar vektor     def to_skalar(self):         import math         return math.y * self.y + self.x.v):         return Vektor(self.path.sqrt(self.y + v y . operator +.x + v x.z = x.z + v z) .z):         self. Python mengenal nama­nama method khusus yang dapat digunakan untuk  mengimplementasikan operator bagi class tersebut.path.x * self. Pada class ini di definisikan  constructor. y .z) # operator +     def  __add__(self. self. self.fibonacci(1 00):      print x. dapat digunakan jika tidak  mungkin mendefinisikan PYTHONPATH. Dalam class dapat didefinisikan method atau operator.

b.b. PHP atau PERL.%d. # representasi string     def __repr__(self):         return '(%d.%d)'%(self.to_skalar() 13.c) print 'besar c: %.z) Berikut ini program pemakai class tersebut: from vektor import Vektor a = Vektor(1 .5. PHP4  yang membiarkan programer melakukan kesalahan dengan mengevaluasi variabel yang belum  diberi nilai (unassigned).self. Python juga melakukan pengecekan batas array (index boundary checking) dan juga index   key­checking.x ­ v x. . tidak seperti.y ­ v y .  Beberapa keunggulan yang menarik dari sisi potensi untuk menggunakan python pada  aplikasi bisnis diantaranya adalah: Python melakukan pengecekan bound dan unbound variabel.y .self.x.z – v z) .        return Vektor(self.2.2f' % c.3) b = Vektor(4.6) c = a + b print '%s + %s = %s' % (a. tidak seperti misalnya.to_skalar() c = a ­ b print '%s ­ %s = %s' % (a.c) print 'besar c: %.2f' % c.Penutup Python adalah bahasa scripting yang sangat menarik untuk ditekuni dan diterapkan dalam  berbagai aplikasi. self. misalnya. . Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  65 . self. Sintaks python yang memperhitungkan indentasi juga menuntut kerapihan source code yang  diperlukan untuk me­maintain program dalam jangka panjang.

.

IV. ada 3 cara mengeksekusi interpreter ruby. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  67 .rb.5. 3./configure bash$ make  bash$ su ­ bash$ make install 3.rb Satu­satunya statemen pada program tersebut memanggil method puts. Sebagai user biasa lakukan configure dan make.Menggunakan file skrip Berikut ini file salam.5 bash$ . Sudah beberapa tahun belakangan ini Ruby dipakai untuk mengembangkan aplikasi web yang  komersial maupun non­komersial.ruby­lang. Mengenal Ruby 1. 3.Mendapatkan dan Mengintal Ruby 1.8. Ruby dikembangkan pertamakali oleh Yukihiro Matsumoto ('Matz') pada tahun 1995. mencetak salam diakhiri baris baru puts "assalamu'alaikum" dieksekusi dengan interpreter ruby: bash$ ruby salam.8. lalu make install sebagai  super­user: bash$ cd ruby­1 . library Ruby untuk aplikasi berbasis GUI non­web juga  tersedia. Download source http://www.1. yang mencetak  objek ke standard­output (stdout) dan diakhiri dengan baris baru.Apakah Ruby Ruby adalah bahasa pemrograman scripting yang dinamis dan  object­oriented. Uncompress disembarang direktori: bash$ tar zxvf ruby­1 .org 2.tar gz .Menjalankan Ruby Paling sedikit. semua data di  Ruby adalah instance dari sebuah class. 2.

3.2.Menggunakan command line
bash$ ruby ­e “puts \”assalamu'alaikum\””

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

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

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

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

anda akan mendapat warning karena penggunaan variabel khusus $_ tidak disarankan lagi. Ruby juga mengenal baris khusus yang opsional untuk mengakhiri program, yaitu baris yang  hanya berisi keyword __END__  yang tidak diawali dan diakhiri whitespace. Baris­baris  68  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

apapun setelah baris ini tidak akan dieksekusi oleh interpreter.

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

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

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

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

Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  69

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

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

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

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

70  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

0/7 * 1 4 * 1 4}” String literal diatas bernilai 'Luas lingkaran = 588'. Pada string literal menggunakan kutip ganda. / . contoh: 123_456_7 89    => 123 4567 89 0b1 1_11_11  => 0b1 10 11 1 0 0 1 110 Floating point ditulis menggunakan .' . (titik) untuk separator desimal bulat dan pecahan. sehingga memudahkan anda menggabungkan  (concat) string dengan ekspresi: “Luas lingkaran = #{22.String String dalam Ruby adalah sederetan bytes yang tiap byte­nya terdiri dari 8­bit.\'  ' . (.to_s(1 1 6) 5.2.  Ada 3 cara lain untuk mendefinisikan string literal: %q. 'Saya bilang \'Saya suka coding dengan Ruby. 467 123 89 3. Prefix %q sama dengan kutip­tunggal dan %Q sama dengan kutip­ganda (menyebabkan  interpolasi ekspresi). sebagai contoh. <. Kutip ganda pada string literal juga menyebabkan interpreter Ruby akan mengevaluasi  berbagai karakter khusus (misal: control characters).  interpreter ruby akan melakukan interpolasi  ekspresi jika ekspresi ditulis dalam #{}.  contoh: 0. { . contoh: 'Saya suka coding dengan Ruby. 1 4285 1 74285 1 74 Data numerik adalah objek sejati. %Q dan here documents. dan [ .\” ” . keduanya menggunakan delimiter ! .Base indicator 0 Octal Base 0d Desimal (default) 0x Hexadesimal 0b Binary Contoh 01234567 0d123456789 0x123456789abcdef 0b1110010010011 Penulisan numerik dapat menggunakan underscore (garis bawah) untuk memudahkan  pembacaan. String literal dinyatakan dalam kutip tunggal atau kutip ganda. dari data integer dapat dipanggil method : # representasi l1 398634 dalam string hexadesimal 1 l1 398634. Contoh: Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  71 . “Saya bilang \”Saya suka coding dengan Ruby.

nil Ruby mengenal sebuah objek khusus untuk menyatakan ketiadaan yaitu nil.Variabel adalah Reference Variabel merupakan reference ke object.%q{select “index” from “table” where “column”='area'} %Q/select “type” from “object” where area > #{22. Variabel langsung di­definisikan menggunakan assignment ke ekspresi atau literal. } KODE _JAVA SCR IP T 5.0/7 * 2 1 * 2 1}/ Literal dengan here documents menggunakan string pembatas.  6. Variabel bukanlah objek itu sendiri. contoh berikut menggunakan string pembatas  KODE_JAVASCRIPT: js1 = <<KODE _JAVAS CR IPT window . juga dapat di­assign dari ekspresi size1 = nama1 . object dapat diubah menggunakan variabel. hal tersebut  akan dibahas lebih lanjut pada akhir bagian ini. misalnya  dengan memanggil method melalui variabel tersebut.length Tapi variabel yang belum pernah di­definisikan tidak dapat di­evaluasi. Contoh: # error : 'blah' belum di­definisikan puts blahblah # error : 'alas' dan 'tinggi' belum didefinisikan luas = alas * tinggi / 2 7. jadi nil  bukanlah 'tidak ada objek'.text5.  cocok untuk mendefinisikan  string literal yang panjang (misal: code javascript). Contoh: # variabel string nama1 = 'hafizh amrullah' # variabel numerik . interpreter ruby  menganggap hal ini sebagai error yang menghentikan eksekusi program. yang mungkin memuat karakter­karakter  khusus pembatas string yang dikenal Ruby.Variabel Seperti dijelaskan sebelumnya semua data Ruby adalah objek atau instance suatu class.onchange = function () { or // prevent user from entering invalid customer code }.f m2.3.onload = function () { document. dan  variabel adalah reference ke objek tersebut. Berikut ini contohnya: 72  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

 contoh: $debug =  false 8. 8. nama variabel global diawali huruf  kecil.34..  sehingga menunjuk ke objek string yang sama.strip!     # hilangkan whitespace di awal dan akhir melalui  nama3 puts "­­>#{nama2}<­­" Variabel nama2 menyimpan referensi ke objek string.Variabel lokal Variabel lokal hanya dapat diakses dari dalam method. variabel nama3 di­assign ke nama2. Konvensi penamaan method ini bertujuan  memudahkan pengguna method membedakan antara method yang mengubah object receiver  dan yang tidak. Jika semua semua spasi di awal dan akhir  string dihapus melalui variabel nama3.1. Contoh pertama  menggunakan method 'strip!' dan  kedua menggunakan 'slice!' . maka perubahan ini juga dapat dilihat melalui variabel  nama2.300] 1 1 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  73 .slice!(/tidak/i)  # hilangkan 'tidak' puts k1 Nama method yang diakhiri '!' Sedikit penjelasan tentang nama method pada dua contoh diatas.  kedua method diakhiri tanda  '!'  Dokumentasi Ruby menyarankan nama method yang mengubah state objek receiver (objek  yang dipanggil methodnya) diakhiri tanda '!'. Berikut ini contoh yang lain: k1 = “coding Ruby sungguh tiDaK asik 'kali” k2 = k1 k2.nama2 = '     irfan mahdi     ' nama3 = nama2 puts "­­>#{nama2}<­­" nama3.Variabel global Variabel global dapat diakses dari class lain atau module lain. nama variabel global diawali  dengan $.2.3. contoh: hitung = 1 0 array1 = [2.Scope variabel dan penamaannya Ruby mengenal 4 jenis variabel: 8.

  Array di­indeks dengan key integer.'hihi'.['d'. dengan menggunakan operator kurung siku berisi  elemen­elemen array.4. class Vektor berikut memiliki variabel class  @@totalcount: class Vektor  @@totalcount = 0 def initialize(i.Variabel instance Variabel instance hanya dapat diakses dari dalam method instance.'c']. contoh.3.'f'].5.'i']] # mengakses puts a2[2][1] # 'hihi' 74  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .'jumat'] Mengakses array a1 menggunakan key integer: puts a1[0] # 1 puts a1[1] # 'senin' puts a1[2] # 2 Array dapat berisi array lain. contoh.['g'.'senin'. contoh: a1 = [1 .5. Hash di­indeks menggunakan sembarang objek sebagai  key. Nama variabel instance  diawali dengan @.Variabel class Variabel class dapat diakses dari dalam method instance maupun method class.8.'e'.Array dan Hash Array dan Hash adalah objek yang merupakan koleksi data secara ter­indeks (indexed). membentuk array multidimensi: a2 = [['a'. 'kamis'.'selasa'.'b'. Nama variabel  class diawali dengan @@. Array dapat didefinisikan secara literal.2. j) @i = i @j = j @@totalcount = @@totalcount + 1 end end 8.4. j) @i = i @j = j end end 8.'rabu'. class Vektor berikut memiliki variabel instance @i dan @j : class Vektor  def initialize(i.3. Array dan hash dapat berisi elemen­elemen yang berbeda tipe data­nya.

1.Ekspresi dan Struktur kendali 9. jika menggabungkan string dengan numerik tanpa #{} : str1 = 'Biayanya . contoh: produk1 = {'p00 1' => 'Susu Sapi'..to_s Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  75 . 'p003' => { 'nama' => 'Gula P asir'. 'p002'=> 'T elur A yam'. defaultnya 100: hitung1 = Hash. Tapi. hash di Ruby dapat di­set  nilai default­nya. karena Ruby tidak melakukan konversi otomatis dari ekspresi numerik ke string atau  sebaliknya seperti yang mungkin anda harapkan.Ekspresi  melibatkan string dan numerik Jika anda terbiasa dengan bahasa script lainnya seperti PHP atau PERL.. ' num1 = 2000 #BARIS BERIKUT ERROR: operator+ str1 butuh operand dari class String str2 = str1 + num1 # num1 di­parse menghasilkan string str2 = str1 + num1 .'harga' => 12000 }.Hash didefinisikan menggunakan kurawal {}. mungkin anda  mengalami kesulitan menuliskan ekspresi yang melibatkan variabel string dan variabel  numerik. mendefinisikan variabel hash untuk menghitung sesuatu yang  diindeks dengan nama. objek harus di­parse menghasilkan objek  baru dengan tipe yang sesuai secara eksplisit menggunakan method yang tepat. 'harga' => 6000 } } puts produk2['p003']['harga'] # 6000 Elemen hash yang belum didefinisikan key­nya bernilai nil. 'p003'=>  'Gula Pasir'} puts produk1['p002']  # 'T elur A yam' # nested hash produk2 = { 'p00 1' => { 'nama' => 'Susu Sapi'.  Misal.to_i Begitu juga kebalikannya. contoh: num1 = 2000 str1 = '1 000' #BARIS BERIKUT ERROR: operator+ num1 butuh operand  dari class FixNum num2 = num1 + str1 # str1 di­parse menghasilkan numerik num2 = num1 + str1 . 'p002' => { 'nama' => 'T elur A yam'. 'harga' => 1 0000 }.new(1 00) puts hitung1['p00 1'] # 1 00 9.

. Contoh: 1 .then... Sebagai kebalikannya dapat juga digunakan ekspres unless. then . end Ruby mengenal ekspresi conditional if.end untuk mengevaluasi satu kondisi dan  if.end. 6. Ruby menganggap semua nilai yang tidak sama dengan konstanta false atau tidak sama  dengan nil adalah true.     else ..then. unless tebak == ditebak then 4.. . ditebak = 123 tebakan = gets. input  diterima sebagai string dan menyertakan karakter end­of­line.then.2.end untuk lebih dari satu kondisi.else.    puts 'pas benar' 1.. 3. agar dapat dibandingkan secara  benar terhadap data numerik di variabel ditebak maka karakter end­of­line harus di­potong  (=chopped) dari input ini.. 5.then. end 1 9. dan hasilnya di­parse ke integer dengan method to_i .2.elsif. 4.Eksekusi Conditional Eksekusi conditional didasarkan nilai boolean (true atau false) suatu ekspresi. 9.to_i if tebakan > ditebak puts 'terlalu besar' elsif tebakan < ditebak puts 'terlalu kecil' else puts 'pas benar . 9.1.Conditional Ternary Ruby juga mengenal ekspresi ternary.' Penjelasan: baris 2 menggunakan method gets yang mengambil input dari stdin. 2. tapi menghasilkan objek baru. 7 8... else 1 0..chop. bentuknya: 76  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source ... 2..If ...to_i 3. objek dari str1 dan num1  tidak berubah.     end 9.         puts 'terlalu besar' 6.# atau menggunakan #{} dan double q uote str2 = “#{str1}#{num1}” Perhatikan dalam kedua pemanggilan method to_i dan to_str.chop.. tebak = gets.2.         puts 'terlalu kecil' 7 8.  contoh sebelumnya ditulis menggunakan unless: 1 ditebak = 123 .else.2.     unless tebak < ditebak then 5.

   Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  77 .chop. tebakan = gets.chop.': tebak > bil ? 'kebesaran': 'kekecilan' 9.             puts 'terlalu besar' .chop..     else 7 8.3.     tebakan = gets. Method didefinisikan menggunakan keyword def. dan diakhiri end. 3.to_i until ditebak == tebakan   # sama dengan sebelumnya end puts 'benar sekali !' 10. 5.to_i 4.     end 1 0.end 1 3.. .             puts 'terlalu kecil' 9.     if ditebak < tebakan then 6. Contoh: 1 .expr0  ? expr1 : expr2 Jika expr0 bernilai true maka dikembalikan expr1.to_i puts tebak == bil ? 'benar . while ditebak != tebakan 5. print 'tebak:' 3.to_i 1 12. 4. 7 ditebak = 123 print 'tebak:' tebakan = gets. jika salah dikembalikan expr2.end untuk mengeksekusi statemen­statemen dalam loop selama  kondisi yang dievaluasi pada bagian while adalah true. 6.Method Method dapat berdiri sendiri atau merupakan bagian dari class.  Ternary memungkinkan ekpresi nested.chop.Loop Loop mengenal while. tebak = gets. 2. yang terus mengulang statemen dalam loop sampai kondisi  yang di­evaluasi adalah true.puts 'benar sekali !' Baris 4 sampai dengan 11 akan dieksekusi selama tebakan belum benar. Kebalikan dari while adalah until. print 'tebaklah:'. Program berikut ini akan terus  meminta input selama tebakan yang masuk belum benar: 1 ditebak = 123 .    print 'tebak lagi:' 1. contoh: bil = 123. 2.

Method dapat menerima parameter.Nama method dimulai dengan huruf kecil. untuk method yang menerima parameter. mode)         elsif !File. Penggunaan () untuk definisi method maupun pemanggilan  tidak diharuskan. biasanya  digunakan karakter kurung (). rekursi=true.mkdir(path)         else             puts "#{path} sudah ada"         end end # create dir recursivel y buatdir ('/home/didi/dir/yg/belum/ada') # create dir NOT recursivel y . dapat menggunakan keyword return dapat juga tidak. mode)             Dir . rekursi.0/3 * 22/7 * jari2 * jari2 * jari2 end volum1 = volume_bola(1 4) Ruby membolehkan pemberian nilai default pada parameter default.  Jika method mengembalikan nilai. Ruby  mengembalikan nilai ekspresi dari statemen terakhir dari definisi method (sebelum end) Contoh method dan pemanggilannya: def  luas_segitiga(alas. tinggi) alas * tinggi / 2.mkdir(path.  Parameter rekuris pada contoh berikut ini.mode=055 ) 7         if !File.0 end luas1 = luas_segitiga(20. false. 0 7 7 7) 78  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .exists?(path) && rekursi then             d =  File. def buatdir ( path. di­set true jika pemanggilan method tidak  menyertakan parameter tersebut.30  # memanggil method tanpa () # parameter tanpa () def volume_bola jari2 return 4.exists?(path)             Dir . nama method yang melakukan query biasanya  diakhiri dengan '?'  Nama method yang mengubah objek receiver biasanya diakhiri '!'.30) luas2 = luas_segitiga 20.dirname(path)             buat_dir(d. possibl y error buatdir ('/home/didi/dir/yg/sdh/ada/dirbaru'.

. Iterator memanggil blok menggunakan statemen yield. jika ada lebih dari satu parameter dipisahkan tanda  koma.end do  puts 'statement 1' puts 'statement 2' puts 'statement 3' end # blok {} { puts 'statemen tunggal'} Blok baru berguna jika dipanggil dari iterator.. Berikut ini contoh block: # blok do.10. Blok dimulai dengan keyword do dan diakhiri dengan end. Berikut ini contoh blok yang menerima 2 parameter : def panggil4x Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  79 . atau menggunakan {}. kegunaan blok dapat  disejajarkan seperti anonymous class yang digunakan sebagai callback..'} Statemen yield dapat mengirimkan parameter ke blok. yaitu sebuah method yang didefinisikan untuk  memanggil blok.  Parameter yang diterima blok  didefinisikan diantara || (dua pipe). hal ini bukan keharusan. jika anda pernah belajar Java.Blok dan Iterator Blok adalah sederetan baris statemen yang dapat diasosiasikan dengan pemanggilan method. Berikut ini contoh iterator yang memanggil blok 3 kali: # iterator yang memanggil blok 3 kali def panggil3x          yield         yield         yield end # panggil blok panggil3x {puts 'ding. Tapi blok­nya Ruby  lebih luwes karena tidak perlu ada class yang didefinisikan. asalkan blok didefinisikan dapat  menerima parameter. Sebuah blok dapat menerima lebih dari satu parameter. Blok biasa digunakan sebagai callback..end digunakan jika statemen dalam blok lebih dari satu baris.1. Delimiter blok do. hanya sesuatu yang telah  menjadi standard. jika  hanya satu baris maka digunakan {}..

1 12. def to_skalar 1 9..sqrt( @i*@i + @j*@j ) 20. def initialize i.. 5.dong'.'.        yield 'ding.4         yield '. 7 @i = i 8.j .2  # memanggil blok .Class Berikut ini contoh class yang digunakan dalam penjelasan selanjutnya: 1 class Vektor .      # besar/magnitude vektor (method instance) 1 7 1 8. def +(v) 1       4. end 1       6.end .      def i 2 4. Vektor new(@i + v i .end sebagai pembatas blok..5 end # blok mendefinisikan parameter para1 .      # attribute i (method instance) 23. . 1 22. @@totalobj = 0 4.. 2. # variabel class 3. end 2. @j = j 9. # constructor 6.       @i 25. passing 2 parameter         yield '.'.. 1 5..para2|      n = 0     while n < para2         print para1 # 'print' tidak mencetak baris baru         n = n + 1     end     puts '' # ganti baris end Perhatikan program di atas menggunakan do. @j + v j) .. @@totalobj = @@totalobj + 1 1 0.dong'. 11.... end 1..para2 sebagai parameter blok panggil4x do |para1 . Anda dapat  menggunakan {} sebagai pengganti do. # operator+ sebagai method instance 1 3. .      Math. .      end 80  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .3         yield 'ding..

1.x = Vektor new(1 .# memanggil method class 50.Bagian­bagian class 11.1.puts "magnitude vektor z: #{z. 7 48.       end 1 42. #{@j} )" 35.1.       "( #{@i} . Method constructor di Ruby harus dinamakan initialize.          @@totalobj 4.1. (contoh: baris 1 class Vektor) Definisi class diakhiri dengan keyword end.1.y = Vektor new(2.  Definisi class diawali dengan keyword class yang diikuti nama class.2)  # panggil constructor .      # representasi string (method instance) 33. (contoh: baris 34 class Vektor) 11.      def Vektor totalobj .      def j 29. nama class di Ruby  biasanya diawali dengan huruf kapital. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  81 . .Mendefinisikan Class Class di Ruby didefinisikan dalam file program seperti program Ruby lainnya. 7 28. 2       # attribute j (method instance) . 3       # method class. 1 32. .1. 7 38. 40.puts Vektor ::totalobj 11.      # mengembalikan total objek vektor yg sdh di­create 39.to_skalar}"  # panggil method  to_skalar 49.      end 36.      def to_s 34.2)  # panggil constructor 45.end # akhir definisi class V ektor 43. 4 4.26.z = x + y            # panggil method + 4 puts "vektor z #{z}" # panggil method to_s .         @j 30. method ini  dapat menerima nol atau lebih parameter. Tidak ada  aturan penamaan khusus untuk nama file.      end 3.Constructor Constructor adalah method khusus yang digunakan untuk meng­inisialisasi state objek  instance dari class. 46.

Berikut ini didefinisikan class Balok class Balok     def initialize panjang.1.1. lebar . Pada contoh class Vektor ada 2 variabel instance: @i dan @j 11.Method Instance Adalah method yang hanya dapat dipanggil melalui class instance atau objek.  method seperti ini disebut juga attribut.1.Inheritance (class turunan) Sebuah class dapat didefinisikan sebagai turunan dari class lain.3.5.Variabel class Variabel yang didefinisikan dalam class dan dapat diakses dari method class maupun method  instance.11. Penamaannya diawali dengan @ diikuti nama variabel yang dimulai dengan huruf kecil. Setiap objek memiliki variabel instance­nya sendiri­sendiri. attribute i. yaitu : operator +.'  dan nama method dimulai dengan huruf  kecil.Method Class Adalah method yang hanya dapat dipanggil melalui class.1. Pada contoh class Vektor ada 1 variabel class: @totalobj 11. tinggi 82  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . yaitu : totalobj. Class turunan akan mewarisi  method dan variabel dari class induknya. to_skalar.2.1. dan  hanya dapat diakses melalui objek itu sendiri. Pada contoh class Vektor ada 1 method class.1.Variabel Instance Variabel yang didefinisikan dalam class dan hanya dapat diakses dari method instance. Diantara method instance ada yang digunakan mengakses variabel instance (akan dijelaskan  kemudian). attribute j dan to_s 11. 11.1. Penamaannya diawali dengan nama class diikuti '.1.4. Penamaannya diawali dengan @@ diikuti nama variabel yang dimulai dengan huruf kecil. tidak dapat diakses melalui objek lain.1.2. tidak dapat dipanggil melalui class  instance. Pemanggilan method class menggunakan nama class diikuti '::' dan nama method. Pada contoh class Vektor ada 5 method instance. Variabel class dapat diakses bersama­sama oleh semua instance dari class tersebut.

 sisi)     end     def to_s         "(#{@panjang})"     end end # akhir class Kubus z = Kubus. Perhatikan constructor Kubus memanggil constructor class induknya dengan method khusus  super(). method atau  konstanta.new(4) puts z. karena kubus dapat  dianggap sebagai  balok yang khusus. dipakai bersama dan berulang kali dengan mudah. class Kubus < Balok     def initialize (sisi)         super(sisi.volume 12. #{@tinggi})"     end end # akhir class Balok Berikutnya didefinisikan class Kubus sebagai turunan dari Balok. yaitu ketiga sisinya sama panjang. maka aspek  reusability menjadi sangat penting. Modules memungkinkan suatu fungsionalitas.Modules Ketika sebuah program Ruby sudah menjadi aplikasi yang cukup besar. Bahkan untuk aplikasi yang kecilpun sebaiknya aspek  reusability diperhatikan. Module memberikan namespace tersendiri yang memudahkan pengembang library  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  83 . #{@lebar}.        @panjang = panjang         @lebar = lebar         @tinggi = tinggi     end     def volume         @panjang * @lebar * @tinggi     end     def to_s         "(#{@panjang}. sisi.  Ruby menggunakan '<' untuk menyatakan sebuah class adalah turunan class lainnya. Selanjutnya method to_s di­redefinisikan di clas Kubus. baik dalam bentuk class.

.rb. pada array $: tersebut dapat ditambahkan direktori baru.Menggunakan variabel khusus $: Ruby mencari module dalam file­file yang terdapat dalam direktori­direktori yang tersimpan  di array $: .' end end # akhir module 12.rb Sebuah program usemod1. atau bersama module lain.1.2.rb: # module contoh module ModSatu KONSTAN_1 = 123 # method dalam module def ModSatu. definisi module diakhiri oleh keyword end. Misal sebuah module Mod1 didefinisikan di  dalam file  /home/irfan/moddir/mod1.2. dapat juga tidak. disebarang direktori yang berbeda dengan module.1.  84  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . Nama file dapat  menyertakan extension .  Definisi module dimulai dengan keyword module diikuti nama module yang diawali dengan  huruf kapital. module harus dimuat kedalam program  menggunakan statemen require. Berikut ini contoh mendefinisikan modules. akan  mengakses Mod1 sebagai berikut: # load module req uire '/home/irfan/moddir/mod1' #panggil method di module ModSatu. atau  konstanta. 12.Menggunakan module Agar program dapat mengakses module.menghindari konflik nama (name­conflict/name­collision) di antara class.rb. pada baris tersendiri.Menggunakan path Statemen require diikuti relative path atau absolute path file module.method1 puts 'method 1 . Ada 4 cara menggunakan require: 12.method1 puts ModSatu::KONSTAN_1 12. method.2.2.. di file mod1.Mendefinisikan Module Sebuah module dapat didefinisikan dalam file tersendiri.

rb yang sama dapat dieksekusi tanpa perlu menambah option ­I di  interpreter ruby. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  85 . berikut ini file pemanggil modul.method1 puts ModSatu::KONSTAN_1 12.4.method1 puts ModSatu::KONSTAN_1 di­eksekusi dengan: bash$ ruby ­I /home/irfan/moddir usemod1 . dengan menambahkan direktori module.  sehingga method­method dalam module tersebut tersedia seolah method tersebut terdefinisi  dalam class tersebut. ke dalam variabel environment  RUBYLIB : bash$ export RUBYLIB=/home/irfan/moddir :$RUBYLIB bash$ ruby usemod1 . Sebuah class dapat mengasosiasikan diri dengan module menggunakan statemen include. yaitu  method di dalam sebuah module  dapat dijadikan method instance dari sebuah class lain.Mixin Salah satu fitur Ruby yang menarik yang berhubungan dengan module adalah mixin.rb 12.  usemod3.3.rb: # load req uire 'mod1' # panggil method ModSatu.rb 12.2.3.Anda dapat menampilkan direktori­direktori tersebut dengan interpreter Ruby. di program usemod2.push('/home/irfan/moddir') # load module req uire 'mod1' #panggil method di module ModSatu.Menggunakan ruby option ­I  Kedua cara sebelumnya memerlukan penyebutan direktori module secara eksplisit dalam  program pemanggil.Menggunakan variabel environment RUBYLIB Program usemod3.2.rb : # masukkan direktori ke dalam array $:. sbb: bash$  ruby ­e “puts $:” Berikut contoh penggunaan $: untuk meload module. file pemanggil  module tidak harus menyebutkan path ke direktori module. Dengan menggunakan option ­I  di interpreter ruby.

volume < b1 . #{@tinggi})"     end end # akhir Balok class Kubus < Balok     def initialize sisi         super(sisi.rb' class Balok     include BandingV olume  # mixin BandingV olume     def initialize panjang.  variabel ini  adalah reference dari instance class yang meng­include module. sisi. yang membandingkan  volume.volume end # apakah volume b1 lebih kecil? def >(b1)     self. sisi)     end     def to_s         "(#{@panjang})" 86  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . #{@lebar}.volume > b1 . module BandingV olume # apakah volume b1 lebih besar? def <(b1)     self.rb. perhatikan semua method membandingkan operand dengan self.Berikut ini didefinisikan module BandingV olume.volume end # apakah volume sama ? def ==(b1)     self. tinggi         @panjang = panjang         @lebar = lebar         @tinggi = tinggi     end     def volume         @panjang * @lebar * @tinggi     end     def to_s         "(#{@panjang}.volume == b1 . lebar . perhatikan  bahwa method yang di­mixin juga diwariskan ke class Kubus: req uire 'banding. di file banding.volume end end # akhir module Berikut ini class Balok memanfaatkan module BandingVolume dengan mixin.

2.2.  Ruby siap untuk menjadi alternatif dari bahasa pemrograman open­source yang populer  lainnya seperti PERL.Penutup Ruby cukup mudah digunakan. sangat berdayaguna dan library­nya sangat lengkap.volume # semua operasi perbandingan ini ada di module BandingV olume puts z < a # false puts z > a # true puts z == b # true 13.4) z = Kubus. python atau PHP.new(8.    end end # akhir Kubus a = Balok . Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  87 .new(8.2) b = Balok .new(4) puts z.

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

.

  90  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

out. termasuk microcontroller. C++.c ­o salam_ku Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  91 . nama filenya salam. arg[1]). yang dieksekusi dengan cara: bash# . "assalamu'alaikum\n").c Perintah ini menghasilkan file a. termasuk compiler bahasa C. yang berbeda dapat menggunakan option ­o. "assalamu'alaikum %s\n". GCC mendukung cross compilation.c  : #include <stdio.Apakah GCC itu? GCC adalah kumpulan kompiler­kompiler.  menggunakan gcc : bash# gcc salam. Mengenal GCC (GNU Compiler Collection) 1.Meng­compile satu file source ke file executable Berikut ini adalah contoh source code program C yang akan di­compile. Pada bahasan ini akan diperkenalkan program yang paling umum digunakan dari GCC yaitu  compiler bahasa C./a. Beberapa kemampuan GCC antara lain: • • GCC adalah compiler yang mendukung banyak platforms. 2. Fortran dan  Java.V.out fadhilah assalamu'alaikum fadhilah Apabila diinginkan nama file executable.         } } Maka cara meng­compile­nya menjadi file executable.h> int main(int argc. yaitu program yang di­compile pada satu platform  untuk agar dapat dieksekusi pada platform yang lain. char** arg) {         /* mencetak salam */         if(argc > 1) {             fprintf(stdout. Ini sangat berguna untuk sistem  embedded. contoh: bash# gcc salam.         }         else {             fprintf(stdout.

 berbagai fungsi yang  diperlukan oleh aplikasi disimpan pada beberapa file source code.c . Dapat juga file source dibagi menjadi beberapa file.j = v1­>j + v2­>j.c vektor3. } Selanjutnya file tersebut di­compile menggunakan opsi -c : bash# gcc ­c vektor1 . karena tidak memiliki fungsi main(). file source code yang hanya berisi fungsi (bukan program utama)  akan dibagi menjadi sedikitnya 2 file.bash# .i = v1­>i + v2­>i. Misal. void vektor_cetak(FILE *out.Meng­compile ke file object Dalam praktek sehari­hari./salam_ku fadhilah assalamu'alaikum fadhilah 3.         h.c vektor2.Menggunakan file header Pada kenyataan sehari­hari. ada file vektor1.     int j. } vektor. const vektor* v2) {         vektor h.c berisi fungsi operasi vektor sederhana: #include <stdio. const vektor* vek) {         fprintf(out. vek­>j).o Beberapa file sekaligus dapat di­compile dengan cara yang sama.  92  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . Untuk file­file seperti ini maka dilakukan kompilasi ke file object.  Berikut ini contoh source code vektor1.c Maka akan dihasilkan file object vektor1. bukan ke file executable. untuk membangun sebuah aplikasi. } vektor vektor_tambah(const vektor* v1. yaitu file header yang berisi deklarasi fungsi dan file  source yang berisi implementasi fungsi.c. File­file ini biasanya tidak  dapat langsung dieksekusi. vektor3.h> typedef struct t_vektor {     int i.  vektor2. %d)\n".c : bash# gcc ­c vektor1 . vek­>i.         return h. "vektor (%d.         h.c 4.

Pada bahasan ini dicontohkan.c: #include <stdio.c: #include <stdio.h> #include "math/vektor1.misalnya jika dikerjakan oleh programmer yang berbeda. dalam contoh ini  misalkan vektor1.h" vektor vektor_tambah(const vektor* v1.h #ifndef _VEKTOR_H #define _VEKTOR_H 1 #include <stdio. yaitu  vektor1. vektor vektor_tambah(const vektor* v1. } Dan ini file source vektor2. header file biasanya disimpan pada direktori tersendiri.h" void vektor_cetak(FILE *out.h.         h.     int j. vek­>i. vek­>j).h> typedef struct t_vektor {     int i. file vektor1. %d)\n".         h. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  93 . } vektor. const vektor* v2).h> #include "math/vektor1.c Berikut file vektor1.h disimpan di directori /usr/local/inc_ku/math bash# mkdir ­p /usr/local/inc_ku/math bash# mv vektor1 .c dan vektor2.c sebelumnya dibagi menjadi 1 file header. "vektor (%d. const vektor* v2) {         vektor h. serta 2 file source code.i = v1­>i + v2­>i. #endif /* _VEKTOR_H */ Lebih jauh lagi.j = v1­>j + v2­>j. yaitu vektor1. void vektor_cetak(FILE *out.h /usr/local/inc_ku/math Dan ini file source vektor1. const vektor* vek) { /* cetak dg baris baru */         fprintf(out. const vektor* v).

 nama filenya testv1.     v3 = vektor_tambah(&v1. &v2).     return 0.c  vektor2. Berikut ini file program utama yang menggunakan kedua fungsi vektor yang ada di  vektor1.c menjadi file object.h.     v2.c Jika ingin meng­compile semua source code c dalam current directory. misal di /usr/local  dan di /home/local/include maka options -I dapat diulang: bash# gcc ­I/usr/local/inc_ku ­I/home/local/include ­c vektor1 .i = 30.     v2. gunakan option -I untuk  menginformasikan lokasi file header yang diperlukan kepada compiler : bash# gcc ­I/usr/local/inc_ku ­c vektor1 .c 5.c sebagai pengganti nama file. } 94  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . &v3). v3. file yang  executable dihasilkan dari source code yang mendefinisikan fungsi main().        return h.Linking dari object file menjadi executable Proses linking diperlukan untuk menghasilkan file executable.     vektor_cetak(stdout.j = 40.i = 10.h> #include "math/vektor1. sebagai berikut : bash# gcc ­I/usr/local/inc_ku ­I/home/local/include ­c *. Pada bahasa C. &v1).c Jika ada beberapa header file yang tersimpan di directory yang berbeda.c vektor2.     vektor_cetak(stdout.     v1.  di direktori /usr/local/include/math.     v1.j = 20.     vektor_cetak(stdout. char** arg) {     vektor v1.h" int main(int argc. v2. dapat juga digunakan  *.c #include <stdio. } Maka untuk meng­compile vektor1. &v2).

 Program ranlib digunakan untuk  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  95 .Menggunakan library Library adalah kumpulan fungsi­fungsi.o vektor2. Eksekusi  bash# .  tapi termasuk diantara produk proyek GNU.c 2.o vektor2. libz. libsocket. 20) vektor (30. Berikut ini cara membuat static library: bash# ar rc libvektor1 . Berbagai aplikasi terkenal di dunia open source dimudahkan pengembangannya karena  ketersediaan library yang handal. hanya memuat referensi ke fungsi­fungsi  dari file object lain yang digunakan. PNG.a.1. Link object file menjadi file executable testv1 : bash# gcc vektor1.a. Library tersedia dalam 2 format.o bash# ranlib libvektor1 . Dynamic library juga biasa disebut shared library. 60) 6.a. openGL. Compile source code menjadi file object bash# gcc -I/usr/local/inc_ku -c vektor1. • 6. 40) vektor (40. berdasarkan konvensi. Library dibuat agar fungsi­fungsi lebih mudah  dipergunakan berulang kali. misal: library openSSL.o testv1. bahkan untuk program aplikasi yang berbeda.a Static library dibuat menggunakan program ar.a. disamping tentu saja kode mesin dari program itu  sendiri.o -o testv1 3. libvektor. GPG dan  sebagainya. memuat kode mesin dari program itu sendiri  dan kode mesin fungsi­fungsi yang berasal dari file object lain.Membuat static library Dari sekumpulan file object dapat dibuat file static library. yaitu static dan dynamic. yang digunakan oleh  program tersebut Program yang menggunakan dynamic library.c testv1.c vektor2.a vektor1 .a libmath. file library  berawalan lib dan berekstensi . Gzip. contoh: libssl. yang sebenarnya bukan bagian dari GCC.1. Perbedaan utama terletak pada penggunaanya pada sebuah program:  • Program yang menggunakan static library.a ini juga biasa disebut file arsip.a File berakhiran ./testv1 vektor (10.

 dengan menghasilkan  file executable.so yang merupakan file dynamic library.4. Caranya: 1.o vektor2.c ­l vektor1  ­o testv1 bash# . yang merupakan simbol­simbol (antara lain: nama  fungsi) yang didefinisikan dalam file object. dengan menggunakan option -fPIC untuk menghasilkan file object dengan Position Independence Code (PIC). langkahnya : 96  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . indeks ini disimpan di dalam file  arsip.membuat indeks dari isi file arsip ini.3.so /usr/local/lib_ku 6. Seperti halnya static library.  Meng­compile source code menjadi object file. dapat digunakan oleh program lainnya.  pindahkan library ke directori  /usr/local/lib_ku: bash# cp libvektor1./testv1 Seperti halnya option -I.2.Linking ke static library Seperti halnya file header. misal pada contoh di atas.Menggunakan dynamic library Selanjutnya dynamic library. di direktori  /usr/local/lib_ku bash# mkdir ­p /usr/local/lib_ku bash# mv libvektor1 .Membuat dynamic library Gcc juga dapat digunakan membuat dynamic library.c 2.so vektor1. Membuat dynamic library (shared object library) dengan menggunakan option -shared dan options -o . Contoh: bash# gcc -I/usr/local/inc_ku -fPIC -c vektor1.c vektor2. 6. maka option -L juga dapat digunakan berulang kali untuk me­link  ke direktori library yang lain.o Maka dihasilkan file  libvektor1. maka file arsip atau file library juga biasa disimpan dalam direktori  khusus. Oleh ranlib. gunakan option -L sebagai  berikut: bash# gcc ­I/usr/local/inc_ku ­L/usr/local/lib_ku testv1 .a /usr/local/lib_ku Maka jika ingin men­link program utama ke library tersebut. maka file dynamic library juga ditempatkan pada direktori  tersendiri. 6. contoh: bash# gcc -shared -o libvektor1. biasanya sama dengan direktori static library.

5.  sehingga pada saat program dieksekusi.org Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  97 . 6. karena akan menggunakan dynamic library./testv1 7. selain option -c untuk compile.o Selanjutnya file output dapat dieksekusi. contoh: bash# gcc -o testv1 -L/usr/local/lib_ku -lvektor1 testv1. tambahkan option  -fPIC.1. lihat bagian berikutnya.Penutup Tutorial singkat tentang gcc ini masih jauh dari lengkap.c 2. contoh: bash# gcc -I/usr/local/inc_ku -fPIC -c testv1.Menjalankan program yang menggunakan dynamic library Untuk menjalankan program yang menggunakan dynamic library. kita perlu menambahkan  direktori library yang akan digunakan. untuk pembahasan lebih  mendalam : ● Situs gcc: http://gcc.gnu. Berikut ini referensi ke situs­situs yang berhubungan dengan GCC. ke variabel environment LD_LIBRARY_PATH. Buat executable dengan option -o dan linking dengan ke library (dengan option  -lnama_library) jika diperlukan menambahkan path direktori ke library gunakan  option -L. Compile program utama ke file object. namun demikian diharapkan dapat  menjadi titik awal untuk penggunaan yang lebih maksimal. library yang diperlukan dapat ditemukan di  LD_LIBRARY_PATH tersebut: bash# export LD_LIBRARY_P ATH=/usr/local/lib_ku:$LD_LIBRARY_P ATH bash#.

98  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

 biasanya untuk aplikasi diletakan pada  direktori /opt. Berikut website yang populer berhubungan dengan Eclipse : ● ● ● ● Download Eclipse : http://www.6  dapat didownload di http://java.tar. dan juga tersedia plug­ins untuk berbagai  pengguanan aplikasi dalam berbagai industri.2.jboss.sun.gz 4.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 .org  1   Instalasi 1.com 2. Eclipse tersedia dalam berbagai platform.2­linux­gtk. Pastikan sudah menginstal Java Development Kit (JDK).eclipse.VI.com Eclipse ­ Object Web Lomboz : http://lomboz.6. Pengenalan Aplikasi Eclipse Eclipse adalah IDE (Integrated Development Environment) yang sangat populer untuk Java  dan C++.  Ekstrak file  # tar ­xvzf eclipse­SDK­3. Seting PATH aplikasi Edit file /etc/profile  tambahkan baris berikut ini : JAVA_HOME="/opt/jdk1.org Download Tools Eclipse : http://www. # cd /opt  3.objectweb. Tentukan lokasi direktori untuk instal Eclipse.eclipse. dengan menggunakan Eclipse pengembangan aplikasi akan lebih mudah dan  mempercepat pengerjaan dari sisi waktu.org/tools Eclipse­JBoss : http://www. JDK versi terakhir JDK­1.

Gambar 1.Gambar 1. Memulai Eclipse  3   Memilih Workspace Workspace adalah lokasi direktori dari file­file aplikasi ketika bekerja dengan Eclipse pada  saat   membuat   project. atau  dari menu File ­> Exit  GUI Eclipse Eclipse mempunyai style tampilan untuk GUI sesuai dengan kebutuhan programmer. Memilih Workspace  4   Mematikan aplikasi eclipse Click tanda 'X' (close windown) dipojok kanan  atas window IDE Eclipse untuk keluar.0.   direktori   utama  aplikasi dan file­file konfigurasi aplikasi.   workspace   berisi   file­file   kode   program   aplikasi.1. ada tiga  jenis tampilan (perspective) :  Menu Window ­> Open Perspective ­>  ● Debug  ● Java 100  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

2. Konfigurasi JDK bisa di  lihat dalam Menu Window ­> Preferences. dan kemudian pilih Next. Kita  juga bisa men­set ANT Home. 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. Perspective Java Dalam pilihan style perspective Java: ● Window informasi project. Pilih Java kemudian pilih “Installed JRE'S”. Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  101 .  Membuat sebuah project Pilih File ­> New ­> Project dan pilih “Java Project”. CVS.● Java Browsing Gambar 1.

3.  Project Wizard  6   Memberi nama project Beri nama project “HelloDunia” kemudian clik Next Gambar 1.Gambar 1.4. Perspective Java 102  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

 7   Seting Project Dalam wizard seting Java ini.   misalnya   library   koneksi   database   (JDBC   Driver).  library aplikasi web dengan Servlet atau JSP ( j2ee.  8   Membuat Aplikasi Java Sederhana Berikut tahap membuat aplikasi sederhana untuk mencetak String ke ouput dengan  menggunakan Eclipse.5. Setting Project  Pilih Finish. kita bisa menentukan direktori output project. project java telah dibuat dan akan muncul Window Perspective Java.jar ).jar)   yang   ingin   disertakan. Gambar 1.   paket  library   (   *.  Menbuat Class Java Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  103 .

println (“ Selamat Belajar Java”) dalam method main. Wizard membuat Class Java Isi field dengan : Packgae : contoh Name : Salam Checklist : public static void main (String[] args ) Kemudian clik Finish.   9   Edit dan Compile Kode Program Edit class Salam.out.Pilih File ­> New ­> Class : Gambar 1.  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 . Dengan  menyimpan file.  secara  otomatis  Eclipse  akan  mencompile class Java. dan akan muncul class Java dalam Window Kode program.java dengan menambahkan baris kode berikut pada : System.6.

 Mendapatkan Help Jika anda ingin mendapatkan  informasi atau “Help” dari Eclipse pilih Help ­>Help Contents  11  Referensi  ● Eclipse : http://www.jboss.sun.com ● Java : http://java.Gambar 1.java dan output akan ditampilkan dalam window  console dibagian bawah window Eclipse.java dengan Eclipse  10   Menjalankan aplikasi Pilih Run ­> Run As ­> Java Application Eclipse akan meng­eksekusi file Salam.eclipse.com Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  105 .org ● Jboss : http://www. Salam.7.

106  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .

2.1 Instalasi Java Pastikan sudah menginstal Java Standard Development Kit (Java­SDK). versi terakhir  Java SDK­1. PDA) ● Visual Web Pack :  Komponen aplikasi untuk web ● Enterprise Pack :  Komponen dan Model aplikasi SOA (XML.bin menjadi file yang bisa diekseksusi # chmod 755  netbeans­5_5_1­linux.org.bin dari  http://www.Web  Service.sun. Netbeans didistribusikan dengan dua versi yaitu Netbeans platform dan Netbeans IDE.org.   NetBeans   berjalan   diatas  program GUI   dengan menggunakan Swing. Swing sendiri adalah paket library Java untuk  aplikasi desktop atau grafis. Download binary Netbeans  versi terakhir netbeans­5_5_1­linux.WSDL.UML) ● Profiler : Untuk memory aplikasi ( Bottleneck & Memory Leak) ● C/C++  Pack : Membuat aplikasi C/C++ dengan IDE NetBeans  1 .VII.2  Instalasi Netbeans 1.com.   Dalam   website   tersedia   paket  tambahan (add­on) : ● Mobile Pack : Mobile application (Teknologi J2ME untuk HP. Pengenalan Aplikasi Netbeans NetBeans adalah IDE (Integrated Development Environment) open source yang berbasis Java  dan   dikeluarkan   oleh   Sun   Microsystem   (http://java.bin 3.com). dalam  Netbeans IDE telah terintegrasi dengan modul­modul pengembangan standard Java.netbeans./netbeans­5_5_1­linux.bin Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  107 .sun.netbeans. Mulai proses instalasi : # .  1. Netbeans  terbaru   dapat   di   download   di   http://www. Sebagai root ubah file netbeans­5_5_1­linux. Instalasi  1.6 dapat di download http://java.

 biasanya untuk aplikasi diletakan  pada direktori /opt. Gambar 1.Gambar 1.  Pilih Java SDK yang akan digunakan oleh  108  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source . Tentukan lokasi direktori untuk instal Netbeans.1 : Memilih lokasi instalasi 2.0 : Memulai instalasi NetBeans 1.

5. jalankan perintah berikut : # /opt/netbeans­5.6.2 : Memilih Java SDK 3. Seting PATH aplikasi Edit file /etc/profile .1/_uninst/uninstaller Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  109 .Gambar 1. untuk meng­set PATH aplikasi NetBeans yang diinstal dalam  direktori /opt/netbeans­5.1 tambahkan baris berikut ini : JAVA_HOME="/opt/jdk1.1" PATH="$JAVA_HOME/bin:$NETBEANS_HOME/bin:$PATH" export JAVA_HOME NETBEANS_HOME PATH Jalankan perintah berikut untuk mengupdate PATH # source /etc/profile .0" NETBEANS_HOME="/opt/netbeans-5.5. Un­Instal NetBeans Untuk melakukan un­instalasi NetBeans.5.2.

Gambar 1.1/bin/netbeans 110  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .   untuk   memanggil   aplikasi   NetBeans   jalankan  perintah berikut : $ netbeans Atau $ opt/netbeans-5.3 : Un­instal NetBeans  3  Memulai Netbeans Jika   PATH   aplikasi   NetBeans   telah   di   set.5.

 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.1 Memulai Projek Sebelum memulai projek.Gambar 1.4 : Memulai NetBeans 3. kita harus menentukan kategori projek yang akan kita buat. ○ 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 . ○ Membuat aplikasi web dengan meng­import aplikasi web kedalam projek web.

 3.5 : Memulai Projek dengan NetBeans Setelah menentukan  kategori projek yang dibuat. kemudian klik Next.6 : Memberi Nama Projek 112  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .2 Membuat Projek Gambar 1.Pilih dari Menu : File ­>New Project : Gambar 1.

Pada step 2 ini. anda diminta untuk mengisi nama dan lokasi projek : Project Name : HelloDunia Project Location : /home/rojul/labs  3.7.3 Window Kerja NetBeans Gambar 1. Window Kerja NetBeans Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source  113 .

114  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .8.9. kemudian pilih tombol Finish. kemudian pilih Next  Gambar 1.            3. Lokasi dan Paket dari File. Membuat Class Dari window. Memberi Nama Class Isi Nama.4 Membuat Class File ­> NewFile  Gambar 1. pilih Kategori Java Class dan Tipe File Java Class.

java” ● Running Project Running File Java       Run ­> Run Main Project ●       Run ­> Run File ­> Nama File  4  Aplikasi Dekstop Anda   bisa   membuat   sebuah   project   Dekstop   atau   Aplikasi   Web   dengan   NetBeans.5 Compile dan Running Program  ● Compile Project Compile Project digunakan untuk compile seluruh file yang ada dalam project.   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 . 3. Build ­> MainProject  Compile File Java  Compile File digunakan untuk compile satu file tertentu ●       Build ­> Compile “NamaFile.

Aplikasi Web NetBeans juga dilengkapi dengan Tomcat Web Server.17_base/  116  Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source .12 : Tomcat Server Manager  Konfigurasi file tomcat server  untuk user sistem berada dalam direktori : /home/NAMA_USER/. Konfigurasi tomcat server bisa dilihat  dengan memilih tab runtime : Gambar 1.5.  5.netbeans/5.untuk men­set nilai property dari object.5.1/apache­tomcat­5.11 : Runtime Explorer Untuk mengubah konfigurasi tomcat server dengan memilih : Click Kanan pada Bundled Tomcat ­> pilih Properties Gambar 1.

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

You're Reading a Free Preview

Mengunduh
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->