Bahasa Pemerograman Open Source

download Bahasa Pemerograman Open Source

of 119

Transcript of Bahasa Pemerograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    1/119

  • 8/14/2019 Bahasa Pemerograman Open Source

    2/119

  • 8/14/2019 Bahasa Pemerograman Open Source

    3/119

    I. Mengenal PERL

    1.Tentang PERL

    PERL adalah bahasa pemrograman yang menggunakan tipe data dinamis, program PERL

    dapat langsung dieksekusi tanpa harus melalui proses kompilasi tersendiri ke format binary

    yang dapat dieksekusi.

    PERL banyak digunakan pada aplikasi manajemen sistem dan jaringan, pemrograman web,

    manipulasi teks, akses ke database.

    Berikut ini beberapa aplikasi yang menggunakan PERL yang cukup dikenal: mrtg, SQL

    Ledger (aplikasi akunting), Webmin (aplikasi admin), spam assasin (anti spam).

    2.Menjalankan Program PERL

    2.1.Eksekusi dari file

    Berikut ini sebuah program PERL salam.pl, yang mencetak salam universal di konsol, jika

    ada argumen pada command line maka ditampilkan setelah salam.

    #!/usr/local/bin/perl

    if ($#ARGV > -1) {

    print "assalamu'alaikum $ARGV[0]\n";

    } else {print "assalamu'alaikum\n";

    }

    Eksekusi di shell menggunakan PERL interpreter, sbb:

    bash% perl salam.pl Hafizh

    assalamu'alaikum Hafizh

    Agar dapat dieksekusi tanpa mengetikkan interpreter perl di command line, file salam.pl

    perlu diset permissionnya. Misalkan dengan perintah :

    bash% chmod 755 salam.pl

    bash% ./salam.pl Hafizh

    assalamu'alaikum Hafizh

    Pastikan program PERL diawali dengan path lengkap ke interpreter perl yang terinstal di

    sistem operasi anda, untuk sistem berbasis Linux dan Unix, path tersebut harus diawali

    dengan karakter '#!' , seperti contoh:

    #!/usr/local/bin/perl

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 1

  • 8/14/2019 Bahasa Pemerograman Open Source

    4/119

    2.2.Eksekusi dari command line

    PERL dapat mengeksekusi perintah secara langsung dari command line, tanpa perlu membuat

    file program, menggunakan options -e di interpreter perl, contoh:

    bash% perl -e 'print Assalamu''alaikum\n'

    Perhatikan dua kutip tunggal di tengah kata, karena kutip tunggal digunakan untuk membatasi

    perintah.

    Jika menggunakan kutip ganda untuk membatasi perintah :

    bash% perl -e print \Assalamu'alaikum\n\

    3.Dasar-dasar PERL

    3.1.Program PERL

    Program PERL atau skrip PERL, biasa disimpan dalam file teks berakhiran .pl. Walaupun

    demikian perl interpreter tetap akan mengeksekusi program PERL yang tidak menggunakan

    ekstensi .pl.

    Sebuah program PERL yang executable dapat menggunakan hanya statement, tanpa perlu

    mendefinisikan fungsi khusus seperti main() dalam program bahasa C.

    Program PERL dapat terdiri atas statemen, deklarasi subroutine, konstruksi kondisional,

    konstruksi loop, konstruksi block.

    3.1.1.Statemen

    Statemen diakhiri dengan tanda titik coma. Statemen dapat berbentuk deklarasi variabel,

    assignment variabel dan pemanggilan fungsi. White space (spasi, baris baru) diabaikan.

    print "open source software ?!",

    " it's a miracle",

    ", do you believe miracle?\n";

    3.1.2.Komentar

    Sebagaimana bahasa pemrograman lainnya, programmer PERL dapat menuliskan komentar

    dalam kode program, dengan menempatkan karakter '#' sebelum baris komentar, contoh:

    # menghitung hitung luas

    $area = $pi * $radius * $radius;

    Atau dapat juga setelah bagian kode:

    $area = $pi * $radius * $radius; # menghitung hitung luas

    2 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    5/119

    Komentar diperlakukan sebagaimana white space.

    3.2.Variabel dan Tipe data

    Variabel digunakan untuk menyimpan data. PERL memiliki 3 tipe variabel utama: skalar,

    array dan hash. Nama-nama variabel, dan identifier lainnya dalam PERL adalah case-

    sensitive.

    3.2.1.Skalar

    Variabel skalar menyimpan data bernilai tunggal, tipe data dapat berupa string atau bilangan.

    Tipe data secara otomatis ditentukan pada saat assignment variabel. tidak perlu

    mendeklarasikan tipe data sebelum assignment.

    Nama variabel skalar dimulai dengan karakter '$'. Contoh:

    # string

    $file = '/etc/profile';

    $kota = depok;

    # integer

    $_num = 255;

    $byte_ = 0x00ff;

    # float

    $konstanta_pi = 22/7;

    3.2.1.1.String petik tunggal (single quote) dan petik ganda (double quote)

    String dapat dinyatakan dalam petik tunggal (') dan petik ganda ().

    String dengan petik tunggal menyatakan data adalah seperti yang tertulis, tidak ada

    interpretasi terhadap karakter-karakter pada string.

    String dengan petik ganda menyatakan bahwa interpreter PERL harus melakukan interpretasi

    terhadap karakter-karakter pada string tersebut.

    Contoh:

    # dicetak dalam satu baris, karakter \n tidak diinter pretasikan

    $str1 = '\niman \nilmu \namal \n';

    print $str1;

    # dicetak dalam 3 baris diikuti baris baru

    $str2 = \niman \nilmu\namal \n;

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 3

  • 8/14/2019 Bahasa Pemerograman Open Source

    6/119

    print $str2;

    # mencetak 'honour the adzan' diikuti baris baru

    $str3 = 'honour';

    $str4 = $str3 the adzan\n;

    Variabel Khusus

    PERL juga mengenal beberapa variabel skalar khusus, seperti $ARG, $_, $!, $1, $2, $3, dan

    sebagainya yang dijelaskan di man perlvar

    3.2.2.Array

    Array menyimpan sekumpulan nilai secara berurutan (sekuensial), yang biasa disebut list,

    nilai-nilai yang disimpan dapat berbeda-beda tipe datanya. Untuk membaca nilai anggota

    array digunakan nomor indeks integer dimulai dari nol.

    Variabel array dideklarasikan menggunakan karakter @ di depan nama variabel, data anggota

    array ditempatkan dalam kurung (), nilai-nilai anggota dipisahkan oleh koma.

    Nilai anggota array dibaca menggunakan operator [] dan nomor indeks. Contoh:

    @prima1 = (2,3,5,7,11,13,17);

    # mencetak '5'

    print $prima1[2];

    Untuk mendapatkan jumlah anggota array digunakan variabel $# diikuti nama variabel, tapi

    nilainya adalah jumlah anggota array dikurangi satu. Nilai ini juga dapat digunakan untuk

    membaca elemen terakhir. Contoh :

    @hari2 = (1, "senin",2,"selasa", 3,"rabu",4,kamis, 5, jumat);

    # mencetak 'jumlah anggota : 9'

    print jumlah anggota : $#hari2 \n;

    # mencetak 'elemen terakhir : jumat'

    print elemen terakhir : $hari2[$#hari2] \n;

    Jika sebuah program mencoba menulis anggota array pada posisi indeks yang lebih besar dari

    ukuran array, maka PERL secara otomatis menambah ukuran array sampai posisi baru

    tersebut. Contoh:

    @bil3 = (10, 20, 30, 40);

    # mencetak 'ukuran array : 3'

    4 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    7/119

    print ukuran array : $#bil3 \n;

    $bil3[110] = 1234;

    # mencetak 'ukuran array : 110'

    print ukuran array : $#bil3 \n;

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

    akan menambah ukuran array. Contoh:

    @bil4 = (10,20,30,40);

    $t1 = $bil4[89];

    # mencetak 'ukuran array : 3'

    print "ukuran array : $#bil4 \n";

    Jika variabel array dievaluasi dalam konteks nilai skalar (scalar context) maka variabel

    tersebut dievaluasi sebagai jumlah anggota array, contoh:

    # dievaluasi dalam scalar context

    @arr = (10,20,6,19,11,22);

    if(@arr == 6) {

    print "jumlah anggota array ada 6\n";

    }

    Array dapat disalin sebagian anggotanya ke array lain dengan mudah (array slice),

    menggunakan operator [], Contoh:

    @arr1 = ('semar', 'gareng', 'petruk', 'bagong', 'arjuna',

    'srikandi');

    @arr2 = @arr1[2,4] # 'petruk' dan 'arjuna'

    @arr3 = @arr1[1..3] # 'gareng', 'petruk', 'bagong'

    @arr4 = @arr1[1..$#arr1] # semua kecuali 'semar'

    3.2.3.Hash

    Hash menyimpan sekumpulan nilai yang menggunakan pasangan nama kunci dan nilai.

    Nama kunci dalam sebuah variabel hash haruslah unik, tidak boleh ada 2 pasangan yang

    menggunakan nama kunci yang sama.

    Variabel hash didefinisikan menggunakan karakter % diikuti nama variabel.

    Nilai-nilai anggota hash terdiri atas pasangan nama kunci dan nilai yang dipisahkan oleh

    koma. Nama kunci dan pasangan dituliskan berurutan, dapat dipisahkan tanda koma atau

    dapat juga dipisahkan oleh karakter '=>'.

    Untuk membaca nilai anggota hash digunakan operator kurawal {} dan nama kunci. Contoh:

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 5

  • 8/14/2019 Bahasa Pemerograman Open Source

    8/119

    %rasa_buah1 = ('asam', 'asem djawa', 'manis', 'manggis', 'pahit' ,

    'pare');

    # mencetak 'yang pahit = pare'

    print yang pahit = $rasa_buah1{'pahit'} \n;

    # dapat juga ditulis seperti ini

    %rasa_buah2 = ( 'asam' => 'asem djawa',

    'manis' =>' manggis',

    'pahit' => 'pare');

    $rasa = 'manis';

    # mencetak 'yang manis = manggis'

    print yang $rasa = $rasa_buah2{$rasa} \n;

    3.3.Operator

    PERL memiliki banyak operator dan fungsi yang built-in, berikut ini beberapa operator yang

    umum digunakan, selengkapnya dapat dilihat dengan man perlop.

    Manipulasi String

    . Concat (penggabungan)

    Aritmetika

    + Penjumlahan

    - Pengurangan

    * Perkalian

    / Pembagian

    Perbandingan Bilangan

    '== kesamaan

    '!= Ketidaksamaan

    < Kurang dari

    > Lebih dari

    = Lebih dari atau sama dengan

    Perbandingan String

    eq kesamaan

    6 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    9/119

    ne Ketidak samaan

    lt Kurang dari

    gt Lebih dari

    le Kurang dari atau sama dengan

    ge Lebih dari atau sama dengan

    Perhatikan bahwa PERL menyediakan operasi pembanding string dan pembanding bilangan.

    String dibandingkan secara alpabetis. Secara alpabetis, string '100' lebih kecil dari '8'. Contoh:

    $a = 100; $b = 8

    if ( $a > $b ) {

    print Bilangan $a lebih besar dari $b\n;

    } else {

    print Bilangan $a tidak lebih besar dari $b\n;

    }

    if ( $a gt $b ) {

    print String $a secara alpabetis lebih besar dari $b;

    } else {

    print String $a secara alpabetis tidak lebih besar dari $b;

    }

    Operasi perbandingan menghasilkan nilai benar (true) atau salah (false).

    TRUE dan FALSE dalam PERL

    PERL tidak mengenal tipe data khusus untuk mewakili TRUE dan FALSE.

    Dalam PERL nilai berikut ini adalah FALSE:

    bilangan 0, string '0', list kosong (), dan undef ,

    selain nilai-nilai tersebut adalah TRUE.

    3.4.Fungsi

    PERL memiliki fungsi built-in yang kaya, salah satu yang sudah diperkenalkan adalah

    print.

    Fungsi dapat menerima nol atau lebih argumen. Argumen sebuah fungsi dapat berupa skalar,

    list, atau keduanya.

    Pemanggilan fungsi dapat menggunakan tanda kurung () diantara argumen, dapat juga tidak.

    Fungsi printadalah fungsi yang menerima argumen list. Contoh:

    print saya, belajar, PERL;

    # sama dengan

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 7

  • 8/14/2019 Bahasa Pemerograman Open Source

    10/119

    print (saya, belajar, PERL);

    Fungsi print juga dapat menerima argumen skalar berupa filehandle dan list. Tentang

    filehandle akan dijelaskan dibagian File Input dan Output.

    Fungsi dapat mengembalikan nilai skalar atau list.

    Berikut ini fungsi localtime, yang mengembalikan list berisi data waktu, dipanggil tanpaargumen:

    @bulan = ('jan', 'peb', 'mar', 'apr', 'mei', 'jun', 'jul', 'ags',

    'sep', 'okt', 'nop', 'des');

    @hari = ('minggu', 'senin', 'selasa', 'rabu', 'kamis', 'jumat',

    'sabtu');

    ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =

    localtime;

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

    ",1900+$year,"\n";

    Perlu diingat bahwa PERL pertamakali dikembangkan di lingkungan Unix, jadi akan banyak

    ditemukan fungsi-fungsi yang familiar dengan sistem operasi ini, misalnya yang berhubungan

    dengan file system, socket, network, interprocess communication, dan process control.

    Daftar fungsi built-in secara lengkap dapat dibaca denganman perlfunc.

    Penjelasan untuk fungsi tertentu dapat dicari denganperldoc -f .

    Contoh:

    bash% perldoc -f localtime

    3.5.Konstruksi Kondisional

    Berikut ini konstruksi kondisional yang disediakan PERL

    3.5.1.if

    Mengeksekusi statemen jika kondisi bernilai benar. Untuk percabangan menggunakan elsif

    dan else. Bentuknya :

    if ( kondisi1) {

    # statemen-statemen

    }

    elsif (kondisi2) {

    # statemen-statemen

    } elsif (kondisi3) {

    # statemen-statemen

    } else {

    8 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    11/119

    # statemen-statemen

    }

    3.5.2.unless

    Adalah kebalikan dari if.

    3.6.Konstruksi Loop

    PERL mengenal beberapa jenis loop:

    3.6.1.for

    Digunakan untuk melakukan pengulangan berdasarkan 3 ekspresi yang masing-masing untuk

    : memulai loop, menentukan apakah melanjutkan eksekusi loop, dieksekusi pada akhir loop

    supaya kondisi untuk mengakhiri loop dapat dicapai. Bentuknya:

    for ( ; ; ) {

    # statemen-statemen

    }

    Ekspresi yang umum digunakan adalah sebagai berikut:

    for ( $i = 0; $i < $jumlah_pengulangan; $i++ ) {

    # statemen

    }

    3.6.2.foreach

    Digunakan untuk melakukan iterasi berdasarkan anggota sebuah array atau list. Bentuknya:

    foreach () {

    }

    Contoh:

    # iterasi atas array

    @hari = ('senin','selasa','rabu','kamis','jumat','sabtu','minggu');

    foreach $h (@hari) {

    print "hari $h\n";

    }

    # terhadap list

    $p = 1;

    foreach $q (2..6) {

    $p *= $q;

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 9

  • 8/14/2019 Bahasa Pemerograman Open Source

    12/119

    }

    print "faktorial 6 = $p\n";

    # atau terhadap array slice

    foreach $q (@hari[2..5]) {

    print "$q\n";

    }

    3.6.3.while

    Loop dieksekusi selama kondisi adalah TRUE. Untuk keluar dari loop harus dengan

    mengubah kondisi menjadi false atau menggunakan statement last;

    Bentuknya :

    while(kondisi) {

    # statemen

    }

    3.7.Input dan Output ke file

    3.7.1.Membaca dari file teks

    Sebelum file dapat dibaca maka harus file dibuka dengan fungsi open, dengan mode baca,

    contoh:

    open($fh, '/etc/passwd');

    Variable $fh adalah filehandle yang diperlukan untuk membaca dan menutup file.

    Selanjutnya setiap baris dibaca dengan operator . sebagai berikut:

    while($line = ) {

    # memproses $line

    }

    Setelah selesai file ditutup dengan fungsi close, contoh:

    close($fh)

    3.7.2.Menulis ke file teks

    Perintah yang sama dengan program di atas dapat digunakan untuk menulis ke file. Pertama,

    file dibuka dengan mode 'tulis':

    open($fh, > /path/ke/file);

    selanjutnya dapat ditulis dengan perintah print, menggunakan file handle, sbb:

    10 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    13/119

    print $fh baris teks yang ditulis ...\n;

    Seperti halnya dalam hal membaca, maka filehandle harus ditutup dengan close.

    Berikut ini contoh membaca dari file dan menulis ke file baru, atau mengcopy file:

    # mengcopy /etc/profile

    $fnam = '/etc/profile';

    $fbaru = '/home/didi/copyprofile';

    open($fh1, $fnam) or die gagal baca $fnam, $!;

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

    while($line = ) {

    print $fh2 $line;

    }

    close($fh1);close($fh2);

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

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

    3.8.Subrutin

    Pada program aplikasi umumnya, kumpulan statemen yang mengimplementasikan sebuah

    operasi tertentu didefinisikan dalam sebuah subrutin.

    Beberapa subrutin biasanya didefinisikan dalam sebuah file tersendiri, sehingga dapatdigunakan oleh berbagai program pemanggil.

    Berikut ini bentuk pendefinisian subrutin :

    sub {

    }

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

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

    , berikut ini contoh subrutin sederhana yang menghitung nilai faktorial :

    sub faktorial {

    my ($num) = @_;

    my $res = 1;

    foreach my $a (1..$num) {

    $res *= $a; # atau $res = $res * a

    }

    return $res;

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 11

  • 8/14/2019 Bahasa Pemerograman Open Source

    14/119

    }

    # return TRUE value

    1;

    Perhatikan bahwa jika subrutin didefinisikan di file tersendiri, maka file tersebut harus

    mengembalikan nilai TRUE, dalam program diatas digunakan bilangan 1.

    Jika subrutin tersebut disimpan di file /home/didi/mylib/math.pl, maka dapat

    dipanggil dari program lainnya sebagai berikut:

    req uire /home/didi/mylib/math.pl

    print "Faktorial 6 = ", faktorial(6),"\n";

    Penjelasan lebih lengkap tentang subrutin dapat dibaca dari man perlsub

    4.Penutup

    PERL adalah bahasa pemrograman yang berdaya guna tinggi, yang terus digunakan dan

    dikembangkan oleh komunitas open source.

    Seperti halnya bahasa open source lain, PERL memiliki sistem dokumentasi yang sangat

    lengkap, pembaca sangat dianjurkan menelaah manual PERL yang terdistribusi bersama

    source code PERL.

    12 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    15/119

    II. Mengenal PHP

    PHP adalah bahasa pemrograman script yang dinamis. Program PHP dapat dijalankan sebagai

    aplikasi web yang memerlukan web server dan dapat juga dijalankan menggunakan interpreter

    PHP, sebagai aplikasi konsol atau desktop-based.

    PHP adalah bahasa pemrograman yang kaya dengan library untuk pengembangan aplikasi

    mulai dari dukungan ke berbagai database management system, dukungan library Graphical

    User Interface, sampai library untuk sistem administrasi.

    1.Menginstal PHP

    PHP diinstal sebagai module apache dan sekaligus menginstal PHP CLI (command line

    interpreter), nama-nama direktori (misal: /dir/instalasi/xxx/anda) dapat anda ubah

    sesuai dengan keinginan anda.

    Karenanya harus menginstal apache terlebih dahulu jika apache belum terinstal.

    Berikut ini cara instalasi PHP 5 dari source code.

    1.1.Instalasi Apache

    1. Instal Apache, pertama download dari httpd.apache.org, dalam hal ini kami

    menggunakan apache 1.3.37

    2. Uncompress disembarang direktori

    bash% tar zxvf apache_1.3.37.tar.gz

    3. Konfigurasi dan kompilasi

    bash% cd apache_1.3.37

    bash% ./configure prefix=/dir/instalasi/apache/anda --enable-shared=max

    bash% make

    4. Instal

    bash% make install

    5. Instalasi apache selesai

    1.2.Instalasi module PHP dan PHP CLI:

    1. Download dari situs www.php.net

    2. Uncompress di sembarang direktori

    bash% tar zxvf php-5.2.0.tar.gz

    3. Konfigurasi dan kompilasi

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 13

    http://www.php.net/http://www.php.net/http://www.php.net/http://www.php.net/
  • 8/14/2019 Bahasa Pemerograman Open Source

    16/119

    bash% cd php-5.2.0

    bash% ./configure prefix=/dir/instalasi/php/anda with-apxs=/dir/instalasi/apache/anda/bin/apxs with-config-file-path=/etc

    bash% make

    4. Instal

    bash% make install

    5. Instalasi module php dan php-cli selesai

    2.Menjalankan Program PHP

    Program PHP dapat dijalankan dengan 2 modus:

    2.1.Aplikasi KonsolBuat program salam.php berikut ini disebarang direktori:

  • 8/14/2019 Bahasa Pemerograman Open Source

    17/119

    3.1.Program PHP

    File program PHP adalah file teks yang dapat dibuat dengan editor teks biasa (misal: vim,

    gedit, kedit).

    Sebuah file program PHP paling sedikit terdiri atas satu baris statemen yang dibatasi oleh tag

    pembuka blok statemen dan tag penutup blok statemen.

    Tag pembuka blok adalah . PHP mengenal 3 jenis tag

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

    dibahas disini.

    Sebuah program PHP dapat terdiri 2 jenis statemen:

    statemen PHP yang dibatasi oleh tag tersebut

    statement non-PHP (misal: HTML, WML, XML)

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

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

    whitespace di antara token-token dalam statemen.

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

    menggunakan statemen non-PHP.

    3.2.Komentar

    PHP Mengenal 3 jenis komentar:

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

    2. Diawali dengan #, berlaku hanya untuk 1 baris

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

    digunakan untuk menyisipkan komentar diantara token.

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

    // komentar 1

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

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

    /*

    komentar 4 , komentar ini

    melintas beberapa baris

    */

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

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 15

  • 8/14/2019 Bahasa Pemerograman Open Source

    18/119

    3.3.Tipe Data

    PHP membedakan operasi yang dapat dilakukan terhadap setiap tipe data.

    3.3.1.Tipe Primitif

    Tipe primitif adalah tipe data dasar yang tidak dapat dibagi lagi (decompose) atas tipe data

    yang lebih dasar lainnya.

    3.3.1.1.Boolean

    PHP mengenal tipe boolean yaitu : TRUE dan FALSE, keduanya case-insenstive.

    Jadi True, true, atau TRUE adalah sama.

    3.3.1.2.Integer

    Integer atau bilangan bulat di PHP tidak membedakan panjang byte (long atau integer biasa),

    keduanya adalah integer.

    Integer literal dapat dituliskan sebagai desimal (default, tanpa prefiks), octal (dengan prefix

    '0') atau hexadecimal (dengan prefix 0x).

    Contoh:

    1234567890 # desimal

    01234567 # octal

    0x123456789abcdef #hexadecimal

    3.3.1.3.float

    Literal float menggunakan '.' untuk pembatas pecahan desimal, dan menggunakan simbol e

    untuk pangkat desimal.

    Pada contoh berikut ini ke 4 bilangan yang ditulis dengan cara berbeda adalah sama besarnya:

    .123456789

    0.123456789

    123456789e-9

    123.456789e-4

    3.3.1.4.string

    String dalam PHP adalah dereten karakter.

    Literal string dapat ditulis dengan 3 cara :

    16 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    19/119

    3.3.1.4.1.Petik ganda

    String dengan petik ganda mengenal karakter khusus (baris baru, tab) dan melakukan

    ekspansi variabel

    3.3.1.4.2.Petik TunggalString dengan petik tunggal tidak mengenal karakter khusus (baris baru, tab) dan tidak

    melakukan ekspansi variabel

    3.3.1.4.3.Heredoc

    Sintak heredoc memperlakukan string seperti double quote, hanya saja menggunakan

    delimiter yang berbeda, yaitu deretan karakter alpahanumeric atau garis bawah, yang dimulai

    hanya dengan karakter non digit atau garis bawah. Contoh:

    'otomatisasi sysadmin',

    'c' => 'aplikasi system',

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 17

  • 8/14/2019 Bahasa Pemerograman Open Source

    20/119

    'ruby' => 'aplikasi web',

    'java' => 'aplikasi enter prise'

    );

    echo 'php tepat untuk ' , $a['php'],"\n";

    echo 'python cocok untuk ' , $a['python'],"\n";

    Array ber-indeks integer juga dapat dibuat dengan constructor array yang sama:

    $b = array('php','python','perl','c','ruby','java');

    echo $b[0],\n # php

    echo $b[1],\n # python

    echo $b[4],\n # ruby

    3.3.2.2.Objek

    Tipe data ini menyimpan referensi ke instance class. Tipe data objek dibuat menggunakan

    constructor class. Pembahasan selengkapnya ada di bagian Class.

    3.3.3.Tipe Khusus

    3.3.3.1.Resource

    Resource adalah tipe khusus yang menyimpan referensi ke resource eksternal.

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

    3.3.4.Konversi ke boolean

    PHP melakukan konversi dari tipe data lain ke boolean dalam konteks yang memerlukan tipe

    boolean berdasarkan aturan yang jelas.

    Salah satu konteks yang memerlukan tipe boolean adalah statemen kondisional (misal: if).

    Semua nilai berikut ini akan dianggap FALSE oleh PHP:

    boolean FALSE integer 0 (nol)

    float 0.0 (zero)

    string kosong, dan string "0"

    array yang tidak mempunyai elemen.

    object yang tidak mempuyai variabel member (PHP4)

    tipe khusus NULL

    semua variabel yang di-unset

    18 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    21/119

    3.4.Variabel

    Variabel digunakan untuk menyimpan data, selanjutnya data dimanipulasi melalui variabel.

    3.4.1.Assignment

    Variabel diberi nilai (= data) melalui assignment.

    Variabel tidak perlu dideklarasikan sebelum diberi nilai.

    $a = 1000;

    $b = 'ini adalah string';

    $c = string ini bergabung dengan '$b' ;

    Jika ekspresi mengacu ke variabel yang belum didefinisikan tidak menyebabkan error.

    echo $a, $b, $c, \n;

    Assignment ke variabel dapat menghasilkan data baru (dengan nilai yang sama), atau tidak

    menghasilkan data baru tapi hanya menghasilkan referensi baru.

    $a = 1234;

    $b = $a; # $b berisi sama dengan a

    Pada PHP 5, assignment dari variabel (yang di-assign ke) objek ke variabel lain, tidak

    menyebabkan adanya data baru, tapi hanya menghasilkan referensi baru.

    1. /* REQUIRE PHP 5 */

    2. class Koordinat

    3. {

    4. function Koordinat($x, $y) {

    5. $this->X = $x;

    6. $this->Y = $y;

    7. }

    8. }

    9. $k1 = new Koordinat(5,5);

    10. $k2 = $k1;

    11. $k2->X += 222; # X di $k2 diubah = 227

    12.echo $k1->X ,"\n"; # X $k1 juga berubah = 227

    Untuk mendapatkan hasil yang sama di PHP 4, perlu menggunakan reference assignment =&,

    baris 10 ditulis sbb:

    $k2 =& $k1;

    Reference assignment =&, juga dapat digunakan untuk variabel primitif:

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 19

  • 8/14/2019 Bahasa Pemerograman Open Source

    22/119

    $x = 200;

    $y =& $x;

    $y += 300;

    echo $x ,\n; # 500

    3.5.Ekspresi dan Operator

    Ekspresi adalah segala sesuatu yang memiliki nilai.

    Ekspresi meliputi nilai literal, pemanggilan fungsi yang mengembalikan nilai, hasil operasi,

    termasuk assignment.

    Assignment dalam PHP memiliki nilai dan adalah ekspresi juga. Hal ini dapat menjadi

    sumber error yang tidak mudah ditemukan, ketika yang ingin dilakukan adalah uji kesamaan(equality ==) :

    # program berikut ini contoh penggunaan ekspresi yang SALAH

    $a = 123;

    if ($a = 100 0 ) { # selalu TRUE, seharusnya $a == 1000echo $a sama dengan 1000\n;

    }

    $b = 0;

    if ($b = 0 ) { # selalu FALSE seharusnya $b == 0echo $b sama dengan 0\n;

    }

    Pada bagian berikutnya dibahas berbagai operator, setiap penjelasan langsung menggunakan

    contoh.

    3.5.1.Operator aritmetika

    Berlaku untuk tipe data bilangan.

    penjumlahan, perkalian, pembagian, pengurangan, modulus.

    $a = 10; $b = 20;

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

    $c = $a - $b; // pengurangan , hasil -10

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

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

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

    20 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    23/119

    3.5.2.Operator incrementing/decrementing

    Menambah atau mengurangi bilangan dengan 1, terdiri atas:

    post-increment, pre-increment, post-decrement, pre-decrement.

    $a = 10;

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

    echo "b == $b , a == $a \n"; // b == 10 , a == 11

    $b = ++$a; // pre-increment

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

    $b = $a--; // post-decrement

    echo "b == $b , a == $a \n"; // b == 12 , a == 11

    $b = --$a; // pre-decrement

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

    3.5.3.Operator assignment

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

    $a = 10;

    $c = ($b = 10) + $a; // $c == 20, $b == 10

    $a += 10; // $a == 20

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

    3.5.4.Operator Perbandingan

    Membandingkan antara 2 nilai. Berikut ini operasi dan contohnya:

    3.5.4.1.Ternary

    ekspresi1 ? ekspresi2 : ekspresi3

    Operator '?' ini mengembalikan nilai ekspresi2 jika ekspresi1 bernilai TRUE dan

    mengembalikan nilai ekspresi3 jika ekspresi1 bernilai FALSE.

    // ternary

    $hasil = true ? 'benar':'salah';

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 21

  • 8/14/2019 Bahasa Pemerograman Open Source

    24/119

    echo $hasil , "\n"; // benar

    $hasil = false ? 'benar':'salah';

    echo $hasil , "\n"; // salah

    3.5.4.2.Equal

    ekspresi1 == ekspresi2

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

    ekspresi2, jika tipe data kedua ekspresi berbeda maka sebelum operasi dijalankan ekspresi2

    dikonversikan tipe datanya ke tipe data ekspresi1.

    // eq ual

    $a = 10; $b = '10';

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

    3.5.4.3.Identical

    ekspresi1 === ekspresi2

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

    ekspresi2 dantipe data kedua nilai ekspresi sama.

    // identical

    $a = 10; $b = '10'; $c = 10;

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

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

    3.5.4.4.Not Equal

    ekspresi1 != ekspresi2

    ekspresi1 ekspresi2

    Operator '!=' dan '' ini hanya menghasilkan nilai TRUE jika nilai ekspresi1 tidak

    samadengan nilai ekspresi2, jika tipe data kedua ekspresi berbeda maka sebelum operasi

    dijalankan ekspresi2 dikonversikan tipe datanya ke tipe data ekspresi1.// not eq ual

    $a = 10; $b = '10'; $c =11;

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

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

    // not eq ual

    $a = 10; $b = '10'; $c =11;

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

    22 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    25/119

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

    3.5.4.5.Not Identical

    ekspresi1 !== ekspresi2

    Operator '!==' hanya menghasilkan nilai TRUE jika nilai ekspresi1 tidak samadengan nilaiekspresi2 dantipe data kedua nilai ekspresi sama.

    // not identical

    $a = 10; $b = '10'; $c = 10;

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

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

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

    ekspresi1 < ekspresi2

    ekspresi1 = ekspresi2

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

    setelah melakukan konversi tipe jika ekspresi2 berbeda tipedata dengan ekspresi1

    $a = 10; $b = 11; $c = 10;

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

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

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

    3.5.5.Operator Logika

    3.5.5.1.Logical AND

    ekspresi1 and ekspresi2

    Menghasilkan nilai TRUE jika ekspresi1 dan ekspresi2 keduanya bernilai TRUE.

    //and

    echo (true and true)?'tr ue':'false',"\n"; // TRUE

    echo (true and false)?'true':'false',"\n"; // FALSE

    echo (false and false)?'true':'false',"\n"; // FALSE

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 23

  • 8/14/2019 Bahasa Pemerograman Open Source

    26/119

    3.5.5.2.Logical OR

    ekspresi1 or ekspresi2

    Operator OR menghasilkan nilai TRUE jika adasalah satu dari ekspresi1 dan ekspresi2

    bernilai TRUE.

    // or

    echo (true or true)?'tr ue':'false',"\n"; // TRUE

    echo (true or false)?'true':'false',"\n"; // TRUE

    echo (false or false)?'true':'false',"\n"; // FALSE

    3.5.5.3.Logical XOR

    ekspresi1 xor ekspresi2

    Operator XOR menghasilkan nilai TRUE jika salah satu dari ekspresi1 dan ekspresi2 bernilai

    TRUE, tapi tidak kedua-duanya.

    // xor

    echo (true xor true)?'true':'false',"\n"; // FALSE

    echo (true xor false)?'true':'false',"\n"; // TRUE

    echo (false xor false)?'true':'false',"\n"; // FALSE

    3.5.5.4.Logical NOT

    ! ekspresi1

    Operator NOT menghasilkan nilai TRUE jika ekspresi1 bernilai FALSE, dan menghasilkan

    nilai FALSE jika ekspresi1 bernilai TRUE.

    3.5.5.5.Logical AND (&&)

    Samadengan operator AND sebelumnya tapi precedence nya lebih tinggi,

    // &&

    echo (true && true)?'tr ue':'false',"\n"; // TRUE

    echo (true && false)?'true':'false',"\n"; // FALSE

    echo (false && false)?'true':'false',"\n"; // FALSE

    3.5.5.6.Logical OR (||)

    Samadengan operator OR sebelumnya tapi precedence nya lebih tinggi.

    // ||

    echo (true || true)?'tr ue':'false',"\n"; // TRUE

    24 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    27/119

    echo (true || false)?'true':'false',"\n"; // TRUE

    echo (false || false)?'true':'false',"\n"; // FALSE

    Operatir || lebih tinggi precedencenya dari or

    echo (true xor false || true) ? 'true':'false',"\n"; // FALSE

    echo (true xor false or true) ? 'true':'false',"\n"; // TRUE

    PHP melakukan optimasi pada ekspresi yang menggunakan operator logika. Contoh:

    ekspresi1 && ekspresi2 && ekspresi3

    Pada ekspresi tersebut jika ekspresi1 bernilai FALSE maka ekspresi2 dan ekspresi3 tidak

    akan dieksekusi. Begitu juga pada contoh berikut:

    ekspresi1 || ekspresi2 || ekspresi3

    Pada ekspresi tersebut jika ekspresi1 bernilai TRUE maka ekspresi2 dan ekspresi3 tidak akan

    dieksekusi.

    3.5.6.Operator bit

    Operator ini berlaku untuk integer dan karakter ASCII.

    3.5.6.1.Bitwise AND

    b1 & b2

    Menghasilkan bit yang di-set jika bit1 dan bit2 juga di-set.

    // 9 = 1001

    // 10 = 1010

    echo 9 & 10,"\n"; // 8 = 1000

    3.5.6.2.Bitwise OR

    b1 | b2

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

    echo 9 | 10,"\n"; // 11 = 1011

    3.5.6.3.Bitwise XOR

    b1 ^ b2

    Menghasilkan bit yang di-set jika salah satu dari bit1 dan bit2 di-set, tapi tidak keduanya.

    echo 9 10,"\n"; // 3 = 0011

    Bitwise NOT

    ~b1

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

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 25

  • 8/14/2019 Bahasa Pemerograman Open Source

    28/119

    Shift left (geser bit ke kiri)

    b1 n

    Menggeser bit b1 sebanyak n ke kanan.

    Setiap pergeseran satu bit sama dengan bagi dengan 2

    echo 10 >> 1, "\n"; // 5 = 0101

    3.5.7.Operator String

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

    lainnya.

    Contoh:

    $a = 'saya...';

    $b = 'belajar php';

    $c = $a . $b; // 'saya...belajar php'

    3.6.Kendali Alur Program

    3.6.1.Conditional

    Statemen if elseif else digunakan untuk menguji beberapa kondisi.

    Berikut ini contoh program membaca bilangan dari stdin (keyboard), lalu membandingkan

    dengan yang ada di program:

    $ditebak = 123;

    echo "ayo tebak: ";

    $tebak = chop(fgets(STDIN));

    if($tebak == '') {

    echo("kosong!\n");

    } elseif($tebak < $ditebak) {

    echo("terlalu kecil\n");

    } elseif ($tebak > $ditebak) {

    echo("terlalu besar\n");

    26 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    29/119

    } else {

    echo 'benar...',"\n";

    }

    3.6.2.switch

    Switch dapat digunakan sebagaimana if elseif else, tapi lebih tepat lagi digunakan untuk

    mengevaluasi sebuah kondisi lalu membandingkan hasil evaluasi tersebut dengan literal

    integer atau string.

    Perhatikan setelah switch digunakan statemen break untuk mencegah statemen berikutnya

    dalam blok switch dieksekusi:

    echo "3 rasa es krim:\n\t1)moka\n\t2)stroberi\n\t3)mengkudu\n";

    echo "pilih: ";

    $pilih = chop(fgets(STDIN));

    switch($pilih) {

    case 1:

    echo "yum yum yum\n";

    break;

    case 2:

    echo "slurp..slurp..\n";

    break;

    case 3:

    echo "yaak.. bleek..\n";

    break;

    default:

    echo 'tidak ada',"\n";

    }

    3.6.3.Struktur loop

    Struktur loop adalah struktur untuk melakukan iterasi atau pengulangan eksekusi satu atau

    beberapa statement.

    PHP memiliki beberapa struktur loop: for, while, do while, foreach.

    for

    Menggunakan 3 blok ekspresi yang dieksekusi secara berbeda:

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 27

  • 8/14/2019 Bahasa Pemerograman Open Source

    30/119

    1. satu kali di awal eksekusi statemen for

    2. setiap kali di awal loop di evaluasi nilainya untuk menentukan apakah eksekusi loop

    berikutnya akan dilakukan

    3. setiap kali di akhir loop

    1. echo "hitung faktorial dari :";

    2. $n = chop(fgets(STDIN));

    3. $faktorial = 1;

    4. for($a = $n; $a > 0; $a--)

    5. {

    6. $faktorial *= $a;

    7. }

    8. echo "$faktorial \n";

    Statement for dieksekusi dengan langkah-langkah sebagai berikut :

    1. Pada awal eksekusi statemen for nilai $a di set sama dengan $n (baris 4), langkah ini

    hanya dilakukan satu kali saja.

    2. Masih di baris 4: diperiksa apakah $a masih lebih besar dari 0, jika benar maka blok

    for mulai di-eksekusi (antara baris 5 dan 7), jika tidak benar maka eksekusi statemen

    for berakhir.

    3. Sebelum mengulang eksekusi loop, nilai $a dikurangi 1

    4. Kembali ke langkah 2.

    Ketiga blok dapat terdiri lebih dari satu ekspresi, yang dipisahkan oleh koma (,). Jika blok

    kedua terdiri lebih dari satu ekpresi maka blok ekspresi tersebut diperlakukan seperti halnya

    jika koma diganti dengan operator || (logical operator or).

    # pembangkit fibonacci

    echo "hitung fibonacci sampai: ";

    $maks = chop(fgets(STDIN));

    for($a = 0, $b = 1; $b < $maks; $tm p=$a, $a = $b, $b += $tmp) {

    echo $b," ";

    }

    Jika ekspresi blok kedua adalah kosong, maka loop for akan dieksekusi tanpa berhenti, dan

    hanya dapat keluar dari dalam blok dengan statemen break.

    3.6.3.1.while

    Statemen while digunakan untuk menjalankan pengulangan selama ekspresi dalam while

    adalah TRUE.

    28 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    31/119

    Contoh pada penghitung faktorial jika menggunakan while:

    echo "hitung faktorial dari :";

    $a = chop(fgets(STDIN));

    $faktorial = 1;

    while($a > 0)

    {

    $faktorial *= $a;

    $a--;

    }

    echo "$faktorial \n";

    Pembangkit deret fibonacci menggunakan statement while:

    # pembangkit fibonacci

    echo "hitung fibonacci sampai :";

    $maks = chop(fgets(STDIN));

    $a = 0; $b = 1;

    while($b < $maks) {

    echo $b," ";

    $tmp=$a; $a = $b; $b += $tmp;

    }

    3.6.3.2.do while

    Loop do-while dieksekusi minimum satu kali. Blok dalam loop akan dieksekusi selama

    ekspresi yang diuji dalam while bernilai TRUE.

    $ditebak = 123;

    do {

    echo "ayo tebak: ";

    $tebak = chop(fgets(STDIN));

    if($tebak == '') {

    echo("kosong!\n");

    } elseif($tebak < $ditebak) {

    echo("terlalu kecil\n");

    } elseif ($tebak > $ditebak) {

    echo("terlalu besar\n");

    } else {

    echo 'benar...',"\n";

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 29

  • 8/14/2019 Bahasa Pemerograman Open Source

    32/119

    }

    } while($tebak != $ditebak)

    3.6.3.3.break

    Statement break digunakan di dalam loop untuk mengubah alur eksekusi sehingga keluar dari

    loop tersebut. Tapi jika loop tersebut ada di dalam loop yang lain, maka eksekusi beralih ke

    loop luar, tepat setelah akhir loop dalam tersebut.

    1. $ditebak = 123;

    2. while(true) { # loop 1

    3. while(true) { # loop 2

    4. echo "ayo tebak: ";

    5. $tebak = chop(fgets(STDIN));

    6. if($tebak == '') {

    7. echo("kosong!\n");

    8. } elseif($tebak < $ditebak) {

    9. echo("terlalu kecil\n");

    10. } elseif ($tebak > $ditebak) {

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

    12. } else {

    13. echo 'benar...',"\n";

    14. break;

    15. }

    16. } # akhir loop 2

    17. echo "lanjut? ";

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

    19. if($ya == 'n') break;

    20.} # akhir loop 1

    Perhatikan pada contoh ada 2 loop (dimulai dari baris 2 dan 3) .

    Perintah break pada baris 14 hanya mengalihkan eksekusi dari loop2 ke loop 1, tapi tidak

    mengeluarkan dari loop 1. Diperlukan statemen break (baris 19) dari loop 1 untuk dapat

    keluar dari loop tersebut.

    3.6.3.4.continue

    Statemen continue digunakan untuk mengubah alur eksekusi program agar segera

    30 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    33/119

    menjalankan iterasi berikutnya sehingga statemen-statemen di bawah statemen continue ini

    tidak dieksekusi.

    $ditebak = 123;

    $min_coba = 3;

    $coba = 0;

    while(true) {

    $coba++;

    echo "ayo tebak: ";

    $tebak = chop(fgets(STDIN));

    if($tebak == '') {

    echo("kosong!\n");

    } elseif($tebak < $ditebak) {

    echo("terlalu kecil\n");

    } elseif ($tebak > $ditebak) {

    echo("terlalu besar\n");

    } else {

    echo 'benar...',"\n";

    break;

    }

    if($coba < $min_coba) continue;

    echo "menyerah?[y/n] : ";

    $insap = chop(fgets(STDIN));

    if($insap == 'y')

    break;

    else

    $coba = 0;

    }

    3.6.3.5.foreach

    Statement foreach digunakan khusus untuk mengiterasi array, ada 2 bentuk

    untuk array dengan indeks integer mulai dari 0:

    $array = array(10,20,30,40,50);

    foreach($array as $value) {

    echo $value , "\n";

    }

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 31

  • 8/14/2019 Bahasa Pemerograman Open Source

    34/119

    untuk array asosiatif:

    $hash = array('kode'=> 'A123', 'nama'=> 'susu sapi', 'harga'=>

    12000, 'satuan'=> 'liter');

    foreach($hash as $key => $value) {

    echo $key , ' => ', $value , "\n";

    }

    3.6.3.6.return

    Mengubah alur eksekusi sehingga baris-baris berikutnya tidak dijalankan lagi.

    Jika digunakan dalam fungsi statemen return dapat digunakan untuk mengembalikan nilai ke

    pemanggil fungsi.

    3.6.3.7.ExceptionException adalah object yang digunakan untuk mengubah ekselusi program ketika terjadi

    kesalahan (error).

    Untuk menangani exception digunakan konstruksi blok try dan catch.

    Konstruksi blok try{} berisi statemen yang dapat mengakibatkan terjadinya exception,

    konstruksi catch terdiri atas bagian deklarasi object exception yang ditangani dan bagian blok

    statemen yang menangani objek exception tersebut.

    Untuk mengakibatkan exception program menggunakan statement throw, yang menjadi

    parameter dari throw adalah objek Exception.

    Exception baru dikenal pada PHP 5.

    Contoh:

    try {

    echo 'baris berikutnya akan menghasilkan exception',"\n";

    throw new Exception('error yg disengaja');

    echo 'baris ini akan diabaikan',"\n";

    } catch (Exception $e) {

    echo 'ada exception.. ',$e,"\n";

    }

    Melalui penggunaan exception secara tepat, dapat memudahkan penanganan error.

    Exception adalah cara alternatif untuk pen-signal-an error yang lebih baik dari cara

    konvensional menggunakan return value. Return value seharusnya hanya digunakan untuk

    mengembalikan hasil komputasi, dan tidak pernah mengembalikan signal (kode) error.

    32 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    35/119

    3.7.Fungsi

    PHP mengenal 3 jenis fungsi:

    1. Fungsi yang merupakan bagian dari PHP (bult-in)

    Fungsi ini selalu tersedia untuk digunakan.

    2. Fungsi yang disediakan oleh extension module.

    Fungsi jenis ini baru tersedia setelah user menginstal extension module tertentu.

    3. Fungsi yang didefinisikan oleh pengguna bahasa PHP (user defined function)

    Fungsi jenis ini dibuat sendiri oleh pengguna bahasa PHP, baru tersedia jika definisi

    fungsi dimasukkan ke dalam scope program melalui statement : require, include, dan

    sejenisnya,

    Fungsi yang dibahas pada bagian ini adalah yang terakhir.

    3.7.1.Mendefinisikan Fungsi

    Fungsi didefinisikan menggunakan keyword function, diikuti nama fungsi.

    Fungsi dapat menerima nol atau lebih parameter fungsi dan dapat menghasilkan nilai

    keluaran, dapat pula tidak.

    Berikut ini contoh fungsi yang tidak menerima parameter fungsi, dan tidak mengembalikan

    nilai

    , hanya mencetak bentuk piramida ke stdout:

    function piramida() {

    $t = 20;

    for($i = $t, $j=0; $i > 0; $i--, $j++) {

    echo str_repeat(' ', $i);

    echo str_repeat('^', $j*2+1),"\n";

    }

    }

    Fungsi piramida, menggunakan fungsi built-in str_repeat untuk menghasilkan string yang ber-

    ulang.

    piramida();

    PHP 5 mendukung jumlah parameter fungsi yang panjangnya tidak tertentu.

    Berikut ini contoh fungsi yang menghasilkan deret fibonacci yang dikembalikan sebagai

    array, menerima parameter fungsi bilangan maksimum :

    function fibonacci($max) {

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 33

  • 8/14/2019 Bahasa Pemerograman Open Source

    36/119

    $a = array(1,1);

    $i = 1;

    while(true) {

    $z = $a[$i]+$a[$i-1];

    echo $z,"\n";

    if($z > $max) break;

    $a[++$i]= $z;

    }

    return $a; # mengembalikan array

    }

    Fungsi ini menerima parameter $max untuk membatasi bilangan terbesar yang akan

    dihasilkan, dan mengembalikan deretan bilangan dalam bentuk array. Berikut cara

    pemanggilannya:

    $deret = fibonacci(100);

    print_r($deret) # cetak array

    3.7.2.Nilai Default untuk parameter

    Untuk parameter fungsi bertipe skalar (numerik, string, array, bukan objek) , dapat ditentukan

    nilai defaultnya, contoh mencetak bilangan fibonacci secara rekursif :

    function fibonacci($max, $a=0, $b=1) {

    if($b < $max) {

    echo $b, " ";

    fibonacci($max, $b, $b+$a); # rekursi

    }

    }

    fibonacci(100);

    Parameter default memudahkan penggunaan fungsi.

    3.7.3.Pemanggilan Fungsi

    Pemanggilan fungsi harus selalu menggunakan kurung, baik untuk fungsi yang menerima

    parameter maupun yang tidak.

    Pada contoh-contoh sebelumnya echo seringkali dipanggil tanpa kurung, hal ini karena echo

    sesungguhnya bukanlah fungsi, tapi echo adalah language construct(seperti halnya if, for,

    while, return)

    34 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    37/119

    3.8.Class

    PHP sebagai bahasa yang mendukung pemrograman ber-orientasi objek (Object Oriented

    Programming) mengenal struktur class.

    Class memudahkan enkapsulasi data dan reusabilitas kode program.

    Mendefinisikan classClass didefinisikan menggunakan keyword class diikuti nama class yang biasanya diawali

    dengan huruf kapital, badan (implementasi) class dibatasi oleh kurung kurawal.

    Sebuah class dapat memiliki satu atau lebih method, yaitu fungsi yang berasosiasi dengan

    class atau objek dari class tersebut.

    Sebuah class dapat memiliki method khusus untuk meng-inisialisasi-kan objek dari class

    tersebut yang disebut constructor, constructor adalah method pertama dari class yang

    dieksekusi sebelumnya objek tersebut dipanggil. Jika constructor tidak didefinisikan maka

    PHP menyediakan default constructor.

    Class dapat mendefinisikan member variabel, yaitu variabel yang hanya dapat diakses melaluiobject dari class tersebut. Member variabel dapat didefinisikan langsung dalam method

    melalui objek khusus $this.

    Berikut ini class Vektor:

    class Vektor { // awal definisi

    /* constructor */

    function Vektor($i, $j) {

    $this->i = $i; // member variable i

    $this->j = $j; // member variable j

    }

    /* @return vektor */

    function tambah($v) {

    return new Vektor($this->i + $v->i, $this->j + $v->j);

    }

    /* @return vektor */

    function kali($skalar) {

    return new Vektor($this->i*$skalar, $this->j * $skalar);

    }

    /* @return panjang vektor */

    function to_skalar() {

    return sqrt($this->i * $this->i + $this->j * $this->j);

    }

    /* method khusus untuk merepresentasikan sbg string (hanya di PHP

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 35

  • 8/14/2019 Bahasa Pemerograman Open Source

    38/119

    5) */

    function __toString() {

    return "($this->i, $this->j)";

    }

    } // akhir definisi class

    Untuk mengakses member variable atau member method dari sebuah class melalui objeknya

    maka digunakan operator -> .

    Objek sebuah class hanya dapat diadakan melalui constructor class tersebut, baik secara

    langsung dipanggil menggunakan new atau melalui method lain.

    $v1 = new Vektor(3,4); // objek $v1 diadakan

    $v2 = new Vektor(7,8); // objek $v2 diadakan

    $v3 = $v1->tambah($v2);

    echo "$v1 + $v2 = $v3", "\n";

    echo $v1->to_skalar(), "\n";

    echo '$v3->i == ', $v3->i ,"\n";

    echo '$v3->j == ', $v3->j ,"\n";

    3.9.Reusabilitas

    PHP menyediakan konstruksi untuk mendukung reusabilitas kode program dalam bentuk

    class, fungsi, konstanta atau variabel global.

    Ada 4 statemen yang digunakan untuk reusabilitas kode program

    3.9.1.include

    Digunakan untuk memasukkan (to include) file ke baris ditempatkannya statemen include ini ,

    statemen include memerlukan parameter berupa path ke file yang akan di-include .

    Path dapat berupa path relatif atau path absolut.

    3.9.2.require

    Statemen require persis sama dengan include hanya saja jika file yang akan dimasukkan

    tidak ditemukan dapat menyebabkan fatal error sehingga menghentikan eksekusi program.

    Menggunakan require lebih menjamin disertakannya file atau definisi fungsi yang diperlukan.

    3.9.3.include_once

    Sama dengan include, tapi jika file sudah pernah di-include sebelumnya tidak akan

    36 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    39/119

    dimasukkan lagi.

    3.9.4.require_once

    Sama dengan include_once, tapi jika file yang di-include tidak ditemukan menyebabkan fatal

    error.

    3.10.Menggunakan Fungsi dan Class dan file lain

    Agar sebuah fungsi atau sebuah class dapat digunakan oleh program pemanggil yang berbeda,

    maka fungsi atau class tersebut di simpan dalam file tersendiri.

    Statemen require_once sangat tepat digunakan untuk menyertakan definisi fungsi atau

    class dari file tersebut, karena menjamin definisi fungsi atau class hanya satu kali dipanggil.

    Misal class Vektor disimpan dalam file Vektor.php di dalam direktori: /home/fadhilah/classes,

    maka jika program testvektor1.php perlu menggunakan class tersebut, digunakan

    require_once:

    1. req uire_once('/home/fadhilah/classes/Vektor.php');

    2. $v1 = new Vektor(3,4);

    3. $v2 = new Vektor(7,8);

    4. $v3 = $v1->tambah($v2);

    5. echo "$v1 + $v2 = $v3", "\n";

    6. echo $v1->to_skalar(), "\n";

    7. echo '$v3->i == ', $v3->i ,"\n";

    8. echo '$v3->j == ', $v3->j ,"\n";

    Dapat juga mengubah include_path dari PHP dengan fungsi set_include_path, baris 1

    digantikan oleh 2 baris berikut:

    set_include_path(get_include_path()./home/fadhilah/classes/);

    req uire_once('Vektor.php');

    Keuntungan menggunakan set_include_path adalah statemen require_once tidak perlu

    menyertakan path ke file-file tersebut, hanya perlu menyebutkan nama filenya saja.

    4.Aplikasi Web

    Bagian ini menjelaskan aspek-aspek bahasa PHP yang khusus berhubungan dengan

    pengembangan aplikasi Web.

    Agar contoh-contoh pada bagian ini dapat dijalankan, diperlukan web server (misal: apache)

    yang mendukung aplikasi PHP.

    Cara mensetup apache agar dapat mendukung PHP tidak dijelaskan.

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 37

  • 8/14/2019 Bahasa Pemerograman Open Source

    40/119

    4.1.Method GET dan POST

    Aplikasi web adalah berbasiskan interaksi antara 2 program, yang masing-masing berperan

    sebagai client dan server.

    Dalam konteks bahasan ini, server adalah web server (misal: apache httpd 2, apache httpd 1,

    tomcat, jetty) dan client adalah web browser (misal: mozilla firefox, konqueror, epiphany,opera)

    Server adalah program pertama yang berjalan dan menyediakan service yang dapat di-request

    oleh client.

    Selanjutnya client berjalan, dan mengirimkan request kepada server, server menerima dan

    memproses request tersebut dan menghasilkan response.

    Client menerima response dan merepresentasikan response tersebut ke pengguna.

    Web request dapat dikirimkan dalam 2 method (cara) GET dan POST.

    Method GET digunakan apabila operasi yang diharapkan terjadi di sisi server, akibat adanya

    request ini, tidak akan mengakibatkan perubahan (pada data atau sumber data).

    Method POST digunakan apabila operasi yang diharapkan terjadi di sisi server, akibat adanya

    request ini, akan mengakibatkan perubahan (pada data atau sumber data).

    Web request dapat memiliki parameter, yang diperlakukan oleh aplikasi sebagai data string.

    Pada method GET, parameter tersebut dikirimkan sebagai bagian dari URL, dan panjang

    parameter dibatasi oleh panjang maksimum URL.

    Pada method POST, parameter tersebut dikirimkan dalam body request. Panjang parameter

    tidak terbatas.

    4.2.Menangani request

    Aplikasi PHP yang baik, dirancang untuk menangani request dengan benar. Menangani

    request terdiri atas:

    membaca data dari request sebagai masukan, termasuk parameter request.

    Melakukan proses untuk menghasilkan keluaran berdasarkan data request

    mengirimkan response

    4.2.1.Request GET

    Pada aplikasi PHP, parameter dari request GET dapat diakses menggunakan variabel khusus

    $_GET yang sudah didefinisikan oleh PHP.

    Variabel $_GET ini adalah array assosiatif, semua value harus diakses menggunakan key.

    4.2.2.Request POST

    Parameter dari request POST diakses menggunakan variabel $_POST.

    38 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    41/119

    Seperti halnya $_GET, variabel ini juga array assosiatif.

    Contoh aplikasi web sederhana:

    Berikut ini contoh aplikasi web sederhana yang menerapkan berbagai subyek yang sudah

    dibahas.

    4.3.Penjelasan Program

    4.3.1.File head.php

    Berisi header untuk setiap halaman web, agar tampilan konsisten.

    Header juga cocok untuk menempatkan include ke file-file yang menyediakan class-class atau

    fungsi-fungsi yang diperlukan oleh aplikasi.

    Warung Web

    4.3.2.File ordersvc.php

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

  • 8/14/2019 Bahasa Pemerograman Open Source

    42/119

    }

    // @return daftar produk

    function produk() {

    return $this->produk;

    }

    // @return pilihan

    function pilihan($prod) {

    return $this->pilihan[$prod];

    }

    // proses pesanan

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

    {

    echo 'Terimakasih, ',"\n";

    echo "Kami segera mengirimkan pesanan ke $kirimke,

    kalau kebetulan lewat..
    \n";

    if($konfig) {

    echo '';

    foreach($konfig as $d) {

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

    }

    echo '';

    } else {

    echo "Anda memilih menu standard
    \n";

    }

    }

    }

    ?>

    4.3.3.File menu.php

    Menampilkan menu pilihan:

    Selamat datang di warung

    Apa yang anda inginkan:

    40 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    43/119

    4.3.4.File pesan.php

    Untuk memproses pesanan, dan menampilkan response.

    Jika pesanan sudah diproses form tidak ditampilkan lagi

  • 8/14/2019 Bahasa Pemerograman Open Source

    44/119

    ?>

    Konfigurasi

    kirim ke alamat

  • 8/14/2019 Bahasa Pemerograman Open Source

    45/119

    HTML (Hypertext Mark Up Language) dan gunakan HTML editor dan previewer yang cerdas

    sehingga membantu dalam menemukan kesalahan-kesalahan sintaks penulisan.

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 43

  • 8/14/2019 Bahasa Pemerograman Open Source

    46/119

    44 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    47/119

    III. Mengenal Python

    1.Apa itu Python

    Python adalah bahasa pemrograman yang interpreted. Program python dapat langsung

    dieksekusi menggunakan interpreter, tanpa melalui proses kompilasi tersendiri.

    Python telah digunakan untuk berbagai aplikasi, mulai dari utilitas untuk administrasi sistem,

    pemrograman game, aplikasi web terintegrasi dengan database sampai aplikasi desktop

    berbasis Graphical User Interface.

    Python adalah bahasa tingkat lebih tinggi, lebih tinggi dari C/C++, memiliki struktur data

    built-in dengan kemampuan operasi yang kaya dan luwes, sehingga memungkinkan program

    Python lebih ringkas daripada jika ditulis dengan C/C++ atau bahkan Java.

    Python adalah bahasa yang modular, setiap program python adalah module, yang dapat

    diimport oleh program lain untuk dimanfaatkan objek atau fungsinya.

    Library python sangat extensible, bagi anda yang menguasai pemrograman C, tidak sulit

    untuk menambah fungsi baru atau module ke dalam library python.

    2.Menjalankan Interpreter Python

    Setelah interpreter python ter-instal, maka dapat dijalankan dengan cara-cara berikut ini:

    1. Melalui shell, biasanya untuk menjalankan 1 statemen python:

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

    2. eksekusi statemen secara interaktif, menggunakan python sebagaimana shell sistem,

    setiap statemen di-ketik pada python shell prompt, dan langsung di-eksekusi oleh

    interpreter,

    bash$ python

    >>> print assalamu'alaikum

    assalamu'alaikum

    >>> 60 * 60 * 24

    86400

    Pada tulisan ini, beberapa contoh diberikan dalam mode eksekusi interaktif, baris

    contoh tersebut diawali dengan '>>>'

    3. Menggunakan program atau script python.

    Buat program salam.py, seperti berikut:

    #!/usr/local/bin/python

    print assalamu'alaikum

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 45

  • 8/14/2019 Bahasa Pemerograman Open Source

    48/119

    1. Perhatikan baris pertama mengacu ke path interpreter python, dijalankan sebagai

    berikut:

    bash$ chmod 755 salam.py

    bash$ ./salam.py

    3.Program Python

    Program python adalah program teks dengan encoding ASCII, dan dapat juga ditulis dengan

    encoding lain (misal: Unicode). Penulisan identifer harus menggunakan ASCII.

    4.Statemen

    Statemen diakhiri dengan baris baru, tapi statemen dapat melintas baris jika interpreter

    menganggap statemen tersebut belum sempurna.

    Tidak perlu karakter khusus untuk mengakhiri statemen.

    Python memperlakukan indentasi di awal baris secara khusus, indentasi digunakan sebagai

    penanda blok statemen. Pada bagian tentang kendali alur program hal ini akan dibahas lebih

    lanjut.

    5.Komentar

    Setiap baris komentar harus diawali dengan '#'. Komentar tidak harus selalu di awal baris.

    Contoh:

    # rumus luas lingkaran

    # ini komentar baris kedua

    luas = 22 / 7 * 14 * 14

    sisa = 106 % 3 # menghitung sisa pembagian

    6.Objek dan variabel

    Objek adalah abstraksi data, setiap data dalam python diwakili oleh objek atau oleh relasi

    antara objek.

    Setiap objek memiliki id yang unik dan tidak berubah, id objek dapat diketahui menggunakan

    fungsi id(). Operator is dapat digunakan untuk membandingkan identitas objek.

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

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

    Variabel adalah referensi ke objek, variabel mereferensikan objek setelah melalui assignment.

    46 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    49/119

    print type(123) # 123 adalah objek

    v1 = 123 # assignment: variabel sebagai referensi ke objek

    print type(v1) # tipe v1 adalah tipe objek yg direferensikan

    print id(v1) # id objek

    print v1 # mencetak nilai objek yang direferensikan oleh v1

    Variabel dapat langsung di-assign tanpa dideklarasikan terlebih dahulu, ekspresi yang

    mengacu ke sebuah variabel sebelum variabel tersebut di-assign menyebabkan error.

    a = 100

    print id(a)

    b = a

    print a is b # a dan b mengacu ke objek yang sama

    del(a) # dimusnahkan

    # print a is b # menyebabkan error, a tidak didefinisikan

    print b # b dan objek yang direferensikan masih ada

    print id(b)

    Setelah assignment, sebuah variabel dapat dimusnahkan dengan fungsi del(), jika sebuah

    ekspresi mencoba mengacu variabel yang sudah di-del() akan menyebabkan error.

    Variabel dapat di-assign ke objek khusus yang merepresentasikan ketiadaan, yaitu None.

    7.Tipe data, literal dan operasiObjek dibedakan tipe data-nya karena setiap tipe data memiliki operasi-operasi tersendiri.

    Bagian ini menjelaskan berbagai tipe data dan operasi yang berasosiasi dengan tipe data

    tersebut.

    7.1.Bilangan

    Python mendukung bilangan integer , long integer dan floating point.

    Penulisan literal bilangan bulat dapat dengan integer, long integer, dan keduanya dapat ditulis

    dalam basis octal, desimal dan heksadesimal.

    Penulisan literal float menggunakan tanda '.' (titik) desimal.

    2147483647 # integer terbesar untuk 32 bit arithmetic

    2147483648L # long

    01234567 # octal

    0x123456789abcdef # hexadecimal

    Operasi aritmetika antara integer dengan integer, selalu menghasilkan integer, operasi integer

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 47

  • 8/14/2019 Bahasa Pemerograman Open Source

    50/119

    dengan float akan menghasilkan data float. Contoh :

    >>> 22 / 7 * 21 * 21 # integer dan integer

    1323

    >>> 22 / 7.0 * 21 * 21 # integer dan float

    1386.0

    Bilangan di python adalahfirst-class object, yang memiliki operasi-operasi nya sendiri,

    contoh:

    bil = 1234

    bil.__mod__(7)

    # sama dengan

    bil % 7

    7.2.String dan Unicode String

    Selain bilangan python juga dapat memanipulasi data String dengan pengkodean ASCII

    maupun Unicode.

    Penulisan string literal menggunakan petik tunggal atau petik ganda. Python tidak

    membedakan kedua cara tersebut.Kedua cara penulisan mengenal karakter khusus seperti

    baris baru '\n' dan tab '\t', penulisan literal karakter ascii menggunakan octal dan decimal juga

    didukung.

    Untuk menulis string tanpa pengenalan karakter khusus, digunakan prefix 'r' di depan

    string.

    print 'Assalamu\'alaikum'

    print Wa 'alaikum salaam

    print 'saya bilang Python keren'

    print saya bilang 'Python asyik'

    print 'baris satu\n baris kedua'print 'baris satu\x0A baris kedua'print 'baris satu\012 baris kedua'# raw string

    print r 'baris satu \n dibaris satu juga'Python, sejak versi 2.0 sudah mengenal string unicode, untuk mendukung internationalization

    (i18n).

    Penulisan string unicode menggunakan prefix 'u', untuk menuliskan string tanpa

    penerjemahan karakter khusus digunakan prefix 'ur'.

    print u'baris satu\n baris kedua'48 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    51/119

    print u'baris satu\u000A baris kedua'# unicoderaw string

    print ur'baris satu\u000A baris kedua'

    7.3.Boolean

    Tipe data boolean hanya memiliki 2 nilai: True dan False.Bahkan hanya True dan False

    sajalah object yang ada di tipe data Boolean.

    7.4.Tipe datacontainer

    Tipe data container adalah tipe data yang dapat menyimpan referensi ke objek lain sebagai

    value-nya.

    Python memiliki tipe data container yang built-in.

    Tipe data container dalam python dapat menyimpan data yang tipenya berbeda-beda. Bahkan

    data container di python dapat memiliki elemen berupa data container juga.

    7.4.1.List

    List adalah himpunan yang elemennya tersimpan secara berurutan, sebuah list dapat ditambah

    elemen baru, dikurangi elemennya, atau diubah nilai setiap elemennya, list adalah sequence yang mutable. Elemen list diacu menggunakan indeks integer.

    List literal didefinisikan menggunakan []

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

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

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

    Berikut ini beberapa operasi yang dapat dilakukan terhadap list:

    add, remove, slice, delPerhatikan bahwa list melakukan pengecekan index range, pada operasi baca maupun tulis:

    7.4.2.Tuples

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

    adalah elemen-elemen tuples juga diacu menggunakan indeks integer.

    Tuple didefinisikan menggunakan (), contoh:

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

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 49

  • 8/14/2019 Bahasa Pemerograman Open Source

    52/119

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

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

    Berikut ini beberapa operasi yang dapat dilakukan terhadap tupe:

    slice, packing, unpacking, but you can't del

    Sebagaimana list, tuples juga melakukan pengecekan range index.

    7.4.3.Sets

    Set adalah data kontainer yang tidak berurutan (un-ordered) yang tidak mengandung duplikasi

    pada elemen-elemennya.

    Set memiliki operasi untuk pengecekan membership, juga operasi himpunan seperti union,

    intersection, dan symmetric-difference

    7.4.4.Dictionary

    Berbeda dengan kedua data container sebelumnya, dictionary di-indeks menggunakan

    key.Key yang digunakan harus data yang immutable. Jadi string, number, tuple yang tidak

    memiliki value yang mutable, dapat digunakan sebagai key.

    d1 = {'kode': '0001', 'nama': 'Susu Sapi', 'harga': 12000, 'stok':

    12}

    print d1['kode']

    Mengacu ke dictionary menggunakan key yang belum didefinisikan akan menyebabkan error,

    direpresentasikan oleh exception KeyError, contoh:

    print d1['satuan'] # KeyError

    8.Ekspresi dan operasi

    8.1.Ekspresi Atom

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

    8.1.1.Identifier

    Identifier adalah nama yang merupakan ekspresi atom. Contohnya adalah nama variabel,

    nama fungsi, nama class, nama module.

    Sebuah nama yang telah diasosiasikan (bound) dengan objek, jika dievaluasi akan

    menghasilkan objek tersebut, nama yang belum diasosiasikan (unbound) dengan objek akan

    menghasilkan error NameError jika dievaluasi.

    Karakter penyusun identifier dalam python dapat terdiri atas kombinasi dari huruf besar dan

    kecil (a-zA-Z), angka (0-9) dan garis bawah (underscore).

    50 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    53/119

    Python membedakan huruf besar dan kecil pada identifier.

    Panjang identifier adalah tak terbatas

    8.1.2.Literal

    Python mendukung berbagai literal string dan numerik.Pada bagian type data telahdiperkenalkan berbagai penulisan data numerik dan string secara literal.

    8.1.3.Enclosure

    Enclosure adalah bentuk-bentuk ekspresi yang dibatasi oleh reverse-quote (tanda petik

    terbalik `), tanda kurung, kurung siku, dan kurung kurawal.Berikut ini bentuk ekspresi yang

    termasuk enclosure:

    1. Bentukan dalam kurung (Parenthesized forms)

    2. List display

    3. Generator expressions

    4. Dictionary display

    5. Konversi string

    8.1.3.1.Bentukan dalam Kurung ( Parenthesized forms)

    Bentukan dalam kurung adalah list ekspresi yang opsional ditempatkan dalam kurung ().

    Jika berisi sedikitnya satu koma, akan membentuk tuple, jika tidak mengandung koma akanmembentuk ekspresi tunggal. Contoh:

    (1+2) # ekspresi tunggal (atom)

    (1+2,) # tuples

    8.1.3.2.List display

    Ekspresi list display akan membentuk objek list yang baru. Ekspresi list dapat dibentuk

    menggunakan list dari ekspresi yang dipisahkan koma atau dari sebuah list comprehension.

    [1+2,3

  • 8/14/2019 Bahasa Pemerograman Open Source

    54/119

    (b for b in range(20) if(b%3==0 and b>0)) # generator bilangan

    kelipatan tiga

    (b for b in range(20) if(b%3==0)).next() # 3

    8.1.3.4.Dictionary display

    Dictionary display adalah ekspresi yang menghasilkan objek dictionary baru.

    {'python':'GUI app', 'php':'web app','java':'mobile app','ruby':'web

    app'}

    8.1.3.5.Konversi String

    Konversi ke string adalah ekspresi menggunakan tanda kutip tunggal terbalik (reverse quote).

    Yang mengubah ekspresi dari tipe data lain ke string.

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

    `1+2+3` # 6

    8.2.Ekspresi Primer (Primaries)

    Ekspresi primer adalah ekspresi yang mewakili operasi-operasi yang paling mengikat dalam

    python. Meliputi:

    1. Ekspresi Atom (dibahas pada bagian sebelumnya),

    2. Referensi atribut

    3. Subskrip (subscription)

    4. Slicing

    5. pemanggilan callable object (calls)

    8.2.1.Referensi Atribut (Attribute Reference)

    Referensi atribut adalah ekspresi yang mengacu kepada atribut objek. Contoh:

    objek1.atribut1

    Pada ekspresi referensi atribut, objek harus mendukung attribute yang diacu, jika tidak maka

    akan menimbulkan AttributeError. Atribut yang direrensikan dapat berupa objek yang

    memiliki atribut juga, contoh:

    objek2.atribut1.atribut2

    8.2.2.Subskrip

    Ekspresi subskrip berlaku pada objek sequence (list, tuple, string) atau mapping (dictionary).

    52 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    55/119

    Subkrip menggunakan [] setelah objek.

    objek1[ekspresi1]

    Jika objek bertipe sequence, maka ekspresi1 haruslah integer. Ekspresi dalam subskrip pada

    objek sequence dapat berupa bilangan negatif, untuk peng-indeks-an dari belakang. Contoh:

    list1 = [51, 16, 7, 8, 10]

    list1[3] # bilangan 8

    string2 = 'bismillah'

    string[3] # 'm'

    string[-6] # m

    tuple3 = ('hati','damai','ingat','ALLAH')

    tuple[3] # ALLAH

    tuple[-1] # ALLAH

    Untuk objek bertipe mapping, ekspresi indeks haruslah sesuatu yang dapat di-hash (hashable)

    dan tidak dapat diubah (immutable).

    dict4 = {'python':'GUI app', 'php':'web app','java':'mobile

    app','ruby':'web app'}

    dict4['python'] # 'GUI app'

    dict4['java'] # 'mobile app'

    8.2.3.Irisan (Slicing)

    Expresi slicing terdiri atas Simple Slicing dan Extended slicing.

    Ekspresi simple slicing digunakan pada objek sequence (atau ekspresi yang menghasilkan

    objek sequence) dan menghasilkan objek sequence baru. Berikut ini contohnya:

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

    list1[1:] # list baru dari 2 sampai dengan 9

    list1[1:5] # list baru dari 2 sampai dengan 5

    list1[:-1] # list baru dari 1 sampai dengan 8

    list1[1:-2] # list baru dari 2 sampai dengan 7

    Ekspresi extend slicing, digunakan pada objek mapping menggunakan tuple sebagai key,

    contoh:

    b = {'a':1,'b':2,'c':3,'d':4,('e','f'):5,('g','h'):6,'h':7,'i':8}

    print 'e,f', b['e','f']

    print 'g,h', b['g','h']

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 53

  • 8/14/2019 Bahasa Pemerograman Open Source

    56/119

    8.2.4.Pemanggilan callable (calls)

    Ekspresi ini memanggil callable objek (misalnya fungsi), dengan menggunakan nol atau

    beberapa argumen.

    Yang dimaksud callable objek adalah: user-defined functions, built-in functions, method dari

    built-in objects, class objects, methods of class instances, dan beberapa class instances sendiriadalah callable.

    Argumen dapat berupa positional atau keyword argument.

    Semua ekspresi pada argumen dievaluasi sebelumnya pemanggilan dilakukan.

    8.3.Operasi Pangkat

    Operasi pangkat berasosiasi lebih kuat dari operator unary disebelah kirinya, dan berasosiasi

    lebih lemah dari operator unary di sebelah kanannya. Contoh:

    2**2 # 4

    -2**2 # -4

    (-2)**2 # 4

    (-2)**3 # -8

    2**-2 # -0.25

    2**2**3 # 256 = 2**8

    2**-2**2 # 0.0625 = 2**-4 = 1/2**4

    -16**-2**-2 # -0.5 = -16**-0.25 = -1/16**0.25

    8.4.Operasi aritmetika unary

    Semua operasi unary aritmetika dan biner memiliki prioritas yang sama, terdiri atas:

    minus (-) , plus (+) dan bitwise inversion (~).

    8.5.Operasi aritmetika biner

    Operasi biner meliputi :

    8.5.1.Perkalian

    Perkalian (*) memerlukan argumen bilangan keduanya atau jika salah satunya integer maka

    yang lainnya harus sequence.

    2*3 # 6

    54 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    57/119

    3*'sip ' # sip sip sip

    3*(1,2,3) # (1,2,3,1,2,3)

    8.5.2.Pembagian

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

    Floor division mengenakan floor() pada hasil pembagian.

    # division

    22/7*14*14 # 588

    22./7*14*14 # 616.0

    1/2*3*4 # 0

    1./2*3*4 # 6.0

    22./7 # 3.14285714286

    22.//7 # 3.0

    8.5.3.Modulus (%)

    Menghitung sisa hasil bagi. Operator % juga dioverload untuk melakukan peng-format-an

    string, contoh:

    22%7 # 1

    '%d ekor %s' % (3,'ayam')

    8.5.4.Penjumlahan

    Menjumlahkan bilangan dan menggabungkan concat sequence.

    22+10

    'belajar ' + 'python'

    8.5.5.Pengurangan

    Operator ini menghitung selisih untuk bilangan.

    22-10

    8.6.Operasi Pergeseran (shifting)

    Operasi shift bit ini menerima dua argumen bilangan integer atau long, untuk argumen di kiri

    harus positip.

    Argumen di kanan operator adalah bilangan yang digeser bitnya dengan jumlah pergeseran bit

    sebesar nilai argumen di kiri.

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 55

  • 8/14/2019 Bahasa Pemerograman Open Source

    58/119

    Melakukan N pergeseran ke kanan (>>) sama dengan membagi bilangan dengan N pangkat 2.

    Melakukan N pergeseran ke kiri ( 1 # 2 = biner 100 shift left 1 -> 010

    4 1000

    7 >> 1 # 3 = biner 111 shift left 1 -> 011

    7 1110

    8.7.Operasi Bit Biner (binary bitwise)

    Operasi ini meliputi AND, OR dan XOR, yang beroperasi bit-per-bit.

    Operator AND akan menset bit jika dan hanya jika kedua bit di-set

    15 & 8 # 8

    31 & 8 # 8

    Operator OR akan menset bit jika salah satu dari kedua bit di-set

    15 | 8 # 15

    31 | 8 # 31

    Operator XOR akan menset bit jika dan hanya jika salah satu bit diset. Urutan precedence

    diamtara ketiganya mulai dari yang tertinggi : AND, XOR dan OR

    15 8 # 7 = 1111 1000 => 0111

    15 15 & 8 # 7 = 1111 1000 => 0111

    (15 15) & 8 # 7 = 0 & 1000 => 0

    8.8.Operasi Perbandingan (comparison)

    Operasi perbandingan menghasilkan nilai boolean True dan False.

    Terdiri atas:

    Operator Deskripsi

    > Lebih besar dari

    < Kurang dari

    >= Lebih dari atau sama dengan

  • 8/14/2019 Bahasa Pemerograman Open Source

    59/119

    != atau Tidak sama dengan

    is Sama dengan identitas objek

    is not Tidak sama dengan identitas objek

    in Bagian dari

    not in Bukan bagian dari

    8.9.Operasi Boolean

    Operasi boolean mengevaluasi ekspresi berdasarkan nilai True dan False dari ekspresi, python

    mengenal aturan berikut ini untuk definisi tentang true dan false:

    Nilai False, None, numerik 0 untuk semua tipe data, dan string kosong dan container

    kosong adalah false, sedangkan nilai lainnya adalah true.

    Perhatikan bahwa dibedakan menuliskan True dengan true dan False dengan false, True dan

    False adalah objek atau instance dari tipe Boolean, sedangkan true dan false adalah nilai

    abstrak yang dikenal dalam operasi boolean.

    Ada 4 operasi boolean:

    ekspresi1 if ekspresi2 else ekspresi3

    Operasi ini mengevaluasi ekspresi2, jika bernilai true maka menghasilkan ekspresi1, dan jika

    ekspresi2 bernilai false menghasilkan ekspresi3

    and

    ekspresi1 and ekspresi2

    Operasi ini menghasilkan true jika ekspresi1 dan ekspresi2 keduanya bernilai true

    xor

    ekspresi1 xor ekspresi2

    Operasi ini menghasilkan true jika dan hanya jika salah satu dari ekspresi1 dan ekspresi2

    bernilai true

    or

    Operasi ini menghasilkan true jika salah satu dari ekspresi1 dan ekspresi2 bernilai true

    ekspresi1 or ekspresi2

    8.10.Lambda

    Lambda adalah ekspresi yang menghasilkan fungsi anonim.

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 57

  • 8/14/2019 Bahasa Pemerograman Open Source

    60/119

    Fungsi anonim tersebut tidak boleh berisi statemen, hanya ekspresi.

    def pangkat(a):

    return lambda b: a**b

    fa = pangkat(2)

    fa(2) # 2 pangkat 2

    fa(3) # 2 pangkat 3

    fa(4) # 2 pangkat 4

    fb = pangkat(3)

    fb(2) # 3 pangkat 2

    fb(3) # 3 pangkat 3

    fb(4) # 3 pangkat 4

    8.11.Ekspresi Lists

    Ekspresi list terdiri dari satu atau lebih ekspresi yang dipisahkan dengan koma.

    Ekspresi list dengan sekurangnya satu koma dibelakang menghasilkan tuple. Contoh

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

    x = 1, # x adalah tuple dengan 1 elemen

    y = 1 # y BUKAN tuple, y adalah variabel integer

    z = () # z adalah tuple kosong

    9.Fungsi

    Fungsi digunakan untuk mengenkapsulasikan operasi.

    Fungsi python didefinisikan menggunakan keyword def diikuti nama fungsi, selanjutnya

    fungsi dapat menerima nol atau lebih parameter.

    Fungsi dapat mengembalikan objek (yang bukan None) atau dapat mengembalikan None.

    Pengembalian objek (yang bukan None) menggunakan statement return.

    # mendefinisikan fungsi

    # tidak menerima param, return None

    def salam():

    print "Assalamu'alaikum "

    58 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    61/119

    # menerima param, return None

    def salam1(m):

    print "Assalamu'alaikum " + m

    # tidak menerima param , return string

    def salam2():

    return "Assalamu'alaikum "

    # menerima param , return string

    def salam3(m):

    return salam2() + m #fungsi dapat memanggil fungsi lain

    # pemanggilan fungsi

    salam()

    salam1('fadhilah')

    print salam2()

    print salam3('irfan')

    Parameter fungsi dapat memiliki nilai default, pada contoh berikut berikut ini a dan b

    memiliki nilai default masing-masing 0 dan 1 :

    # generator bilangan fibonacci yg kurang dari n, dengan rekursi

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

    if b < n:

    print b, # cetak tanpa ganti baris

    fibonacci(n, b, a+b)

    # panggil fungsi

    fibonacci(100)

    10.Statemen Kendali Alur

    10.1.Statemen if

    Statemen if digunakan untuk pencabangan eksekusi statemen atau blok statemen berdasarkan

    kondisi yang bernilai True atau False. Untuk pencabangan alternatif dari kondisi pertama

    digunakan keyword elif, dan untuk pencabangan alternatif terakhir digunakan else.

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 59

  • 8/14/2019 Bahasa Pemerograman Open Source

    62/119

    Pencabangan menggunakan elif dapat lebih dari satu.

    import sys

    print 'tebak integer: ',

    ditebak = 67

    # baca stdin 1 baris, potong whitespace depan & belakang,

    # lalu konversi string ke integer

    a = int(sys.stdin.readline().strip())

    if ditebak < a :

    print 'terlalu besar '

    elif ditebak > a:

    print 'terlalu kecil'

    else:

    print 'pas benar...'

    10.2.while

    Untuk melakukan pengulangan selama ekspresi di while bernilai True.

    Contoh:

    import sysprint 'tebak integer sampai ketemu: ',

    ditebak = 67

    a = int(sys.stdin.readline().strip())

    while a != ditebak:

    if ditebak < a :

    print 'terlalu besar '

    elif ditebak > a:

    print 'terlalu kecil'

    print 'tebak lagi: ',

    a = int(sys.stdin.readline().strip())

    print 'pas benar...'

    Untuk keluar dari while loop dapat menggunakan break, untuk melanjutkan loop tanpa

    mengeksekusi statemen berikutnya digunakan continue:

    import sys

    60 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    63/119

    ditebak = 67

    minimum_coba = 3

    coba = 0

    while True:

    coba+=1

    print 'tebak integer: ',

    a = int(sys.stdin.readline().strip())

    if ditebak < a :

    print 'terlalu besar '

    if coba < minimum_coba: continue

    elif ditebak > a:

    print 'terlalu kecil'

    if coba < minimum_coba: continue

    else:

    print 'pass'

    break

    print 'menyerah ? [y/n]: ',

    nyerah = sys.stdin.readline().strip()

    if nyerah == 'y':

    breakelse:

    coba = 0

    10.3.for

    Digunakan untuk meng-iterasi sequences (tuples, list, string):

    stooges = 'timbul','kadir','doyox'

    for guyon in stooges:

    print guyon

    10.4.pass

    Statemen ini tidak melakukan apapun, digunakan untuk mengisi blok program agar benar

    secara sintaks.

    Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source 61

  • 8/14/2019 Bahasa Pemerograman Open Source

    64/119

    10.5.exceptions

    Python mengenal mekanisme yang elegan dalam menangani error pada program, yaitu

    menggunakan exception.Penanganan exception terdiri atas 2 blok : try dan catch.

    Blok try berisi statement(-statement) yang dapat mengakibatkan terjadinya error atau

    exception.

    Jika satu statement dalam blok mengakibatkan exception maka statemen-statemen berikutnya

    tidak akan di-eksekusi, alur program segera beralih ke blok catch.

    Block catch berisi statement(-statemen) yang akan menangani exception.

    Contoh berikut ini mengangani exception jika pengguna menekan ctrl-c yang menyebabkan

    exception KeyboardInterrupt:

    import sys

    print 'tebak integer sampai ketemu: ',

    ditebak = 67

    t r y:a = int(sys.stdin.readline().strip())

    while a != ditebak:

    if ditebak < a :

    print 'terlalu besar '

    elif ditebak > a:

    print 'terlalu kecil'

    print 'tebak lagi: ',

    a = int(sys.stdin.readline().strip())

    print 'pas benar...'

    exce pt Keyb oar dIn terr upt:print '\nhmm.. menyerah?\n\

    \rsmoga lebih lain kali lebih beruntung, bye!'

    11.Modules

    Module memudahkan pemakaian ulang berbagai sumberdaya program (fungsi, class,

    variabel), dan menyediakan namespace untuk menghindari konflik penamaan.Sebuah module

    62 Panduan Pendayagunaan Open Source Software: Bahasa Pemrograman Open Source

  • 8/14/2019 Bahasa Pemerograman Open Source

    65/119

    dapat berisi beberapa fungsi atau beberapa class.

    11.1.Mendefinisikan Module

    Sebagai contoh, pembangkit bilangan fibonacci ingin disimpan sebagai fungsi dalam module

    pembangkit. Yang diperlukan adalah mendefinisikan fungsi tersebut dalam file

    pembangkit.py.

    # module pembangkit fibonacci

    # return list bilangan fibonacci

    def fibonacci(n, a=0, b=1, hasil=None):

    if hasil == None: hasil = []

    if b < n:

    hasil.append(b)

    fibonacci(n, b, a+b, hasil)

    return hasil

    Perhatikan bahwa tidak ada statement diluar definisi fungsi dalam file pembangkit.py.

    11.2.Menggunakan Module

    Berikut ini adalah program fib.py, yang menggunakan module pembangkit.

    Program ini menggunakan statement import, sehingga fungsi fibonacci() dapat diakses

    melalui object pembangkit. Perhatikan bahwa nama object yang di-import sama dengan nama

    file module.

    import pembangkit

    for x in pembangkit.fibonacci(100):

    print x,

    11.3.Module search path

    Secara praktis module-module ditempatkan dalam direktori terpisah dari program penggunamodul.

    Sebagai contoh module pembangkit.py disimpan dalam direktori /home/hafizh/modulku.

    Supaya program fib.py dapat menemukan module pembangkit, direktori

    /home/hafizh/modulku harus dimasukkan dalam module search path.

    Salah satu yang termasuk module sea