PERULANGAN

Pada bab sebelumnya kita sudah mencoba berbagai macam percabangan yang dikenal dalam pemrograman PHP yang akan membuat kode semakin dinamis akan dapat membuat keputusan berdasarkan kondisi yang diberikan. Persamaan antara percabangan dan perulangan adalah keduanya sangat tergantung pada kondisi yang diuji. Jika kondisi bernilai benar maka kode yang berada di dalamnya akan dieksekusi, namun kode tidak akan dieksekusi jika kondisi bernilai salah.

Perbedaan perulangan dan percabangan adalah pada perulangan kode yang berada di dalam nya dapat dieksekusi berulang-ulang. Jika sebuah kondisi yang diujikan bernilai benar maka kode yang berada di dalamnya akan dieksekusi. Kemudian setelah pengeksekusian kode, maka kondisi kembali diuji, jika masih bernilai benar maka kode yang didalamnya akan kembali dieksekusi, dan begitu seterusnya.

Ada 4 tipe perulangan yang dikenal oleh PHP. yaitu

  1. foreach

  2. for

  3. while

  4. do .. while

Perulangan do… while

Pada dasarnya perulangan do while adalah sama seperti perulangan while, hanya saja pada do… while pengujian terhadap kondisi dilakukan belakangan atau setelah kode dijalankan minimal 1 kali. Hal ini adalah penting untuk diingat, karena dengan cara seperti ini, paling tidak kode yang berada di dalam tanda kurung kurawal akan dieksekusi satu kali baru kemudian pengujian terhadap kondisi dilakukan. Jika memenuhi atau bernilai benar maka kode akan kembali di eksekusi. Namun, jika kondisi bernilai salah maka PHP akan keluar dari perulangan ini.

Bentuk sintaks umum dari do while adalah sebagai berikut

do

{

eksekusi kode ini

}

while(kondisi bernilai benar); – kembali dan ulangi lagi untuk eksekusi kode di dalam tanda kurung kurawal.

Karena perulangan ini sangat mirip dengan perulangan while maka kita akan langsung mencoba membuat sebuah program PHP yang menggunakan perulangan do… while.

Latihan

  1. buka teks editor dan tuliskan kode berikut

    <HTML>

<HEAD><TITLE>Pengujian bilangan Prima</TITLE></HEAD>

<BODY>

<FORM METHOD=POST ACTION=”uji.php”>

masukkan angka yang ingin di uji

<INPUT NAME=”tebakan” TYPE=”Text”>

<BR>

<BR>

<INPUT TYPE=SUBMIT VALUE=”Uji bilangan di atas”>

<BR>

</FORM>

</BODY>

</HTML>

  1. simpan file tersebut dengan nama uji.html pada /var/www atau root directori dari web server.

  2. buka teks editor dan tuliskan kode berikut

<HTML>

<HEAD></HEAD>

<BODY>

<?php

$tebakan = $_POST[‘tebakan’];

$Count=2;

do

{

$sisa = $tebakan%$Count;

$Count=$Count+1;

} while ($sisa!=0 AND $Count<$tebakan);

if (($Count<$tebakan) || ($tebakan==0)) {

echo (“bukan angka prima”);

} else {

echo (“itu adalah bilangan prima”);

}

?>

</BODY>

</HTML>

  1. simpan file tersebut dengan nama uji.php pada /var/www atau root directori dari web server.

  2. Panggil file tersebut menggunakan browser dengan alamat http://localhost/uji.html

dari kode di atas dapat kita lihat pada file uji.html akan mengirimkan sebuah angka yang dimasukkan oleh user untuk dilihat apakah angka tersebut bilangan prima atau bukan. Proses pengiriman variabel angka ini seperti biasa menggunakan form. Seperti pada kode berikut

<FORM METHOD=POST ACTION=”uji.php”>

masukkan angka yang ingin di uji

<INPUT NAME=”tebakan” TYPE=”Text”>

<BR>

<BR>

<INPUT TYPE=SUBMIT VALUE=”Uji bilangan di atas”>

<BR>

</FORM>

