Anda di halaman 1dari 42

Looping

1
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
ž  Memahami struktur kendali pengulangan (looping)
dan memanfaatkannya dalam pembuatan aplikasi
program komputer dengan bahasa pemrograman C/C+
+.

2
Struktur Pengulangan (looping)
ž  Konstruksi for, while dan do-while
ž  Nested dan infinite loop
ž  Compound atau Block statement
ž  Break dan Continue

3
Struktur Pengulangan

î  Struktur pengulangan dimaksudkan


untuk melakukan proses pengulangan
dari beberapa instruksi dalam
sejumlah pengulangan tertentu
î  Jumlah pengulangan dapat ditentukan
sebelumnya atau ditentukan dalam
proses pelaksanaan pengulangan.
î  Tiga macam struktur pengulangan dalam
pemrograman terstruktur, yaitu:
–  Struktur for
–  Struktur while
–  Struktur do-while

4
ž  Konstruksi for
for  (exp1;  exp2;  exp3)  statement;  
atau:  
for  (exp1;  exp2;  exp3){  
   statement1;  
   statement2;  
   …….  
 }  
exp1 : adalah ekspresi untuk inisialisasi,
exp2 : adalah ekspresi conditional
exp3 : adalah ekspresi increment atau decrement

exp1, exp2 dan exp3 adalah sifatnya optional
(boleh ada boleh tidak ada).

5
ž  Struktur logika pengulangan for

exp1

exp3

statements

true
exp2
false

6
ž  Contoh :
ü  for  (x=1;  x  <=  10;  x++)  prin>( %d\n ,x);  

x=1

x++

printf( %d\n ,x)

x<=10 true

false
7
ž  exp1 dan exp3 boleh terdiri dari beberapa
ekspresi yang dipisahkan dengan koma.
#include <stdio.h>
ž  Contoh: #include <iostream.h>
int main () {
int i,j;
for(i=1, j=30; i<j; i++, j--){
printf("%04d -- %04d\n", i,j);
}
printf("\n\n");
system("PAUSE");
return(0);
}
8
ž  Contoh : Program mencetak angka dari 10 sampai 1
•  Program mencetak angka dari 1 sampai 10
#include<stdio.h>
int main()
{ int x;
for( x = 1 ; x <= 10 ; x++ )
printf( "%d\n", x );
return(0);
}

#include<stdio.h>
int main()
{ int x;
for( x = 10 ; x >= 1 ; x-- )
printf( "%d\n", x);
return(0);
}
9
ž  Contoh penggunaan for untuk menghitung
rata-rata pengeluaran uang bensin selama
satu bulan, dengan data sbb :
Minggu Pengeluaran
1 Rp. 32.000,-
2 Rp. 29.000,-
3 Rp. 33.000,-
4 Rp. 24.000,-

Algoritma :
1. Variabel jumlah diberi nilai nol
2. Baca data pengeluaran bensin dari keyboard dan simpan
ke variabel data
3. Tambahkan data ke jumlah
4. Ulangi 2 dan 3 sebanyak 4 kali
5. Rerata = Jumlah / 4
10
ž  Program dalam C:
/*----------------------------------*/
/* Program Hitung_rata */
/*----------------------------------*/
#include<stdio.h>
int main()
{ float data, jumlah, rerata;
int x;
jumlah = 0.0;
for( x = 1; x <= 4; x++) {
printf( Data minggu ke-%d : ,x) ;
scanf( %f ,&data);
jumlah = jumlah + data;
}
rerata = jumlah / 4;
printf( Rerata = Rp %8.2f\n ,rerata);
return(0);
}
11
ž  Infinite Loop
Untuk membuat infinite loop dapat dilakukan
dengan menggunakan for-loop , dengan
menghilangkan ketiga parameter (exp1, exp2,
exp3) yang ada pada for loop. Untuk keluar
dari loop dapat digunakan statement break.
ž  Contoh:
#include <stdio.h>
#include <iostream.h>
int main () { int i = 0;
for(;;) { i++; printf("%d ", i);
if (i>=10) break;
}
printf("\n\n");
system("PAUSE");
return(0);
} 12
ž  Nested Loop
Jika di dalam sebuah pengulangan terdapat
statement pengulangan. Pengulangan akan
dijalankan dimulai dari pengulangan
terdalam.
int x, y;
Bahasa C for (x=1;x<=5;x++)
for (y=5; y>=1; y--)
Bahasa C++
(diperbolehkan)
printf( %d %d ,x,y);

for (int x=1;x<=5;x++) Output :


for (int y=5; y>=1; y--)
1 5 1 4 1 3 .. 2 5 2 4 .. 5 1
printf( %d %d ,x,y);
13
ž  Contoh :
#include <stdio.h>
#include <iostream.h>
int main () {
int p,q;
printf("===========================================\n");
printf(" p q p or q p and q not p p xor q\n");
printf("===========================================\n");
for(p=1; p>=0; p--)
for(q = 1; q>=0; q--)
printf("%2d %2d %6d %8d %8d %8d\n",p, q, p||q, p&&q, !p, p^q );
printf("===========================================\n");
printf("\n\n");
system("PAUSE");
return(0);
}

