Perulangan While Do Dalam Pascal

Untuk situasi dimana jumlah perulangan belum bisa dipastikan, kita bisa menggunakan perulangan WHILE DO atau REPEAT UNTIL. Dalam tutorial kali ini saya akan fokus kepada WHILE DO.
Berikut format dasar penulisan perulangan WHILE DO dalam bahasa pemrograman PASCAL:
1
2
3
4
5
WHILE (condition) DO
begin
  (kode program yang ingin diulang disini...)
  (kode program untuk mengubah condition..)
end;
Kunci dari perulangan WHILE DO ada di condition dan kode program untuk mengubah condition. Condition bisa dikatakan sebagai syarat agar perulangan bisa dijalankan. Selama syarat ini terpenuhi (bernilai TRUE), perulangan akan terus dijalankan. Jika syarat ini tidak terpenuhi (bernilai FALSE), perulangan tidak akan berjalan.
Mari kita lihat contoh kode programnya.

Contoh kode Program Perulangan WHILE DO dalam Pascal

Agar seragam dengan perulangan FOR DO, saya ingin membuat 10 baris teks “Hello World” menggunakan WHILE DO. Berikut kode programnya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program while_do;
uses crt;
var
  i: integer;
begin
  clrscr;
  i:= 0;
  while i < 10 do
    begin
      writeln('Hello World');
      i:= i + 1;
    end;
     
  readln;
end.
Pada awal program, saya membuat variabel i yang berfungsi sebagai variabel counter. Sebelum perulangan, saya memberikan nilai 0 untuk i. Setelah itu kita masuk ke perulangan WHILE DO.
Baris program while i < 10 do adalah awal dari perulangan. Inilah kondisi atau syarat yang harus dipenuhi supaya perulangan bisa diproses. Ketika kode program jalan pertama kali, nilai variabel i adalah 0, artinya kondisi i < 10 menghasilkan nilai TRUE. Karena tentu saja 0 kurang dari 10.
Karena syarat di penuhi, blok begin hingga end; segera di eksekusi. Baris pertama adalah writeln(‘Hello World’). Ini digunakan untuk menampilkan teks ‘Hello World’. Tidak ada masalah.
Baris berikutnya saya membuat i:= i + 1. Bagian ini dikenal juga sebagai increment, artinya saya ingin menambah nilai variabel counter i sebanyak 1 angka. Ini dilakukan supaya bisa mengubah kondisi i < 10 yang terdapat di awal perulangan. Jika ini tidak ditulis, perulangan tidak akan pernah berhenti (infinity loop).
Sampai disini, kode program akan kembali ke awal dan mengecek apakah i < 10? Ingat, variabel i sekarang sudah bernilai 1. Oke, 1 < 10 = benar (TRUE), kembali jalankan writeln(‘Hello World’), yang diikuti dengan i:= i + 1. Karena 1 + 1 = 2, varibel i sekarang bernilai 2.
Kode program kembali ke awal dan mengecek apakah i < 10? Sekarang nilai i adalah 2, dan 2 masih kurang dari 10, 2 < 10 = benar (TRUE), sekali lagi kode blok perulangan akan dijalankan.
Proses seperti ini terus berlangsung sampai kondisi i < 10 menghasilkan FALSE. Kapan kondisi ini terjadi? Yakni ketika variabel i = 10. 10 < 10 adalah FALSE. Artinya, perulangan WHILE DO akan dijalankan sebanyak 10 kali, dimana dalam setiap perulangan, nilai i akan menaik mulai dari 0, 1, 2, 3, 4, 5, 6, 7, 8, hingga 9.
Agar konsep perulangan ini bisa lebih paham, silahkan anda bayangkan (kalau perlu ditulis), bagaimana nilai variabel counter i bisa naik dari 1 sampai 9, dan pada setiap kenaikan perulangan akan menampilkan teks ‘Hello World’.
Contoh Program Pascal - Perulangan WHILE DO Hello World
Jika kode program diatas masih kurang paham, mari masuk ke contoh kedua:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program while_do;
uses crt;
var
  i: integer;
begin
  clrscr;
  i:= 0;
  while i < 10 do
    begin
      writeln('Variabel i sekarang bernilai: ',i);
      i:= i + 1;
    end;
  readln;
end.
Kondisi perulangan WHILE DO yang saya pakai sama persis seperti sebelumnya. Hanya saja kali ini perintah yang dijalankan pada setiap perulangan adalah writeln(‘Variabel i sekarang bernilai: ‘,i). Ini akan membantu kita melihat nilai variabel counter i yang terus bertambah 1 selama perulangan dijalankan.
Contoh Program Pascal - Perulangan WHILE DO Variabel counter

Pemahaman Logika untuk Perulangan WHILE DO

