You are on page 1of 7

Praktikum Pemrograman Komputer

Pengulangan Berhingga (Statemen while)

Tujuan:
1. Mahasiswa memahami masalah-masalah yang membutuhkan proses berulang
menggunakan statemen while.
2. Mahasiswa dapat membuat program menggunakan statemen while untuk
menyelesaikan masalah yang membutuhkan proses berulang .

Looping dengan while.

Looping dengan while akan menyebabkan program kita mengulang barisan


statement seperti yang dikondisikan di awal looping. Syntax atau bentuk statement
while adalah sebagai berikut :

while (kondisi)
{
statement1;
:
statement_n;
}

Cara kerja looping dengan while adalah sebagai berikut :

while (kondisi)
{ hanya jika “kondisi” bernilai benar
statement1; maka statement didalam blok looping
jika “kondisi” : dikerjakan terus
salah statement_n;
}

// sisa program
// yang berlanjut

Gambar 1. Cara kerja while

“kondisi” merupakan ekspresi sembarang yang diterima oleh C dan


“statement” adalah statement yang diterima oleh C. Jika “kondisi” bernilai benar
(true) atau 1, maka statement-statement di dalam badan looping dikerjakan, dan
kemudian “kondisi” diperiksa lagi. Hal ini berlanjut terus sampai “kondisi” bernilai
salah (false) atau 0. Jika “kondisi” bernilai salah, maka looping dengan statement
while akan berhenti dan program akan berlanjut ke statement berikutnya di bawah
blok statement looping.
Dalam praktikum sebelumnya digunakan statement for untuk melakukan
perulangan. Dalam contoh berikut ini dipakai statement while, untuk looping
sampai counter sama dengan 5.

1
// Menunjukkan looping dengan 'while'
// sebagai pengganti statement 'for'
#include <stdio.h>
#include <conio.h>
void main() {
// inisialisasi variable 'hitung'
int hitung = 0;

//mulai looping dengan memeriksa kondisi


while (hitung <= 5) {
hitung++;
printf("Menghitung : %d\n", hitung);
}
printf("Selesai menghitung.\n");
printf("Perhitungan terakhir : %d", hitung);
}

Statement-statement yang berada di dalam blok looping while dapat


dimungkinkan untuk tidak pernah dikerjakan. Mengapa ? karena hal ini tergantung
dari kondisi yang diberikan kepada while. Jika kondisi yang diberikan ternyata
selalu bernilai salah, maka seluruh statement-statement yang berada di dalam blok
looping tidak akan pernah dikerjakan. Dengan kata lain selalu dilewati. Contohnya
source code program di bawah ini :

// Melewati badan looping 'while' dengan kondisi yang salah


#include <stdio.h>
#include <conio.h>
int main() {
int hitung, hit;

printf("Berapa kali pengulangan ? ");


scanf(“%d”,&hitung);

// menyalin isi 'hitung' ke 'hit' untuk perbandingan


hit = hitung;
printf("Menghitung mundur ...\n");

//mulai looping dengan kondisi 'hitung' lebih besar nol


while (hitung > 0) {
printf("Mencetak : %d\n", hitung);
hitung--;
}

// memeriksa apakah input dari user dengan 'hit' yang disalin


// dari 'hitung' kurang atau sama dengan nol
if (hit <= 0) {
printf("Tidak ada pengulangan ...\n");
} else {
printf("Selesai mengulang.\n");
printf("Perhitungan terakhir : %d\n",hitung);
}
}

2
Hasil yang didapat ketika program di atas dijalankan adalah sebagai berikut :

Berapa kali pengulangan ? 5 Berapa kali pengulangan ? 0


Menghitung mundur ... Menghitung mundur ...
Mencetak : 5 Tidak ada pengulangan ...
Mencetak : 4
Mencetak : 3
Mencetak : 2
Mencetak : 1
Selesai mengulang.
Perhitungan terakhir : 0

Ketika pemeriksaan terhadap input data yang berada di variabel hitung;


ternyata berisi nilai nol, maka looping akan dilewati dan meneruskan ke statement di
bawah badan looping. Kemudian nilai hit yang merupakan nilai awal hitung
diperiksa. Jika berisi nilai nol atau kurang, maka akan dicetak pesan “tidak ada
pengulangan”. Sehingga hasil tampilannya seperti contoh tampilan di atas yang
sebelah kanan.
Kondisi yang diperiksa oleh pengulangan while dapat berupa kondisi yang
kompleks, yang berarti dapat terdiri dari operator logika && (AND), || (OR), dan !
(NOT). Source code program di bawah ini akan menggambarkan hal tersebut :