dan ketika di panggil dari browser maka yang akan tampil adalah sebuah input text dan sebuah tombol serta sebuah tulisan seperti pada gambar berikut

setelah tombol di atas di tekan maka angka tersebut akan dikirim ke file uji.php yang akan melihat apakah angka tersebut merupakan bilangan prima atau bukan. Proses ini menggunakan perulangan do… while.

do

{

$sisa = $tebakan%$Count;

$Count=$Count+1;

} while ($sisa!=0 AND $Count<$tebakan);

Pada perulangan ini pertama akan dicoba untuk membagi angka yang dimasukkan user dengan 2. kemudian akan dilakukan pengujian terhadap hasil bagi ini, jika tebakan tersebut tidak dapat dibagi dengan 2 dan angka 2 ini lebih kecil dari tebakan maka perulangan akan dilakukan kembali. Kali ini tebakan akan dibagi dengan 3. dan begitu seterusnya

jika tebakan sama dengan nilai yang dibagi, berarti selama proses perulangan bilangan tersebut tidak pernah habis dibagi dengan bilangan apapun sehingga dapat disebut bilangan prima. Disni kita menggunakan percabangan if else.

if (($Count<$tebakan) || ($tebakan==0)) {

echo (“bukan angka prima”);

} else {

echo (“itu adalah bilangan prima”);

}

adapun tampilan dari uji.php adalah sebagai berikut jika yang dimasukkan adalah bilangan prima seperti 5, 7 atau 11

namun jika yang dimasukkan adalah bukan bilangan prima maka tampilannya adalah sebagai berikut

Perulangan for

Penggunaan for untuk perulangan umumnya digunakan jika kita mengetahui jumlah perulangan yang kita inginkan. Jika tidak lebih baik menggunakan perulangan while. Pengujian kondisi terhadap perulangan for sedikit lebih rumit karena membutuhkan tiga buah argument. Sementara pada while kita hanya membutuhkan satu buah argumen.

Format umum dari perulangan for adalah

for (tentukan counter; uji counter; jumlahkan or kurangi counter)

{

eksekusi baris ini

}

pada perulangan for ada sebuah counter yang dikenal sebagai counter perulangan. Ini adalah sebuah variabel yang digunakan untuk menghitung berapa kali jumlah perulangan yang ingin kita lakukan. Uji counter berfungsi untuk menentukan apakah perulangan ini dihentikan atau diteruskan. Jika nilai yang dihasilkan pada uji counter bernilai benar maka perulangan diteruskan namun jika bernilai salah maka perulangan akan dihentikan. Bagian ketiga dari argument ini berfungsi untuk merubah nilai dari loop counter pada setiap iterasi. Ketiga hal ini berfungsi untuk membuat sebuah perulangan dengan kondisi yang lebih rumit. Sebenarnya ketiga argumen ini dapat dihilangkan, tapi karena ini adalah pertama kali kita berkenalan dengan argumen-argumen ini maka kita akan selalu menggunakan ketiga argumen ini.

Penggunaan paling gampang untuk perulangan for ini adalah untuk menampilkan nama sebanyak 10 kali. Kita bisa saja menggunakan perintah echo sebanyak 10 kali tapi tentu saja hal ini akan sangat membosankan untuk menulis kode yang sama berulang-ulang sebanyak 10 kali. Contoh berikut adalah penggunaan for untuk menampilkan nama sebanyak 10 kali.

for ($counter=1; $counter<=10; $counter++)

{

echo “Nama saya Sayed Muchallil!”;

}

pada perulangan for kita tidak perlu menghitung jumlah iterasi karena hal ini sudah ditangani oleh ketiga argumen yang berada pada perulangan for. Di dalam perulangan for kita juga dapat menggunakan nilai dari counter. Berikut adalah contoh penggunaan counter di dalam perulangan loop.

for ($counter=1; $counter<=10; $counter++)

{

echo $counter;

}

Tampilan dari kode di atas adalah 12345678910. Di sini kembali kita berhadapan dengan penggunaan operator ++ yang telah kita pelajari sebelumnya pada argumen ketiga. Counter++ sama seperti sebelumnya yang berarti counter = counter +1.

