Pengulangan (looping)

38
DPK UNIVERSITAS BRAWIJAYA MALANG

description

Pengulangan (looping). DPK. UNIVERSITAS BRAWIJAYA MALANG. Contoh Algoritma. Algoritma Sarapan Pagi Mulai Ambil piring Masukkan nasi dan lauk dalam piring Ambil sendok dan garpu Ulangi Angkat sendok dan garpu Ambil nasi dan lauk Suapkan ke dalam mulut Taruh sendok dan garpu Kunyah - PowerPoint PPT Presentation

Transcript of Pengulangan (looping)

Page 1: Pengulangan  (looping)

DPK

UNIVERSITAS BRAWIJAYAMALANG

Page 2: Pengulangan  (looping)

Algoritma Sarapan Pagi

MulaiAmbil piringMasukkan nasi dan lauk dalam piringAmbil sendok dan garpuUlangi

Angkat sendok dan garpuAmbil nasi dan laukSuapkan ke dalam mulutTaruh sendok dan garpuKunyah

Sampai (nasi dan lauk habis) ATAU kekenyangan Bereskan piring, sendok dan garpu

Selesai

2

Page 3: Pengulangan  (looping)

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

3

Page 4: Pengulangan  (looping)

Konstruksi forfor (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).

4

Page 5: Pengulangan  (looping)

5

Struktur logika pengulangan for

exp1

exp3

statements

exp2true

false

exp1

exp3

statements

exp2true

false

Page 6: Pengulangan  (looping)

6

Contoh : for (x=1; x <= 10; x++) printf(“%d\n”,x);

x = 1

x++

printf(“%d\n”,x)

x<=10

true

false

Page 7: Pengulangan  (looping)

Contoh :

7

#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);}

Page 8: Pengulangan  (looping)

Infinite LoopUntuk 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:

8

#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);}

Page 9: Pengulangan  (looping)

Nested LoopJika di dalam sebuah pengulangan terdapat statement pengulangan. Pengulangan akan dijalankan dimulai dari pengulangan terdalam.

9

for (int x=1;x<=5;x++) for (int y=5; y>=1;

y--) printf(”%d %d

”,x,y);

Output :

1 5 1 4 1 3 .. 2 5 2 4 .. 5 1

int x, y;for (x=1;x<=5;x++) for (y=5; y>=1; y--) printf(”%d %d ”,x,y);

Bahasa C

Bahasa C++(diperbolehkan)

Page 10: Pengulangan  (looping)

Sintaks :while (eks.boolean) statements;

atau :

while(eks.boolean){ statement1; statement2; …..}

10

eks. boolean

statements

true

false

Page 11: Pengulangan  (looping)

Contoh : while(product <= 1000) product = 2*product;

11

product <= 1000

product=2*product;

false

true

Page 12: Pengulangan  (looping)

Kesetaraan for dengan while sbb:

Contoh:

12

#include<stdio.h>void main() { int x; for( x = 1 ; x <= 10 ; x++ ) printf( "%d\n", x );}

#include<stdio.h>void main() { int x = 1; while (x<=10) { printf( "%d\n", x ); x++; }}

exp1;while ( exp2 ) { statement1; statement2; …. exp3}

for (exp1; exp2; exp3 ) { statement1; statement2; ….}

setara

serupa dg

Page 13: Pengulangan  (looping)

Sintaks :do statement while (eks.boolean);

atau :

do { statement1; statement2; …..} while(eks.boolean)

Selama eks.boolean bernilai true maka statements dieksekusi berulang-ulang.

Pengetesan eks.boolean dilakukan setelah meng-eksekusi statements.

13

eks. boolean

true

false

statements

Page 14: Pengulangan  (looping)

Contoh:int i = 0;do {

printf(”%d\n”, i);} while(++i <=10);

14

++i <= 10true

false

I = 0

Cetaki

Page 15: Pengulangan  (looping)

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.

15

Page 16: Pengulangan  (looping)

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?”.

16

Page 17: Pengulangan  (looping)

Contoh : Cara ‘sentinel’ pada konstruksi do-while dengan memakai nilai 0 pada variabel panjang dan variabel lebar.

17

#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);}

Page 18: Pengulangan  (looping)

Contoh : Cara ‘Pertanyaan’ pada konstruksi While

