Sulhi.id

Catatan Kecil Seputar Blogging dan Koding

Statement Pengulangan Menggunakan FOR dan WHILE

Tuesday, October 22nd, 2019     Programming

Statement ini merupakan salah satu statement yang dapat digunakan untuk menyatakan proses yang diulang-ulang atau looping.

Proses looping itu harus berhenti karena tidak mungkin tidak pernah berhenti. Berdasarkan hal tersebut, terdapat 2 kondisi yang dapat menghentikan looping tersebut. Coba perhatikan 2 pernyataan sehari-hari berikut ini:

Hari ini saya makan bakso 10 kali.
Hari ini saya terus makan bakso sampai saya kenyang.

Kedua pernyataan di atas sama-sama mengandung proses yang diulang-ulang yaitu ‘makan bakso’. Namun proses ‘makan bakso’ dari kedua pernyataan tersebut berbeda cara berhentinya. Pernyataan pertama menunjukkan bahwa ‘makan bakso’ akan diulang-ulang sampai dengan 10 kali. Setelah sampai 10 kali, maka ‘makan bakso’ ini akan berhenti. Sedangkan pernyataan yang kedua, dalam hal ini jumlah berapa kali makan bakso tidak diketahui, namun yang diketahui hanyalah syarat kapan perulangan ini akan berhenti yaitu ketika ‘sudah kenyang’.

Kedua bentuk looping berdasarkan kapan berhentinya di atas diadopsi ke dalam konsep pemrograman. Dalam pemrograman, khususnya PHP, nantinya juga akan dijumpai bentuk-bentuk perulangan tersebut.

Untuk menyatakan looping yang telah diketahui jumlah perulangannya, kita bisa menggunakan statement FOR atau WHILE. Sedangkan bila perulangannya tidak diketahui jumlah perulangannya atau hanya diketahui kondisi kapan dia harus berakhir maka bisa digunakan WHILE.

STATEMENT FOR

Sintaks statement FOR adalah sebagai berikut :

for (variabel = nilaiawal; variabel operatorlogika nilaiakhir; increment)
{
Proses yang diulang
}

Contoh:

Script berikut ini akan menghasilkan teks heading mulai dari heading 1, 2 s/d 5.

<?php
   $teks = "Hello World";
   for ($a = 1; $a <= 5; $a++)
   {
      echo "<h".$a.">".$teks."</h".$a.">";
   }
?>

Hasil output di atas adalah:

Pada for di atas, variabel counternya dalam hal ini adalah $a. Nilai $a ini memiliki nilai awal sama dengan 1. Selanjutnya operator increment (kenaikan) yang digunakan adalah $a++ atau $a = $a + 1 (kenaikannya satu) dan nilai akhir untuk $a adalah sama dengan 5.

Selain operator increment, kita juga bisa menggunakan operator decrement (turun)

Contohnya:

<?php
   $teks = "Hello World";
   for ($a = 5; $a >= 1; $a--)
   {
      echo "<h".$a.">".$teks."</h".$a.">";
   }
?>

Contoh lain penggunaan FOR

Script PHP untuk menampilkan bilangan bulat 5 s/d 100 yang berkelipatan 10

<?php
   for ($bil = 5; $bil <= 100; $bil++)
   {
     if ($bil % 10 == 0) echo $bil. "<br />";
   }
?>

Script PHP untuk menjumlahkan bilangan bulat 2 s/d 50.
Yang dimaksud menjumlahkan di sini adalah kita mencari hasil dari 2 + 3 + 4 + 5 + … + 50

<?php
   $jumlah = 0;
   for ($bil = 2; $bil <= 50; $bil++)
   {
      $jumlah = $jumlah + $bil;
   }
      echo "Hasilnya adalah ".$jumlah;
?>

Latihan FOR

Beberapa alternatif script untuk mencari nilai terbesar dari 3 buah bilangan

latihan6-1.php

latihan6-1proses.php

<html>
<head>
  <title>Mencari Bilangan Terbesar dari 3 Bilangan</title>
</head>
<body>
<h1>Mencari Bilangan Terbesar dari 3 Bilangan</h1>

<?php

$bilangan1 = $_POST['bil1'];  // membaca input bilangan pertama
$bilangan2 = $_POST['bil2'];  // membaca input bilangan kedua
$bilangan3 = $_POST['bil3'];  // membaca input bilangan ketiga

// cara ke - 1
// idenya adalah mencari bilangan x yang terbesar dari bil 1 dan bil2. lalu x dibandingkan dengan bilangan ke-3. Jika x > dari bil 3, maka x adalah max dari semua bilangan. Jika tidak, maka bil 3 sbg max nya 

if ($bilangan1 > $bilangan2) $maxSementara = $bilangan1;
else $maxSementara = $bilangan2;

if ($bilangan3 > $maxSementara) $maxAkhir = $bilangan3;
else $maxAkhir = $maxSementara;