sekarang kita akan kembali membuat contoh untuk menampilkan sesuatu secara berulang-ulang dimana jumlah perulangan merupakan input dari user.

Latihan

1. buka text editor dan tuliskan kode berikut

<HTML>

<HEAD></HEAD>

<BODY>

<FORM METHOD=POST ACTION=”fortest.php”>

Berapa jumlah saudara anda?

<INPUT NAME=”angka” TYPE=”Text”>

<BR>

<BR>

<INPUT TYPE=SUBMIT>

<BR>

</FORM>

</BODY>

</HTML>

  1. simpan file tersebut dengan nama fortest.html pada /var/www atau root directori dari web server.

  2. kembali buka text editor dan tuliskan kode berikut

<HTML>

<HEAD></HEAD>

<BODY>

<FORM METHOD=POST ACTION=”hasil.php”>

<?php

$jumlahSaudara = $_POST[‘angka’];

for ($Counter=0; $Counter<$jumlahSaudara; $Counter++)

{

$Offset = $Counter+1;

echo “<BR><BR>masukkan nama saudara $Offset<BR>”;

echo “<INPUT NAME=saudara[] TYPE=TEXT>”;

}

if ($Counter==0) echo”Tekan tombol untuk melanjutkan”;

?>

<BR>

<BR>

<INPUT TYPE=SUBMIT>

</FORM>

</BODY>

</HTML>

  1. simpan file tersebut dengan nama fortest.php pada /var/www atau root directori dari web server.

  2. buka kembali text editor dan tuliskan kode berikut

<HTML>

<HEAD></HEAD>

<BODY>

<?php

$Count=0;

$saudara = $_POST[‘saudara’];

echo “nama saudara-saudara kamu adalah:”;

do

{

echo”<BR><BR>$saudara[$Count]”;

$CheckEmpty = “$saudara[$Count]”;

$Count=$Count+1;

} while ($CheckEmpty!=””);

if ($Count==1) echo “Not Applicable”;

?>

</BODY>

</HTML>

  1. simpan file tersebut dengan nama hasil.php pada /var/www atau root directori dari web server.

  2. untuk melihat program PHP di atas, arahkan browser ke http://localhost/fortest.html

Pada latihan di atas, dapat kita lihat bahwa file fortest.html meminta masukan jumlah saudara kepada user yang kemudian dikirimkan sebagai variabel angka ke fortest.php.

Berapa jumlah saudara anda?

<INPUT NAME=”angka” TYPE=”Text”>

Kemudian pada fortest.php kita menangkap variabel ini dengan kode

$jumlahSaudara = $_POST[‘angka’];

setelah kita mengetahui jumlah saudara yang diinputkan oleh user pada file fortest.html kita kembali membuat form yang mengandung perulangan sesuai dengan input jumlah saudara. Karena HTML biasa tidak dapat menangani perulangan maka untuk perulangan kita menggunakan PHP. Pada file ini kita melihat bahwa sebuah form dapat dibentuk dari hasil gabungan antara PHP dan HTML.

<FORM METHOD=POST ACTION=”hasil.php”>

<?php

$jumlahSaudara = $_POST[‘angka’];

for ($Counter=0; $Counter<$jumlahSaudara; $Counter++)

{

$Offset = $Counter+1;

echo “<BR><BR>masukkan nama saudara $Offset<BR>”;

echo “<INPUT NAME=saudara[] TYPE=TEXT>”;

}

setelah user memasukkan seluruh nama saudaranya maka seluruh nama saudara akan disimpan dalam sebuah array yang bernama saudara[] kemudian kita kirimkan ke file hasil.php. File ini hanya berfungsi untuk menampilkan seluruh nama saudara yang sudah diinputkan user pada file fortest.php.

Pengguna perulangan for di sini menggunakan sebuah counter yang awalnya bernilai 0, kemudian kita akan membuat sebuah input, namun sebelumnya kita akan membuat sebuah variabel yang bernama offset yang merupakan penjumlahan variabel counter dengan 1. variabel offset ini sebenarnya berfungsi sebagai indeks untuk user agar dapat mengetahui saudara ke berapa yang sedang di-input namanya. Sehingga pada tampilannya akan muncul nama saudara ke x, dimana x adalah indeks dari jumlah saudara. Seperti pada gambar berikut