18

#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);}

Page 19: Pengulangan  (looping)

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

19

Page 20: Pengulangan  (looping)

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

20

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

Keluar dari loop

Page 21: Pengulangan  (looping)

Contoh:

21

#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

Page 22: Pengulangan  (looping)

22

do {

scanf(“%f”, &x);

if(x<0) {

printf”\nEror. Negatif”);

break;

}

/*Proses nonnegatif */

} while(exp);

do {

scanf(“%f”, &x);

if(x<0) {

printf”\nEror. Negatif”);

continue;

}

/*Proses nonnegatif */

} while(exp);

Page 23: Pengulangan  (looping)

for (i=k; i < n; i++) printf(”TIF-FTUB\n”);

1. Jika k < n maka berapa kali kata TIF-FTUB di cetak dilayar monitor?

2. Jika k=n maka berapa kali kata TIF-FTUB di cetak dilayar monitor ?

3. Jika k > n maka berapa kali kata TIF-FTUB di cetak dilayar monitor ?

23

Page 24: Pengulangan  (looping)

for (i=k; i >= n; i--) printf(” TIF-FTUB \n”);

1. Jika k < n maka berapa kali kata TIF-FTUB di cetak dilayar monitor ?

2. Jika k=n maka berapa kali kata TIF-FTUB di cetak dilayar monitor ?

3. Jika k > n maka berapa kali kata TIF-FTUB di cetak dilayar monitor ?

24

Page 25: Pengulangan  (looping)

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;

25

Page 26: Pengulangan  (looping)

Bandingkan dua buah sintaks for berikut ini :

Jelaskan outputnya dan perbedaannya dari dua potongan program di atas!

26

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);

Page 27: Pengulangan  (looping)

#include <stdio.h>int main(){ int x,y; for(x=1;x<=3;x++) for (y=3;y>=1;y--) printf("%d %d

",x,y); return 0;}

27

#include <stdio.h>int main(){ int x,y; for(x=1;x<=3;x++); for (y=3;y>=1;y--) printf("%d %d ",x,y); return 0;}

APA OUTPUT PROGRAM BERIKUT ??

awas! Ada titik koma

Page 28: Pengulangan  (looping)

#include <stdio.h>int main(){ int x,y; for(x=1;x<=3;x++) for (y=3;y>=1;y--); printf("%d %d

",x,y); return 0;}

28

#include <stdio.h>int main(){ int x,y; for (x=1;x<=3;x++); for (y=3;y>=1;y--); printf("%d %d ",x,y); return 0;}

APA OUTPUT PROGRAM BERIKUT ??

awas! ada titik koma

Awas! ada titik koma

Page 29: Pengulangan  (looping)

Jelaskan output program berikut ini :

29

#include<stdio.h>

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

Page 30: Pengulangan  (looping)

Jelaskan output program berikut ini :

30

#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;}

Page 31: Pengulangan  (looping)

Buat program untuk menampilkan bilangan ganjil dari 11 s/d 188, dengan menggunakan :

• for • while• do - while

31

Page 32: Pengulangan  (looping)

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 1 2 3

n = 71 2 3 4 5 6 7

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

32

Page 33: Pengulangan  (looping)

int x ; for(x=0 ; x<10 ; x++) printf("Hello\n");

33

Berapa kali kata Hello dicetak di layar monitor oleh setiap potongan program di bawah ini?

int x=0; for( ; x<10 ; x++) printf("Hello\n");

int x=0;for( ; ; x++){ if(x<10) printf("Hello\n"); else break;}

int x=0;for( ; ; ){ if(x<10) printf("Hello\n"); else break; x++;}

Page 34: Pengulangan  (looping)

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).

** ** * ** * * ** * * * *

34

n

n

Page 35: Pengulangan  (looping)

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).

* * * * ** * * ** * ** * *

35

n

n

Page 36: Pengulangan  (looping)

Apa Output dari program di bawah ini?

36

#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 TIF-FTUB\n"); getch(); return(0);}

Page 37: Pengulangan  (looping)

37

Struktur logika pengulangan for

exp1

exp3

statements

exp2true

false

Page 38: Pengulangan  (looping)

38

exp1

exp3

statements

exp2true

false

Struktur logika pengulangan for