echo "<p>Nilai maksimum dari ".$bilangan1.", ".$bilangan2.", dan ".$bilangan3." adalah : ".$maxAkhir."</p>";

// cara ke - 2
// idenya adalah langsung membandingkan masing-masing bilangan dengan bilangan yang lain.
// misal: jika bil 1 > bil2 dan bil 1 > bil 3, maka max adalah bil 1.

if (($bilangan1 > $bilangan2) && ($bilangan1 > $bilangan3)) $maxAkhir = $bilangan1;
else if (($bilangan2 > $bilangan1) && ($bilangan2 > $bilangan3)) $maxAkhir = $bilangan2;
else if (($bilangan3 > $bilangan1) && ($bilangan3 > $bilangan2)) $maxAkhir = $bilangan3;

echo "<p>Nilai maksimum dari ".$bilangan1.", ".$bilangan2.", dan ".$bilangan3." adalah : ".$maxAkhir."</p>";

// cara ke - 3
// idenya hampir sama dengan cara ke- 1, tapi tidak dengan mencari max sementara.

if ($bilangan1 > $bilangan2)
{
   if ($bilangan1 > $bilangan3) $maxAkhir = $bilangan1;
   else $maxAkhir = $bilangan3;
}
else
   {
      if ($bilangan2 > $bilangan3) $maxAkhir = $bilangan2;
	  else $maxAkhir = $bilangan3;   
   }

echo "<p>Nilai maksimum dari ".$bilangan1.", ".$bilangan2.", dan ".$bilangan3." adalah : ".$maxAkhir."</p>";   
   
?>

</body>
</html>

Script untuk menentukan suatu bilangan termasuk bilangan negatif, positif atau nol

latihan6-2.php

<html>
<head>
  <title>Mencari Status Bilangan</title>
</head>
<body>
<h1>Mencari Status Bilangan</h1>

<form method="post" action="latihan6-2proses.php">
Masukkan sebuah bilangan <input type="text" name="bil">
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

latihan6-2proses.php

<html>
<head>
  <title>Mencari Status Bilangan</title>
</head>
<body>
<h1>Mencari Status Bilangan</h1>

<?php

$bilangan = $_POST['bil'];

// cara ke - 1

if ($bilangan > 0) echo "<p>Bilangan ".$bilangan." adalah positif</p>";
else if ($bilangan < 0) echo "<p>Bilangan ".$bilangan." adalah negatif</p>";
else echo "<p>Bilangan ".$bilangan." adalah nol</p>";

// cara ke - 2

if ($bilangan > 0) $status = "positif";
else if ($bilangan < 0) $status = "negatif";
else $status = "nol";

echo "<p>Bilangan ".$bilangan." adalah bilangan ".$status."</p>";

?>

</body>
</html>

Mengarahkan submit form ke bagian tertentu dalam suatu script

latihan6-3.php

<html>
<head>
  <title>Operasi Bilangan</title>
</head>
<body>
<h1>Operasi Bilangan</h1>

<?php

if ($_POST['jumlahkan'])
{
  // jika yang diklik adalah tombol 'penjumlahan'
  
  $bil1 = $_POST['bil1'];
  $bil2 = $_POST['bil2'];
   
  $hasil = $bil1 + $bil2;
  echo "<p>Hasil penjumlahannya adalah ".$hasil."</p>";
}
else if ($_POST['kurangkan'])
{
  // jika yang diklik adalah tombol 'pengurangan'

  $bil1 = $_POST['bil1'];
  $bil2 = $_POST['bil2'];
   
  $hasil = $bil1 - $bil2;
  echo "<p>Hasil pengurangannya adalah ".$hasil."</p>";

}
else if ($_POST['kalikan'])
{
  // jika yang diklik adalah tombol 'perkalian'
 
  $bil1 = $_POST['bil1'];
  $bil2 = $_POST['bil2'];
   
  $hasil = $bil1 * $bil2;
  echo "<p>Hasil perkaliannya adalah ".$hasil."</p>";
} 
else
{
// jika tombol belum diklik maka tampilkan form untuk entri bilangan
?>

<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<table>
  <tr><td>Masukkan bilangan ke-1</td><td>:</td><td><input type="text" name="bil1"></td></tr>
  <tr><td>Masukkan bilangan ke-2</td><td>:</td><td><input type="text" name="bil2"></td></tr>  
</table>
<input type="submit" name="jumlahkan" value="+"> <input type="submit" name="kurangkan" value="-"> <input type="submit" name="kalikan" value="x">
</form>

<?php
// perintah $_SERVER['PHP_SELF'] menyatakan bahwa action dari submit form diarahkan ke script ini sendiri.
}

?>

</body>
</html>

Simulasi membuat menu pilihan

latihan6-4.php

<html>
<head>
  <title>Operasi Bilangan</title>
</head>
<body>
<h1>Operasi Bilangan</h1>

<p>Pilih menu operasi di bawah ini</p>