// Menunjukkan looping dengan 'while'


// dengan kondisi yang kompleks
#include <stdio.h>
#include <conio.h>
void main() {
int umur;
printf("Umur anda berapa ? ");
scanf(“%d”,&umur);
while ((umur < 5) || (umur >= 100)) {
printf("Saya tidak yakin umur anda %d\n", umur);
printf("Silahkan diulangi ... \n\n");
printf("Umur anda berapa ? ");
scanf(“%d”,&umur);
}
if ((umur > 12) && (umur < 19)) {
printf("Wah, anda baru bernjak remaja.\n");
printf("Gunakan waktu sebaik-baiknya ...\n");
}
if ((umur >= 5) && (umur <= 12)) {
printf("Anda masih tergolong anak kecil.\n");
printf("Belajarlah yang giat ...\n");
}
if ((umur >= 19) && (umur <= 100)) {
printf("Anda sudah beranjak tua.\n");
printf("Jadilah seorang yang dewasa ...\n");
}
}

3
Hasil yang didapat ketika program di atas dijalankan adalah sebagai berikut :

Umur anda berapa ? 3


Saya tidak yakin umur anda 3
Silahkan diulangi ...

Umur anda berapa ? 6


Anda masih tergolong anak kecil.
Belajarlah yang giat ...

Pada awal looping dimulai dengan kondisi tertentu seperti tersebut di atas.
Jadi jika umur yang dimasukkan kurang dari 5 atau malah lebih atau sama dengan
100, maka looping akan di ulang-ulang terus.
Kadang kala kita menginginkan kembali ke awal looping sebelum semua
statement yang berada di dalam blok looping dikerjakan. Hal ini dapat dilakukan
dengan menggunakan statement continue. Atau kita ingin keluar dari looping
sebelum kondisi yang menyebabkan keluar dari looping ditemukan. Hal ini dapat
dilakukan dengan menggunakan statement break. Tetapi kedua statement tersebut,
yaitu continue dan break, harus digunakan dengan ekstra hati-hati. Karena kedua
statement tersebut merupakan statement-statement berbahaya selain statement goto
dengan alasan yang sama, yaitu jika sebuah program tiba-tiba mengubah arah alur
pemrograman, maka program tersebut akan lebih sulit untuk dibaca dan dipahami.
Untuk lebih jelasnya, marilah kita lihat gambar di bawah ini :

: :
while (kondisi) while (kondisi)
{ {
: :

continue; break;

: :
statement; statement1;
: :
} }
// baris berikutnya statement2;

Gambar 2a. continue Gambar 2b. break

Contoh program menggunakan statement continue dan break ada di bawah ini :

// Menunjukkan looping dengan 'while' kondisi kompleks


// dan dengan statement break dan continue
#include <stdio.h>
#include <conio.h>
void main() {
int umur;
char jwb;
printf("Umur anda berapa ? ");
scanf(“%d”, &umur);

4
while ((umur < 5) || (umur >= 100)) {
printf("Saya tidak yakin umur anda %d\n", umur) ;
printf("Akan diulangi ? (Y/T) ");
scanf(“%c”,&jwb);
if (jwb == 'Y' || jwb == 'y') {
printf("Umur anda berapa ? ");
scanf(“%d”,&umur);
continue;
} else
break;
}
if ((umur > 12) && (umur < 19)) {
printf("Wah, anda baru bernjak remaja.\n");
printf("Gunakan waktu sebaik-baiknya ...\n");
};
if ((umur >= 5) && (umur <= 12)) {
printf("Anda masih tergolong anak kecil.\n");
printf("Belajarlah yang giat ...\n");
};
if ((umur > 19) && (umur <= 100)) {
printf("Anda sudah beranjak tua.\n");
printf("Jadilah seorang yang dewasa ...\n");
};
}
}

Hasil yang didapat ketika program di atas dijalankan adalah sebagai berikut :

Umur anda berapa ? 3 Umur anda berapa ? 4


Saya tidak yakin umur anda 3 Saya tidak yakin umur anda 4
Akan diulangi ? (Y/T) t Akan diulangi ? (Y/T) y
Umur anda berapa ? 6

Anda masih tergolong anak kecil.


Belajarlah yang giat ...