Pada file hasil.php, pertama sekali kita menangkap variabel saudara yang berbentuk array yang dikirim oleh file fortest.php dengan cara yang sama seperti kita menangkap variabel jumlah saudara pada file fortest.php.

$saudara = $_POST[‘saudara’];

Kemudian menggunakan perulangan do..while kita menampilkan seluruh nama saudara seperti pada gambar berikut.

Pada do…while loop yang berada pada file hasil.php proses yang terjadi adalah kita ingin minimal sebuah nama saudara ditampilkan tanpa harus melalui perulangan. Baru kemudian proses percabangan akan melakukan pengujian terhadap nama saudara Jika terpenuhi maka akan dilakukan perulangan kembali jika tidak maka PHP akan keluar dari perulangan tersebut.

do

{

echo”<BR><BR>$saudara[$Count]”;

$CheckEmpty = “$saudara[$Count]”;

$Count=$Count+1;

} while ($CheckEmpty!=””);

kondisi yang diuji pada perulangan ini adalah ada atau tidak nama saudara pada indeks berikutnya, jika tidak ada maka PHP akan keluar dari loop. Jika ada maka nama saudara berikutnya akan kembali ditampilkan. Kode untuk melakukan pengujian ini adalah

$CheckEmpty = “$saudara[$Count]”;

yang kemudian akan dievaluasi nilai dari fungsi tersebut pada kode berikut ini

while ($CheckEmpty!=””);

Kode ini lah yang melakukan pengujian untuk dilakukannya atau tidak perulangan berikutnya.

Perulangan while

perulangan while merupakan perulangan paling mudah dimengerti dan juga memiliki persamaan dengan percabangan if. Sama seperti if, pada while juga akan melakukan pengucian terhadapa sebuah kondisi. Eksekusi kode di dalam while sangat tergantung pada nilai hasil uji kondisi. Di mana jika kondisi bernilai benar maka kode akan dieksekusi, begitu juga sebaliknya, jika kondisi salah maka kode tidak akan dieksekusi.

Format dasar dari sebuah perulangan while adalah sebagai berikut

while (kondisi bernilai benar)

{

eksekusi kode yang berada dalam tanda kurung kurawal

}

setelah sebuah kode di dalam tanda kurung kurawal dieksekusi, while akan kembali menguji nilai dari kondisi. Jika kondisi ini bernilai benar maka kembali kode di dalam kurung kurawal akan dieksekusi lagi, dan begitu seterusnya. Jika kondisi bernilai salah setelah dilakukan pengujian, maka kode di dalam tanda kurung kurawal akan dilewatkan dan PHP akan mengeksekusi baris pertama yang ditemukan setelah tanda kurung kurawal. Coba kita lihat pseudo-code berikut ini

while (bulan purnama)

{

manusia serigala akan berubah menjadi serigala jadi-jadian;

}

kode di atas dapat kita analisa bahwa manusia serigala hanya menjadi serigala jadi-jadian jika bulan sedang purnama.

Untuk dapat lebih memahami penggunaan while, kita dapat mengambil contoh dalam kehidupan sehari-hari seperti sistem pada ATM. Di mana setiap kali kita melakukan pengambilan uang di ATM, maka pertama sekali ATM akan melakukan pengecekan terhadap saldo kita. Jika saldo di bawah jumlah yang mau diambil maka akan keluar pesan bahwa saldo tidak cukup. Jika saldo lebih besar dari uang yang kita ambil maka ATM akan mengeluarkan uang yang kita inginkan dan saldo kita akan dikurangi dengan jumlah uang yang kita ambil. Kemudian jika kita kembali mengambil uang, maka proses pengecekan terhadap saldo akan kembali dilakukan.

while ($saldo > $ambilan)

{

$saldo = $saldo – $ambilan;

}

