Kita akan membahas tentang perulangan WHILE. Seperti halnya FOR, statement WHILE ini juga dapat digunakan untuk menyatakan perulangan yang telah diketahui jumlah perulangan tersebut harus dilakukan. Namun… tidak hanya itu, WHILE juga dapat digunakan untuk menyatakan perulangan jika jumlah perulangannya tidak diketahui.
Dari pernyataan di atas, dapat kita simpulkan bahwa setiap bentuk perulangan FOR pasti dapat juga dinyatakan ke dalam bentuk WHILE. Namun… tidak berlaku kebalikannya, bahwa tidak semua bentuk WHILE dapat dinyatakan ke dalam FOR. Nanti akan kita lihat contohnya.
OK… bentuk umum statement WHILE adalah sbb:
while (syarat)
{
// bagian yang diulang
}
Perhatikan bentuk umum WHILE di atas! Sebelum menuju bagian yang diulang, di atasnya terdapat syarat. Syarat inilah yang menentukan apakah bagian yang diulang akan dijalankan atau tidak. Selama syarat ini dipenuhi atau bernilai BENAR, maka bagian yang diulang akan terus dijalankan. Apabila suatu saat syarat sudah tidak terpenuhi lagi atau bernilai SALAH maka perulangan berhenti.
Contoh: Script berikut ini akan menampilkan bilangan 1 s/d 3
<?php
$bil = 1;
while ($bil <= 3)
{
echo $bil. "<br />";
$bil++;
}
?>
Sekarang kita analisis prosesnya…
Nilai awal dari $bil adalah 1. Selanjutnya terdapat while dengan syarat $bil <= 3. Nah.. apabila dicek syaratnya, maka dalam hal ini syarat bernilai BENAR karena 1 <= 3, sehingga sekarang menuju ke bagian yang diulang. Di dalam bagian yang diulang terdapat echo $bil, sehingga di browser akan tampil bilangan 1. Berikutnya nilai $bil bertambah menjadi 2 ($bil++).
Kembali lagi syaratnya dicek, dalam hal ini masih bernilai BENAR karena 2 <= 3. Akibatnya proses sekarang menuju kembali ke bagian yang diulang, yaitu tampilkan $bil (muncul bilangan 2 dalam browser) dan $bil bertambah satu menjadi 3.
Selanjutnya dicek kembali syaratnya apakah $bil <= 3 dan ternyata BENAR karena 3 <= 3. Karena syaratnya BENAR maka tampilkan $bil, sehingga muncul bilangan 3 di browser dan $bil bertambah satu menjadi 4.
Lagi-lagi di cek syaratnya apakah $bil <= 3. Nah.. sekarang syarat bernilai SALAH karena 4 <= 3 tidak berlaku. Dengan demikian perulangan berhenti. Sehingga bilangan yang tampil secara keseluruhan adalah
1 2 3
Sekarang.. coba kita bandingkan dengan FOR. Script berikut ini juga akan menampilkan bilangan 1 s/d 3.
<?php
for ($bil = 1; $bil <= 3; $bil++)
{
echo $bil. "<br />";
}
?>
Kedua script di atas akan ekuivalen.
Kembali lagi pada script PHP untuk menampilkan bilangan 1 s/d 3 menggunakan WHILE. Sekarang misalkan ditambahkan perintah berikut ini
<?php
$bil = 1;
while ($bil <= 3)
{
echo $bil. "<br />";
$bil++;
}
echo "Nilai bil sekarang adalah:".$bil;
?>
Dengan tanpa menjalankannya di browser, menurut Anda kira-kira perintah yang diberi warna biru tersebut akan menampilkan apa hayoo..?? apakah 3 atau berapa?
Bagi yang menjawab 3… Anda SALAH.
Bagi yang menjawab 4… OK Anda benar.
Lho kok bisa? Padahal pada syarat while tertulis $bil <= 3. Ya.. Anda benar, tapi coba lihat kembali analisis yang pernah kita singgung di atas. Nilai terakhir $bil ketika dalam perulangan WHILE adalah 4. Ketika $bil = 4 inilah yang menyebabkan perulangan WHILE berhenti. Dengan demikian, nilai $bil pada dasarnya sudah berubah menjadi 4 sehingga setelah WHILE selesai, dan ditampilkan nilai $bil nya maka akan tampil 4.
Sekarang… mari kita tinjau contoh script WHILE berikutnya. Script berikut ini akan menampilkan bilangan random/acak 0 s/d 10 (menggunakan function rand()). Proses pengacakan ini akan terus dilakukan selama bilangan acak yang terpilih tidak sama dengan 0.
<?php
$bil = rand(0, 10);
while ($bil != 0) { echo $bil."<br />"; $bil = rand(0, 10); }
?>
Nah… dari contoh kasus di atas, tentu kita tahu bahwa jumlah perulangan dalam hal ini tidak diketahui. Perulangan tersebut hanya diketahui kapan perulangan harus berhenti, yaitu ketika bilangan acak yang terpilih sama dengan 0.
Catatan: output yang tampil akan berubah-ubah setiap kali di REFRESH
Trus… kira-kira bisa tidak apabila kita terapkan perulangan WHILE di atas ke dalam bentuk FOR? Sebenarnya dalam PHP bisa dilakukan, namun hal ini tidak berlaku di semua bahasa pemrograman, misalnya dalam PASCAL (mungkin Anda pernah dengar namanya).
Oleh karena itu secara umum saya bisa katakan bahwa tidak semua bentuk WHILE dapat dinyatakan ke bentuk FOR. Apabila Anda menjumpai bentuk perulangan yang tidak diketahui jumlah perulangannya, maka saya sarankan gunakanlah WHILE.
WHILE di dalam WHILE (nested WHILE)
Seperti halnya FOR, statement WHILE juga dapat terletak seperti contoh berikut ini
di dalam sebuah WHILE,
<?php
$a = 1;
while ($a <= 3)
{
$b = 1;
while ($b <= 2)
{
echo "Nilai a = ".$a. " Nilai b = ".$b. "<br />";
$b++;
}
$a++;
}
?>
Script di atas ekuivalen dengan script nested FOR berikut ini
<?php
for ($a = 1; $a < =3; $a++)
{
for ($b = 1; $b <= 2; $b++)
{
echo "Nilai a = ".$a. " Nilai b = ".$b. "<br />";
}
}
?>
Contoh-contoh script menggunakan WHILE:
Contoh-contoh script berikut ini mengadopsi kasus yang ada di modul 9 (tentang FOR)
A. Script PHP untuk menampilkan bilangan bulat 5 s/d 100 yang berkelipatan 10
<?php
$bil = 5;
while ($bil <= 100)
{
if ($bil % 10 == 0)
echo $bil. "<br />";
$bil++;
}
?>
B. Script PHP untuk menjumlahkan bilangan bulat 2 s/d 50
<?php
$jumlah = 0;
$bil = 2;
while ($bil <= 50)
{
$jumlah = $jumlah + $bil;
$bil++;
}
echo "Hasilnya adalah ".$jumlah;
?>
C. Script PHP untuk mencari banyaknya bilangan bulat mulai dari 3 s/d 127 yang merupakan kelipatan 6.
<?php
$hitung = 0;
$bil = 3;
while ($bil <= 127)
{
if ($bil % 6 == 0)
$hitung = $hitung + 1;
$bil++;
}
echo "Banyaknya bilangan bulat adalah ".$hitung;
?>
D. Script PHP untuk membuat tabel dengan n baris dan m kolom secara otomatis
<?php
$jumBaris = 10;
$jumKolom = 6;
echo "<table border=’1’>";
$baris = 1;
while ($baris <= $jumBaris)
{
echo "<tr>";
$kolom = 1;
while ($kolom <= $jumKolom)
{
echo"<td>…</td>";
$kolom++;
}
echo "</tr>";
$baris++;
}
echo "</table>";
?>
E. Script PHP untuk menghasilkan list combo box berisi tahun mulai 1930 s/d 2008 secara otomatis
<?php
echo "<select name=’tahun’>";
$tahun = 1930;
while ($tahun <= 2008)
{
echo "<option value=’".$tahun."’>".$tahun."</option>"; $tahun++;
}
echo "</select>";
?>
Tidak ada komentar:
Posting Komentar