Untuk bisa membuat perulangan dengan WHILE DO, kita perlu pemahaman logika. Logika diperlukan untuk menentukan nilai awal dan kondisi akhir.
Sebagai latihan soal, saya ingin anda membuat kode program yang menghasilkan teks: “Variabel i sekarang bernilai: 5”, “Variabel i sekarang bernilai: 6”, … Hingga “Variabel i sekarang bernilai: 10”. Yup, hanya 5 baris. Silahkan anda modifikasi kode program diatas.
Baik, berikut kode yang saya gunakan:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program while_do;
uses crt;
var
  i: integer;
begin
  clrscr;
  i:= 5;
  while i <= 10 do
    begin
      writeln('Variabel i sekarang bernilai: ',i);
      i:= i + 1;
    end;
  readln;
end.
Contoh Program Pascal - Perulangan WHILE DO Variabel counter 2
Kuncinya adalah bagaimana menentukan kondisi awal variabel i, dan kondisi akhir dari perulangan. Dengan membuat  i:= 5, dan while i <= 10 do, artinya nilai i akan mulai dari 5, 6, 7, 8, 9, dan 10.
Tapi saya juga bisa menggunakan kode program berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program while_do;
uses crt;
var
  i: integer;
begin
  clrscr;
  i:= 5;
  while i < 11 do
    begin
      writeln('Variabel i sekarang bernilai: ',i);
      i:= i + 1;
    end;
  readln;
end.
Dapatkah anda melihat bedanya? Perhatikan bahwa kali ini saya menggunakan kondisi  while i < 11 do. Sebenarnya ini sama seperti while i <= 10 do. Angka 10 akan TRUE jika dibandingkan dengan “< 11″, maupun “<= 10“.
Konsep seperti ini agar selalu diperhatikan ketika membuat perulangan WHILE DO.

Hati-hati dengan Infinity Loop

Infinity Loop adalah sebuah perulangan yang tidak pernah berhenti. Ini terjadi karena variabel kondisi akan selalu bernilai TRUE.
Perhatikan kode program berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
program while_do;
uses crt;
var
  i: integer;
begin
  clrscr;
  i:= 5;
  while i < 11 do
    begin
      writeln('Variabel i sekarang bernilai: ',i);
    end;
  readln;
end.
Jika anda menjalankan kode program diatas, akan terjadi Infinity Loop. Ini karena kondisi while i <= 10 do akan selalu TRUE. Di dalam perulangan saya tidak membuat ‘sesuatu’ yang bisa mengubah nilai variabel i (untuk membuat syarat i <= 10 menjadi FALSE).
Infinity Loop biasanya terjadi karena kesalahan logika dari programmer, terutama untuk perulangan WHILE DO dan REPEAT UNTIL. Untuk menghentikan infinity loop, anda bisa menekan kombinasi tombol CRTL + C, atau menutup paksa Free Pascal.

Membuat Hitung Mundur dengan WHILE DO

Untuk membuat perulangan yang mundur, kita bisa mengubah nilai awal variabel counter dan kondisi syarat dari perulangan WHILE DO. Berikut contohnya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program while_do;
uses crt;
var
  i: integer;
begin
  clrscr;
  i:= 100;
  while i >= 0 do
    begin
      writeln('Hitung mundur: ',i);
      i:= i - 1;
    end;
  readln;
end.
Contoh Program Pascal - Perulangan WHILE DO Hitung Mundur
Disini saya memulai variabel i dari 100. Pengecekan kondisi while i >= 0 do artinya, perulangan akan dijalankan selama nilai i besar dari 100.
Bagaimana agar kondisi ini nantinya bisa bernilai FALSE? Saya menggunakan i:= i – 1, sehingga dalam setiap perulangan, nilai i selalu berkurang 1 angka, dari 100, ke 99, ke 98, dst hingga berhenti saat i = 0, yakni ketika syarat i >= 0 menghasilkan FALSE.

Membuat Perulangan Lompat dengan WHILE DO

Dengan memodifikasi bagian counter, kita bisa membuat perulangan yang “lompat”, yakni tidak berurutan dari 1, 2, 3, dst. Kita bisa membuat variabel counter yang naik misalnya dari 3, 6, 9, 12, dst.
Perhatikan kode program berikut, dan dapatkah anda menebak urutan angka yang ditampilkan?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
program while_do;
uses crt;
var
  i: integer;
begin
  clrscr;
  i:= 3;
  writeln('Berikut deret untuk kelipatan 3: ');
   
  while i <= 30 do
    begin
      write(i,' ');
      i:= i + 3;
    end;
  readln;
end.
Perhatikan bahwa variabel i mulai dari 3, dan perubahannya menggunakan i:= i + 3. Artinya variabel i akan ‘lompat’ 3 angka setiap perulangan. Berikut hasilnya:
Contoh Program Pascal - Perulangan WHILE DO Deret 3
Sampai disini saya sarankan anda mencoba2 berbagai kombinasi perulangan lain, misalnya membuat perulangan yang lompat setiap 7 angka, atau perulangan yang mundur 4 angka, misalnya dari 100, ke 96, ke 92, ke 88, dst.

Komentar