umumnya penggunaannya seperti ini juga dilakukan pada sistem belanja online menggunakan kartu kredit. Setiap kita menambah barang belanjaan ke keranjang belanja kita maka yang pertama dilakukan adalah menguji batasan kartu kredit kita. Jika batasan kredit kita masih lebih besar dari total belanja maka barang akan dimasukkan ke keranjang. Jika tidak cukup maka barang terakhir yang kita belanjakan tidak akan dimasukkan ke dalam keranjang belanja, namun barang sebelumnya yang sudah kita beli dapat tersimpan pada keranjang belanja. Harga total belanja yang sebelumnya sudah ditambahkan akan kembali dikurangi dengan harga barang terakhir.

Kode berikut adalah implementasi dari sistem yang telah kita sebutkan di atas.

while ($totalBelanja > $batasKredit)

{

echo “anda telah melewati batasan kredit anda”;

$totalBelanja = $totalBelanja – $hargaBarangTerakhir;

}

Dari kode di atas dapat kita lihat bahwa jika $batasKredit diberi nilai negatif maka loop ini tidak akan pernah keluar atau dikenal dengan istilah infinite loop . Jadi sebuah perulangan dapat berulang-ulang dieksekusi dan tidak akan pernah berakhir jika kondisi yang diuji selalu bernilai benar. Hal ini akan mengakibatkan sebuah program tidak akan pernah berakhir. Kejadian seperti ini tidak akan menimbulkan error hanya saja akan mengeksekusi kode di dalam while secara terus menerus tanpa henti.

Pada latihan berikut kita akan mempelajari penggunaan while pada sebuah program PHP. Kali ini contoh kita akan meliputi input data dari client yang akan kita pelajari pada bab lainnya. Untuk melakukan ini kita membutuhkan dua buah file php.

Latihan

1. Buka text editor dan tuliskan kode berikut

<HTML>

<HEAD></HEAD>

<BODY>

<B>Bank Simpan Pinjaman</B>

<FORM METHOD=POST ACTION=”pengecekan.php”>

<BR>

Berapa Jumlah yang anda mau Pinjam?<BR><BR>

<INPUT NAME=”pinjaman” TYPE=”Radio” VALUE=1000000>Rp1.000.000 dengan bunga 5%

<BR>

<INPUT NAME=”pinjaman” TYPE=”Radio” VALUE=5000000>Rp5.000.000 dengan bunga 6.5%

<BR>

<INPUT NAME=”pinjaman” TYPE=”Radio” VALUE=10000000>Rp10.000.000 dengan bunga 8%

<BR>

<BR>

Berapa anda sanggup membayar per bulan?

<INPUT NAME=”bulan” TYPE=Text SIZE=5>

<BR>

<BR>

<INPUT TYPE=SUBMIT VALUE=”Tekan untuk perhitungan bunga”>

</FORM>

</BODY>

</HTML>

2. simpan dengan nama pengecekan.html pada /var/www atau root directori dari web server.

3. kembali buka text editor dan tuliskan kode berikut

<HTML>

<HEAD></HEAD>

<BODY>

<?php

$durasi=0;

$pinjaman = $_POST[‘pinjaman’];

$bulan = $_POST[‘bulan’];

switch ($pinjaman) {

case 1000000:

$bunga = 5;

break;

case 5000000:

$bunga = 6.5;

break;

case 10000000:

$bunga = 8;

break;

default:

echo “Silahkan pilih paket terlebih dahulu”;

exit;

}

while ($pinjaman > 0)

{

$durasi = $durasi + 1;

$bulanan = $bulan – ($pinjaman*$bunga/100);

if ($bulanan<=0)

{

echo “Anda membutuhkan uang yang lebih besar untuk dapat membayar pinjaman”;

exit;

}

echo “pembayaran bulan ke $durasi adalah $bulanan “;

$pinjaman = $pinjaman – $bulanan;

echo ” sisa pinjaman adalah $pinjaman <br/>”;

}

echo “waktu yang anda butuhkan adalah $durasi bulan untuk membayar pinjaman ini dengan bunga $bunga %.”;

?>

</BODY>

</HTML>

