1 September 2021

Perulangan: while dan for

Kita sering perlu untuk mengulangi tindakan.

Contohnya, Mengeluarkan barang dari sebuah daftar satu per satu atau hanya menjalankan kode yang sama untuk setiap nomor dari 1 hingga 10.

Perulangan adalah sebuah cara untuk mengulangi kode yang sama beberapa kali.

Perulangan “while”

Perulangan while memiliki sintaks sebagai berikut:

while (kondisi) {
  // kode
  // disebut "badan perulangan"
}

Ketika kondisi bernilai truthy, kode dari badan perulangan dijalankan.

Contohnya, perulangan di bawah mengeluarkan i selagi i < 3:

let i = 0;
while (i < 3) { // menampilkan 0, lalu 1, lalu 2
  alert( i );
  i++;
}

Eksekusi tunggal dari badan perulangan disebut sebuah pengulangan. Perulangan pada contoh diatas membuat tiga kali pengulangan.

Jika i++ hilang dari contoh di atas, perulangan akan mengulangi (dalam teori) secara terus-menerus. Pada praktiknya, browser menyediakan cara untuk menghentikan perulangan, dan pada sisi server JavaScript, kita dapat mematikan prosesnya.

Ekspresi atau variable apapun bisa menjadi sebuah kondisi perulangan, tidak hanya perbandingan: kondisi terevalusasi dan terkonversi menjadi boolean oleh while.

Contohnya, cara cepat untuk menulis while (i != 0) adalah while (i):

let i = 3;
while (i) { // ketika i menjadi 0, kondisi bernilai salah, dan perulangan berhenti
  alert( i );
  i--;
}
Kurung kurawal tidak dibutuhkan untuk badan baris tunggal

Jika badan perulangan mempunyai sebuah pernyataan tunggal, kita dapat menghilangkan kurung kurawal {…}:

let i = 3;
while (i) alert(i--);

Perulangan “do…while”

Pengecekan kondisi dapat dipindahkan di bawah badan perulangan menggunakan do..while sintaks:

do {
  // badan perulangan
} while (condition);

Perulangan akan mengeksekusi badan terlebih dahulu, lalu memeriksa kondisi, dan, selagi itu bernilai truthy, jalankan itu lagi dan lagi.

Contohnya:

let i = 0;
do {
  alert( i );
  i++;
} while (i < 3);

Format penulisan ini hanya digunakan ketika kamu ingin badan dari perulangan tereksekusi setidaknya sekali Terlepas dari kondisi menjadi bernilai benar. Biasanya, format lain yang dipilih: while(…) {…}.

Perulangan “for”

Perulangan for lebih complex, tapi merupakan perulangan yang paling umum digunakan.

Itu terlihat seperti ini:

for (awal; kondisi; langkah) {
  // ... badan perulangan ...
}

Mari belajar makna dari bagian ini dari contoh. Perulangan dibawah menjalankan alert(i) untuk i dari 0 sampai dengan (tapi tidak termasuk) 3:

for (let i = 0; i < 3; i++) { // menampilkan 0, lalu 1, lalu 2
  alert(i);
}

Mari bahas pernyataan for bagian demi bagian:

bagian
begin i = 0 Jalankan sekali masuk ke loop.
condition i < 3 Cek sebelum tiap iterasi loop. Jika salah, loop berhenti.
body alert(i) Jalankan lagi dan lagi selama kondisi bernilai truthy.
step i++ Exekusi setelah badan di tiap iterasi.

Cara kerja algoritma perulangan umum seperti ini:

Jalankan begin
→ (jika condition → jalankan body dan jalankan step)
→ (jika condition → jalankan body dan jalankan step)
→ (jika condition → jalankan body dan jalankan step)
→ ...

Dikatakan, begin diexekusi sekali, kemudian ia beriterasi: setelah tiap condition dites, body dan step diexekusi.

Jika kamu baru pada perulangan, ini bisa membantumu kembali ke contoh dan mereproduksi bagamana ini berjalan selangkah demi selangkah pada sebuah selembar kertas.

Inilah yang sebenarnya terjadi pada kasus kita:

// for (let i = 0; i < 3; i++) alert(i)

// jalankan awal
let i = 0
// jika kondisi → jalankan badan dan jalankan langkah
if (i < 3) { alert(i); i++ }
// jika kondisi → jalankan badan dan jalankan langkah
if (i < 3) { alert(i); i++ }
// jika kondisi → jalankan badan dan jalankan langkah
if (i < 3) { alert(i); i++ }
// ...selesai, karena sekarang i == 3
Deklarasi varibel sebaris

Disini, “penghitung” variabel i dideklarasikan di dalam perulangan. Ini disebut deklarasi variabel “sebaris”. variabel ini hanya akan terlihat di dalam perulangan.

for (let i = 0; i < 3; i++) {
  alert(i); // 0, 1, 2
}
alert(i); // error, tidak ada variabel

Daripada mendefinisikan sebuah variabel, kita dapat menggunakan yang sudah ada:

let i = 0;

for (i = 0; i < 3; i++) { // gunakan variabel yang sudah ada
  alert(i); // 0, 1, 2
}

alert(i); // 3, terlihat, karena dideklarasikan diluar dari perulangan

Melewatkan bagian

Bagian apapun dari for dapat dilewati.

Contoh, kita dapat menghilangkan awal jika kita tidak butuh untuk melakukan apapun pada awal perulangan.

Seperti ini:

let i = 0; // kita punya i yang sudah dideklarasikan dan telah ditetapkan

for (; i < 3; i++) { // tidak butuh "awal"
  alert( i ); // 0, 1, 2
}

Kita juga bisa menghilangkan bagian langkah:

let i = 0;

for (; i < 3;) {
  alert( i++ );
}

Ini membuat perulangan sama dengan while (i < 3).

Kita sebenarnya dapat menghilangkan semuanya, membuat sebuah perulangan tak terhingga:

for (;;) {
  // ulangi tanpa batas
}

Tolong dicatat bahwa dua for titik koma ; harus ada, jika tidak, akan ada sintaks error.

Menghentikan perulangan

Biasanya, sebuah perulangan keluar ketika kondisinya menjadi bernilai salah.

Tapi kita dapat memaksanya keluar pada waktu apapun menggunakan perintah spesial break.

Contohnya, perulangan dibawah menanyakan pengguna untuk serangkaian angka, “hentikan” ketika tidak ada angka yang dimasukan:

let sum = 0;

while (true) {

  let value = +prompt("Masukan sebuah angka", '');

  if (!value) break; // (*)

  sum += value;

}
alert( 'Sum: ' + sum );

Perintah break teraktivasi pada baris (*) jika pengguna memasukan baris kosong atau membatalkan input. itu akan langsung berhenti, melewati kontrol ke baris pertama setelah perulangan. yang bernama, alert.

Kombinasi “perulangan tak terhingga + break sesuai kebutuhan” bagus untuk situasi dimana sebuah kondisi perulangan harus diperiksa tidak di awal atau akhir dari perulangan, tapi di pertengahan atau bahkan di beberapa tempat tubuhnya.

Lanjutkan ke perulangan berikutnya

Perintah continue adalah “versi ringan” dari break. Ini tidak mengentikan keseluruhan perulangan. sebagai gantinya, ini menghentikan perulangan saat ini dan memaksa perulangan untuk memulai yang baru (jika kondisi diperbolehkan).

Kita dapat menggunakan ini jika kita selesai dengan perulangan saat ini dan ingin pindah ke yang berikutnya.

Perulangan dibawah menggunakan continue