Struktur Pengulangan
Contoh 1:
Jawabnya tentu tidak. Penulisan program seperti yang dilakukan di atas akan
menyebabkan besarnya ukuran file kode program yang dihasilkan dan merupakan suatu
pemborosan waktu dan tenaga. Mungkin untuk menuliskan 10 buah statemen di atas, kita
masih dapat melakukkannya dengan cepat dan mudah, namun bagaimana apabila ternyata
kita harus menuliskan statemen tersebut sebanyak 100 kali atau bahkan 500 kali. Hal
tersebut tentu akan merupakan sebuah hal yang membosankan. Kasarnya, program di atas
dapat kita katakan sebagai program yang salah.
Dalam bahasa C, terdapat tiga buah struktur pengulangan yang akan digunakan
sebagai kontrol dalam melakukan pengulangan proses, yaitu struktur for, while dan do-
while.
Setiap struktur yang ada masing-masing memiliki aturan tersendiri dan digunakan
dalam konteks yang berbeda. Kita harus bisa menentukan kapan sebaiknya kita harus
menggunakan struktur for, struktur while ataupun do-while. Untuk itu, pada bagian ini
kita akan membahas secara detil apa perbedaan dan penggunaan dari masing-masing
struktur tersebut. Hal ini juga bertujuan agar Anda dapat mengimplementasikannya dengan
benar ke dalam kasus-kasus program yang Anda hadapi.
A. Struktur for
Struktur for ini digunakan untuk menuliskan jenis pengulangan yang banyaknya
sudah pasti atau telah diketahui sebelumnya. Oleh karena itu, di sini kita harus melakukan
inisialisai nilai untuk kondisi awal pengulangan dan juga harus menuliskan kondisi untuk
menghentikan proses pengulangan. Adapun bentuk umum dari pendefinisian struktur for
(untuk sebuah statemen) dalam bahasa C adalah sebagai berikut.
Berikut ini contoh untuk mengilustrasikan struktur pengulangan for yang telah
diterangkan di atas.
Untuk membuktikan hal tersebut, perhatikan contoh program di bawah ini dimana
kita akan menampilkan teks „Saya sedang belajar bahasa C‟ sebanyak 10 kali.
Contoh 2:
#include <stdio.h>
int main(void)
{
int j;
for (j=0; j<10; j++)
{
printf(“Saya sedang belajar bahasa C\n”);
}
return 0;
}
Hasil yang akan diberikan oleh program di atas adalah sebagai berikut:
Pengulangan yang dilakukan pada program di atas bersifat menaik sehingga kita
menggunakan increment. Kita juga dapat melakukan pengulangan tersebut secara
menurun, yaitu dengan sintak di bawah ini.
Contoh 3:
#include <stdio.h>
int main(void)
{
int j;
for (j=10; j>0; j--)
{
printf(“Saya sedang belajar bahasa C\n”);
}
return 0;
}
Indeks dari variabel yang digunakan sebagai nilai awal dalam struktur for tidak
selalu harus bernilai 0, artinya kita dapat memanipulasinya sesuai dengan keinginaan kita
(misalnya dengan nilai 1, 2, 3 ataupun lainnya). Misalnya apabila kita akan melakukan
suatu statemen sebanyak 5 kali, maka kita dapat menuliskannya sebagai berikut.
Selain tipe int, kita juga dapat menggunakan variabel yang bertipe char sebagai
pencacah dalam proses pengulangan. Sebagai contoh apabila kita akan melakukan
pengulangan sebanyak 3 kali, maka kita dapat menuliskannya sebagai berikut.
Contoh 4:
#include <stdio.h>
int main(void)
{
for (char j=‟A‟; j<=‟E‟; j++)
{
printf(“%c = %d\n”, j, j);
}
return 0;
}
Hasil yang akan diberikan dari program di atas adalah seperti yang tampak di
bawah ini.
A = 65
B = 66
C = 67
D = 68
E = 69
1) Melakukan Beberapa Inisialisasi dalam Struktur for
Dalam bahasa C, kita diizinkan untuk melakukan banyak inisialisasi di dalam
struktur for. Hal ini tentu akan dapat mengurangi banyaknya baris kode program. Adapun
cara untuk melakukan hal ini, yaitu dengan menambahkan tanda koma (,) di dalam bagian
inisialisasi, seperti yang tertulis di bawah ini :
int a, b;
for (a=0, b=0; a<5; a++, b+=5)
{ ...
}
int a, b; b = 0;
for (a=0; a<5; a++)
{
...
b += 5; /* dapat ditulis dengan b = b + 5 */
}
Contoh 5:
#include <stdio.h>
int main(void)
{
for (int a=0, int b=0; a < 5; a++, b += 5)
{
printf(“Baris ke-%d : a = %d, b = %2d\n”, a+1, a, b);
}
return 0;
}
Contoh 6
#include <stdio.h>
int main(void) { int b=0;
for (int a=0, a < 5; a++) {
printf(“Baris ke-%d : a = %d, b = %2d\n”, a+1, a, b);
b += 5;
}
return 0;
}
Apabila dijalankan, kedua program di atas akan memberikan hasil yang sama, yaitu
seperti yang tampak di bawah ini.
Baris ke-1 : a = 0, b = 0
Baris ke-2 : a = 1; b = 5
Baris ke-3 : a = 2; b = 10
Baris ke-4 : a = 3; b = 15
Baris ke-5 : a = 4; b = 20
Contoh 7:
#include <stdio.h>
int main(void)
{
int baris, kolom
/* Proses pengulangan pertama */
for (baris=1; baris<=10; baris++)
{
/*Proses pengulangan kedua yanag terdapat dalam pengulangan
pertama*/
for (kolom=1; kolom<=10; kolom++)
{
printf(“%3d ”, baris*kolom)
}
printf(“\n”);
}
return 0;
}
Adapun hasil yang akan diberikan dari program di atas adalah seperti yang tampak
di bawah ini.
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
B. Struktur while
Setelah Anda mengetahui struktur pengulangan jenis pertama, sekarang kita akan
mempelajari struktur pengulangan berikutnya, yaitu struktur while. Pada struktur
pengulangan jenis ini kondisi akan diperiksa di bagian awal. Hal ini tentu menyebabkan
kemungkinan bahwa apabila ternyata kondisi yang kita definisikan tidak terpenuhi
(bernilai salah), maka proses pengulangan pun tidak akan pernah dilakukan. Adapun
bentuk umum dari struktur while adalah seperti yang tampak di bawah ini.
while (ekspresi)
{
Statemen_yang_akan_diulang1;
Statemen_yang_akan_diulang2;
...
}
Sama seperti pada struktur for, struktur pengulangan jenis ini juga memerlukan
suatu inisialisasi nilai pada variabel yang akan digunakan sebagai pencacah, yaitu dengan
menuliskannya di atas blok pengulangan. Selain itu kita juga harus melakukan
penambahan ataupun pengurangan terhadap nilai dari variabel pencacah di dalam blok
pengulangan tersebut. Hal ini bertujuan untuk menghentikan pengulangan sesuai dengan
kondisi yang didefinisikan. Sebagai contoh apabila kita ingin melakukan pengulangan
proses sebanyak 5 kali, maka kita akan menuliskannya sebagai berikut.
Contoh 8:
#include <stdio.h>
int main(void)
{
int j = 1; /* Mendeklarasikan variabel j sebagai
pencacah pengulangan */
jumlah = 0; /* Mendeklarasikan variabel jumlah untuk menampung
jumlah */
while (j <= 5)
{
jumlah += j;
j++;
}
printf(“Jumlah = %d”, jumlah);
return 0;
}
Apabila program tersebut dijalankan maka hasil yang akan diberikan adalah
sebagai berikut.
Jumlah = 15
Contoh 9:
#include <stdio.h>
int main(void)
{
/* Mendeklarasikan variabel j dan menginisialisasinya dengan
nilai 0 */
int j=0;
/* Melakukan pengulangan proses */
while (j<10)
{
printf(“Saya sedang belajar bahasa C\n”);
j++;
}
return 0;
}
Program di atas akan memberikan hasil yang sama dengan program yang
menggunakan struktur for di atas, yaitu seperti di bawah ini.
Contoh 10:
#include <stdio.h>
int main(void)
{
int j=1 /* Mendeklarasikan variabel j sebagai pencacah
pengulangan ke-1 */
int k /* Mendeklarasikan variabel k sebagai pencacah
pengulangan ke-2 */
/* Melakukan pengulangan ke-1 */
while (j <= 10)
{
k = 1;
/* Melakukan pengulangan ke-2 */
while(k <=10 )
{
printf(“%3d ”, j*k);
k++;
}
print(“\n”);
j++;
}
return 0;
}
Hasil yang akan diberikan dari program di atas adalah sebagai berikut.
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Kita dapat juga mengkombinasikan struktur for dan struktur while untuk
melakukan pengulangan bersarang. Berikut ini contoh program yang akan menunjukkan
hal tersebut.
Contoh 11:
#include <stdio.h>
int main(void)
{
int j; /* Mendeklarasikan variabel j sebagai pencacah
pengulangan ke-1 */
int k; /* Mendeklarasikan variabel k sebagai pencacah
pengulangan ke-2 */
for (j=1; j<=5; j++)
{
k = 1
while(k<=j)
{
printf("%2d ", j*k);
k++;
}
printf("\n");
}
j = 4
while (j>=1)
{
for (k=1; k<=j; k++ )
{
printf("%2d ", j*k);
}
printf("\n");
j--
}
return 0;
}
Hasil yang akan diberikan oleh program di atas adalah sebagai berikut.
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
4 8 12 16
3 6 9
2 4
1
C. Struktur do-while
Adapun bentuk umum dari struktur pengulangan do-while adalah seperti yang
tertulis di bawah ini.
do
{
Statemen_yang_akan_diulang; ...
} while (ekspresi); /* Ingat tanda semicolon (;) */
Contoh 12:
#include <stdio.h>
int main(void) { int j;
printf("Statemen sebelum blok pengulangan\n");
j = 10;
while (j < 5) {
printf("Statemen di dalam blok pengulangan\n");
j++;
}
printf("Statemen setelah blok pengulangan\n");
return 0;
}
Hasil yang akan diberikan oleh program di atas adalah sebagai berikut.
Hal ini disebabkan karena variabel j bernilai 10 sehingga kondisi (j < 5) bernilai
salah. Kemudian karena kondisi tidak terpenuhi, maka program tidak akan mengeksesusi
statemen yang terdapat dalam blok pengulangan.
Contoh 13:
#include <stdio.h>
int main(void)
{
int j;
printf("Statemen sebelum blok pengulangan\n");
j = 10;
do
{
printf("Statemen di dalam blok pengulangan\n");
j++;
}
while (j < 5);
printf("Statemen setelah blok pengulangan\n");
return 0;
}
Mungkin Anda akan bertanya kenapa statemen yang terdapat pada blok
pengulangan tersebut ikut dieksekusi padahal kondisi yang didefinisikan tersebut tidak
terpenuhi? Berbeda dengan sebelumnya, kali ini program akan langsung mengeksekusi
statemen yang terdapat dalam blok pengulangan. Setelah itu, program baru akan mengecek
ekspresi (j < 5). Oleh karena variabel j bernilai 10 maka ekspresi tersebut bernilai salah
dan hal ini tentu akan menyebabkan program menghentikan proses pengulangan.
8 16 24 32 40 48 ...
12 24 36 48 60 72 ...
Contoh 14:
#include <stdio.h>
int main(void)
{
/* Mendeklarasikan variabel X, Y dan hasil */
int X, Y, hasil = 0;
printf("Masukkan bilangan ke-1 : ");
scanf("%d", X);
printf("Masukkan bilangan ke-2 : ");
scanf("%d", Y);
/* Melakukan pertukaran nilai */
if (X < Y)
{
int temp = Y;
Y = X;
X = temp;
}
/* Melakukan proses pengulangan */
do
{
hasil += X;
} while (hasil % Y != 0);
printf("\n\nKPK : %d", hasil);
return 0;
}
Contoh hasil yang akan diberikan oleh program di atas adalah seperti yang tampak
di bawah ini.
Bilangan Faktor
8 1, 2, 4, 8
12 1, 2, 3, 4, 6, 12
Adapun sintak program yang dapat menentukan nilai tersebut adalah sebagai
berikut.
Contoh 15:
#include <stdio.h>
int main(void)
{
int X, Y, sisa; /* Mendeklarasikan variabel X, Y dan sisa
*/
printf("Masukkan bilangan ke-1 : ");
scanf("%d", X);
printf("Masukkan bilangan ke-2 : ");
scanf("%d", Y);
/* Melakukan pertukaran nilai */
if (X < Y)
{
int temp = Y;
Y = X;
X = temp;
}
/* Melakukan proses pengulangan */
do
{
sisa = X % Y;
X = Y;
Y = sisa;
}
while (sisa != 0);
printf("\n\nFPB : %d", X);
return 0;
}
Adapun contoh hasil yang akan diberikan dari program di atas adalah seperti yang tampak
di bawah ini.
Masukkan bilangan ke-1 : 8
Masukkan bilangan ke-2 : 12
FPB : 4
Tugas (Dikerjakan Secara Individu)