<ul>
  <li><a href="<?php $_SERVER['PHP_SELF']; ?>?op=jumlah">Penjumlahan</a></li>
  <li><a href="<?php $_SERVER['PHP_SELF']; ?>?op=kurang">Pengurangan</a></li>
  <li><a href="<?php $_SERVER['PHP_SELF']; ?>?op=kali">Perkalian</a></li>
</ul>

<?php

// bagian IF untuk menampilkan form sesuai nilai 'op=...' dari link di atas
// masing-masing action pada form akan diarahkan ke bagian script yang berbeda untuk menampilkan hasil operasinya

if ($_GET['op'] == "jumlah")
{
?>

<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>?show=jumlah">
<table>
  <tr><td>Masukkan bilangan ke-1</td><td>:</td><td><input type="text" name="bil1"></td></tr>
  <tr><td>Masukkan bilangan ke-2</td><td>:</td><td><input type="text" name="bil2"></td></tr>  
</table>
<input type="submit" name="submit" value="Submit"> 
</form>

<?php
}
else if ($_GET['op'] == "kurang")
{
?>

<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>?show=kurang">
<table>
  <tr><td>Masukkan bilangan ke-1</td><td>:</td><td><input type="text" name="bil1"></td></tr>
  <tr><td>Masukkan bilangan ke-2</td><td>:</td><td><input type="text" name="bil2"></td></tr>  
</table>
<input type="submit" name="submit" value="Submit"> 
</form>

<?php
}
else if ($_GET['op'] == "kali")
{
?>

<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>?show=kali">
<table>
  <tr><td>Masukkan bilangan ke-1</td><td>:</td><td><input type="text" name="bil1"></td></tr>
  <tr><td>Masukkan bilangan ke-2</td><td>:</td><td><input type="text" name="bil2"></td></tr>  
</table>
<input type="submit" name="submit" value="Submit"> 
</form>

<?php
}

// bagian IF untuk proses perhitungan sesuai 'show=...' yang ada dalam action form

if ($_GET['show'] == "jumlah")
{ 
  $bil1 = $_POST['bil1'];
  $bil2 = $_POST['bil2'];
   
  $hasil = $bil1 + $bil2;
  echo "<p>Hasil penjumlahannya adalah ".$hasil."</p>";
}
else if ($_GET['show'] == "kurang")
{
  $bil1 = $_POST['bil1'];
  $bil2 = $_POST['bil2'];
   
  $hasil = $bil1 - $bil2;
  echo "<p>Hasil pengurangannya adalah ".$hasil."</p>";

}
else if ($_GET['show'] == "kali")
{
  $bil1 = $_POST['bil1'];
  $bil2 = $_POST['bil2'];
   
  $hasil = $bil1 * $bil2;
  echo "<p>Hasil perkaliannya adalah ".$hasil."</p>";
}

?>

</body>
</html>

STATEMENT WHILE

Statement WHILE digunakan untuk menyatakan perulangan baik yang telah diketahui jumlahnya yang tidak diketahui jumlahnya. Artinya setiap bentuk perulangan FOR pasti dapat juga dinyatakan ke dalam bentuk WHILE.

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 1:

Script berikut ini akan menampilkan bilangan 1 s/d 3.

while-1.php

<?php
   $bil = 1;
   while ($bil <= 3)
   {
      echo $bil. "<br />";
      $bil++;
   }
?>

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.

Contoh 2:

bilangan.php

Dengan tanpa menjalankannya di browser, menurut Anda kira-kira perintah yang diberi highlight tersebut akan menampilkan apa ? Bagi yang menjawab 3… Anda SALAH. Bagi yang menjawab 4… OK Anda benar.

Kenapa demikian? 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.

Contoh 3:

random.php

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);
   }
?>

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.

WHILE di dalam WHILE (nested WHILE)

Seperti halnya FOR, statement WHILE juga dapat terletak di dalam sebuah WHILE, seperti contoh berikut ini:

<?php
   $a = 1;
   while ($a <= 3)
   {
      $b = 1;
      while ($b <= 2)
      {
         echo "Nilai a = ".$a. " Nilai b = ".$b. "<br />";
         $b++;
      }
      $a++;
   }
?>

Contoh-contoh script menggunakan WHILE:

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 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>";
?>

TUGAS

  1. Seorang nasabah bank, mula-mula memiliki saldo awal Rp. 1.000.000,- di suatu
    bank X. Bank tersebut memiliki kebijakan memberikan bunga 3% jika besar saldo
    kurang dari Rp. 1.100.000,- dan 4% bila saldo lebih besar atau sama dengan Rp.
    1.100.000,- . Perhitungan bunga dihitung dari besar saldo terakhir. Selain itu di
    setiap bulannya nasabah dikenai biaya administrasi Rp. 9.000,-. Buatlah script
    PHP untuk menentukan saldo akhir setelah N bulan.
    Keterangan:
    Buatlah form untuk mengisikan saldo awalnya dan N (jangka waktu tabungan).
  2. Kerjakan tugas nomor 1 di atas dengan WHILE.