STRUKTUR KENDALI PROSES
STRUKTUR KENDALI PENGULANGAN Mengulang satu atau lebih instruksi untuk jumlah pengulangan tertentu. Jumlah pengulangan ada dua jenis : Jumlah pengulangan diketahui sebelum proses Jumlah pengulangan tidak diketahui sebelum proses Struktur pengulangan terdiri atas dua bagian : 1. Kondisi pengulangan yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan 2. Isi atau badan pengulangan yaitu satu atau lebih instruksi yang akan diulang. Perintah atau notasi dalam struktur pengulangan adalah : 1. Pernyataan for 2. Pernyataan while 3. Pernyataan do .. while 4. Pernyataan continue dan break 5. Pernyataan go to
STRUKTUR KENDALI PENGULANGAN Instruksi for Instruksi for digunakan untuk menghasilkan pengulangan(looping) beberapa kali. Pada umumnya jumlah pengulangan yang dilakukan oleh for telah diketahui awal, kondisi pengulangan dan perubahannya. Selama kondisi terpenuhi, maka statement akan terus dieksekusi. Syntax : for ([expr1];[expr2];[expr3]) statement; Expr1 untuk inisialisasi, berupa satu atau beberapa instruksi yang dipisahkan koma. Expr2 berupa ekspresi kondisional untuk menentukan kondisi pengulangan. Selama menghasilkan nilai true, maka statement dikerjakan Expr3 untuk menaikkan atau menurunkan nilai pengendali
STRUKTUR KENDALI PENGULANGAN for(expr1;expr2;expr3) { statement; } Expr1 dikerjakan hanya sekali (nilai awal) Expr2 diperiksa, jika true, kerjakan statement Expr3 dikerjakan Proses berulang hingga expr2 bernilai false expr1 expr2 statement expr3 True next statements False
STRUKTUR KENDALI PENGULANGAN while (kondisi) { statement; } while biasa digunakan untuk pengulangan statement dimana jumlah pengulangan tidak diketahui. Statement yang ada didalam while bisa diabaikan sama sekali (tidak dikerjakan) apabila di saat awal, kondisi sudah bernilai false. Statement akan terus dikerjakan selama kondisi masih bernilai true. kondisi statement true false
STRUKTUR KENDALI PENGULANGAN kondisi statement true false do { statement; } while (kondisi); Sama seperti while, do…while biasa digunakan untuk pengulangan statement dimana jumlah pengulangan tidak diketahui. Perbedaannya, statement didalam do .. while dikerjakan minimal satu kali. Statement akan terus dikerjakan selama kondisi masih bernilai true.
CONTOH PEMAKAIAN FOR # include <stdio.h> # include <conio.h> int main() { int i, j, tripel; for(i = 1; i <= 6; i++) tripel = 3 * i; printf("3 *%2d =%3d ", i, tripel); for(j = 0; j < tripel; j++) putch('*'); printf("\n"); } system(“pause”); return 0; 3 * 1 = 3 *** 3 * 2 = 6 ****** 3 * 3 = 9 ********* 3 * 4 = 12 ************ 3 * 5 = 15 *************** 3 * 6 = 18 ****************** Thompson S.Ngoen
LATIHAN FOR Apa yang terjadi dengan instruksi for berikut? for ( a = 0; a < 10; a++ ) printf(“%d ”, a); for ( b = 10; b < 0; b++ ) printf(“%d ”, b); for ( c = 1; c < 15; c += 2 ) printf(“%d ”, c); for ( d = 3; d < 10; ) printf(“%d ”, d*d); for ( e = 1; e < 10; e++ ) { printf(“%d ”, e); e = e + 1; } g = 100; for (f = 0; f < 100; f++) g++; printf(“%d ”, g); Thompson S.Ngoen
NESTED FOR for ( i = 2; i < 4; i++ ) for (j = 5; j < 8; j++) printf(”%d * %d = %d\n”, i, j, i * j ); i j Tercetak 2 5 2 * 5 = 10 6 2 * 6 = 12 7 2 * 7 = 14 8 3 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 4 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 Thompson S.Ngoen
CONTOH PEMAKAIAN WHILE # include <stdio.h> # include <conio.h> int main() { int bil = 1, sum = 0, ctr = 0; float avg; printf("Ketik sejumlah bilangan, diakhiri 0 \n"); while(bil != 0) scanf("%d", &bil); sum += bil; ctr++; } avg = (float) sum / (ctr - 1); printf("jumlah nilai = %d \n", sum); printf("rerata = %.2f ", avg); system(“pause”); return 0; Ketik sejumlah bilangan, diakhiri 0 45 37 29 66 83 7 0 jumlah nilai = 267 rerata = 44.50 Thompson S.Ngoen
LATIHAN WHILE Apa yang terjadi dengan instruksi while berikut? A B C D while (a < 10) printf(“%d ”, a); b = 10; while (b < 20) { printf(“%d ”, b); b += 2; } jawab = ‘ ‘; while (jawab != ‘Y’ && jawab != ‘T’) jawab = getchar(); while (jawab != ‘Y’ || jawab != ‘T’) Thompson S.Ngoen
CONTOH PEMAKAIAN DO WHILE Tebak angka 0 s/d 100 bilangan ? 50 terlalu kecil ... bilangan ? 75 terlalu besar ... bilangan ? 60 bilangan ? 67 bilangan ? 65 bilangan ? 66 TEPAT ... CONTOH PEMAKAIAN DO WHILE # include <stdio.h> # include <stdlib.h> int main() { int tebak, jawab; randomize(); jawab = random(101); printf("Tebak angka 0 s/d 100\n\n"); do { printf("bilangan ? "); scanf("%d", &tebak); if (tebak == jawab) printf("TEPAT ..."); else if (tebak < jawab) printf("terlalu kecil ...\n"); printf("terlalu besar ...\n"); } while (tebak != jawab); system(“pause”); return 0; } Tebak angka 0 s/d 100 bilangan ? 50 terlalu besar ... bilangan ? 35 bilangan ? 15 terlalu kecil ... bilangan ? 25 bilangan ? 30 bilangan ? 27 TEPAT ... Thompson S.Ngoen
LATIHAN DO WHILE Apa yang terjadi dengan instruksi do while berikut? A C a = 10; do { printf(“%d ”, a); } while (a < 100); scanf(“%d”, &b); } while (b < 0); jawab = getchar(); } while (jawab != ‘Y’ && jawab != ‘T’) Thompson S.Ngoen
INFINITE LOOP Infinite loop adalah pengulangan tanpa akhir. Jika kondisi pengulangan selalu true maka pengulangan akan terjadi terus menerus. for (... ; 1 ; ...) { ... } do { } while (1); while (1) Thompson S.Ngoen
break dan continue break digunakan untuk menghentikan sebuah pengulangan, walaupun sebenarnya kondisi masih mungkin bernilai true. Selain untuk pengulangan, break juga digunakan untuk switch Contoh : #include <stdio.h> #include <stdlib.h> int main() { int a; for(a=1;a < 5;a ++) printf(“a = %d\n”,a); if(a==3) break; } system(“PAUSE”); return 0;
break dan continue continue digunakan untuk melanjutkan ke pengulangan berikutnya dengan mengabaikan semua statement yang ada setelah statement continue tersebut. Contoh : #include <stdio.h> #include <stdlib.h> int main() { int i; for(i=0;i<=100;i++) if(i % 2 == 0) continue; printf(“%3d”,i); } system(“pause”); return 0;
CONTOH PEMAKAIAN BREAK # include <stdio.h> # include <conio.h> int main() { float pj, lb, ls; printf("PERSEGI PANJANG \n"); do { printf("\nPanjang ? "); scanf("%f", &pj); if (pj <= 0.0) break; printf("Lebar ? "); scanf("%f", &lb); ls = pj * lb; printf("Luas = %.2f\n", ls); } while(1); system(“pause”); return 0; } PERSEGI PANJANG Panjang ? 10 Lebar ? 3.5 Luas = 35.00 Panjang ? 12.45 Lebar ? 6.8 Luas = 84.66 Panjang ? 0 Thompson S.Ngoen
CONTOH PEMAKAIAN CONTINUE # include <stdio.h> # include <conio.h> int main() { int i, j; for (i = 1; i <= 10; i++) if (i % 3 == 0) continue; printf("%2d ", i); for (j = 0; j < i; j++) putchar('*'); printf("\n"); } system(“pause”); return 0; 1 * 2 ** 4 **** 5 ***** 7 ******* 8 ******** 10 ********** Thompson S.Ngoen
References : Thompson SN, 2009, Algoritma dan Struktur Data dengan C. Deitel, PJ, HM.Deitel, 2007, C How to Program, 5th Edition.