Professional Documents
Culture Documents
MengenalPERL
1.TentangPERL
PERLadalahbahasapemrogramanyangmenggunakantipedatadinamis,programPERL dapatlangsungdieksekusitanpaharusmelaluiproseskompilasitersendirikeformatbinary yangdapatdieksekusi. PERLbanyakdigunakanpadaaplikasimanajemensistemdanjaringan,pemrogramanweb, manipulasiteks,akseskedatabase. BerikutinibeberapaaplikasiyangmenggunakanPERLyangcukupdikenal:mrtg,SQL Ledger(aplikasiakunting),Webmin(aplikasiadmin),spamassasin(antispam).
2.MenjalankanProgramPERL
2.1.Eksekusidarifile
BerikutinisebuahprogramPERLsalam.pl,yangmencetaksalamuniversaldikonsol,jika adaargumenpadacommandlinemakaditampilkansetelahsalam.
#!/usr/local/bin/perl if($#ARGV>1){ print"assalamu'alaikum$ARGV[0]\n"; }else{ print"assalamu'alaikum\n"; }
EksekusidishellmenggunakanPERLinterpreter,sbb:
bash%perlsalam.plHafizh assalamu'alaikumHafizh
Agardapatdieksekusitanpamengetikkaninterpreterperldicommandline,filesalam.pl perludisetpermissionnya.Misalkandenganperintah:
bash%chmod7 55salam.pl bash%./salam.plHafizh assalamu'alaikumHafizh
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource1
2.2.Eksekusidaricommandline
PERLdapatmengeksekusiperintahsecaralangsungdaricommandline,tanpaperlumembuat fileprogram,menggunakanoptionsediinterpreterperl,contoh:
bash%perle'print Assalamu''alaikum\n'
3.DasardasarPERL
3.1.ProgramPERL
ProgramPERLatauskripPERL,biasadisimpandalamfileteksberakhiran.pl.Walaupun demikianperlinterpretertetapakanmengeksekusiprogramPERLyangtidakmenggunakan ekstensi.pl. SebuahprogramPERLyangexecutabledapatmenggunakanhanyastatement,tanpaperlu mendefinisikanfungsikhusussepertimain()dalamprogrambahasaC. ProgramPERLdapatterdiriatasstatemen,deklarasisubroutine,konstruksikondisional, konstruksiloop,konstruksiblock.
3.1.1.Statemen
Statemendiakhiridengantandatitikcoma.Statemendapatberbentukdeklarasivariabel, assignmentvariabeldanpemanggilanfungsi.Whitespace(spasi,barisbaru)diabaikan.
print"opensourcesoftware?!", "it'samiracle", ",doyoubelievemiracle?\n";
3.1.2.Komentar
Sebagaimanabahasapemrogramanlainnya,programmerPERLdapatmenuliskankomentar dalamkodeprogram,denganmenempatkankarakter'#'sebelumbariskomentar,contoh:
#menghitunghitungluas $area=$pi*$radius*$radius;
Ataudapatjugasetelahbagiankode:
$area=$pi*$radius*$radius;#menghitunghitungluas
2PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Komentardiperlakukansebagaimanawhitespace.
3.2.VariabeldanTipedata
Variabeldigunakanuntukmenyimpandata.PERLmemiliki3tipevariabelutama:skalar, arraydanhash.Namanamavariabel,danidentifierlainnyadalamPERLadalahcase sensitive.
3.2.1.Skalar
Variabelskalarmenyimpandatabernilaitunggal,tipedatadapatberupastringataubilangan. Tipedatasecaraotomatisditentukanpadasaatassignmentvariabel.tidakperlu mendeklarasikantipedatasebelumassignment. Namavariabelskalardimulaidengankarakter'$'.Contoh:
#string $file='/etc/profile'; $kota=depok; #integer $_num=255; $byte_=0x00ff; #float $konstanta_pi=22/7;
3.2.1.1.Stringpetiktunggal(singlequote)danpetikganda(doublequote)
Stringdapatdinyatakandalampetiktunggal(')danpetikganda(). Stringdenganpetiktunggalmenyatakandataadalahsepertiyangtertulis,tidakada interpretasiterhadapkarakterkarakterpadastring. StringdenganpetikgandamenyatakanbahwainterpreterPERLharusmelakukaninterpretasi terhadapkarakterkarakterpadastringtersebut. Contoh:
#dicetakdalamsatubaris,karakter\ntidakdiinter pretasikan $str1='\niman\nilmu\namal\n'; print$str1; #dicetakdalam3barisdiikutibarisbaru $str2=\niman\nilmu\namal\n;
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource3
3.2.2.Array
Arraymenyimpansekumpulannilaisecaraberurutan(sekuensial),yangbiasadisebutlist, nilainilaiyangdisimpandapatberbedabedatipedatanya.Untukmembacanilaianggota arraydigunakannomorindeksintegerdimulaidarinol. Variabelarraydideklarasikanmenggunakankarakter@didepannamavariabel,dataanggota arrayditempatkandalamkurung(),nilainilaianggotadipisahkanolehkoma. Nilaianggotaarraydibacamenggunakanoperator[]dannomorindeks.Contoh:
@prima1=(2,3,5,713, ); ,, 1 11 7 #mencetak'5' print$prima1[2];
4PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Membacadariarraydenganindeksyanglebihbesartidakakanmenyebabkanerrordantidak akanmenambahukuranarray.Contoh:
@bil4=(1 0,20,30,40); $t1=$bil4[89]; #mencetak'ukuranarray:3' print"ukuranarray:$#bil4\n";
Jikavariabelarraydievaluasidalamkonteksnilaiskalar(scalarcontext)makavariabel tersebutdievaluasisebagaijumlahanggotaarray,contoh:
#dievaluasidalamscalarcontext @arr=(1 0,20,6, 1,22); 1 1 9, if(@arr==6){ print"jumlahanggotaarrayada6\n"; }
Arraydapatdisalinsebagiananggotanyakearraylaindenganmudah(arrayslice), menggunakanoperator[],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]#semuakecuali'semar'
3.2.3.Hash
Hashmenyimpansekumpulannilaiyangmenggunakanpasangannamakuncidannilai. Namakuncidalamsebuahvariabelhashharuslahunik,tidakbolehada2pasanganyang menggunakannamakunciyangsama. Variabelhashdidefinisikanmenggunakankarakter%diikutinamavariabel. Nilainilaianggotahashterdiriataspasangannamakuncidannilaiyangdipisahkanoleh koma.Namakuncidanpasangandituliskanberurutan,dapatdipisahkantandakomaatau dapatjugadipisahkanolehkarakter'=>'. Untukmembacanilaianggotahashdigunakanoperatorkurawal{}dannamakunci.Contoh: PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource5
%rasa_buah1=('asam','asemdjawa','manis','manggis','pahit', 'pare'); #mencetak'yangpahit=pare' printyangpahit=$rasa_buah1{'pahit'}\n; #dapatjugaditulissepertiini %rasa_buah2=('asam'=>'asemdjawa', 'manis'=>'manggis', 'pahit'=>'pare'); $rasa='manis'; #mencetak'yangmanis=manggis' printyang$rasa=$rasa_buah2{$rasa}\n;
3.3.Operator
PERLmemilikibanyakoperatordanfungsiyangbuiltin,berikutinibeberapaoperatoryang umumdigunakan,selengkapnyadapatdilihatdenganmanperlop. ManipulasiString . + * / '== '!= < > <= >= eq Concat(penggabungan) Aritmetika Penjumlahan Pengurangan Perkalian Pembagian PerbandinganBilangan kesamaan Ketidaksamaan Kurangdari Lebihdari Kurangdariatausamadengan Lebihdariatausamadengan PerbandinganString kesamaan
6PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
ne lt gt le ge
PerhatikanbahwaPERLmenyediakanoperasipembandingstringdanpembandingbilangan. Stringdibandingkansecaraalpabetis.Secaraalpabetis,string'100'lebihkecildari'8'.Contoh:
$a=1 00;$b=8 if($a>$b){ printBilangan$alebihbesardari$b\n; }else{ printBilangan$atidaklebihbesardari$b\n; } if($agt$b){ printString$asecaraalpabetislebihbesardari$b; }else{ printString$asecaraalpabetistidaklebihbesardari$b; }
3.4.Fungsi
PERLmemilikifungsibuiltinyangkaya,salahsatuyangsudahdiperkenalkanadalah print. Fungsidapatmenerimanolataulebihargumen.Argumensebuahfungsidapatberupaskalar, list,ataukeduanya. Pemanggilanfungsidapatmenggunakantandakurung()diantaraargumen,dapatjugatidak. Fungsiprintadalahfungsiyangmenerimaargumenlist.Contoh:
printsaya,bela jar,PERL ; #samadengan
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource7
print(saya,bela jar,PERL );
3.5.KonstruksiKondisional
BerikutinikonstruksikondisionalyangdisediakanPERL
3.5.1.if
Mengeksekusistatemenjikakondisibernilaibenar.Untukpercabanganmenggunakanelsif danelse.Bentuknya:
if(kondisi1){ #statemenstatemen } elsif(kondisi2){ #statemenstatemen }elsif(kondisi3){ #statemenstatemen }else{
8PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
#statemenstatemen }
3.5.2.unless
Adalahkebalikandariif.
3.6.KonstruksiLoop
PERLmengenalbeberapajenisloop:
3.6.1.for
Digunakanuntukmelakukanpengulanganberdasarkan3ekspresiyangmasingmasinguntuk :memulailoop,menentukanapakahmelanjutkaneksekusiloop,dieksekusipadaakhirloop supayakondisiuntukmengakhiriloopdapatdicapai.Bentuknya:
f or(<ekspresi1>;<ekpresi2>;<ekspresi3>){ #statemenstatemen }
Ekspresiyangumumdigunakanadalahsebagaiberikut:
f or($i=0;$i<$jumlah_pengulangan;$i++){ #statemen }
3.6.2.foreach
Digunakanuntukmelakukaniterasiberdasarkananggotasebuaharrayataulist.Bentuknya:
f oreach<variabel_skalar>(<ekspresilist>){ }
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource9
3.6.3.while
LoopdieksekusiselamakondisiadalahTRUE.Untukkeluardariloopharusdengan mengubahkondisimenjadifalseataumenggunakanstatementlast; Bentuknya:
while(kondisi){ #statemen }
3.7.InputdanOutputkefile 3.7.1.Membacadarifileteks
Sebelumfiledapatdibacamakaharusfiledibukadenganfungsiopen,denganmodebaca, contoh:
open($fh,'/etc/passwd');
Variable$fhadalahfilehandleyangdiperlukanuntukmembacadanmenutupfile. Selanjutnyasetiapbarisdibacadenganoperator<>.sebagaiberikut:
while($line=<$fh>){ #memproses$line }
Setelahselesaifileditutupdenganfungsiclose,contoh:
close($fh)
3.7.2.Menuliskefileteks
Perintahyangsamadenganprogramdiatasdapatdigunakanuntukmenuliskefile.Pertama, filedibukadenganmode'tulis':
open($fh,>/path/ke/file);
selanjutnyadapatditulisdenganperintahprint,menggunakanfilehandle,sbb: 10PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
print$fhbaristeksyangditulis...\n;
Sepertihalnyadalamhalmembaca,makafilehandleharusditutupdenganclose. Berikutinicontohmembacadarifiledanmenuliskefilebaru,ataumengcopyfile:
#mengcopy/etc/profile $fnam='/etc/profile'; $fbaru='/home/didi/copyprofile'; open($fh1 ,$fnam)ordiegagalbaca$fnam,$!; open($fh2,>$fbaru)ordiegagalmenulis$fbaru,$!; while($line=<$fh1>){ print$fh2$line; } close($fh1); close($fh2);
3.8.Subrutin
Padaprogramaplikasiumumnya,kumpulanstatemenyangmengimplementasikansebuah operasitertentudidefinisikandalamsebuahsubrutin. Beberapasubrutinbiasanyadidefinisikandalamsebuahfiletersendiri,sehinggadapat digunakanolehberbagaiprogrampemanggil. Berikutinibentukpendefinisiansubrutin:
sub<namasubrutin>{ }
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource11
} #returnTRUEvalue 1;
Penjelasanlebihlengkaptentangsubrutindapatdibacadarimanperlsub
4.Penutup
PERLadalahbahasapemrogramanyangberdayagunatinggi,yangterusdigunakandan dikembangkanolehkomunitasopensource. Sepertihalnyabahasaopensourcelain,PERLmemilikisistemdokumentasiyangsangat lengkap,pembacasangatdianjurkanmenelaahmanualPERLyangterdistribusibersama sourcecodePERL.
12PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
II.MengenalPHP
PHPadalahbahasapemrogramanscriptyangdinamis.ProgramPHPdapatdijalankansebagai aplikasiwebyangmemerlukanwebserverdandapatjugadijalankanmenggunakaninterpreter PHP,sebagaiaplikasikonsolataudesktopbased. PHPadalahbahasapemrogramanyangkayadenganlibraryuntukpengembanganaplikasi mulaidaridukungankeberbagaidatabasemanagementsystem,dukunganlibraryGraphical UserInterface,sampailibraryuntuksistemadministrasi.
1.MenginstalPHP
PHPdiinstalsebagaimoduleapachedansekaligusmenginstalPHPCLI(commandline interpreter),namanamadirektori(misal:/dir/instalasi/xxx/anda)dapatandaubah sesuaidengankeinginananda. Karenanyaharusmenginstalapacheterlebihdahulujikaapachebelumterinstal. BerikutinicarainstalasiPHP5darisourcecode.
1.1.InstalasiApache
1. InstalApache,pertamadownloaddarihttpd.apache.org,dalamhalinikami menggunakanapache1.3.37 2. Uncompressdisembarangdirektori
bash%tarzxvfapache_1 .3.3 tar gz . . 7
3. Konfigurasidankompilasi
bash%cdapache_1 .3.3 7 bash%./configureprefix=/di r/ in stal as i/ ap ach e/ and a enableshared=max bash%make
4. Instal
bash%makeinstall
5. Instalasiapacheselesai
1.2.InstalasimodulePHPdanPHPCLI:
1. Downloaddarisituswww.php.net 2. Uncompressdisembarangdirektori
bash%tarzxvfphp5.2.0.tar gz .
3. Konfigurasidankompilasi PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource13
bash%cdphp5.2.0 bash%./configureprefix=/d ir /i ns tala si /p hp/ an dawith apxs=/di r/ in stal as i/ ap ach e/ and a/ bin /a pxs withconfig filepath=/etc bash%make
4. Instal
bash%makeinstall
5. Instalasimodulephpdanphpcliselesai
2.MenjalankanProgramPHP
ProgramPHPdapatdijalankandengan2modus:
2.1.AplikasiKonsol
Buatprogramsalam.phpberikutinidisebarangdirektori:
<?php echoassalamu'alaikum,Brother\n; ?>
PastikanPHPCLIadadiPATHdenganperintah:
bash%exportP ATH=/dir/instalasi/php/anda/bi n:$P ATH
Jalankanprogramdenganperintahphp
bash%phpsalam.php
2.2.Aplikasiweb
Agardapatdieksekusimelaluiaplikasiwebmakaandaperlumenyalin(copy)salam.phpke documentrootdariserverapacheanda:
bash%cpsalam.php/dir/instalasi/apache/anda/htdocs/
LaluaksesURLinidenganwebbrowserpilihananda:
http://localhost/salam.php
3.BahasaPHP
BagianinimembahasPHPsebagaibahasapemrogramanumum(generalpurpose),contoh contohdijalankanmenggunakanPHPCLI(CommandLineInterface). PadabagianAplikasiWebdibahasPHPsebagaibahasapemrogramanweb,contohcontoh dijalankanmenggunakanserverweb,keluaranditampilkanmenggunakanklienweb.
14PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
3.1.ProgramPHP
FileprogramPHPadalahfileteksyangdapatdibuatdenganeditorteksbiasa(misal:vim, gedit,kedit). SebuahfileprogramPHPpalingsedikitterdiriatassatubarisstatemenyangdibatasiolehtag pembukablokstatemendantagpenutupblokstatemen. Tagpembukablokadalah<?phpdanpenutupnyaadalah?>.PHPmengenal3jenistag pembukalainnyayangtidakdirekomendasikanpadamanualPHP,dankarenanyatidak dibahasdisini. SebuahprogramPHPdapatterdiri2jenisstatemen:
statemenPHPyangdibatasiolehtagtersebut statementnonPHP(misal:HTML,WML,XML)
3.2.Komentar
PHPMengenal3jeniskomentar: 1. Diawalidengan//,berlakuhanyauntuk1baris 2. Diawalidengan#,berlakuhanyauntuk1baris 3. Diawalidengan/*dandiakhiri*/,berlakuuntuklebihdari1baris,dapatjuga digunakanuntukmenyisipkankomentardiantaratoken. Ketigajeniskomentardapatberadapadabaristersendiriataudibelakangstatement.Contoh:
//komentar1 echo'stringsatu',"\n";//komentar2 echo'stringdua',"\n";#komentar3 /* komentar4,komentarini melintasbeberapabaris */ echo/*komentar5,diantaratoken*/'stringtiga',"\n";
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource15
3.3.TipeData
PHPmembedakanoperasiyangdapatdilakukanterhadapsetiaptipedata.
3.3.1.TipePrimitif
Tipeprimitifadalahtipedatadasaryangtidakdapatdibagilagi(decompose)atastipedata yanglebihdasarlainnya.
3.3.1.1.Boolean
PHPmengenaltipebooleanyaitu:TRUEdanFALSE,keduanyacaseinsenstive. JadiTrue,true,atauTRUEadalahsama.
3.3.1.2.Integer
IntegerataubilanganbulatdiPHPtidakmembedakanpanjangbyte(longatauintegerbiasa), keduanyaadalahinteger. Integerliteraldapatdituliskansebagaidesimal(default,tanpaprefiks),octal(denganprefix '0')atauhexadecimal(denganprefix0x). Contoh:
1234567 890#desimal 0 1234567#octal 0x1234567 89abcdef#hexadecimal
3.3.1.3.float
Literalfloatmenggunakan'.'untukpembataspecahandesimal,danmenggunakansimbole untukpangkatdesimal. Padacontohberikutinike4bilanganyangditulisdengancaraberbedaadalahsamabesarnya:
. 1234567 89 0. 1234567 89 1234567 89e9 123.4567 89e4
3.3.1.4.string
StringdalamPHPadalahderetenkarakter. Literalstringdapatditulisdengan3cara:
16PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
3.3.1.4.1.Petikganda
Stringdenganpetikgandamengenalkarakterkhusus(barisbaru,tab)danmelakukan ekspansivariabel
3.3.1.4.2.PetikTunggal
Stringdenganpetiktunggaltidakmengenalkarakterkhusus(barisbaru,tab)dantidak melakukanekspansivariabel
3.3.1.4.3.Heredoc
Sintakheredocmemperlakukanstringsepertidoublequote,hanyasajamenggunakan delimiteryangberbeda,yaituderetankarakteralpahanumericataugarisbawah,yangdimulai hanyadengankarakternondigitataugarisbawah.Contoh:
<<<Ini_Delimiter_heredoc Berikutiniadalahstringdalamheredoc,inigantibaris\n daninicarriagereturn\rtulisaniniakanmenimpa'dan ini carriage
return'
Ini_Delimiter_heredoc;
3.3.2.TipeGabungan(compound)
Tipegabunganadalahtipeyangdapatdibagi(decomposed)menjaditipeyanglebih sederhana. PHPmengenal2jenistipegabungan:
3.3.2.1.Array
ArraydiPHPpadadasarnyahanyaadasatujenisyaituorderedmap.ArraydiPHPdapat disamakandenganassociativearraypadabahasapemrogramanlainnya(misal:PERL),yaitu merupakanderetanpasangankeydanvalueyangberurutansesuaidenganurutan penyimpanan. BedanyaadalaharraydiPHPdapatdiaksessepertilistatauarrayberindeksintegerberbasis0 (zerobasedindexed) Arraydibuatmenggunakanconstructorarray().Contoh
$a=array( 'php'=>'aplikasiweb', 'python'=>'aplikasidesktop', 'perl'=>'otomatisasisysadmin', 'c'=>'aplikasisystem',
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource17
Arrayberindeksintegerjugadapatdibuatdenganconstructorarrayyangsama:
$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
Tipedatainimenyimpanreferensikeinstanceclass.Tipedataobjekdibuatmenggunakan constructorclass.PembahasanselengkapnyaadadibagianClass.
3.3.3.TipeKhusus 3.3.3.1.Resource
Resourceadalahtipekhususyangmenyimpanreferensikeresourceeksternal.
3.3.3.2.NULL
Menyatakanketiadaannilai,tipedatainihanyamemilikisatunilai:NULL
3.3.4.Konversikeboolean
PHPmelakukankonversidaritipedatalainkebooleandalamkonteksyangmemerlukantipe booleanberdasarkanaturanyangjelas. Salahsatukonteksyangmemerlukantipebooleanadalahstatemenkondisional(misal:if). SemuanilaiberikutiniakandianggapFALSEolehPHP: booleanFALSE integer0(nol) float0.0(zero) stringkosong,danstring"0" arrayyangtidakmempunyaielemen. objectyangtidakmempuyaivariabelmember(PHP4) tipekhususNULL semuavariabelyangdiunset
18PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
3.4.Variabel
Variabeldigunakanuntukmenyimpandata,selanjutnyadatadimanipulasimelaluivariabel.
3.4.1.Assignment
Variabeldiberinilai(=data)melaluiassignment. Variabeltidakperludideklarasikansebelumdiberinilai.
$a=1 000; $b='iniadalahstring'; $c=stringinibergabungdengan'$b';
Jikaekspresimengacukevariabelyangbelumdidefinisikantidakmenyebabkanerror.
echo$a,$b,$c,\n;
Assignmentkevariabeldapatmenghasilkandatabaru(dengannilaiyangsama),atautidak menghasilkandatabarutapihanyamenghasilkanreferensibaru.
$a=1234; $b=$a;#$bberisisamadengana
PadaPHP5,assignmentdarivariabel(yangdiassignke)objekkevariabellain,tidak menyebabkanadanyadatabaru,tapihanyamenghasilkanreferensibaru.
1 /*REQUIREPHP5*/ . 2. classKoordinat 3. { 4. functionKoordinat($x,$y){ 5. $this>X=$x; 6. $this>Y=$y ; . } 7 8. } 9. $k1=newKoordinat(5,5); 1 0.$k2=$k1; 1. $k2>X+=222;#Xdi$k2diubah=22 1 7 12.echo$k1>X,"\n";#X$k1jugaberubah=22 7
UntukmendapatkanhasilyangsamadiPHP4,perlumenggunakanreferenceassignment=&, baris10ditulissbb:
$k2=&$k1;
Referenceassignment=&,jugadapatdigunakanuntukvariabelprimitif:
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource19
3.5.EkspresidanOperator
Ekspresiadalahsegalasesuatuyangmemilikinilai. Ekspresimeliputinilailiteral,pemanggilanfungsiyangmengembalikannilai,hasiloperasi, termasukassignment. AssignmentdalamPHPmemilikinilaidanadalahekspresijuga.Halinidapatmenjadi sumbererroryangtidakmudahditemukan,ketikayangingindilakukanadalahujikesamaan (equality==):
#programberikutinicontohpenggunaanekspresiyangSALAH $a=123; if($a =1 0){#selaluTRUE,seharusnya$a==1 00 000 echo$asamadengan1 000\n; } $b=0; if($b =0 ){#selaluFALSEseharusnya$b==0 echo$bsamadengan0\n; }
Padabagianberikutnyadibahasberbagaioperator,setiappenjelasanlangsungmenggunakan contoh.
3.5.1.Operatoraritmetika
Berlakuuntuktipedatabilangan. penjumlahan,perkalian,pembagian,pengurangan,modulus.
$a=1 0;$b=20; $c=$a+$b;//penjumlahan,hasil30 $c=$a$b;//pengurangan,hasil1 0 $c=$a*$b;//perkalian,hasil200 $c=$a/$b;//pembagian,hasil0.5 $c=$a%$b;//modulus,hasil1 0
20PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
3.5.2.Operatorincrementing/decrementing
Menambahataumengurangibilangandengan1,terdiriatas: postincrement,preincrement,postdecrement,predecrement.
$a=1 0; $b=$a++;//postincrement echo"b==$b,a==$a\n";//b==1 0,a==1 1 $b=++$a;//preincrement echo"b==$b,a==$a\n";//b==12,a==12 $b=$a;//postdecrement echo"b==$b,a==$a\n";//b==12,a==1 1 $b=$a;//predecrement echo"b==$b,a==$a\n";//b==1 0,a==1 0
3.5.3.Operatorassignment
Assignmentmenghasilkannilaibarusesuainilaiexpresidisebelahkananoperator=.
$a=1 0; $c=($b=1 0)+$a;//$c==20,$b==1 0 $a+=1 0;//$a==20 $c=($b+=1 0)+$a;//$c==40,$b==20,$c==20
3.5.4.OperatorPerbandingan
Membandingkanantara2nilai.Berikutinioperasidancontohnya:
3.5.4.1.Ternary
ekspresi1?ekspresi2:ekspresi3
Operator'?'inimengembalikannilaiekspresi2jikaekspresi1bernilaiTRUEdan mengembalikannilaiekspresi3jikaekspresi1bernilaiFALSE.
//ternary $hasil=true?'benar':'salah';
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource21
3.5.4.2.Equal
ekspresi1==ekspresi2
3.5.4.3.Identical
ekspresi1===ekspresi2
Operator'==='inihanyamenghasilkannilaiTRUEjikanilaiekspresi1samadengannilai ekspresi2dantipedatakeduanilaiekspresisama.
//identical $a=1 0;$b='1 0';$c=1 0; echo$a===$b?'true':'false',"\n";//false echo$a===$c?'true':'false',"\n";//true
3.5.4.4.NotEqual
ekspresi1!=ekspresi2 ekspresi1<>ekspresi2
22PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
echo$a<>$c?'true':'false',"\n";//true
3.5.4.5.NotIdentical
ekspresi1!==ekspresi2
Operator'!=='hanyamenghasilkannilaiTRUEjikanilaiekspresi1tidaksamadengannilai ekspresi2dantipedatakeduanilaiekspresisama.
//notidentical $a=1 0;$b='1 0';$c=1 0; echo$a!==$b?'true':'false',"\n";//true echo$a!==$c?'true':'false',"\n";//false
Operatorgreaterthan(>),smallerthan(<),greaterequals(>=),smallerequals(<=)
ekspresi1>ekspresi2 ekspresi1<ekspresi2 ekspresi1<=ekspresi2 ekspresi1>=ekspresi2
Keempatoperatorinimembandingkannilaiekspresi1danekspresi2,operasibarudijalankan setelahmelakukankonversitipejikaekspresi2berbedatipedatadenganekspresi1
$a=1 0;$b=1 1;$c=1 0; echo$a>$b?'true':'false',"\n";//false echo$a<$b?'true':'false',"\n";//true echo$a<=$c?'true':'false',"\n";//true echo$a>=$c?'true':'false',"\n";//true
3.5.5.OperatorLogika 3.5.5.1.LogicalAND
ekspresi1andekspresi2
MenghasilkannilaiTRUEjikaekspresi1danekspresi2keduanyabernilaiTRUE.
//and echo(trueandtrue)?'true':'false',"\n";//TRUE echo(trueandfalse)?'true':'false',"\n";//FALSE echo(falseandfalse)?'true':'false',"\n";//FALSE
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource23
3.5.5.2.LogicalOR
ekspresi1orekspresi2
OperatorORmenghasilkannilaiTRUEjikaadasalahsatudariekspresi1danekspresi2 bernilaiTRUE.
//or echo(trueortrue)?'true':'false',"\n";//TRUE echo(trueorfalse)?'true':'false',"\n";//TRUE echo(falseorfalse)?'true':'false',"\n";//FALSE
3.5.5.3.LogicalXOR
ekspresi1xorekspresi2
OperatorXORmenghasilkannilaiTRUEjikasalahsatudariekspresi1danekspresi2bernilai TRUE,tapitidakkeduaduanya.
//xor echo(truexortrue)?'true':'false',"\n";//FALSE echo(truexorfalse)?'true':'false',"\n";//TRUE echo(falsexorfalse)?'true':'false',"\n";//FALSE
3.5.5.4.LogicalNOT
!ekspresi1
OperatorNOTmenghasilkannilaiTRUEjikaekspresi1bernilaiFALSE,danmenghasilkan nilaiFALSEjikaekspresi1bernilaiTRUE.
3.5.5.5.LogicalAND(&&)
SamadenganoperatorANDsebelumnyatapiprecedencenyalebihtinggi,
//&& echo(true&&true)?'true':'false',"\n";//TRUE echo(true&&false)?'true':'false',"\n";//FALSE echo(false&&false)?'true':'false',"\n";//FALSE
3.5.5.6.LogicalOR(||)
SamadenganoperatorORsebelumnyatapiprecedencenyalebihtinggi.
//|| echo(true||true)?'true':'false',"\n";//TRUE
24PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
echo(true||false)?'true':'false',"\n";//TRUE echo(false||false)?'true':'false',"\n";//FALSE
Operatir||lebihtinggiprecedencenyadarior
echo(truexorfalse||true)?'true':'false',"\n";//FALSE echo(truexorfalseortrue)?'true':'false',"\n";//TRUE
PHPmelakukanoptimasipadaekspresiyangmenggunakanoperatorlogika.Contoh:
ekspresi1&&ekspresi2&&ekspresi3
Padaekspresitersebutjikaekspresi1bernilaiFALSEmakaekspresi2danekspresi3tidak akandieksekusi.Begitujugapadacontohberikut:
ekspresi1||ekspresi2||ekspresi3
Padaekspresitersebutjikaekspresi1bernilaiTRUEmakaekspresi2danekspresi3tidakakan dieksekusi.
3.5.6.Operatorbit
OperatoriniberlakuuntukintegerdankarakterASCII.
3.5.6.1.BitwiseAND
b1&b2 Menghasilkanbityangdisetjikabit1danbit2jugadiset.
//9=1 1 00 //1 0=11 00 echo9&1 0,"\n";//8=1 000
3.5.6.2.BitwiseOR
b1|b2 Menghasilkanbityangdisetjikasalahsatudaribit1danbit2diset
echo9|1 0,"\n";//1 1=11 01
3.5.6.3.BitwiseXOR
b1^b2 Menghasilkanbityangdisetjikasalahsatudaribit1danbit2diset,tapitidakkeduanya.
echo9^1 0,"\n";//3=00 1 1
BitwiseNOT
~b1
Menghasilkanbityangdisetjikab1tidakdiset,dankebalikannya PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource25
Shiftleft(geserbitkekiri)
b1<<n
Menggeserbitb1sebanyaknkekiri. Setiappergeseransatubitsamadengankalikandengan2
echo1 0<<1 ,"\n";//20=11 000
Shiftright(geserbitkekanan)
b1>>n
Menggeserbitb1sebanyaknkekanan. Setiappergeseransatubitsamadenganbagidengan2
echo1 0>>1 ,"\n";//5=00 11
3.5.7.OperatorString
Operatordot(titik)digunakanuntukmenggabungkanstringdenganstringatautipedata lainnya. Contoh:
$a='saya...'; $b='bela jarphp'; $c=$a.$b;//'saya...bela jarphp'
3.6.KendaliAlurProgram 3.6.1.Conditional
Statemenifelseifelsedigunakanuntukmengujibeberapakondisi. Berikutinicontohprogrammembacabilangandaristdin(keyboard),lalumembandingkan denganyangadadiprogram:
$ditebak=123; echo"ayotebak:"; $tebak=chop(fgets(STDIN)); if($tebak==''){ echo("kosong!\n"); }elseif($tebak<$ditebak){ echo("terlalukecil\n"); }elseif($tebak>$ditebak){ echo("terlalubesar\n");
26PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
3.6.2.switch
Switchdapatdigunakansebagaimanaifelseifelse,tapilebihtepatlagidigunakanuntuk mengevaluasisebuahkondisilalumembandingkanhasilevaluasitersebutdenganliteral integerataustring. Perhatikansetelahswitchdigunakanstatemenbreakuntukmencegahstatemenberikutnya dalamblokswitchdieksekusi:
echo"3rasaeskrim:\n\t1)moka\n\t2)stroberi\n\t3)mengkudu\n"; echo"pilih:"; $pilih=chop(fgets(STDIN)); switch($pilih){ case1: echo"yumyumyum\n"; break; case2: echo"slur p..slur p..\n"; break; case3: echo"yaak ..bleek ..\n"; break; default : echo'tidakada',"\n"; }
3.6.3.Strukturloop
Strukturloopadalahstrukturuntukmelakukaniterasiataupengulanganeksekusisatuatau beberapastatement. PHPmemilikibeberapastrukturloop:for,while,dowhile,foreach. for Menggunakan3blokekspresiyangdieksekusisecaraberbeda:
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource27
Statementfordieksekusidenganlangkahlangkahsebagaiberikut: 1. Padaawaleksekusistatemenfornilai$adisetsamadengan$n(baris4),langkahini hanyadilakukansatukalisaja. 2. Masihdibaris4:diperiksaapakah$amasihlebihbesardari0,jikabenarmakablok formulaidieksekusi(antarabaris5dan7),jikatidakbenarmakaeksekusistatemen forberakhir. 3. Sebelummengulangeksekusiloop,nilai$adikurangi1 4. Kembalikelangkah2. Ketigablokdapatterdirilebihdarisatuekspresi,yangdipisahkanolehkoma(,).Jikablok keduaterdirilebihdarisatuekpresimakablokekspresitersebutdiperlakukansepertihalnya jikakomadigantidenganoperator||(logicaloperatoror).
#pembangkitfibonacci echo"hitungfibonaccisampai:"; $maks=chop(fgets(STDIN)); f or($a=0,$b=1;$b<$maks;$tmp=$a,$a=$b,$b+=$tmp){ echo$b,""; }
Jikaekspresiblokkeduaadalahkosong,makaloopforakandieksekusitanpaberhenti,dan hanyadapatkeluardaridalamblokdenganstatemenbreak.
3.6.3.1.while
Statemenwhiledigunakanuntukmenjalankanpengulanganselamaekspresidalamwhile adalahTRUE. 28PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Contohpadapenghitungfaktorialjikamenggunakanwhile:
echo"hitungfaktorialdari:"; $a=chop(fgets(STDIN)); $faktorial=1; while($a>0) { $faktorial*=$a; $a; } echo"$faktorial\n";
Pembangkitderetfibonaccimenggunakanstatementwhile:
#pembangkitfibonacci echo"hitungfibonaccisampai:"; $maks=chop(fgets(STDIN)); $a=0;$b=1; while($b<$maks){ echo$b,""; $tmp=$a;$a=$b;$b+=$tmp; }
3.6.3.2.dowhile
Loopdowhiledieksekusiminimumsatukali.Blokdalamloopakandieksekusiselama ekspresiyangdiujidalamwhilebernilaiTRUE.
$ditebak=123; do{ echo"ayotebak:"; $tebak=chop(fgets(STDIN)); if($tebak==''){ echo("kosong!\n"); }elseif($tebak<$ditebak){ echo("terlalukecil\n"); }elseif($tebak>$ditebak){ echo("terlalubesar\n"); }else{ echo'benar ...',"\n";
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource29
} }while($tebak!=$ditebak)
3.6.3.3.break
Statementbreakdigunakandidalamloopuntukmengubahalureksekusisehinggakeluardari looptersebut.Tapijikalooptersebutadadidalamloopyanglain,makaeksekusiberalihke loopluar,tepatsetelahakhirloopdalamtersebut.
1 $ditebak=123; . 2. while(true){#loop1 3. while(true){#loop2 4. echo"ayotebak:"; 5. $tebak=chop(fgets(STDIN)); 6. if($tebak==''){ . echo("kosong!\n"); 7 8. }elseif($tebak<$ditebak){ 9. echo("terlalukecil\n"); 1 0.}elseif($tebak>$ditebak){ 1. echo("terlalubesar\n"); 1 12.}else{ 1 3.echo'benar ...',"\n"; 1 break; 4. 1 5.} 1 }#akhirloop2 6. . echo"lanjut?"; 1 7 1 8.ya=chop(fgets(STDIN)); 1 9.if($ya=='n')break; 20.}#akhirloop1
3.6.3.4.continue
Statemencontinuedigunakanuntukmengubahalureksekusiprogramagarsegera
30PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
menjalankaniterasiberikutnyasehinggastatemenstatemendibawahstatemencontinueini tidakdieksekusi.
$ditebak=123; $min_coba=3; $coba=0; while(true){ $coba++; echo"ayotebak:"; $tebak=chop(fgets(STDIN)); if($tebak==''){ echo("kosong!\n"); }elseif($tebak<$ditebak){ echo("terlalukecil\n"); }elseif($tebak>$ditebak){ echo("terlalubesar\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
Statementforeachdigunakankhususuntukmengiterasiarray,ada2bentuk untukarraydenganindeksintegermulaidari0:
$array=array(1 0,20,30,40,50); f oreach($arrayas$value){ echo$value,"\n"; }
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource31
untukarrayasosiatif:
$hash=array('kode'=>'A123','nama'=>'sususapi','harga'=> 12000,'satuan'=>'liter'); f oreach($hashas$key=>$value){ echo$key,'=>',$value,"\n"; }
3.6.3.6.return
Mengubahalureksekusisehinggabarisbarisberikutnyatidakdijalankanlagi. Jikadigunakandalamfungsistatemenreturndapatdigunakanuntukmengembalikannilaike pemanggilfungsi.
3.6.3.7.Exception
Exceptionadalahobjectyangdigunakanuntukmengubahekselusiprogramketikaterjadi kesalahan(error). Untukmenanganiexceptiondigunakankonstruksibloktrydancatch. Konstruksibloktry{}berisistatemenyangdapatmengakibatkanterjadinyaexception, konstruksicatchterdiriatasbagiandeklarasiobjectexceptionyangditanganidanbagianblok statemenyangmenanganiobjekexceptiontersebut. Untukmengakibatkanexceptionprogrammenggunakanstatementthrow,yangmenjadi parameterdarithrowadalahobjekException. ExceptionbarudikenalpadaPHP5. Contoh:
try{ echo'barisberikutnyaakanmenghasilkanexception',"\n"; thrownewException('errorygdisenga ja'); echo'barisiniakandiabaikan',"\n"; }catch(Exception$e){ echo'adaexception..',$e,"\n"; }
32PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
3.7.Fungsi
PHPmengenal3jenisfungsi: 1. FungsiyangmerupakanbagiandariPHP(bultin) Fungsiiniselalutersediauntukdigunakan. 2. Fungsiyangdisediakanolehextensionmodule. Fungsijenisinibarutersediasetelahusermenginstalextensionmoduletertentu. 3. FungsiyangdidefinisikanolehpenggunabahasaPHP(userdefinedfunction) FungsijenisinidibuatsendiriolehpenggunabahasaPHP,barutersediajikadefinisi fungsidimasukkankedalamscopeprogrammelaluistatement:require,include,dan sejenisnya, Fungsiyangdibahaspadabagianiniadalahyangterakhir.
3.7.1.MendefinisikanFungsi
Fungsididefinisikanmenggunakankeywordfunction,diikutinamafungsi. Fungsidapatmenerimanolataulebihparameterfungsidandapatmenghasilkannilai keluaran,dapatpulatidak. Berikutinicontohfungsiyangtidakmenerimaparameterfungsi,dantidakmengembalikan nilai ,hanyamencetakbentukpiramidakestdout:
functionpiramida(){ $t=20; f or($i=$t,$j=0;$i>0;$i,$j++){ echostr_repeat('',$i); echostr_repeat('^',$j*2+1),"\n"; } }
Fungsipiramida,menggunakanfungsibuiltinstr_repeatuntukmenghasilkanstringyangber ulang.
piramida();
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource33
3.7.2.NilaiDefaultuntukparameter
Untukparameterfungsibertipeskalar(numerik,string,array,bukanobjek),dapatditentukan nilaidefaultnya,contohmencetakbilanganfibonaccisecararekursif:
functionfibonacci($max,$a=0,$b=1){ if($b<$max){ echo$b,""; fibonacci($max,$b,$b+$a);#rekursi } } fibonacci(1 00);
Parameterdefaultmemudahkanpenggunaanfungsi.
3.7.3.PemanggilanFungsi
Pemanggilanfungsiharusselalumenggunakankurung,baikuntukfungsiyangmenerima parametermaupunyangtidak. Padacontohcontohsebelumnyaechoseringkalidipanggiltanpakurung,halinikarenaecho sesungguhnyabukanlahfungsi,tapiechoadalahlanguageconstruct(sepertihalnyaif,for, while,return)
34PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
3.8.Class
PHPsebagaibahasayangmendukungpemrogramanberorientasiobjek(ObjectOriented Programming)mengenalstrukturclass. Classmemudahkanenkapsulasidatadanreusabilitaskodeprogram. Mendefinisikanclass Classdidefinisikanmenggunakankeywordclassdiikutinamaclassyangbiasanyadiawali denganhurufkapital,badan(implementasi)classdibatasiolehkurungkurawal. Sebuahclassdapatmemilikisatuataulebihmethod,yaitufungsiyangberasosiasidengan classatauobjekdariclasstersebut. Sebuahclassdapatmemilikimethodkhususuntukmenginisialisasikanobjekdariclass tersebutyangdisebutconstructor,constructoradalahmethodpertamadariclassyang dieksekusisebelumnyaobjektersebutdipanggil.Jikaconstructortidakdidefinisikanmaka PHPmenyediakandefaultconstructor. Classdapatmendefinisikanmembervariabel,yaituvariabelyanghanyadapatdiaksesmelalui objectdariclasstersebut.Membervariabeldapatdidefinisikanlangsungdalammethod melaluiobjekkhusus$this. BerikutiniclassVektor:
classVektor{//awaldefinisi /*constructor*/ functionVektor($i,$j){ $this>i=$i;//membervariablei $this>j=$j;//membervariablej } /*@returnvektor*/ functiontambah($v){ returnnewVektor($this>i+$v>i,$this>j+$v>j); } /*@returnvektor*/ functionkali($skalar){ returnnewVektor($this>i*$skalar ,$this>j*$skalar); } /*@returnpanjangvektor*/ functionto_skalar(){ returnsqrt($this>i*$this>i+$this>j*$this>j); } /*methodkhususuntukmerepresentasikansbgstring(hanyadiPHP
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource35
3.9.Reusabilitas
PHPmenyediakankonstruksiuntukmendukungreusabilitaskodeprogramdalambentuk class,fungsi,konstantaatauvariabelglobal. Ada4statemenyangdigunakanuntukreusabilitaskodeprogram
3.9.1.include
Digunakanuntukmemasukkan(toinclude)filekebarisditempatkannyastatemenincludeini, statemenincludememerlukanparameterberupapathkefileyangakandiinclude. Pathdapatberupapathrelatifataupathabsolut.
3.9.2.require
Statemenrequirepersissamadenganincludehanyasajajikafileyangakandimasukkan tidakditemukandapatmenyebabkanfatalerrorsehinggamenghentikaneksekusiprogram. Menggunakanrequirelebihmenjamindisertakannyafileataudefinisifungsiyangdiperlukan.
3.9.3.include_once
Samadenganinclude,tapijikafilesudahpernahdiincludesebelumnyatidakakan 36PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
dimasukkanlagi.
3.9.4.require_once
Samadenganinclude_once,tapijikafileyangdiincludetidakditemukanmenyebabkanfatal error.
3.10.MenggunakanFungsidanClassdanfilelain
Agarsebuahfungsiatausebuahclassdapatdigunakanolehprogrampemanggilyangberbeda, makafungsiatauclasstersebutdisimpandalamfiletersendiri. Statemenrequire_oncesangattepatdigunakanuntukmenyertakandefinisifungsiatau classdarifiletersebut,karenamenjamindefinisifungsiatauclasshanyasatukalidipanggil. MisalclassVektordisimpandalamfileVektor.phpdidalamdirektori:/home/fadhilah/classes, makajikaprogramtestvektor1.phpperlumenggunakanclasstersebut,digunakan require_once:
1 req uire_once('/home/fadhilah/classes/V . ektor php'); . 2. $v1=newVektor(3,4); 3. $v2=newVektor(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";
Dapatjugamengubahinclude_pathdariPHPdenganfungsiset_include_path,baris1 digantikanoleh2barisberikut:
set_include_path(get_include_path()./home/fadhilah/classes/); req uire_once('Vektor php'); .
Keuntunganmenggunakanset_include_pathadalahstatemenrequire_oncetidakperlu menyertakanpathkefilefiletersebut,hanyaperlumenyebutkannamafilenyasaja.
4.AplikasiWeb
BagianinimenjelaskanaspekaspekbahasaPHPyangkhususberhubungandengan pengembanganaplikasiWeb. Agarcontohcontohpadabagianinidapatdijalankan,diperlukanwebserver(misal:apache) yangmendukungaplikasiPHP. CaramensetupapacheagardapatmendukungPHPtidakdijelaskan.
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource37
4.1.MethodGETdanPOST
Aplikasiwebadalahberbasiskaninteraksiantara2program,yangmasingmasingberperan sebagaiclientdanserver. Dalamkonteksbahasanini,serveradalahwebserver(misal:apachehttpd2,apachehttpd1, tomcat,jetty)danclientadalahwebbrowser(misal:mozillafirefox,konqueror,epiphany, opera) Serveradalahprogrampertamayangberjalandanmenyediakanserviceyangdapatdirequest olehclient. Selanjutnyaclientberjalan,danmengirimkanrequestkepadaserver,servermenerimadan memprosesrequesttersebutdanmenghasilkanresponse. Clientmenerimaresponsedanmerepresentasikanresponsetersebutkepengguna. Webrequestdapatdikirimkandalam2method(cara)GETdanPOST. MethodGETdigunakanapabilaoperasiyangdiharapkanterjadidisisiserver,akibatadanya requestini,tidakakanmengakibatkanperubahan(padadataatausumberdata). MethodPOSTdigunakanapabilaoperasiyangdiharapkanterjadidisisiserver,akibatadanya requestini,akanmengakibatkanperubahan(padadataatausumberdata). Webrequestdapatmemilikiparameter,yangdiperlakukanolehaplikasisebagaidatastring. PadamethodGET,parametertersebutdikirimkansebagaibagiandariURL,danpanjang parameterdibatasiolehpanjangmaksimumURL. PadamethodPOST,parametertersebutdikirimkandalambodyrequest.Panjangparameter tidakterbatas.
4.2.Menanganirequest
AplikasiPHPyangbaik,dirancanguntukmenanganirequestdenganbenar.Menangani requestterdiriatas: membacadatadarirequestsebagaimasukan,termasukparameterrequest. Melakukanprosesuntukmenghasilkankeluaranberdasarkandatarequest mengirimkanresponse
4.2.1.RequestGET
PadaaplikasiPHP,parameterdarirequestGETdapatdiaksesmenggunakanvariabelkhusus $_GETyangsudahdidefinisikanolehPHP. Variabel$_GETiniadalaharrayassosiatif,semuavalueharusdiaksesmenggunakankey.
4.2.2.RequestPOST
ParameterdarirequestPOSTdiaksesmenggunakanvariabel$_POST. 38PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
4.3.PenjelasanProgram 4.3.1.Filehead.php
Berisiheaderuntuksetiaphalamanweb,agartampilankonsisten. Headerjugacocokuntukmenempatkanincludekefilefileyangmenyediakanclassclassatau fungsifungsiyangdiperlukanolehaplikasi.
<?php define("PEMILIK","IrfanMahdi"); req uire_once("ordersvc.php"); ?> <html><body> <h1>WarungWeb</h1>
4.3.2.Fileordersvc.php
Fileiniberisidefinisiclassyangdiperlakukanaplikasiuntukmemprosespesanan.
<?php classOrderSer vice{ private$produk=array('0 1'=>'Gadogado','02'=>'BakmiA yam', '03'=>'T ongSeng'); private$pilihan=array( '0 1'=>array( 'cabe> 0','banyaksayuran','ketupat','nasi' ;1 ), '02'=>array( 'pangsitkering','pangsitbasah','bakso' ), '03'=>array( 'banyaktulang','banyakdaging','banyakkuah' ) ); //constructor functionOrderSer vice(){
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource39
} //@returndaftarproduk functionproduk(){ return$this>produk; } //@returnpilihan functionpilihan($prod){ return$this>pilihan[$prod]; } //prosespesanan functionproses_pesanan($prod,$kirimke,$konfig) { echo'T erimakasih,',"\n"; echo"Kamisegeramengirimkanpesananke<em>$kirimke</em>, kalaukebetulanlewat..<br/>\n"; if($konfig){ echo'<ul>'; f oreach($konfigas$d){ echo'<li>',$this>pilihan[$prod][$d],"</li>\n"; } echo'</ul>'; }else{ echo"Andamemilihmenustandard<br>\n"; } } } ?>
4.3.3.Filemenu.php
Menampilkanmenupilihan:
<?php include('head.php') ?> Selamatdatangdiwarung<em><?phpechoPEMILIK?></em><br/> Apayangandainginkan:
40PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
<ol> <?php $os=newOrderSer vice(); f oreach($os>produk()as$key=>$value){ echo'<li><a href="pesan.php?prod=',$key ,'">',$value,'</li>',"\n"; } ?> </ol> <?php include('tail.php'); ?>
4.3.4.Filepesan.php
Untukmemprosespesanan,danmenampilkanresponse. Jikapesanansudahdiprosesformtidakditampilkanlagi
<?php include('head.php'); $os=newOrderSer vice(); if(!empty($_POST)){ $konfig=$_POST['konfig']; $kirimke=$_POST['kirimke']; $prod=$_POST['prod']; if(empty($kirimke)){ echo"maudikirimkemana?\n"; } else { $os>proses_pesanan($prod,$kirimke,$konfig); $sudahpesan=true; } } if(!$sudahpesan){
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource41
?> <f mmethod="post"> or <tablesty le="border :1pxsolid;padding:1 0px1 0px1 0px1 0px; backgroundcolor :lightgreen;"> <tr><td> Konfigurasi</td><td> <?php $prod=$_GET['prod']; $options=$os>pilihan($prod); $i=0; f oreach($optionsas$value){ echo'<inputtype="checkbox"name="konfig[]"value="', $i++,'">',$value,"</option>\n"; } ?> </td> <tr><td>kirimkealamat</td><td> <inputtype="text"name="kirimke"value=""></td> <tr><tdcolspan="2"> <inputtype="submit"name="ok"value="Pesan"> </td></tr> <inputtype="hidden"name="prod"value="<?phpecho$prod;?>"></td> </f m> or <?php } include('tail.php'); ?>
5.Penutup
PHPadalahbahasapemrogramanyangrelatifmudahdipelajari. PHPsaatiniadalahbahasapemrogramanwebpalingpopuler,sehinggadukunganlibrary untukaplikasiwebdenganPHPcukupkaya. Jikaandabarumulaimengembangkanaplikasiwebpastikanandalebihdahulumenguasai 42PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
HTML(HypertextMarkUpLanguage)dangunakanHTMLeditordanprevieweryangcerdas sehinggamembantudalammenemukankesalahankesalahansintakspenulisan.
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource43
44PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
III.MengenalPython
1.ApaituPython
Pythonadalahbahasapemrogramanyanginterpreted.Programpythondapatlangsung dieksekusimenggunakaninterpreter,tanpamelaluiproseskompilasitersendiri. Pythontelahdigunakanuntukberbagaiaplikasi,mulaidariutilitasuntukadministrasisistem, pemrogramangame,aplikasiwebterintegrasidengandatabasesampaiaplikasidesktop berbasisGraphicalUserInterface. Pythonadalahbahasatingkatlebihtinggi,lebihtinggidariC/C++,memilikistrukturdata builtindengankemampuanoperasiyangkayadanluwes,sehinggamemungkinkanprogram PythonlebihringkasdaripadajikaditulisdenganC/C++ataubahkanJava. Pythonadalahbahasayangmodular,setiapprogrampythonadalahmodule,yangdapat diimportolehprogramlainuntukdimanfaatkanobjekataufungsinya. Librarypythonsangatextensible,bagiandayangmenguasaipemrogramanC,tidaksulit untukmenambahfungsibaruataumodulekedalamlibrarypython.
2.MenjalankanInterpreterPython
Setelahinterpreterpythonterinstal,makadapatdijalankandengancaracaraberikutini: 1. Melaluishell,biasanyauntukmenjalankan1statemenpython:
bash$ python -c "print 'assalamu\'alaikum'"
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource45
1. Perhatikanbarispertamamengacukepathinterpreterpython,dijalankansebagai berikut:
bash$ chmod 755 salam.py bash$ ./salam.py
3.ProgramPython
ProgrampythonadalahprogramteksdenganencodingASCII,dandapatjugaditulisdengan encodinglain(misal:Unicode).PenulisanidentiferharusmenggunakanASCII.
4.Statemen
Statemendiakhiridenganbarisbaru,tapistatemendapatmelintasbarisjikainterpreter menganggapstatementersebutbelumsempurna. Tidakperlukarakterkhususuntukmengakhiristatemen. Pythonmemperlakukanindentasidiawalbarissecarakhusus,indentasidigunakansebagai penandablokstatemen.Padabagiantentangkendalialurprogramhaliniakandibahaslebih lanjut.
5.Komentar
Setiapbariskomentarharusdiawalidengan'#'.Komentartidakharusselaludiawalbaris. Contoh:
#rumusluaslingkaran #inikomentarbariskedua luas=22/7*1 4*1 4 sisa=1 06%3#menghitungsisapembagian
6.Objekdanvariabel
Objekadalahabstraksidata,setiapdatadalampythondiwakiliolehobjekatauolehrelasi antaraobjek. Setiapobjekmemilikiidyangunikdantidakberubah,idobjekdapatdiketahuimenggunakan fungsiid().Operatorisdapatdigunakanuntukmembandingkanidentitasobjek. Objectmemilikitipedannilai.Tipesebuahobjekdapatdiketahuimenggunakanfungsi type(),tipesebuahobjekjugatidakdapatdiubah. Variabeladalahreferensikeobjek,variabelmereferensikanobjeksetelahmelaluiassignment.
46PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Variabeldapatlangsungdiassigntanpadideklarasikanterlebihdahulu,ekspresiyang mengacukesebuahvariabelsebelumvariabeltersebutdiassignmenyebabkanerror.
a=1 00 printid(a) b=a printaisb#adanbmengacukeobjekyangsama del(a)#dimusnahkan #printaisb#menyebabkanerror ,atidakdidefinisikan printb#bdanobjekyangdiref erensikanmasihada printid(b)
7.Tipedata,literaldanoperasi
Objekdibedakantipedatanyakarenasetiaptipedatamemilikioperasioperasitersendiri. Bagianinimenjelaskanberbagaitipedatadanoperasiyangberasosiasidengantipedata tersebut.
7.1.Bilangan
Pythonmendukungbilanganinteger,longintegerdanfloatingpoint. Penulisanliteralbilanganbulatdapatdenganinteger,longinteger,dankeduanyadapatditulis dalambasisoctal,desimaldanheksadesimal. Penulisanliteralfloatmenggunakantanda'.'(titik)desimal.
24 148364 7 7#integerterbesaruntuk32bitarithmetic 24 1483648L#long 7 0 1234567#octal 0x1234567 89abcdef#hexadecimal
Operasiaritmetikaantaraintegerdenganinteger,selalumenghasilkaninteger,operasiinteger
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource47
denganfloatakanmenghasilkandatafloat.Contoh:
>>>22/7*2 1*2 1#integerdaninteger 1 323 >>>22/70*2 . 1*2 1#integerdanfloat 1 386.0
Bilangandipythonadalahfirstclassobject,yangmemilikioperasioperasinyasendiri, contoh:
bil=1234 bil.__mod__(7) #samadengan bil%7
7.2.StringdanUnicodeString
SelainbilanganpythonjugadapatmemanipulasidataStringdenganpengkodeanASCII maupunUnicode. Penulisanstringliteralmenggunakanpetiktunggalataupetikganda.Pythontidak membedakankeduacaratersebut.Keduacarapenulisanmengenalkarakterkhususseperti barisbaru'\n'dantab'\t',penulisanliteralkarakterasciimenggunakanoctaldandecimaljuga didukung. Untukmenulisstringtanpapengenalankarakterkhusus,digunakanprefix'r'didepan string.
print'Assalamu\'alaikum' printWa'alaikumsalaam print'sayabilangPythonkeren' printsayabilang'Pythonasyik' print'barissatu\n bariskedua' print'barissatu\x 0A bariskedua' print'barissatu\012bariskedua' #rawstring printr'barissatu\n dibarissatujuga'
48PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
7.3.Boolean
Tipedatabooleanhanyamemiliki2nilai:TruedanFalse.BahkanhanyaTruedanFalse sajalahobjectyangadaditipedataBoolean.
7.4.Tipedatacontainer
Tipedatacontaineradalahtipedatayangdapatmenyimpanreferensikeobjeklainsebagai valuenya. Pythonmemilikitipedatacontaineryangbuiltin. Tipedatacontainerdalampythondapatmenyimpandatayangtipenyaberbedabeda.Bahkan datacontainerdipythondapatmemilikielemenberupadatacontainerjuga.
7.4.1.List
Listadalahhimpunanyangelemennyatersimpansecaraberurutan,sebuahlistdapatditambah elemenbaru,dikurangielemennya,ataudiubahnilaisetiapelemennya,listadalahsequence yangmutable.Elemenlistdiacumenggunakanindeksinteger. Listliteraldidefinisikanmenggunakan[]
[1 ,2,3,4,5,6,7 8] , [1 ,'senin',2,'selasa',3,'rabu'] [1 ,[2,3],4,5,[6,7 8,[9, 1 , 1 1]]] 0,
7.4.2.Tuples
Berbedadenganlist,makatuplesadalahsequenceyangimmutable.Persamaannyadenganlist adalahelemenelementuplesjugadiacumenggunakanindeksinteger. Tupledidefinisikanmenggunakan(),contoh:
(1 ,2,3,4,5,6,7 8) ,
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource49
7.4.3.Sets
Setadalahdatakontaineryangtidakberurutan(unordered)yangtidakmengandungduplikasi padaelemenelemennya. Setmemilikioperasiuntukpengecekanmembership,jugaoperasihimpunansepertiunion, intersection,dansymmetricdifference
7.4.4.Dictionary
Berbedadengankeduadatacontainersebelumnya,dictionarydiindeksmenggunakan key.Keyyangdigunakanharusdatayangimmutable.Jadistring,number,tupleyangtidak memilikivalueyangmutable,dapatdigunakansebagaikey.
d1={'kode':'000 1','nama':'SusuSapi','harga':12000,'stok': 12} printd1['kode']
Mengacukedictionarymenggunakankeyyangbelumdidefinisikanakanmenyebabkanerror, direpresentasikanolehexceptionKeyError,contoh:
printd1['satuan']#KeyError
8.Ekspresidanoperasi
8.1.EkspresiAtom
Atomadalahekspresipalingdasardalampython.Yangtermasukekspresiatomada3jenis:
8.1.1.Identifier
Identifieradalahnamayangmerupakanekspresiatom.Contohnyaadalahnamavariabel, namafungsi,namaclass,namamodule. Sebuahnamayangtelahdiasosiasikan(bound)denganobjek,jikadievaluasiakan menghasilkanobjektersebut,namayangbelumdiasosiasikan(unbound)denganobjekakan menghasilkanerrorNameErrorjikadievaluasi. Karakterpenyusunidentifierdalampythondapatterdiriataskombinasidarihurufbesardan kecil(azAZ),angka(09)dangarisbawah(underscore). 50PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Pythonmembedakanhurufbesardankecilpadaidentifier. Panjangidentifieradalahtakterbatas
8.1.2.Literal
Pythonmendukungberbagailiteralstringdannumerik.Padabagiantypedatatelah diperkenalkanberbagaipenulisandatanumerikdanstringsecaraliteral.
8.1.3.Enclosure
Enclosureadalahbentukbentukekspresiyangdibatasiolehreversequote(tandapetik terbalik`),tandakurung,kurungsiku,dankurungkurawal.Berikutinibentukekspresiyang termasukenclosure: 1. Bentukandalamkurung(Parenthesizedforms) 2. Listdisplay 3. Generatorexpressions 4. Dictionarydisplay 5. Konversistring
8.1.3.1.BentukandalamKurung(Parenthesizedforms)
Bentukandalamkurungadalahlistekspresiyangopsionalditempatkandalamkurung(). Jikaberisisedikitnyasatukoma,akanmembentuktuple,jikatidakmengandungkomaakan membentukekspresitunggal.Contoh:
(1+2)#ekspresitunggal(atom) (1+2,)#tuples
8.1.3.2.Listdisplay
Ekspresilistdisplayakanmembentukobjeklistyangbaru.Ekspresilistdapatdibentuk menggunakanlistdariekspresiyangdipisahkankomaataudarisebuahlistcomprehension.
[1+2,3<4,5*6+7 8,9!=1 , 0]#commaseparatedexpression [a*2f orainrange(1 0)]#listcomprehension [af orainrange(20)ifa%3==0]#listcomprehension
8.1.3.3.Generatorexpressions
Generatorekspresionmenghasilkangeneratorobjek. Generatorekpressionadalahnotasigeneratordalamtandakurung().
(bf orbinrange(20))#generatorbilang0s/d1 9
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource51
8.1.3.4.Dictionarydisplay
Dictionarydisplayadalahekspresiyangmenghasilkanobjekdictionarybaru.
{'python':'GUIapp','php':'webapp','java':'mobileapp','ruby':'web app'}
8.1.3.5.KonversiString
Konversikestringadalahekspresimenggunakantandakutiptunggalterbalik(reversequote). Yangmengubahekspresidaritipedatalainkestring.
`('a','b','c')` `[1 ,2,3,('a','b','c')]` `1+2+3`#6
8.2.EkspresiPrimer(Primaries)
Ekspresiprimeradalahekspresiyangmewakilioperasioperasiyangpalingmengikatdalam python.Meliputi: 1. EkspresiAtom(dibahaspadabagiansebelumnya), 2. Referensiatribut 3. Subskrip(subscription) 4. Slicing 5. pemanggilancallableobject(calls)
8.2.1.ReferensiAtribut(AttributeReference)
Referensiatributadalahekspresiyangmengacukepadaatributobjek.Contoh:
objek1 .atribut1
8.2.2.Subskrip
Ekspresisubskripberlakupadaobjeksequence(list,tuple,string)ataumapping(dictionary). 52PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Subkripmenggunakan[]setelahobjek.
objek1[ekspresi1]
Jikaobjekbertipesequence,makaekspresi1haruslahinteger.Ekspresidalamsubskrippada objeksequencedapatberupabilangannegatif,untukpengindeksandaribelakang.Contoh:
list1=[5,1 ,8,1 1 6,7 0] list1[3]#bilangan8 string2='bismillah' string[3]#'m' string[6]#m tuple3=('hati','damai','ingat','ALLAH') tuple[3]#ALLAH tuple[1]#ALLAH
Untukobjekbertipemapping,ekspresiindeksharuslahsesuatuyangdapatdihash(hashable) dantidakdapatdiubah(immutable).
dict4={'python':'GUIapp','php':'webapp','java':'mobile app','ruby':'webapp'} dict4['python']#'GUIapp' dict4['java']#'mobileapp'
8.2.3.Irisan(Slicing)
ExpresislicingterdiriatasSimpleSlicingdanExtendedslicing. Ekspresisimpleslicingdigunakanpadaobjeksequence(atauekspresiyangmenghasilkan objeksequence)danmenghasilkanobjeksequencebaru.Berikutinicontohnya:
list1=[1 ,2,3,4,5,6,7 8,9] , list1[1:]#listbarudari2sampaidengan9 list1[1:5]#listbarudari2sampaidengan5 list1[:1]#listbarudari1sampaidengan8 list1[1:2]#listbarudari2sampaidengan7
Ekspresiextendslicing,digunakanpadaobjekmappingmenggunakantuplesebagaikey, 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']
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource53
8.2.4.Pemanggilancallable(calls)
Ekspresiinimemanggilcallableobjek(misalnyafungsi),denganmenggunakannolatau beberapaargumen. Yangdimaksudcallableobjekadalah:userdefinedfunctions,builtinfunctions,methoddari builtinobjects,classobjects,methodsofclassinstances,danbeberapaclassinstancessendiri adalahcallable. Argumendapatberupapositionalataukeywordargument. Semuaekspresipadaargumendievaluasisebelumnyapemanggilandilakukan.
8.3.OperasiPangkat
Operasipangkatberasosiasilebihkuatdarioperatorunarydisebelahkirinya,danberasosiasi lebihlemahdarioperatorunarydisebelahkanannya.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 1 6**2**2#0.5=1 6**0.25=1/1 6**0.25
8.4.Operasiaritmetikaunary
Semuaoperasiunaryaritmetikadanbinermemilikiprioritasyangsama,terdiriatas: minus(),plus(+)danbitwiseinversion(~).
8.5.Operasiaritmetikabiner
Operasibinermeliputi:
8.5.1.Perkalian
Perkalian(*)memerlukanargumenbilangankeduanyaataujikasalahsatunyaintegermaka yanglainnyaharussequence.
2*3#6
54PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
8.5.2.Pembagian
Terdiriatas'/'(division)dan'//'(floordivision). Floordivisionmengenakanfloor()padahasilpembagian.
#division 22/7*1 4#588 4*1 22./7*1 4#66.0 4*1 1 1/2*3*4#0 1 ./2*3*4#6.0 22./7#3. 1 4285 1 74286 22.//7#3.0
8.5.3.Modulus(%)
Menghitungsisahasilbagi.Operator%jugadioverloaduntukmelakukanpengformatan string,contoh:
22%7#1 '%dekor%s'%(3,'ayam')
8.5.4.Penjumlahan
Menjumlahkanbilangandanmenggabungkanconcatsequence.
22+1 0 'bela jar'+'python'
8.5.5.Pengurangan
Operatorinimenghitungselisihuntukbilangan.
221 0
8.6.OperasiPergeseran(shifting)
Operasishiftbitinimenerimaduaargumenbilanganintegerataulong,untukargumendikiri haruspositip. Argumendikananoperatoradalahbilanganyangdigeserbitnyadenganjumlahpergeseranbit sebesarnilaiargumendikiri. PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource55
MelakukanNpergeserankekanan(>>)samadenganmembagibilangandenganNpangkat2. MelakukanNpergeserankekiri(<<)samadenganmengalikanbilangandenganNpangkat 2.
4>>1#2=biner1 00shiftleft1>00 1 4<<1#8=biner1 00shiftright1>1 000 7>>1#3=biner1 1shiftleft1>0 1 1 1 7<<1#1 4=biner1 1shiftright1>1 1 1 10
8.7.OperasiBitBiner(binarybitwise)
OperasiinimeliputiAND,ORdanXOR,yangberoperasibitperbit. OperatorANDakanmensetbitjikadanhanyajikakeduabitdiset
1 5&8#8 3 1&8#8
OperatorORakanmensetbitjikasalahsatudarikeduabitdiset
1 5|8#1 5 3 1|8#3 1
OperatorXORakanmensetbitjikadanhanyajikasalahsatubitdiset.Urutanprecedence diamtaraketiganyamulaidariyangtertinggi:AND,XORdanOR
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.8.OperasiPerbandingan(comparison)
OperasiperbandinganmenghasilkannilaibooleanTruedanFalse. Terdiriatas: Operator > < >= <= == Lebihbesardari Kurangdari Lebihdariatausamadengan Kurangdariatausamadengan Samadengan Deskripsi
56PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
8.9.OperasiBoolean
OperasibooleanmengevaluasiekspresiberdasarkannilaiTruedanFalsedariekspresi,python mengenalaturanberikutiniuntukdefinisitentangtruedanfalse: NilaiFalse, None,numerik0untuksemuatipedata,danstringkosongdancontainer kosongadalahfalse,sedangkannilailainnyaadalahtrue. PerhatikanbahwadibedakanmenuliskanTruedengantruedanFalsedenganfalse,Truedan FalseadalahobjekatauinstancedaritipeBoolean,sedangkantruedanfalseadalahnilai abstrakyangdikenaldalamoperasiboolean. Ada4operasiboolean:
ekspresi1ifekspresi2elseekspresi3
Operasiinimenghasilkantruejikaekspresi1danekspresi2keduanyabernilaitrue xor
ekspresi1xorekspresi2
8.10.Lambda
Lambdaadalahekspresiyangmenghasilkanfungsianonim. PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource57
Fungsianonimtersebuttidakbolehberisistatemen,hanyaekspresi.
defpangkat(a): returnlambdab:a**b fa=pangkat(2) fa(2)#2pangkat2 fa(3)#2pangkat3 fa(4)#2pangkat4 fb=pangkat(3) fb(2)#3pangkat2 fb(3)#3pangkat3 fb(4)#3pangkat4
8.11.EkspresiLists
Ekspresilistterdiridarisatuataulebihekspresiyangdipisahkandengankoma. Ekspresilistdengansekurangnyasatukomadibelakangmenghasilkantuple.Contoh
a,b,c=1 ,2,3#a,b,cadalahekspresilist x=1 ,#xadalahtupledengan1elemen y=1#yBUKANtuple,yadalahvariabelinteger z=()#zadalahtuplekosong
9.Fungsi
Fungsidigunakanuntukmengenkapsulasikanoperasi. Fungsipythondidefinisikanmenggunakankeyworddefdiikutinamafungsi,selanjutnya fungsidapatmenerimanolataulebihparameter. Fungsidapatmengembalikanobjek(yangbukanNone)ataudapatmengembalikanNone. Pengembalianobjek(yangbukanNone)menggunakanstatementreturn.
#mendefinisikanfungsi #tidakmenerimaparam,returnNone defsalam(): print"Assalamu'alaikum"
58PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
#menerimaparam,returnNone defsalam1(m): print"Assalamu'alaikum"+m #tidakmenerimaparam,returnstring defsalam2(): return"Assalamu'alaikum" #menerimaparam,returnstring defsalam3(m): returnsalam2()+m#fungsidapatmemanggilfungsilain #pemanggilanfungsi salam() salam1('fadhilah') printsalam2() printsalam3('irfan')
Parameterfungsidapatmemilikinilaidefault,padacontohberikutberikutiniadanb memilikinilaidefaultmasingmasing0dan1:
#generatorbilanganfibonacciygkurangdarin,denganrekursi deffibonacci(n,a=0,b=1): ifb<n: printb,#cetaktanpagantibaris fibonacci(n,b,a+b) #panggilfungsi fibonacci(1 00)
10.StatemenKendaliAlur
10.1.Statemenif
Statemenifdigunakanuntukpencabanganeksekusistatemenataublokstatemenberdasarkan kondisiyangbernilaiTrueatauFalse.Untukpencabanganalternatifdarikondisipertama digunakankeywordelif,danuntukpencabanganalternatifterakhirdigunakanelse. PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource59
Pencabanganmenggunakanelifdapatlebihdarisatu.
importsys print'tebakinteger :', ditebak=67 #bacastdin1baris,potongwhitespacedepan&belakang, #lalukonversistringkeinteger a=int(sys.stdin.readline().strip()) ifditebak<a: print'terlalubesar' elifditebak>a: print'terlalukecil' else: print'pasbenar ...'
10.2.while
UntukmelakukanpengulanganselamaekspresidiwhilebernilaiTrue. Contoh:
importsys print'tebakintegersampaiketemu:', ditebak=67 a=int(sys.stdin.readline().strip()) whilea!=ditebak: ifditebak<a: print'terlalubesar' elifditebak>a: print'terlalukecil' print'tebaklagi:', a=int(sys.stdin.readline().strip()) print'pasbenar ...'
Untukkeluardariwhileloopdapatmenggunakanbreak,untukmelanjutkanlooptanpa mengeksekusistatemenberikutnyadigunakancontinue:
importsys
60PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
ditebak=67 minimum_coba=3 coba=0 whileT rue: coba+=1 print'tebakinteger :', a=int(sys.stdin.readline().strip()) ifditebak<a: print'terlalubesar' ifcoba<minimum_coba:continue elifditebak>a: print'terlalukecil' ifcoba<minimum_coba:continue else: print'pass' break print'menyerah?[y/n]:', nyerah=sys.stdin.readline().strip() ifnyerah=='y': break else: coba=0
10.3.for
Digunakanuntukmengiterasisequences(tuples,list,string):
stooges='timbul','kadir','doyox' f orguyoninstooges: printguyon
10.4.pass
Statemeninitidakmelakukanapapun,digunakanuntukmengisiblokprogramagarbenar secarasintaks. PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource61
10.5.exceptions
Pythonmengenalmekanismeyangelegandalammenanganierrorpadaprogram,yaitu menggunakanexception. Penangananexceptionterdiriatas2blok:trydancatch. Bloktryberisistatement(statement)yangdapatmengakibatkanterjadinyaerroratau exception. Jikasatustatementdalamblokmengakibatkanexceptionmakastatemenstatemenberikutnya tidakakandieksekusi,alurprogramsegeraberalihkeblokcatch. Blockcatchberisistatement(statemen)yangakanmenanganiexception. Contohberikutinimenganganiexceptionjikapenggunamenekanctrlcyangmenyebabkan exceptionKeyboardInterrupt:
importsys print'tebakintegersampaiketemu:', ditebak=67 tr y : a=int(sys.stdin.readline().strip()) whilea!=ditebak: ifditebak<a: print'terlalubesar' elifditebak>a: print'terlalukecil' print'tebaklagi:', a=int(sys.stdin.readline().strip()) print'pasbenar ...' exceptKeyb oar dIn ter r upt : print'\nhmm..menyerah?\n\ \rsmogalebihlainkalilebihberuntung,bye!'
11.Modules
Modulememudahkanpemakaianulangberbagaisumberdayaprogram(fungsi,class, variabel),danmenyediakannamespaceuntukmenghindarikonflikpenamaan.Sebuahmodule 62PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
dapatberisibeberapafungsiataubeberapaclass.
11.1.MendefinisikanModule
Sebagaicontoh,pembangkitbilanganfibonacciingindisimpansebagaifungsidalammodule pembangkit.Yangdiperlukanadalahmendefinisikanfungsitersebutdalamfile pembangkit.py.
#modulepembangkitfibonacci #returnlistbilanganfibonacci deffibonacci(n,a=0,b=1 ,hasil=None): ifhasil==None:hasil=[] ifb<n: hasil.append(b) fibonacci(n,b,a+b,hasil) returnhasil
Perhatikanbahwatidakadastatementdiluardefinisifungsidalamfilepembangkit.py.
11.2.MenggunakanModule
Berikutiniadalahprogramfib.py,yangmenggunakanmodulepembangkit. Programinimenggunakanstatementimport,sehinggafungsifibonacci()dapatdiakses melaluiobjectpembangkit.Perhatikanbahwanamaobjectyangdiimportsamadengannama filemodule.
importpembangkit f orxinpembangkit.fibonacci(1 00): printx,
11.3.Modulesearchpath
Secarapraktismodulemoduleditempatkandalamdirektoriterpisahdariprogrampengguna modul. Sebagaicontohmodulepembangkit.pydisimpandalamdirektori/home/hafizh/modulku. Supayaprogramfib.pydapatmenemukanmodulepembangkit,direktori /home/hafizh/modulkuharusdimasukkandalammodulesearchpath. SalahsatuyangtermasukmodulesearchpathadalahenvironmentvariablePYTHONPATH. DirektoritempatmoduleharusmasukkePYTHONPATH:
exportPYTHONP ATH=/home/hafizh/modulku:$PYTHONP ATH
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource63
pythonfib.py
12.Class
Classdidefinisikanmenggunakankeywordclass. Dalamclassdapatdidefinisikanmethodatauoperator.Padaclassinididefinisikan constructor,operator+,operator,methoduntukmenampilkanrepresentasistring,dan menghitungbesarvektor. Pythonmengenalnamanamamethodkhususyangdapatdigunakanuntuk mengimplementasikanoperatorbagiclasstersebut. Dalamcontohinimethodkhususyangdiimplementasikanadalah__add__untukoperator+, __sub__untukoperator
classVektor : #constructor def__init__(self,x,y ,z): self.x,self.y ,self.z=x,y ,z #menghitungbesarvektor defto_skalar(self): importmath returnmath.sqrt(self.x*self.x+self.y*self.y+self.z *self.z) #operator+ def__add__(self,v): returnVektor(self.x+v x,self.y+v y . . ,self.z+v z) . #operator def__sub__(self,v):
64PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Berikutiniprogrampemakaiclasstersebut:
fromvektorimportVektor a=Vektor(1 ,2,3) b=Vektor(4,5,6) c=a+b print'%s+%s=%s'%(a,b,c) print'besarc:%.2f'%c.to_skalar() c=ab print'%s%s=%s'%(a,b,c) print'besarc:%.2f'%c.to_skalar()
13.Penutup
Pythonadalahbahasascriptingyangsangatmenarikuntukditekunidanditerapkandalam berbagaiaplikasi. Beberapakeunggulanyangmenarikdarisisipotensiuntukmenggunakanpythonpada aplikasibisnisdiantaranyaadalah: Pythonmelakukanpengecekanbounddanunboundvariabel,tidakseperti,misalnya,PHP4 yangmembiarkanprogramermelakukankesalahandenganmengevaluasivariabelyangbelum diberinilai(unassigned). Pythonjugamelakukanpengecekanbatasarray(indexboundarychecking)danjugaindex keychecking,tidaksepertimisalnya,PHPatauPERL. Sintakspythonyangmemperhitungkanindentasijugamenuntutkerapihansourcecodeyang diperlukanuntukmemaintainprogramdalamjangkapanjang.
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource65
IV.MengenalRuby
1.ApakahRuby
Rubyadalahbahasapemrogramanscriptingyangdinamisdanobjectoriented,semuadatadi Rubyadalahinstancedarisebuahclass. RubydikembangkanpertamakaliolehYukihiroMatsumoto('Matz')padatahun1995. SudahbeberapatahunbelakanganiniRubydipakaiuntukmengembangkanaplikasiwebyang komersialmaupunnonkomersial.libraryRubyuntukaplikasiberbasisGUInonwebjuga tersedia.
2.MendapatkandanMengintalRuby
1. Downloadsourcehttp://www.rubylang.org 2. Uncompressdisembarangdirektori:
bash$tarzxvfruby1 .8.5.tar gz .
3.MenjalankanRuby
Palingsedikit,ada3caramengeksekusiinterpreterruby.
3.1.Menggunakanfileskrip
Berikutinifilesalam.rb,mencetaksalamdiakhiribarisbaru
puts"assalamu'alaikum"
dieksekusidenganinterpreterruby:
bash$rubysalam.rb
Satusatunyastatemenpadaprogramtersebutmemanggilmethodputs,yangmencetak objekkestandardoutput(stdout)dandiakhiridenganbarisbaru.
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource67
3.2.Menggunakancommandline
bash$rubyeputs\assalamu'alaikum\
3.3.SecaraInteraktif
bash$irb irb(main):00 1:0>puts"assalamu'alaikum" assalamu'alaikum =>nil
4.StrukturProgramRuby
4.1.Fileprogramatauskrip
ProgramRubyadalahfileteksdenganencodingASCII7bit,yangdapatdibuatdengantext editoryangbiasaandadigunakan. NamafileprogramRubybiasanyadiakhiridengan'.rb',inibukankeharusan,hanyakebiasaan umum.Namafileyangsahpadafilesistemdapatdigunakansebagainamafileprogram (walaudemikian,bukanideyangbaikmenamakanfileprogramanda'~@~.rb') Sebuahfileprogramdapatdieksekusidarishellsecaralangsungtanpamenuliskaninterpreter ruby,denganmenambahkanbariskhususdiawalprogram,barisiniharusmengacukepath rubyinterpreter,berikutinifilehalo1.rbsebagaicontoh:
#!/usr/local/bin/ruby puts'HaloRuby!'
Ubahfiletersebutsehinggaexecutable,daneksekusidishell(perhatikan./dibariskedua):
bash$chmod7 55halo1 .rb bash$./halo1 .rb
Beberapaoptiondiinterpreterjugadapatdituliskan,misalnyawuntukwarning:
#!/usr/local/bin/rubyw whilegets.chop if/ruby/i puts'ya,andaketik'+$_+'...' end end
apapunsetelahbarisinitidakakandieksekusiolehinterpreter.
4.2.Statement
ProgramRubyadalahlineoriented,terdiridaristatementyangdiakhiricukupdenganakhir baris(endofline),tidakperlukarakterkhusus(semisaltitikkoma)untukmenandaiakhir statement. Rubyjugatidakmemperlakukankarakterindentasi(tab)atauspasisecaraistimewauntuk awalstatement,contoh:
puts'inibarispertama' puts'iniyangkedua' puts'daniniyangterakhir'
Sebuahstatemendapatditulisdalambeberapabaris,contoh:
#statemendapatmultiline puts'rubyadalahbahasapemrograman yangdinamikdanobjectoriented dikembangkanpertamakali olehYukihiroMatsumoto,a.k .a\'Matz\'' #multilinememudahkanpenulisanq ueryygpanjang q uery=' selectp.nama,p.stok ,s.namafromprodukp,suppliers p.idsup=s.idandp.stok>1 00 orderbyp.nama limit1 0offset2 1' putsq uery
beberapastatemenditulissatubarisjikadipisahkanolehtitikkoma,contoh:
p=1 0;l=20;t=1 5;volume=p*l*t ;puts"volume#{volume}"
4.3.Komentar
Sepertisudahandalihatpadacontohcontohsebelumnya,Rubymenggunakan'#'sebagai penandaawalkomentar,dansetiapbariskomentarharusdiawalidengan'#'. Khususuntukbarispertama,jika'#'diikutidengan'!'makabarisinidigunakanuntuk mengeksekusiinterpreterjikaprogramdijalankanlangsungdaricommandline.
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource69
4.4.Class
Sebagaibahasaobjectoriented,dataRubyadalahinstancedarisuatuclass.Class merepresentasikansebuahkonsepyangmeliputistrukturdatadanoperasioperasiyang berasosiasidenganstrukturdatatersebut. Classmemberikansebuahnamespacetersendiribagioperasioperasidanvariabelvariabeldi dalamclasstersebut. SemuaclassyangdidefinisikandalamRubymemilikisatuclassindukyaituclassObject. Sebuahclassbiasanyadidefinisikandalamsatufiletersendiri,walautidakadakeharusan sepertiitu. Namaclassbiasanyadiawalidenganhurufkapital.Selanjutnyaclassakandibahasdibagian tersendiri.
4.5.Module
Moduleadalahsebuahcaramengumpulkanclassclass,methodmethoddankonstanta konstantadalamsebuahnamespace. Modulememudahkanpemakaianbersamadanberulangberbagaikonseptersebut(class, method,konstanta). Denganadanyamodule,kemungkinankonfliknama(nameconflictataunamecollision) dapatdiminimalkan.Moduleakandibahaslebihlengkappadabagiantersendiri.
5.TipeDataDasar,LiteraldanVariabel
Rubymendukungberbagaitipedatadasaryaitu:numerik,string,range,array,hashesdan regularexpression.SemuadataRubyadalahobjekatauinstancedarisuatuclass.
5.1.Numerik
Numerikterdiriatasintegerdanfloatingpoint.Integerdapatmenampungjumlahdigityang hampirtakterbatas(dibatasiolehjumlahfreememorydisistem).Integerpadarangetertentu adalahobjekdariclassFixNumdanpadarangelainnyaadalahdariclassBigNum. Rubymendukungoptionalbaseindicatoruntukpenulisanliteralinteger:
70PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Baseindicator 0 Octal
Penulisannumerikdapatmenggunakanunderscore(garisbawah)untukmemudahkan pembacaan,contoh:
123_456_7 89=>123 4567 89 0b1 1_11_11=>0b1 10 11 1 0 0 1 110
Floatingpointditulismenggunakan.(titik)untukseparatordesimalbulatdanpecahan, contoh:
0. 467 123 89 3. 1 4285 1 74285 1 74
Datanumerikadalahobjeksejati,sebagaicontoh,daridataintegerdapatdipanggilmethod:
#representasil1 398634dalamstringhexadesimal 1 l1 398634.to_s(1 1 6)
5.2.String
StringdalamRubyadalahsederetanbytesyangtiapbytenyaterdiridari8bit. Stringliteraldinyatakandalamkutiptunggalataukutipganda,contoh:
'SayasukacodingdenganRuby.' . 'Sayabilang\'SayasukacodingdenganRuby.\'' . Sayabilang\SayasukacodingdenganRuby.\ .
Stringliteraldiatasbernilai'Luas lingkaran = 588'. KutipgandapadastringliteraljugamenyebabkaninterpreterRubyakanmengevaluasi berbagaikarakterkhusus(misal:controlcharacters). Ada3caralainuntukmendefinisikanstringliteral:%q,%Qdanheredocuments. Prefix%qsamadengankutiptunggaldan%Qsamadengankutipganda(menyebabkan interpolasiekspresi),keduanyamenggunakandelimiter!,/,{,(,<.dan[. Contoh: PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource71
5.3.nil
Rubymengenalsebuahobjekkhususuntukmenyatakanketiadaanyaitunil,jadinil bukanlah'tidakadaobjek'.
6.Variabel
SepertidijelaskansebelumnyasemuadataRubyadalahobjekatauinstancesuatuclass,dan variabeladalahreferencekeobjektersebut.Variabelbukanlahobjekitusendiri,haltersebut akandibahaslebihlanjutpadaakhirbagianini. Variabellangsungdidefinisikanmenggunakanassignmentkeekspresiatauliteral.Contoh:
#variabelstring nama1='hafizhamrullah' #variabelnumerik ,jugadapatdiassigndariekspresi size1=nama1 .length
Tapivariabelyangbelumpernahdidefinisikantidakdapatdievaluasi,interpreterruby menganggaphalinisebagaierroryangmenghentikaneksekusiprogram.Contoh:
#error :'blah'belumdidefinisikan putsblahblah #error :'alas'dan'tinggi'belumdidefinisikan luas=alas*tinggi/2
7.VariabeladalahReference
Variabelmerupakanreferencekeobject,objectdapatdiubahmenggunakanvariabel,misalnya denganmemanggilmethodmelaluivariabeltersebut.Berikutinicontohnya: 72PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Namamethodyangdiakhiri'!'
8.Scopevariabeldanpenamaannya
Rubymengenal4jenisvariabel:
8.1.Variabelglobal
Variabelglobaldapatdiaksesdariclasslainataumodulelain,namavariabelglobaldiawali dengan$,contoh:
$debug=false
8.2.Variabellokal
Variabellokalhanyadapatdiaksesdaridalammethod,namavariabelglobaldiawalihuruf kecil,contoh:
hitung=1 0 array1=[2,3,,34,300] 1 1
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource73
8.3.Variabelinstance
Variabelinstancehanyadapatdiaksesdaridalammethodinstance.Namavariabelinstance diawalidengan@,contoh,classVektorberikutmemilikivariabelinstance@idan@j:
classVektor definitialize(i,j) @i=i @j=j end end
8.4.Variabelclass
Variabelclassdapatdiaksesdaridalammethodinstancemaupunmethodclass.Namavariabel classdiawalidengan@@,contoh,classVektorberikutmemilikivariabelclass @@totalcount:
classVektor @@totalcount=0 definitialize(i,j) @i=i @j=j @@totalcount=@@totalcount+1 end end
8.5.ArraydanHash
ArraydanHashadalahobjekyangmerupakankoleksidatasecaraterindeks(indexed). Arraydiindeksdengankeyinteger,Hashdiindeksmenggunakansembarangobjeksebagai key. Arraydanhashdapatberisielemenelemenyangberbedatipedatanya. Arraydapatdidefinisikansecaraliteral,denganmenggunakanoperatorkurungsikuberisi elemenelemenarray,contoh:
a1=[1 ,'senin',2,'selasa',3,'rabu',4,'kamis',5,'jumat']
Mengaksesarraya1menggunakankeyinteger:
putsa1[0]#1 putsa1[1]#'senin' putsa1[2]#2
Arraydapatberisiarraylain,membentukarraymultidimensi:
a2=[['a','b','c'],['d','e','f'],['g','hihi','i']] #mengakses putsa2[2][1]#'hihi'
74PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Hashdidefinisikanmenggunakankurawal{},contoh:
produk1={'p00 1'=>'SusuSapi','p002'=>'T elurA yam','p003'=> 'GulaPasir'} putsproduk1['p002']#'T elurA yam' #nestedhash produk2={ 'p00 1'=>{ 'nama'=>'SusuSapi', 'harga'=>1 0000}, 'p002'=>{ 'nama'=>'T elurA yam','harga'=>12000}, 'p003'=>{ 'nama'=>'GulaP asir','harga'=>6000} } putsproduk2['p003']['harga']#6000
9.EkspresidanStrukturkendali
9.1.Ekspresimelibatkanstringdannumerik
JikaandaterbiasadenganbahasascriptlainnyasepertiPHPatauPERL,mungkinanda mengalamikesulitanmenuliskanekspresiyangmelibatkanvariabelstringdanvariabel numerik,karenaRubytidakmelakukankonversiotomatisdariekspresinumerikkestringatau sebaliknyasepertiyangmungkinandaharapkan,objekharusdiparsemenghasilkanobjek barudengantipeyangsesuaisecaraeksplisitmenggunakanmethodyangtepat,contoh:
num1=2000 str1='1 000' #BARISBERIKUTERROR:operator+num1butuhoperanddariclassFixNum num2=num1+str1 #str1diparsemenghasilkannumerik num2=num1+str1 .to_i
Begitujugakebalikannya,jikamenggabungkanstringdengannumeriktanpa#{}:
str1='Biayanya...' num1=2000 #BARISBERIKUTERROR:operator+str1butuhoperanddariclassString str2=str1+num1 #num1diparsemenghasilkanstring str2=str1+num1 .to_s
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource75
Perhatikandalamkeduapemanggilanmethodto_idanto_str,objekdaristr1dannum1 tidakberubah,tapimenghasilkanobjekbaru.
9.2.EksekusiConditional
Eksekusiconditionaldidasarkannilaiboolean(trueataufalse)suatuekspresi. Rubymenganggapsemuanilaiyangtidaksamadengankonstantafalseatautidaksama denganniladalahtrue.
9.2.1.If...then...end
Rubymengenalekspresiconditionalif..then..enduntukmengevaluasisatukondisidan if..then..elsif..then..else..enduntuklebihdarisatukondisi.Contoh:
1 . 2. 3. 4. 5. 6. . 7 8. ditebak=123 tebakan=gets.chop.to_i iftebakan>ditebak puts'terlalubesar' elsiftebakan<ditebak puts'terlalukecil' else puts'pasbenar...'
9.2.2.ConditionalTernary
Rubyjugamengenalekspresiternary,bentuknya: 76PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
expr0?expr1:expr2
Jikaexpr0bernilaitruemakadikembalikanexpr1,jikasalahdikembalikanexpr2. Ternarymemungkinkanekpresinested,contoh:
bil=123;print'tebaklah:';tebak=gets.chop.to_i putstebak==bil?'benar ..':tebak>bil?'kebesaran':'kekecilan'
9.3.Loop
Loopmengenalwhile..enduntukmengeksekusistatemenstatemendalamloopselama kondisiyangdievaluasipadabagianwhileadalahtrue.Programberikutiniakanterus memintainputselamatebakanyangmasukbelumbenar:
1 ditebak=123 . 2. print'tebak:' 3. tebakan=gets.chop.to_i 4. whileditebak!=tebakan 5. ifditebak<tebakanthen 6. puts'terlalubesar' . else 7 8. puts'terlalukecil' 9. end 1 0.print'tebaklagi:' 1. tebakan=gets.chop.to_i 1 12.end 1 3.puts'benarsekali!'
10.Method
Methoddapatberdirisendiriataumerupakanbagiandariclass. Methoddidefinisikanmenggunakankeyworddef,dandiakhiriend. PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource77
78PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
10.1.BlokdanIterator
Blokadalahsederetanbarisstatemenyangdapatdiasosiasikandenganpemanggilanmethod. Blokbiasadigunakansebagaicallback,jikaandapernahbelajarJava,kegunaanblokdapat disejajarkansepertianonymousclassyangdigunakansebagaicallback.TapibloknyaRuby lebihluweskarenatidakperluadaclassyangdidefinisikan. Blokdimulaidengankeyworddodandiakhiridenganend,ataumenggunakan{}. Delimiterblokdo...enddigunakanjikastatemendalambloklebihdarisatubaris,jika hanyasatubarismakadigunakan{},halinibukankeharusan,hanyasesuatuyangtelah menjadistandard. Berikutinicontohblock:
#blokdo..end do puts'statement1' puts'statement2' puts'statement3' end #blok{} {puts'statementunggal'}
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource79
yield'ding...',2#memanggilblok ,passing2parameter yield'...dong',3 yield'ding...',4 yield'...dong',5 end #blokmendefinisikanparameterpara1 ,para2sebagaiparameterblok panggil4xdo|para1 ,para2| n=0 whilen<para2 printpara1#'print'tidakmencetakbarisbaru n=n+1 end puts''#gantibaris end
Perhatikanprogramdiatasmenggunakando...endsebagaipembatasblok.Andadapat menggunakan{}sebagaipenggantido...end.
11.Class
Berikutinicontohclassyangdigunakandalampenjelasanselanjutnya:
1 classVektor . 2. #variabelclass 3. @@totalobj=0 4. 5. #constructor 6. definitializei,j . 7 @i=i 8. @j=j 9. @@totalobj=@@totalobj+1 1 0. end 1. 1 12. #operator+sebagaimethodinstance 1 3. def+(v) 1 4. Vektor new(@i+v i,@j+v j) . . . 1 5. end 1 6. . #besar/magnitudevektor(methodinstance) 1 7 1 8. defto_skalar 1 9. Math.sqrt(@i*@i+@j*@j) 20. end 2. 1 22.#attributei(methodinstance) 23.defi 2 4. @i 25.end
80PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
26. 2 #attributej(methodinstance) . 7 28.defj 29.@j 30.end 3. 1 32.#representasistring(methodinstance) 33.defto_s 34. "(#{@i},#{@j})" 35.end 36. 3 #methodclass, . 7 38.#mengembalikantotalobjekvektorygsdhdicreate 39.defVektor totalobj . 40.@@totalobj 4. end 1 42.end#akhirdefinisiclassV ektor 43. 4 4.x=Vektor new(1 . ,2)#panggilconstructor 45.y=Vektor new(2,2)#panggilconstructor . 46.z=x+y#panggilmethod+ 4 puts"vektorz#{z}"#panggilmethodto_s . 7 48.puts"magnitudevektorz:#{z.to_skalar}"#panggilmethod to_skalar 49.#memanggilmethodclass 50.putsVektor ::totalobj
11.1.MendefinisikanClass
ClassdiRubydidefinisikandalamfileprogramsepertiprogramRubylainnya.Tidakada aturanpenamaankhususuntuknamafile. Definisiclassdiawalidengankeywordclassyangdiikutinamaclass,namaclassdiRuby biasanyadiawalidenganhurufkapital.(contoh:baris1classVektor) Definisiclassdiakhiridengankeywordend.(contoh:baris34classVektor)
11.1.1.Bagianbagianclass 11.1.1.1.Constructor
Constructoradalahmethodkhususyangdigunakanuntukmenginisialisasistateobjek instancedariclass.MethodconstructordiRubyharusdinamakaninitialize,methodini dapatmenerimanolataulebihparameter.
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource81
11.1.1.2.MethodInstance
Adalahmethodyanghanyadapatdipanggilmelaluiclassinstanceatauobjek. Diantaramethodinstanceadayangdigunakanmengaksesvariabelinstance(akandijelaskan kemudian),methodsepertiinidisebutjugaattribut. PadacontohclassVektorada5methodinstance,yaitu:operator +, to_skalar, attribute i, attribute j dan to_s
11.1.1.3.MethodClass
Adalahmethodyanghanyadapatdipanggilmelaluiclass,tidakdapatdipanggilmelaluiclass instance. Penamaannyadiawalidengannamaclassdiikuti'.'dannamamethoddimulaidenganhuruf kecil. PadacontohclassVektorada1methodclass,yaitu:totalobj. Pemanggilanmethodclassmenggunakannamaclassdiikuti'::'dannamamethod.
11.1.1.4.VariabelInstance
Variabelyangdidefinisikandalamclassdanhanyadapatdiaksesdarimethodinstance,dan hanyadapatdiaksesmelaluiobjekitusendiri,tidakdapatdiaksesmelaluiobjeklain. Setiapobjekmemilikivariabelinstancenyasendirisendiri. Penamaannyadiawalidengan@diikutinamavariabelyangdimulaidenganhurufkecil. PadacontohclassVektorada2variabelinstance:@idan@j
11.1.1.5.Variabelclass
Variabelyangdidefinisikandalamclassdandapatdiaksesdarimethodclassmaupunmethod instance. Variabelclassdapatdiaksesbersamasamaolehsemuainstancedariclasstersebut. Penamaannyadiawalidengan@@diikutinamavariabelyangdimulaidenganhurufkecil. PadacontohclassVektorada1variabelclass:@totalobj
11.1.2.Inheritance(classturunan)
Sebuahclassdapatdidefinisikansebagaiturunandariclasslain.Classturunanakanmewarisi methoddanvariabeldariclassinduknya. BerikutinididefinisikanclassBalok
classBalok definitializepanjang,lebar ,tinggi
82PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
@panjang=panjang @lebar=lebar @tinggi=tinggi end defvolume @panjang*@lebar*@tinggi end defto_s "(#{@panjang},#{@lebar},#{@tinggi})" end end#akhirclassBalok
12.Modules
KetikasebuahprogramRubysudahmenjadiaplikasiyangcukupbesar,makaaspek reusabilitymenjadisangatpenting.Bahkanuntukaplikasiyangkecilpunsebaiknyaaspek reusabilitydiperhatikan. Modulesmemungkinkansuatufungsionalitas,baikdalambentukclass,methodatau konstanta,dipakaibersamadanberulangkalidenganmudah. Modulememberikannamespacetersendiriyangmemudahkanpengembanglibrary
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource83
menghindarikonfliknama(nameconflict/namecollision)diantaraclass,method,atau konstanta.
12.1.MendefinisikanModule
Sebuahmoduledapatdidefinisikandalamfiletersendiri,ataubersamamodulelain. Definisimoduledimulaidengankeywordmodulediikutinamamoduleyangdiawalidengan hurufkapital,definisimodulediakhiriolehkeywordend,padabaristersendiri. Berikutinicontohmendefinisikanmodules,difilemod1.rb:
#modulecontoh moduleModSatu KONSTAN_1=123 #methoddalammodule defModSatu.method1 puts'method1 ...' end end#akhirmodule
12.2.Menggunakanmodule
Agarprogramdapatmengaksesmodule,moduleharusdimuatkedalamprogram menggunakanstatemenrequire. Ada4caramenggunakanrequire:
12.2.1.Menggunakanpath
Statemenrequirediikutirelativepathatauabsolutepathfilemodule.Namafiledapat menyertakanextension.rb,dapatjugatidak.MisalsebuahmoduleMod1didefinisikandi dalamfile/home/irfan/moddir/mod1.rb Sebuahprogramusemod1.rb,disebarangdirektoriyangberbedadenganmodule,akan mengaksesMod1sebagaiberikut:
#loadmodule req uire'/home/irfan/moddir/mod1' #panggilmethoddimodule ModSatu.method1 putsModSatu::KONSTAN_1
12.2.2.Menggunakanvariabelkhusus$:
Rubymencarimoduledalamfilefileyangterdapatdalamdirektoridirektoriyangtersimpan diarray$: , padaarray$:tersebutdapatditambahkandirektoribaru.
84PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
AndadapatmenampilkandirektoridirektoritersebutdenganinterpreterRuby,sbb:
bash$rubyeputs$:
Berikutcontohpenggunaan$:untukmeloadmodule,diprogramusemod2.rb:
#masukkandirektorikedalamarray $:.push('/home/irfan/moddir') #loadmodule req uire'mod1' #panggilmethoddimodule ModSatu.method1 putsModSatu::KONSTAN_1
12.2.3.MenggunakanrubyoptionI
Keduacarasebelumnyamemerlukanpenyebutandirektorimodulesecaraeksplisitdalam programpemanggil.DenganmenggunakanoptionIdiinterpreterruby,filepemanggil moduletidakharusmenyebutkanpathkedirektorimodule,berikutinifilepemanggilmodul, usemod3.rb:
#load req uire'mod1' #panggilmethod ModSatu.method1 putsModSatu::KONSTAN_1
dieksekusidengan:
bash$rubyI/home/irfan/moddirusemod1 .rb
12.2.4.MenggunakanvariabelenvironmentRUBYLIB
Programusemod3.rbyangsamadapatdieksekusitanpaperlumenambahoptionIdi interpreterruby,denganmenambahkandirektorimodule,kedalamvariabelenvironment RUBYLIB:
bash$exportRUBYLIB=/home/irfan/moddir :$RUBYLIB bash$rubyusemod1 .rb
12.3.Mixin
SalahsatufiturRubyyangmenarikyangberhubungandenganmoduleadalahmixin,yaitu methoddidalamsebuahmoduledapatdijadikanmethodinstancedarisebuahclasslain. Sebuahclassdapatmengasosiasikandiridenganmodulemenggunakanstatemeninclude, sehinggamethodmethoddalammoduletersebuttersediaseolahmethodtersebutterdefinisi dalamclasstersebut. PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource85
BerikutiniclassBalokmemanfaatkanmoduleBandingVolumedenganmixin,perhatikan bahwamethodyangdimixinjugadiwariskankeclassKubus:
req uire'banding.rb' classBalok includeBandingV olume#mixinBandingV olume definitializepanjang,lebar ,tinggi @panjang=panjang @lebar=lebar @tinggi=tinggi end defvolume @panjang*@lebar*@tinggi end defto_s "(#{@panjang},#{@lebar},#{@tinggi})" end end#akhirBalok classKubus<Balok definitializesisi super(sisi,sisi,sisi) end defto_s "(#{@panjang})"
86PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
end end#akhirKubus a=Balok .new(8,2,2) b=Balok .new(8,2,4) z=Kubus.new(4) putsz.volume #semuaoperasiperbandinganiniadadimoduleBandingV olume putsz<a#false putsz>a#true putsz==b#true
13.Penutup
Rubycukupmudahdigunakan,sangatberdayagunadanlibrarynyasangatlengkap. Rubysiapuntukmenjadialternatifdaribahasapemrogramanopensourceyangpopuler lainnyasepertiPERL,pythonatauPHP.
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource87
88PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
90PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
V.MengenalGCC(GNUCompilerCollection)
1.ApakahGCCitu?
GCCadalahkumpulankompilerkompiler,termasukcompilerbahasaC,C++,Fortrandan Java. BeberapakemampuanGCCantaralain:
PadabahasaniniakandiperkenalkanprogramyangpalingumumdigunakandariGCCyaitu compilerbahasaC.
2.Mengcompilesatufilesourcekefileexecutable
BerikutiniadalahcontohsourcecodeprogramCyangakandicompile,namafilenyasalam.c :
#include<stdio.h> intmain(intargc,char**arg){ /*mencetaksalam*/ if(argc>1){ fprintf(stdout,"assalamu'alaikum%s\n",arg[1]); } else{ fprintf(stdout,"assalamu'alaikum\n"); } }
Makacaramengcompilenyamenjadifileexecutable,menggunakangcc:
bash#gccsalam.c
Perintahinimenghasilkanfilea.out,yangdieksekusidengancara:
bash#./a.outfadhilah assalamu'alaikumfadhilah
Apabiladiinginkannamafileexecutable,yangberbedadapatmenggunakanoptiono,contoh:
bash#gccsalam.cosalam_ku
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource91
bash#./salam_kufadhilah assalamu'alaikumfadhilah
3.Mengcompilekefileobject
Dalampraktekseharihari,untukmembangunsebuahaplikasi,berbagaifungsiyang diperlukanolehaplikasidisimpanpadabeberapafilesourcecode.Filefileinibiasanyatidak dapatlangsungdieksekusi,karenatidakmemilikifungsimain(). Untukfilefilesepertiinimakadilakukankompilasikefileobject,bukankefileexecutable. Berikutinicontohsourcecodevektor1.cberisifungsioperasivektorsederhana:
#include<stdio.h> typedefstructt_vektor{ inti; intj; }vektor; voidvektor_cetak(FILE*out,constvektor*vek){ fprintf(out,"vektor(%d,%d)\n",vek>i,vek>j); } vektorvektor_tambah(constvektor*v1,constvektor*v2){ vektorh; h.i=v1>i+v2>i; h.j=v1>j+v2>j; returnh; }
Selanjutnyafiletersebutdicompilemenggunakanopsi-c:
bash#gcccvektor1 .c
4.Menggunakanfileheader
Padakenyataanseharihari,filesourcecodeyanghanyaberisifungsi(bukanprogramutama) akandibagimenjadisedikitnya2file,yaitufileheaderyangberisideklarasifungsidanfile sourceyangberisiimplementasifungsi.Dapatjugafilesourcedibagimenjadibeberapafile, 92PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Lebihjauhlagi,headerfilebiasanyadisimpanpadadirektoritersendiri,dalamcontohini misalkanvektor1.hdisimpandidirectori/usr/local/inc_ku/math
bash#mkdirp/usr/local/inc_ku/math bash#mvvektor1 .h/usr/local/inc_ku/math
Daninifilesourcevektor1.c:
#include<stdio.h> #include"math/vektor1.h" voidvektor_cetak(FILE*out,constvektor*vek){ /*cetakdgbarisbaru*/ fprintf(out,"vektor(%d,%d)\n",vek>i,vek>j); }
Daninifilesourcevektor2.c:
#include<stdio.h> #include"math/vektor1.h" vektorvektor_tambah(constvektor*v1,constvektor*v2){ vektorh; h.i=v1>i+v2>i; h.j=v1>j+v2>j;
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource93
returnh; }
Makauntukmengcompilevektor1.cmenjadifileobject,gunakanoption-Iuntuk menginformasikanlokasifileheaderyangdiperlukankepadacompiler:
bash#gccI/usr/local/inc_kucvektor1 .cvektor2.c
Jikaadabeberapaheaderfileyangtersimpandidirectoryyangberbeda,misaldi/usr/local dandi/home/local/includemakaoptions-Idapatdiulang:
bash#gccI/usr/local/inc_kuI/home/local/includecvektor1 .c vektor2.c
Jikainginmengcompilesemuasourcecodecdalamcurrentdirectory,dapatjugadigunakan *.csebagaipenggantinamafile,sebagaiberikut:
bash#gccI/usr/local/inc_kuI/home/local/includec*.c
5.Linkingdariobjectfilemenjadiexecutable
Proseslinkingdiperlukanuntukmenghasilkanfileexecutable.PadabahasaC,fileyang executabledihasilkandarisourcecodeyangmendefinisikanfungsimain(). Berikutinifileprogramutamayangmenggunakankeduafungsivektoryangadadivektor1.h, didirektori/usr/local/include/math,namafilenyatestv1.c
#include<stdio.h> #include"math/vektor1.h" intmain(intargc,char**arg){ vektorv1,v2,v3; v1.i=10; v1.j=20; v2.i=30; v2.j=40; v3=vektor_tambah(&v1,&v2); vektor_cetak(stdout,&v1); vektor_cetak(stdout,&v2); vektor_cetak(stdout,&v3); return0; }
94PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
1. Compilesourcecodemenjadifileobject
bash# gcc -I/usr/local/inc_ku -c vektor1.c vektor2.c testv1.c
2. Linkobjectfilemenjadifileexecutabletestv1 :
bash# gcc vektor1.o vektor2.o testv1.o -o testv1
3. Eksekusi
bash# ./testv1 vektor (10, 20) vektor (30, 40) vektor (40, 60)
6.Menggunakanlibrary
Libraryadalahkumpulanfungsifungsi.Librarydibuatagarfungsifungsilebihmudah dipergunakanberulangkali,bahkanuntukprogramaplikasiyangberbeda. Berbagaiaplikasiterkenaldiduniaopensourcedimudahkanpengembangannyakarena ketersediaanlibraryyanghandal,misal:libraryopenSSL,openGL,Gzip,PNG,GPGdan sebagainya. Librarytersediadalam2format,yaitustaticdandynamic. Perbedaanutamaterletakpadapenggunaanyapadasebuahprogram:
6.1.Membuatstaticlibrary
Darisekumpulanfileobjectdapatdibuatfilestaticlibrary,berdasarkankonvensi,filelibrary berawalanlibdanberekstensi.a,contoh:libssl.a,libz.alibmath.a,libsocket.a,libvektor.a Staticlibrarydibuatmenggunakanprogramar,yangsebenarnyabukanbagiandariGCC, tapitermasukdiantaraprodukproyekGNU,Berikutinicaramembuatstaticlibrary:
bash#arrclibvektor1 .avektor1 .ovektor2.o bash#ranliblibvektor1 .a
Fileberakhiran.ainijugabiasadisebutfilearsip.Programranlibdigunakanuntuk PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource95
6.2.Linkingkestaticlibrary
Sepertihalnyafileheader,makafilearsipataufilelibraryjugabiasadisimpandalamdirektori khusus,misalpadacontohdiatas,didirektori/usr/local/lib_ku
bash#mkdirp/usr/local/lib_ku bash#mvlibvektor1 .a/usr/local/lib_ku
Makajikainginmenlinkprogramutamakelibrarytersebut,gunakanoption-Lsebagai berikut:
bash#gccI/usr/local/inc_kuL/usr/local/lib_kutestv1 .cl vektor1 otestv1 bash#./testv1
Sepertihalnyaoption-I,makaoption-Ljugadapatdigunakanberulangkaliuntukmelink kedirektorilibraryyanglain.
6.3.Membuatdynamiclibrary
Gccjugadapatdigunakanmembuatdynamiclibrary.Caranya: 1. Mengcompilesourcecodemenjadiobjectfile,denganmenggunakanoption-fPIC untukmenghasilkanfileobjectdenganPositionIndependenceCode(PIC).Contoh:
bash# gcc -I/usr/local/inc_ku -fPIC -c vektor1.c vektor2.c
6.4.Menggunakandynamiclibrary
Selanjutnyadynamiclibrary,dapatdigunakanolehprogramlainnya,denganmenghasilkan fileexecutable,langkahnya: 96PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
1. Compileprogramutamakefileobject,selainoption-cuntukcompile,tambahkanoption -fPIC,karenaakanmenggunakandynamiclibrary,contoh:
bash# gcc -I/usr/local/inc_ku -fPIC -c testv1.c
Selanjutnyafileoutputdapatdieksekusi,lihatbagianberikutnya.
6.5.Menjalankanprogramyangmenggunakandynamiclibrary
Untukmenjalankanprogramyangmenggunakandynamiclibrary,kitaperlumenambahkan direktorilibraryyangakandigunakan,kevariabelenvironmentLD_LIBRARY_PATH, sehinggapadasaatprogramdieksekusi,libraryyangdiperlukandapatditemukandi LD_LIBRARY_PATHtersebut:
bash#exportLD_LIBRARY_P ATH=/usr/local/lib_ku:$LD_LIBRARY_P ATH bash#./testv1
7.Penutup
Tutorialsingkattentanggccinimasihjauhdarilengkap,namundemikiandiharapkandapat menjadititikawaluntukpenggunaanyanglebihmaksimal. BerikutinireferensikesitussitusyangberhubungandenganGCC,untukpembahasanlebih mendalam:
Situsgcc:http://gcc.gnu.org
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource97
98PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
VI.PengenalanAplikasiEclipse
EclipseadalahIDE(IntegratedDevelopmentEnvironment)yangsangatpopuleruntukJava danC++,denganmenggunakanEclipsepengembanganaplikasiakanlebihmudahdan mempercepatpengerjaandarisisiwaktu. Eclipsetersediadalamberbagaiplatform,danjugatersediapluginsuntukberbagai pengguananaplikasidalamberbagaiindustri. BerikutwebsiteyangpopulerberhubungandenganEclipse: DownloadEclipse:http://www.eclipse.org DownloadToolsEclipse:http://www.eclipse.org/tools EclipseJBoss:http://www.jboss.com EclipseObjectWebLomboz:http://lomboz.objectweb.org
1 Instalasi
1. PastikansudahmenginstalJavaDevelopmentKit(JDK),JDKversiterakhirJDK1.6 dapatdidownloaddihttp://java.sun.com 2. TentukanlokasidirektoriuntukinstalEclipse,biasanyauntukaplikasidiletakanpada direktori/opt. #cd/opt 3. Ekstrakfile #tarxvzfeclipseSDK3.2.2linuxgtk.tar.gz 4. SetingPATHaplikasi Editfile/etc/profile tambahkanbarisberikutini:
JAVA_HOME="/opt/jdk1.6.0" ECLIPSE_HOME="/opt/eclipse" PATH="$JAVA_HOME/bin:$ECLIPSE_HOME:$PATH" export JAVA_HOME ECLIPSE_HOME PATH
JalankanperintahberikutuntukmengupdatePATH #source/etc/profile
2 MenjalankanEclipse
Jalankanperintahberikutdalamterminalprogram: $eclipse
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource99
Gambar1.0.MemulaiEclipse
3 MemilihWorkspace
WorkspaceadalahlokasidirektoridarifilefileaplikasiketikabekerjadenganEclipsepada saat membuat project, workspace berisi filefile kode program aplikasi, direktori utama aplikasidanfilefilekonfigurasiaplikasi.
Gambar1.1.MemilihWorkspace
4 Mematikanaplikasieclipse
Clicktanda'X'(closewindown)dipojokkananataswindowIDEEclipseuntukkeluar,atau darimenuFile>Exit GUIEclipse EclipsemempunyaistyletampilanuntukGUIsesuaidengankebutuhanprogrammer,adatiga jenistampilan(perspective):MenuWindow>OpenPerspective> Debug Java 100PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
JavaBrowsing
5 ProjectPertama
PastikanJDKsudahdiinstalldandisetpadaEclipsedenganbenar.KonfigurasiJDKbisadi lihatdalamMenuWindow>Preferences,PilihJavakemudianpilihInstalledJRE'S.Kita jugabisamensetANTHome,CVS. Membuatsebuahproject PilihFile>New>ProjectdanpilihJavaProject,dankemudianpilihNext.
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource101
Gambar1.3.ProjectWizard
6 Memberinamaproject
BerinamaprojectHelloDuniakemudianclikNext
Gambar1.4.PerspectiveJava 102PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
7 SetingProject
DalamwizardsetingJavaini,kitabisamenentukandirektorioutputproject, paket library ( *.jar) yang ingin disertakan, misalnya library koneksi database (JDBC Driver), libraryaplikasiwebdenganServletatauJSP(j2ee.jar).
Gambar1.5.SettingProject PilihFinish,projectjavatelahdibuatdanakanmunculWindowPerspectiveJava.
8 MembuatAplikasiJavaSederhana
BerikuttahapmembuataplikasisederhanauntukmencetakStringkeouputdengan menggunakanEclipse. MenbuatClassJava PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource103
PilihFile>New>Class:
9 EditdanCompileKodeProgram
EditclassSalam.javadenganmenambahkanbariskodeberikutpada:
System.out.println ( Selamat Belajar Java)
dalammethodmain. Dengan menyimpanfile, secara otomatis Eclipse akan mencompileclassJava. Andabisa mengabaikanfiturinidenganmemilihmenuProject>BuildAutomaticallydankemudian secaramanualcompileclassjavadenganmemilihmenuProject>BuildAll
104PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Gambar1.7.Salam.javadenganEclipse
10 Menjalankanaplikasi
PilihRun>RunAs>JavaApplication EclipseakanmengeksekusifileSalam.javadanoutputakanditampilkandalamwindow consoledibagianbawahwindowEclipse. MendapatkanHelp JikaandainginmendapatkaninformasiatauHelpdariEclipsepilihHelp>HelpContents
11 Referensi
Eclipse:http://www.eclipse.org Jboss:http://www.jboss.com Java:http://java.sun.com
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource105
106PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
VII.PengenalanAplikasiNetbeans
NetBeansadalahIDE(IntegratedDevelopmentEnvironment)opensourceyangberbasisJava dan dikeluarkan oleh Sun Microsystem (http://java.sun.com). NetBeans berjalan diatas programGUI denganmenggunakanSwing.SwingsendiriadalahpaketlibraryJavauntuk aplikasidesktopataugrafis. NetbeansdidistribusikandenganduaversiyaituNetbeansplatformdanNetbeansIDE,dalam NetbeansIDEtelahterintegrasidenganmodulmodulpengembanganstandardJava.Netbeans terbaru dapat di download di http://www.netbeans.org. Dalam website tersedia paket tambahan(addon): MobilePack :Mobileapplication(TeknologiJ2MEuntukHP,PDA) VisualWebPack:Komponenaplikasiuntukweb EnterprisePack:KomponendanModelaplikasiSOA(XML,WSDL,Web Service,UML) Profiler:Untukmemoryaplikasi(Bottleneck&MemoryLeak) C/C++Pack:MembuataplikasiC/C++denganIDENetBeans
1. Instalasi
1.1InstalasiJava
PastikansudahmenginstalJavaStandardDevelopmentKit(JavaSDK),versiterakhir JavaSDK1.6dapatdidownloadhttp://java.sun.com.
1.2InstalasiNetbeans
1. DownloadbinaryNetbeansversiterakhirnetbeans5_5_1linux.bindari http://www.netbeans.org. 2. Sebagairootubahfilenetbeans5_5_1linux.binmenjadifileyangbisadiekseksusi #chmod755netbeans5_5_1linux.bin 3. Mulaiprosesinstalasi: #./netbeans5_5_1linux.bin
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource107
Gambar1.1:Memilihlokasiinstalasi 2. PilihJavaSDKyangakandigunakanoleh
108PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
JalankanperintahberikutuntukmengupdatePATH #source/etc/profile
.2.UnInstalNetBeans
UntukmelakukanuninstalasiNetBeans,jalankanperintahberikut: #/opt/netbeans5.5.1/_uninst/uninstaller
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource109
Gambar1.3:UninstalNetBeans
MemulaiNetbeans
Jika PATH aplikasi NetBeans telah di set, untuk memanggil aplikasi NetBeans jalankan perintahberikut:
$ netbeans
Atau
$ opt/netbeans-5.5.1/bin/netbeans
110PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Gambar1.4:MemulaiNetBeans
3.1MemulaiProjek
Sebelummemulaiprojek,kitaharusmenentukankategoriprojekyangakankitabuat,ada beberapapilihankategoriprojek: General: MembuataplikasiyangmenggunakanlibraryJ2SEdenganmainclass Membuatclassclassuntuklibraryaplikasi Membuataplikasidenganmengimportdirektoriberisisumberkodeprogram MembuataplikasidenganperintahANTyangdidefinisikansendiri. Web Membuataplikasiwebstandard. Membuataplikasiwebdenganmengimportaplikasiwebkedalamprojekweb. MembuataplikasiwebdenganperintahANTyangdidefinisikansendiri Enterprise MembuataplikasiaplikasienterprisedenganmenggunakanclassclassEJB MembuatmodulmodulclassEJB NetBeansPluginModules MembuatmodulmoduluntukNetBeans
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource111
PilihdariMenu:File>NewProject:
Gambar1.5:MemulaiProjekdenganNetBeans Setelahmenentukankategoriprojekyangdibuat,kemudianklikNext.
3.2MembuatProjek
Gambar1.6:MemberiNamaProjek
112PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
3.3WindowKerjaNetBeans
Gambar1.7.WindowKerjaNetBeans
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource113
3.4MembuatClass
File>NewFile
Gambar1.8.MembuatClass Dariwindow,pilihKategoriJavaClassdanTipeFileJavaClass,kemudianpilihNext
Gambar1.9.MemberiNamaClass
IsiNama,LokasidanPaketdariFile,kemudianpilihtombolFinish. 114PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
3.5CompiledanRunningProgram
Build>CompileNamaFile.java
RunningProject RunningFileJava
Run>RunMainProject
Run>RunFile>NamaFile
AplikasiDekstop
Anda bisa membuat sebuah project Dekstop atau Aplikasi Web dengan NetBeans, untuk graphicbisadipilihjenisfiledarikategoriJavaGUIFormspadasaatinginmembuatfile.
untukmensetnilaipropertydariobject.
5.
AplikasiWeb
NetBeansjugadilengkapidenganTomcatWebServer,Konfigurasitomcatserverbisadilihat denganmemilihtabruntime:
116PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource
Referensi
NetBeansIDE:http://www.netbeans.org/products/ Java:http://java.sun.com
PanduanPendayagunaanOpenSourceSoftware:BahasaPemrogramanOpenSource117