Senin, 13 Oktober 2008

dasar program (bag 2)

Kendali Alur Program


Conditional


Statemen if elseif else digunakan untuk menguji beberapa kondisi. Berikut ini contoh program membaca bilangan dari stdin (keyboard), lalu membandingkan dengan yang ada di program:


$ditebak = 123;

echo "ayo tebak: ";

$tebak = chop(fgets(STDIN));

if($tebak == '') {

echo("kosong!\n");

} elseif($tebak < $ditebak) {

echo("terlalu kecil\n");

} elseif ($tebak > $ditebak) {

echo("terlalu besar\n");

} else {

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

}


switch


Switch dapat digunakan sebagaimana if elseif else, tapi lebih tepat lagi digunakan untuk mengevaluasi sebuah kondisi lalu membandingkan hasil evaluasi tersebut dengan literal integer atau string. Perhatikan setelah switch digunakan statemen break untuk mencegah statemen berikutnya dalam blok switch dieksekusi:


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

echo "pilih: ";

$pilih = chop(fgets(STDIN));

switch($pilih) {

case 1:

echo "yum yum yum\n";

break;

case 2:

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

break;

case 3:

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

break;

default:

echo 'tidak ada',"\n";

}


Struktur loop


Struktur loop adalah struktur untuk melakukan iterasi atau pengulangan eksekusi satu atau beberapa statement. PHP memiliki beberapa struktur loop: for, while, do while, for


Menggunakan 3 blok ekspresi yang dieksekusi secara berbeda:

1. satu kali di awal eksekusi statemen for

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


3. setiap kali di akhir loop


1. echo "hitung faktorial dari :";

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

3. $faktorial = 1;

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

5. {

6. $faktorial *= $a;

7. }

8. echo "$faktorial \n";


Statement for dieksekusi dengan langkah-langkah sebagai berikut :


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


2. Masih di baris 4: diperiksa apakah $a masih lebih besar dari 0, jika benar maka blok for mulai dieksekusi (antara baris 5 dan 7), jika tidak benar maka eksekusi statemen for berakhir.


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


4. Kembali ke langkah 2.


Ketiga blok dapat terdiri lebih dari satu ekspresi, yang dipisahkan oleh koma (,). Jika blok kedua terdiri lebih dari satu ekpresi maka blok ekspresi tersebut diperlakukan seperti halnya jika koma diganti dengan operator || (logical operator or).


# pembangkit fibonacci

echo "hitung fibonacci sampai: ";

$maks = chop(fgets(STDIN));

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

echo $b," ";

}

Jika ekspresi blok kedua adalah kosong, maka loop for akan dieksekusi tanpa berhenti, dan hanya dapat keluar dari dalam blok dengan statemen break.


While


Statemen while digunakan untuk menjalankan pengulangan selama ekspresi dalam while adalah TRUE. Contoh pada penghitung faktorial jika menggunakan while:


echo "hitung faktorial dari :";

$a = chop(fgets(STDIN));

$faktorial = 1;

while($a > 0)

{

$faktorial *= $a;

$a;

}

echo "$faktorial \n";

Pembangkit deret fibonacci menggunakan statement while:

# pembangkit fibonacci

echo "hitung fibonacci sampai :";

$maks = chop(fgets(STDIN));

$a = 0; $b = 1;

while($b < $maks) {

echo $b," ";

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

}


do while


Loop dowhile

dieksekusi minimum satu kali. Blok dalam loop akan dieksekusi selama ekspresi yang diuji dalam while bernilai TRUE.


$ditebak = 123;

do {

echo "ayo tebak: ";

$tebak = chop(fgets(STDIN));

if($tebak == '') {

echo("kosong!\n");

} elseif($tebak < $ditebak) {

echo("terlalu kecil\n");

} elseif ($tebak > $ditebak) {

echo("terlalu besar\n");

} else {

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

}

} while($tebak != $ditebak)


break

Statement break digunakan di dalam loop untuk mengubah alur eksekusi sehingga keluar dari loop tersebut. Tapi jika loop tersebut ada di dalam loop yang lain, maka eksekusi beralih ke loop luar, tepat setelah akhir loop dalam tersebut.


1. $ditebak = 123;

2. while(true) { # loop 1

3. while(true) { # loop 2

4. echo "ayo tebak: ";

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

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

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

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

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

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

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

12. } else {

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

14. break;

15. }

16. } # akhir loop 2

17. echo "lanjut? ";

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

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

20.} # akhir loop 1


Perhatikan pada contoh ada 2 loop (dimulai dari baris 2 dan 3) . Perintah break pada baris 14 hanya mengalihkan eksekusi dari loop2 ke loop 1, tapi tidak mengeluarkan dari loop 1. Diperlukan statemen break (baris 19) dari loop 1 untuk dapat keluar dari loop tersebut.