14
ž  Sintaks :
while (eks.boolean) statements;
atau :
while(eks.boolean){
statement1;
statement2;
statements
…..
}
true
eks. boolean

false

15
ž  Contoh :
ü  while(product <= 1000) product = 2*product;

product=2*product;

true
product <= 1000

false

16
ž  Contoh program:
#include <stdio.h>
#include <iostream.h>
int main () {
int n,i,f;
printf("MENGHITUNG NILAI FAKTORIAL n (n!)\n\n");
printf("Masukkan sebarang bilangan integer: "); scanf("%i",&n);
i = n; f = n;
while (i>1){
i--; f=f*i;
}
printf("%d! = %d\n\n",n,f);
system("PAUSE");
return(0);
}

17
ž  Kesetaraan for dengan while sbb:
exp1;

while ( exp2 ) {
 for (exp1; exp2; exp3 ) {

statement1; statement1;
statement2; statement2;
…. setara
….

exp3
 }
}

ž  Contoh:

#include<stdio.h>
#include<stdio.h> void main() {
void main() { int x;
int x = 1; serupa dg for( x = 1 ; x <= 10 ; x++ )
while (x<=10) { printf( "%d\n", x );
printf( "%d\n", x ); }
x++;
}
18
ž  Sintaks :
do statement while (eks.boolean);
atau :
statements
do {
statement1; true
eks. boolean
statement2;
….. false
} while(eks.boolean)

ž  Selama eks.boolean bernilai true maka


statements dieksekusi berulang-ulang.
ž  Pengetesan eks.boolean dilakukan setelah
meng-eksekusi statements.
19
ž  Contoh:
int i = 0;
do { I=0
printf( %d\n , i);
} while(++i <=10);

Cetak
i

true
++i <= 10
fals
e

20
ž  Pada pengulangan while, statement atau
blok statement mungkin tidak akan pernah
dilaksanakan, bila nilai ekspresi boolen
bernilai false, karena operasi
pengulangan diawali dengan mengeksekusi
ekspresi boolean terlebih dahulu.
ž  Pada pengulangan do-while statement atau
blok statement pasti dikerjakan paling
sedikit satu kali, karena ekspresi
boolean baru diuji pada akhir blok
pengulangan.

21
ž  Beberapa cara untuk menghentikan
pengulangan untuk program interaktif, di
antaranya dapat dilakukan dengan
menambah:
•  Sentinel atau Pembatas dengan kode
khusus.
•  Pertanyaan,misalkan: Apakah
pengulangan akan dilanjutkan? .

22
ž  Contoh : Cara sentinel pada konstruksi do-while dengan
memakai nilai 0 pada variabel panjang dan variabel lebar.

#include <stdio.h>
int main()
{ int panjang,lebar,luas; char ulang;
do{ printf( Panjang [0=selesai] : );
scanf( %d ,&panjang);
printf( Lebar [0=selesai] : );
scanf( %d ,&lebar);
luas = panjang * lebar;
printf( Luas = %d\n ,luas);
} while((panjang != 0) && (lebar != 0));
return(0);
}
23
ž  Contoh : Cara Pertanyaan pada konstruksi
While
#include <stdio.h>
int main()
{ int panjang, lebar, luar; char ulang;
printf( Teruskan Perhitungan ? (Y/T) : );
scanf( %c ,&ulang);
while((toupper(ulang)) == Y ) {
printf( Panjang : ); scanf( %d ,&panjang);
printf( Lebar : ); scanf( %d ,&lebar);
luas = panjang * lebar;
printf( Luas = %d\n\n ,luas);
printf( Teruskan Perhitungan?(Y/T): );
scanf( %c ,&ulang);
}
return(0);
}
24
ž  break
•  Digunakan untuk keluar dari loop (for,
while dan do-while)
•  Digunakan untuk keluar dari switch

ž  continue
•  skip sisa instruksi dalam loop, dan
eksekusi loop berjalan ke tahap
selanjutnya

25
Ø  Contoh penggunaan statement break pada loop yang
menyebabkan program keluar dari loop tersebut

#include<stdio.h>
int main() {
int x = 1;
while (x<=10) {
printf( "%d\n", x );
x++;
if (x>5) break;
}
return 0;
} Keluar dari loop

26
ž  Contoh:

#include <stdio.h>
int main() {
int x;
for(x=1; x<=10; x++) {
if (x == 5) continue;
printf("%d ", x);
}
return 0;
}
Output : 1 2 3 4 6 7 8 9 10

27
do {
do {
scanf( %f , &x);
scanf( %f , &x);
if(x<0) {
if(x<0) {
printf \nEror.
printf \nEror.
Negatif );
Negatif );
continue;
break;
}
}
/*Proses nonnegatif */
/*Proses nonnegatif */


} while(exp);
} while(exp);

