Mengenal statement WHILE

Untuk situasi dimana kita membutuhkan kondisi perulangan yang tidak dapat dipastikan berapa kali perulangan akan dilakukan, maka kita tidak bisa menggunakan perulangan for.
PHP (dan juga bahasa pemograman lain) menyediakan stuktur perulangan while untuk kondisi perulangan dimana banyaknya perulangan tidak dapat dipastikan pada saat penulisan program.
Misalkan kita ingin membuat program tebak angka, dimana user akan menebak 1 angka dari 1 sampai 10. Untuk kondisi ini, kita tidak dapat mengetahui berapa kali user akan ’mencoba’ untuk menebak angka tersebut. Bisa saja user mencoba sebanyak 1, 5, atau 10 kali sebelum angka tersebut berhasil diterka.
Atau misalkan kita ingin membuat program menemukan kata tertentu di dalam sebuah kalimat yang dimasukkan oleh user. Banyak kata dalam kalimat tidak bisa kita tentukan pada saat pembuatan program (karena akan diinput oleh user pada saat program berjalan), maka kita tidak bisa menentukan seberapa banyak perulangan yang harus dilakukan untuk mencari kata tersebut.

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.

Komentar

Postingan populer dari blog ini

Menghitung Luas dari Beberapa Bangun Datar dengan C#

Berkenalan dengan C#

Contoh Permasalahan dengan Switch