4. simpan dengan nama pengecekan.php pada /var/www atau root directori dari web server.

5. panggil dengan browser pada alamat http://localhost/pengecekan.html

Tampilan dari kode di atas adalah sebagai berikut, pertama sekali kita akan diminta untuk memasukkan jumlah pinjaman kemudian berapa kesanggupan kita membayar tiap bulannya.

Pada proses ini ada dua variabel yang dikirim ke file pengecekan.php. Untuk menangkap variabel ini kita menggunakan kode berikut :

$pinjaman = $_POST[‘pinjaman’];

$bulan = $_POST[‘bulan’];

kemudian pada file pengecekan.php kita akan menghitung menggunakan perulangan while sehingga seluruh pinjaman dan bunganya dapat terbayar.

while ($pinjaman > 0)

{

$durasi = $durasi + 1;

$bulanan = $bulan – ($pinjaman*$bunga/100);

if ($bulanan<=0)

{

echo “Anda membutuhkan uang yang lebih besar untuk dapat membayar pinjaman”;

exit;

}

echo “pembayaran bulan ke $durasi adalah $bulanan “;

$pinjaman = $pinjaman – $bulanan;

echo ” sisa pinjaman adalah $pinjaman <br/>”;

}

Kemudian kita tampilkan pembayaran yang dilakukan oleh user setiap bulannya dan sisa pokok hutang. Seperti yang ditampilkan oleh gambar berikut.

Perulangan foreach

Perulangan for sangat berguna dalam banyak situasi seperti misalkan kita hanya ingin mengambil informasi dari elemen tertentu sebuah array. Peraturan perulangan yang terdiri dari 3 buah argumen pada perulangan for juga berguna untuk memulai sebuah perulangan tidak pada indeks pertama sebuah array. Bahkan dengan argumen-argumen ini kita bisa melakukan kenaikan 2 langkah sekaligus, misalnya counter+2 bukan hanya counter++. Kalau kita hanya ingin memproses setiap elemen yang kelipatan dua dari sebuah array.

Namun adakalanya kita hanya ingin memeriksa setiap elemen daris sebuah array secara berurut dari yang pertama hingga yang terakhir. Untuk proses ini kita sebaiknya menggunakan perulangan foreach yang lebih sederhana.

Sintaks dasar foreach adalah sebagai berikut

foreach ($array as $elementArray) {

lakukan sesuatu dengan elemenArray ini

}

pada perulangan foreach, counter tidak digunakan karena perulangan ini akan menggunakan jumlah elemen dari sebuah array sebagai counternya. Jadi pada setiap iterasi $elementArray akan di setting ke elemen berikutnya. Sehingga kita dapat langsung melakukan berbagai operasi langsung terhadap $elemenArray tersebut.

Untuk lebih jelasnya dapat kita lihat pada contoh berikut

$nama = array (“Muchallil”,”Maulizah”,”Musaddiq”, “Mudhahar”);

$pencarianNama = “Maulizah”;

$komentar = “nama tidak ditemukan”;

foreach ($nama as $elemenNama)

if{

$komentar = “nama $pencarianNama ditemukan pada database”;

break;

}

}

echo “$comment”;

dari kode di atas dapat dipelajari bahwa setiap elemen dari sebuah array akan dievaluasi satu per satu dimaulai dari yang pertama sampai yang terakhir. Ketika elemen yang pertama ditemukan, elemen ini akan dibandingkan dengan $pencarianNama, jika tidak sama maka perulangan foreach akan kembali menuju ke elemen selanjutnya. Karena elemen yang kedua adalah sama dengan data yang dicari maka kita akan memasuki ke dalam percabangan if dan mengeksekusi kode di dalamnya. Pada kode ini $komentar yang sebelumnya diisi dengan nilai nama tidak ditemukan diganti dengan nama $pencarianNama ditemukan pada database. Kemudian kita menggunakan kode break yang berfungsi untuk keluar dari sebuah perulangan, kita keluar dari proses perulangan ini karena data yang dicari sudah ditemukan, jadi tidak perlu lagi melakukan pengujian terhadap elemen array berikutnya.