continue

Statemen continue digunakan untuk mengubah alur eksekusi program agar segera menjalankan iterasi berikutnya sehingga statemenstatemen di bawah statemen continue ini tidak dieksekusi.


$ditebak = 123;

$min_coba = 3;

$coba = 0;

while(true) {

$coba++;

echo "ayo tebak: ";

$tebak = chop(fgets(STDIN));

if($tebak == '') {

echo("kosong!\n");

} elseif($tebak < $ditebak) {

echo("terlalu kecil\n");

} elseif ($tebak > $ditebak) {

echo("terlalu besar\n");

} else {

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

break;

}

if($coba < $min_coba) continue;

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

$insap = chop(fgets(STDIN));

if($insap == 'y')

break;

else

$coba = 0;

}


return

Mengubah alur eksekusi sehingga barisbaris berikutnya tidak dijalankan lagi. Jika digunakan dalam fungsi statemen return dapat digunakan untuk mengembalikan nilai ke pemanggil fungsi.


Fungsi

PHP mengenal 3 jenis fungsi:


1. Fungsi yang merupakan bagian dari PHP (bultin) Fungsi ini selalu tersedia untuk digunakan.

2. Fungsi yang disediakan oleh extension module. Fungsi jenis ini baru tersedia setelah user menginstal extension module tertentu.

3. Fungsi yang didefinisikan oleh pengguna bahasa PHP (user defined function) Fungsi jenis ini dibuat sendiri oleh pengguna bahasa PHP, baru tersedia jika definisi fungsi dimasukkan ke dalam scope program melalui statement : require, include, dan sejenisnya, Fungsi yang dibahas pada bagian ini adalah yang terakhir.


Mendefinisikan Fungsi


Fungsi didefinisikan menggunakan keyword function, diikuti nama fungsi. Fungsi dapat menerima nol atau lebih parameter fungsi dan dapat menghasilkan nilai keluaran, dapat pula tidak. Berikut ini contoh fungsi yang tidak menerima parameter fungsi, dan tidak mengembalikan nilai , hanya mencetak bentuk piramida ke stdout:


function piramida() {

$t = 20;

for($i = $t, $j=0; $i > 0; $i,

$j++) {

echo str_repeat(' ', $i);

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

}

}

Fungsi piramida, menggunakan fungsi builtin str_repeat untuk menghasilkan string yang berulang. piramida(); PHP 5 mendukung jumlah parameter fungsi yang panjangnya tidak tertentu. Berikut ini contoh fungsi yang menghasilkan deret fibonacci yang dikembalikan sebagai array, menerima parameter fungsi bilangan maksimum :


function fibonacci($max) {

$a = array(1,1);

$i = 1;

while(true) {

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

echo $z,"\n";

if($z > $max) break;

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

}

return $a; # mengembalikan array

}


Fungsi ini menerima parameter $max untuk membatasi bilangan terbesar yang akan dihasilkan, dan mengembalikan deretan bilangan dalam bentuk array. Berikut cara pemanggilannya:


$deret = fibonacci(100);

print_r($deret) # cetak array


Nilai Default untuk parameter

Untuk parameter fungsi bertipe skalar (numerik, string, array, bukan objek) , dapat ditentukan nilai defaultnya, contoh mencetak bilangan fibonacci secara rekursif :


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

if($b < $max) {

echo $b, " ";

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

}

}

fibonacci(100);


Parameter default memudahkan penggunaan fungsi.


Pemanggilan Fungsi

Pemanggilan fungsi harus selalu menggunakan kurung, baik untuk fungsi yang menerima parameter maupun yang tidak. Pada contoh-contoh sebelumnya echo seringkali dipanggil tanpa kurung, hal ini karena echo sesungguhnya bukanlah fungsi, tapi echo adalah language construct (seperti halnya if, for, while, return)


include

Digunakan untuk memasukkan (to include) file ke baris ditempatkannya statemen include ini , statemen include memerlukan parameter berupa path ke file yang akan diinclude Path dapat berupa path relatif atau path absolut.


Require


Statemen require persis sama dengan include hanya saja jika file yang akan dimasukkan tidak ditemukan dapat menyebabkan fatal error sehingga menghentikan eksekusi program. Menggunakan require lebih menjamin disertakannya file atau definisi fungsi yang diperlukan.


include_once


Sama dengan include, tapi jika file sudah pernah diinclude sebelumnya tidak akan dimasukkan lagi.


require_once

Sama dengan include_once, tapi jika file yang diinclude tidak ditemukan menyebabkan fatal error.


Label:

0 Komentar:

Posting Komentar

Berlangganan Posting Komentar [Atom]

<< Beranda