Melanjutkan tutorial tentang perulangan atau looping dalam bahasa pemrograman Pascal, kita akan masuk ke perulangan WHILE DO. Disini akan dibahas cara penulisan serta cara penggunaan perulangan WHILE DO dalam Pascal.
Konsep Dasar Perulangan WHILE DO dalam Pascal
Perulangan FOR DO dan FOR DOWNTO DO yang saya bahas sebelum ini cocok untuk kondisi dimana kita sudah tahu berapa banyak perulangan yang ingin dijalankan. Dalam FOR DO, nilai awal perulangan dan nilai akhir sudah harus ditulis di awal kode program.
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:
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:
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’.
Jika kode program diatas masih kurang paham, mari masuk ke contoh kedua:
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.
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:
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.
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:
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:
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:
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.
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?
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:
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.
Dalam tutorial belajar pascal kali ini kita telah membahas perulangan WHILE DO. Di dalam pascal masih ada 1 lagi struktur perulangan, yakni REPEAT UNTIL. Apa bedanya perulangan WHILE DO dengan REPEAT UNTIL? Inilah yang akan kita bahas dalam tutorial selanjutnya: Perulangan REPEAT UNTIL dalam Pascal.
Terima kasih tutornya. Hmmm tapi akhir2 ini jarang belajar programing soalnya kan saya kelas 3 SMP yang akan menghadapi UN. Huh… sebenarnya pengen banget belajar semua bahasa pemrograman yanf ada disinin tapi waktunya sempit.
Hehe, belajar programmingnya kapan sempat saja gan, g ada yang maksa untuk buru2 kok…
Gan bagi pengalamannya saat mengikuti osn donk
Hehe, ditunggu aj ya…
Gak sabar pengen ikutan, supaya bisa banggai ortu
gan kalo hasilnya 32 16 8 4 gimana yaa ?
Untuk tutorial yang khusus tentang membuat deret, bisa lanjut kesini: https://www.duniailkom.com/tutorial-belajar-pascal-cara-membuat-deret-dalam-bahasa-pascal/
3. Buatlah algoritma untuk menampilkan semua bilangan diantara 0 – 100 yang jika dikalikan dengan 3 hasilnya merupakan angka kelipatan 9. Gunakan Repeat Until untuk menjawabnya
bisa bantu gak min ?
Hehe.. silahkan pelajari semua tutorial pascal di duniailkom ini gan, nanti akan bisa sendiri tuh. Boleh juga digabung dengan catatan sekolah/kuliahnya atau diskusi sama teman…
Kalau saya bantu buat, agan cuma dapat copy pastenya saja, tapi g bisa latihan cara pemecahan masalah (ini yang paling penting untuk studi agan kedepannya)
bantu jawab, walupun udah basi. sekalian pengen tahu udah benar atau belum
begin
clrscr;
i:=3;
writeln('Angka 1-100 yang dikalikan dengan 3 hasilnya kelipatan 9');
repeat
begin
write(i,', ');
i:=i+3;
end;
until(i>=100);
readln;
end.
Terimakasih sudah bantu jawab gan :)
logikanya gmna ya gan ? buat bikin rumusnya ?
apa bisa pakai i:=i+9 ?
mas program pakai while… do bisa buat nentuin deret huruf enggak? apa hanya for… to… do. kalau bisa tolong kasih tahu ya mas. kalau gak bisa kasih tahu juga
Membuat deret huruf g terlalu sering dipakai, terlebih lagi untuk perulangan while do. Kita harus mencari cara untuk menaikkan nilai variabel counter. Mungkin bisa diakali menggunakan fungsi chr(), misalnya seperti berikut:
program kode_program_deret;
uses crt;
var
i,j: integer;
hasil: string;
begin
clrscr;
i:= 65;
while i <= 90 do
begin
write(chr(i));
write(' ');
i:= i + 1;
end;
readln;
end.
Mas, buat output kayak gini gimana ya?
A
AR
ARU
ARUS
pake perulangan for to do
Ditampung dulu ya… kalau sempat nanti saya bantu, atau mungkin temen2 yang lain bisa buatkan kode programnya…
gan maksud dari
write(chr(i));
write(' ');
pada program kode program deret itu apa ya?
pemula harap maklum :)
Di dapal Pascal, fungsi chr() digunakan untuk mengkonversi angka menjadi karakter ASCII.
cara membuat pascal
10 9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
7 6 5 4 3 2 1
6 5 4 3 2 1
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
Requestnya saya tampung dulu ya.. kalau sempat nanti akan dibuatkan tutorialnya.
Ko
gan,kalo kita dsruh asal input bilangan hasilnya harus nol baru berhenti gmana ya caranya?
Request ditampung dulu ya..
ada bisa bantu saya membuat seperti ini dengan while do
*
***
*****
*******
Silahkan langsung kesini: https://www.duniailkom.com/tutorial-belajar-pascal-cara-membuat-segitiga-bintang-bahasa-pemrograman-pascal/
gan,, gimana kalau misalnya ada rumus, untuk menjalankan rumus, harus pakai satu syarat, itu pakai if ya?
Tergantung rumusnya juga. Kalau ada sebuah kondisi, bisa jadi pakai if else…
misalnya kalau begini gimana?
jika j = 2+3*m maka vj = 3+2*m
mohon bantuannya gan :)
kak kalau misalkan dalam WHILE DO ini ada tambahan temp itu gimana maksudnya yaa ?
Mungkin maksudnya itu adalah variabel temp (singkatan dari temporary). Untuk penamaan variabel boleh bebas dan bisa apa saja.
Gan bikin kode program ke flowchart
Untuk program deret bintang menggunakan while do bagaimana ya kk?
kak mau nanya cara nambahin looping misalnya hasil loopingnya ' 1 2 3 4' dari keempat hasil looping itu mau dijumlah hasilnya jadi 10 gitu
Pada contoh program di atas yakni:
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.
Mengapa Output yang dihasilkan dimulai dari 0 bukannya 1?? Nilai i kan 0 lalu ada perintah
yang menyatakan i:= i + 1; berarti 0+1 harusnya bukankah dimulai dari 1?? Apa karena ada
writeln('Variabel i sekarang bernilai: ',i); yang menprint i yakni 0 sehingga perhitungan dimulai dari 0
dan selanjutnya mendapat perintah i:= i + 1; lalu kembali ke awal dan untuk mencetak nilai 1??
Betul, di Pascal (dan mayoritas bahasa pemrograman lain), urutan perintah akan di proses secara berurutan mulai dari baris 1, 2, 3, dst.
Variabel i ditampilkan 0 karena perintah writeln diproses duluan, setelah itu baru ada perintah increment i:= i + 1. Jika ingin i langsung berisi angka 1, maka bisa dengan memindahkan baris writeln setelah proses increment.