Jika umur yang dimasukkan kurang dari 5 atau malah lebih atau sama
dengan 100, maka looping akan di ulang-ulang terus. Kemudian user diminta untuk
mengisikan jawabannya. Jika jawabannya berupa karakter ‘Y’ atau ‘y’ maka ada
kondisi yang dikerjakan, kemudian statemen continue dikerjakan yang berakibat
kembali ke awal looping lagi, untuk memeriksa umur lagi.

Looping dengan do…while.

Looping do…while akan mengerjakan dulu statement-statement yang berada


di dalam blok looping (badan looping) sebelum kondisinya diperiksa, sehingga pasti
akan mengerjakan badan looping setidaknya satu kali. Dengan kata lain statement
dikerjakan dulu, baru kondisinya diperiksa. Syntax/bentuk statement do…while
adalah sebagai berikut :

5
do
{
:
statement;
:
}
while (kondisi);

Sedangkan cara kerjanya adalah sebagai berikut :

Selalu mengeksekusi
satu kali sebelum
mulai looping

do
{
:
statement_1;
: hanya jika kondisi bernilai benar
statement_2; maka mengerjakan statement
: di badan looping
}
while (kondisi);
:
// sisa program
// yang berlanjut

Gambar 3. Cara kerja do…while

Sebagai contoh, source code program berikut ini :

// Menunjukkan looping 'do...while'


#include <stdio.h>
#include <conio.h>
void main() {
int hitung, hit;
printf("Berapa kali pengulangan ? ");
scanf(“%d”,&hitung);
// menyalin isi 'hitung' ke 'hit' untuk perbandingan
hit = hitung;
printf("Menghitung mundur ...\n");
//mulai looping (setidaknya satu kali)
do {
printf("Mencetak : %d\n",hitung);
hitung--;
} while (hitung > 0);
// memeriksa apakah input dari user dengan 'hit' yang
// disalin dari 'hitung' kurang atau sama dengan nol
if (hit <= 0) {
printf("Tidak ada pengulangan ...\n");
} else {
printf("Selesai mengulang.\n");

6
printf("Perhitungan terakhir : %d\n", hitung);
}
}

Hasil yang didapat ketika program di atas dijalankan dan diberikan input 6 dan 0,
adalah sebagai berikut :

Menghitung : 1 Berapa kali pengulangan ? 0


Menghitung : 2 Menghitung mundur ...
Menghitung : 3 Mencetak : 0
Menghitung : 4 Tidak ada pengulangan ...
Menghitung : 5
Menghitung : 6
Selesai menghitung.
Perhitungan terakhir : 6

Dengan menggunakan looping do…while, jika kita masukkan nilai nol,


maka badan looping tetap akan ter-eksekusi satu kali. Sehingga tetap ada yang
tercetak, seperti contoh tampilan sebelah kanan. Bandingkan dengan menggunakan
looping while.

LATIHAN
1. Ketik ulang semua source code di atas, compile, dan jalankan. Analisa dan
bandingkan dengan perulangan menggunakan for.
2. Analisalah perbedaan perulangan antara while dengan do-while dari source
code di atas.
3. Buatlah sebuah program dengan while dan do-while sehingga menampilkan
hasil penjumlahan:
5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 = 50
4. Buatlah sebuah program dengan while dan do-while yang akan mencari rata-
rata suhu udara dalam 1 minggu. Berilah pesan “DINGIN” jika rata-rata suhu
dibawah 20o Celcius, “SEJUK” jika rata-rata suhu diantara 20o sampai 26o Celcius,
atau “PANAS” jika rata-rata suhu di atas 26o Celcius.
5. Buatlah program dengan while dan do-while untuk menampilkan hasil
penjumlahan:
1 + ½ + 1/3 + ¼ + …. + 1/20
6. Buatlah sebuah program game Tebak Angka. Angka yang akan ditebak sudah
ditentukan dan disimpan dalam satu variabel di dalam program. Pemain hanya
diberi 5 kesempatan untuk menebak. Jika pemain menebak angka dengan benar,
tampilkan pesan ucapan bahwa berhasil menebak. Jika pemain tidak dapat
menebak dalam 5 kali kesempatan yang sudah diberikan, cetak pesan bahwa
kesempatan habis dan program berhenti.
7. Modifikasi program nomor 4, supaya pemain sedikit terbantu dengan memberikan
pesan bahwa tebakan pemain lebih besar atau lebih kecil dari angka yang ditebak.

You might also like