28
for (i=k; i < n; i++)
printf( Teknik Informatika\n );

Jika k < n maka berapa kali kata Teknik
Informatika di cetak dilayar monitor?
Jika k=n maka berapa kali kata Teknik
Informatika di cetak dilayar monitor ?
Jika k > n maka berapa kali kata Teknik
Informatika di cetak dilayar monitor ?

29
for (i=k; i >= n; i--)
printf( Teknik Informatika \n );

Jika k < n maka berapa kali kata TI-UMS di cetak dilayar


monitor ?
Jika k=n maka berapa kali kata TI-UMS di cetak dilayar
monitor ?
Jika k > n maka berapa kali kata TI-UMS di cetak dilayar
monitor ?

30
ž  Dapatkah infinite/forever loop ditulis
menggunakan for loop, while loop dan do-
while loop ?
ž  Jika p = pernyataan dan e = ekspresi,
ubahlah loop for berikut menjadi loop
while.
a. for(; e ;) p;
b. for(; ; e) p;

31
ž  Bandingkan dua buah sintaks for berikut
ini :
for (i=0, j=1; i<8; i++, j++) printf("%d + %d = %d\n", i, j, i+j);
for (i=0, j=1; i<8; ++i, ++j); printf("%d + %d = %d\n", i, j, i+j);
Jelaskan outputnya dan perbedaannya
dari dua potongan program di atas!

32
APA OUTPUT PROGRAM BERIKUT ??

#include <stdio.h>
int main() awas! Ada titik koma
{
int x,y; #include <stdio.h>
for(x=1;x<=3;x++) int main()
for (y=3;y>=1;y--) {
printf("%d %d ",x,y);
int x,y;
return 0;
} for(x=1;x<=3;x++);
for (y=3;y>=1;y--)
printf("%d %d ",x,y);
return 0;
}
33
APA OUTPUT PROGRAM BERIKUT ??

awas! ada titik


#include <stdio.h>
koma
int main()
{ #include <stdio.h>
int x,y; int main()
for(x=1;x<=3;x++)
{
for (y=3;y>=1;y--);
printf("%d %d ",x,y); int x,y;
return 0; for (x=1;x<=3;x++);
} for (y=3;y>=1;y--);
printf("%d %d ",x,y);
return 0;
Awas! ada titik }
koma
34
Jelaskan output program berikut ini :
#include<stdio.h>

int main() {
int nilai = 0, jumlah = 0;
while(nilai < 10) {
jumlah += nilai;
printf( \nNilai =%d, Jumlah =%d , nilai++, jumlah);
}
return 0;
}

35
ž  Jelaskan output program berikut ini :

#include<stdio.h>

int main() {
long bil, tmp, x=1;
printf( \nInput bil: ); scanf( %d , &bil);
tmp=bil;
while(bil >= 1) x*=bil--;
printf( \n%ld ! = %ld ,tmp, x);

return 0;
}

36
ž  Buat program untuk menampilkan bilangan
ganjil dari 11 s/d 188, dengan
menggunakan :
•  for
•  while
•  do - while

37
ž  Diasumsikan hari 1 menyatakan senin, 2 -
selasa, 3 - rabu,…, 7 – minggu. Buatlah
sebuah program untuk menampilkan angka
hari sebanyak n yang diinput dari
keyboard. Perhatikan pola berikut :
n = 3
2 3

n = 7
2 3 4 5 6 7

n = 10
1 2 3 4 5 6 7 1 2 3

38
Ø  Berapa kali kata Hello dicetak di layar monitor
oleh setiap potongan program di bawah ini?
int x ;
for(x=0 ; x<10 ; x++) printf int x=0;
("Hello\n"); for( ; ; ){
if(x<10) printf
("Hello\n");
int x=0; else break;
for( ; x<10 ; x++) printf x++;
("Hello\n"); }

int x=0;
for( ; ; x++){
if(x<10) printf("Hello
\n");
else break;
} 39
ž  Buatlah program untuk menampilkan gambar
seperti contoh dibawah, dimana n variabel
integer yg nilainya di-input dari keyboard
(dengan for, while atau do-while loop).

*
**
*** n
****
*****
n

40
ž  Buatlah program untuk menampilkan gambar
seperti contoh dibawah, dimana n variabel
integer yg nilainya di-input dari keyboard
(dengan for, while atau do-while loop).

*****
****
*** n
**
*
n

41
Apa Output dari program di bawah ini?

#include <stdio.h>
int main()
{ int x,y,z;
for (x=0; x<4; x++) {
for (y=0; y<3; y++) {
for (z=0; z<3; z++) {
if (z==2) break;
}
printf("Selamat\n");
}
printf("Datang\n");
}
printf("di TI_UMS\n");
getch();
return(0);
}

42

Anda mungkin juga menyukai