400 likes | 586 Views
Pengulangan (looping). Review DPK. Issa Arwani , S.kom, M.sc. Issa.arwani@ub.ac.id 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
E N D
Pengulangan (looping) Review DPK IssaArwani, S.kom, M.sc. Issa.arwani@ub.ac.id UNIVERSITAS BRAWIJAYA MALANG
ContohAlgoritma AlgoritmaSarapanPagi Mulai Ambilpiring Masukkannasidanlaukdalampiring Ambilsendokdangarpu Ulangi Angkatsendokdangarpu Ambilnasidanlauk Suapkankedalammulut Taruhsendokdangarpu Kunyah Sampai (nasidanlaukhabis) ATAU kekenyangan Bereskanpiring, sendokdangarpu Selesai
Struktur Pengulanangan • Strukturpengulangandimaksudkanuntukmelakukanprosespengulangandaribeberapainstruksidalamsejumlahpengulangantertentu • Jumlahpengulangandapatditentukansebelumnyaatauditentukandalamprosespelaksanaanpengulangan. • Tigamacam struktur pengulangan dalam pemrograman terstruktur, yaitu: • Struktur for • Struktur while • Struktur do-while
Struktur Pengulangan for • Konstruksifor for(exp1; exp2; exp3) statement; atau: for(exp1; exp2; exp3){ statement1; statement2; ……. } exp1:adalahekspresiuntukinisialisasi, exp2:adalahekspresi conditional exp3:adalahekspresi increment ataudecrement exp1, exp2 dan exp3 adalahsifatnya optional (bolehadabolehtidakada).
Struktur Pengulangan for exp1 exp1 exp3 exp3 statements statements true true exp2 exp2 false false Strukturlogikapengulangan for
Struktur Pengulangan for x = 1 x++ printf(“%d\n”,x) true x<=10 false • Contoh : • for (x=1; x <= 10; x++) printf(“%d\n”,x);
Struktur Pengulangan for #include<stdio.h> int main() { intx; for( x = 1 ; x <= 10 ; x++ ) printf( "%d\n", x ); return(0); } #include<stdio.h> int main() { intx; for( x = 10 ; x >= 1 ; x-- ) printf( "%d\n", x); return(0); } Contoh :
Struktur Pengulangan for #include <stdio.h> #include <iostream.h> int main () { inti = 0; for(;;) { i++; printf("%d ", i); if (i>=10) break; } printf("\n\n"); system("PAUSE"); return(0); } • Infinite Loop Untukmembuat infinite loop dapatdilakukandenganmenggunakan “for-loop”, denganmenghilangkanketiga parameter (exp1, exp2, exp3) yang adapada for loop. Untukkeluardari loop dapatdigunakan statement break. • Contoh:
Struktur Pengulangan for 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) 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 • Nested Loop Jikadidalamsebuahpengulanganterdapat statement pengulangan. Pengulanganakandijalankandimulaidaripengulanganterdalam.
Struktur Pengulangan while statements true eks. boolean false • Sintaks : while (eks.boolean) statements; atau : while(eks.boolean){ statement1; statement2; ….. }
Struktur Pengulangan while product=2*product; product <= 1000 true false • Contoh : • while(product <= 1000) product = 2*product;
Struktur Pengulangan while exp1;while( exp2 ) { statement1; statement2; …. exp3} for(exp1; exp2; exp3 ) { statement1; statement2; ….} setara #include<stdio.h> void main() { intx = 1; while (x<=10) { printf( "%d\n", x ); x++; } } #include<stdio.h> void main() { int x; for( x = 1 ; x <= 10 ; x++ ) printf( "%d\n", x ); } serupa dg • Kesetaraan for denganwhile sbb: • Contoh:
Struktur Pengulangan do - while statements true eks. boolean false • Sintaks : do statement while (eks.boolean); atau : do { statement1; statement2; ….. } while(eks.boolean) • Selamaeks.booleanbernilaitrue makastatements dieksekusiberulang-ulang. • Pengetesaneks.booleandilakukansetelahmeng-eksekusistatements.
Struktur Pengulangan do - while I = 0 Cetak i true ++i <= 10 false • Contoh: inti = 0; do { printf(”%d\n”, i); } while(++i<=10);
Pengulangan Padapengulanganwhile, statement ataublok statement mungkintidakakanpernahdilaksanakan, bilanilaiekspresiboolenbernilaifalse, karenaoperasipengulangandiawalidenganmengeksekusiekspresibooleanterlebihdahulu. Padapengulangando-whilestatement ataublok statement pastidikerjakan paling sedikitsatu kali, karenaekspresibooleanbarudiujipadaakhirblokpengulangan.
Pengulangan • Beberapacarauntukmenghentikanpengulangan untuk program interaktif, di antaranya dapatdilakukandenganmenambah: • SentinelatauPembatasdengankodekhusus. • Pertanyaan, misalkan: “Apakahpengulanganakandilanjutkan?”.
Pengulangan #include <stdio.h> int main() { intpanjang,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); } • Contoh : Cara ‘sentinel’ padakonstruksido-while dengan memakai nilai0 padavariabelpanjangdan variabellebar.
Pengulangan #include <stdio.h> intmain() { intpanjang, lebar, luar; char ulang; printf(”TeruskanPerhitungan ? (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(”TeruskanPerhitungan?(Y/T):”); scanf(”%c”,&ulang); } return(0); } Contoh : Cara ‘Pertanyaan’ padakonstruksi While
Statement break dan continue • break • Digunakanuntukkeluardari loop (for, while dan do-while) • Digunakanuntukkeluardari switch • continue • skip sisainstruksidalam loop, daneksekusi loop berjalanketahapselanjutnya
Break • Contoh penggunaan statement breakpadaloop yangmenyebabkan program keluardari loop tersebut Keluardari loop #include<stdio.h> int main() { int x = 1; while (x<=10) { printf( "%d\n", x ); x++; if (x>5) break; } return 0; }
continue #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 Contoh:
break vs continue do { scanf(“%f”, &x); if(x<0) { printf”\nEror. Negatif”); continue; } /*Prosesnonnegatif */ … } while(exp); • do { • scanf(“%f”, &x); • if(x<0) { • printf”\nEror. Negatif”); • break; • } • /*Prosesnonnegatif */ • … • } while(exp);
Latihan for (i=k; i < n; i++) printf(”TIF-FTUB\n”); • Jika k < n makaberapa kali kataTIF-FTUB dicetakdilayarmonitor? • Jika k=n makaberapa kali kataTIF-FTUB dicetakdilayar monitor ? • Jika k > n makaberapa kali kataTIF-FTUB dicetakdilayar monitor ?
Latihan for (i=k; i >= n; i--) printf(” TIF-FTUB \n”); • Jika k < n makaberapa kali kataTIF-FTUB dicetakdilayar monitor ? • Jika k=n makaberapa kali kataTIF-FTUB dicetakdilayar monitor ? • Jika k > n makaberapa kali kataTIF-FTUB dicetakdilayar monitor ?
Latihan • Dapatkah infinite/forever loop ditulismenggunakan for loop, while loop dan do-while loop ? • Jika p = pernyataandan e = ekspresi, ubahlah loop for berikutmenjadi loop while. a. for(; e ;) p; b. for(; ; e) p;
Latihan 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); • Bandingkanduabuahsintaks for berikutini : Jelaskan outputnyadanperbedaannyadari dua potongan program di atas!
Latihan APA OUTPUT PROGRAM BERIKUT ?? awas! Adatitikkoma #include <stdio.h> int main() { intx,y; for(x=1;x<=3;x++); for (y=3;y>=1;y--) printf("%d %d ",x,y); return 0; } #include <stdio.h> int main() { intx,y; for(x=1;x<=3;x++) for (y=3;y>=1;y--) printf("%d %d ",x,y); return 0; }
Latihan APA OUTPUT PROGRAM BERIKUT ?? awas! adatitikkoma #include <stdio.h> int main() { intx,y; for(x=1;x<=3;x++); for (y=3;y>=1;y--); printf("%d %d ",x,y); return 0; } Awas! adatitikkoma #include <stdio.h> int main() { intx,y; for(x=1;x<=3;x++) for (y=3;y>=1;y--); printf("%d %d ",x,y); return 0; }
Latihan #include<stdio.h> int main() { intnilai = 0, jumlah = 0; while(nilai < 10) { jumlah += nilai; printf(”\nNilai =%d, Jumlah =%d”, nilai++, jumlah); } return 0; } Jelaskan output program berikutini :
Latihan #include<stdio.h> int main() { long bil, tmp, x=1; printf(”\nInputbil:”); scanf(”%d”, &bil); tmp=bil; while(bil >= 1) x*=bil--; printf(”\n%ld ! = %ld”,tmp, x); return 0; } Jelaskan output program berikutini :
Latihan • Buat program untukmenampilkanbilanganganjildari 11 s/d 188, denganmenggunakan : • for • while • do - while
Latihan • Diasumsikanhari 1 menyatakansenin, 2 - selasa, 3 - rabu,…, 7 – minggu. Buatlahsebuah program untukmenampilkanangkaharisebanyak n yang diinputdari keyboard. Perhatikanpolaberikut : n= 3 • 2 3 n= 7 • 2 3 4 5 6 7 n= 10 1 2 3 4 5 6 7 1 2 3
Latihan • Berapa kali kata Hello dicetakdilayar monitor olehsetiap potonganprogram dibawahini? int x=0; for(;;){ if(x<10) printf("Hello\n"); else break; x++; } 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 ; for(x=0; x<10; x++) printf("Hello\n");
Latihan n n • Buatlah program untukmenampilkangambarseperticontohdibawah, dimananvariabel integer ygnilainyadi-input dari keyboard (dengan for, while atau do-while loop). * * * * * * * * * * * * * * *
Latihan n n • Buatlah program untukmenampilkangambarseperticontohdibawah, dimananvariabel integer ygnilainyadi-input dari keyboard (dengan for, while atau do-while loop). * * * * * * * * * * * * * * *
Latihan #include <stdio.h> int main() { intx,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("diTIF-FTUB\n"); getch(); return(0); } Apa Output dari program dibawahini?
Struktur Pengulangan for exp1 exp3 statements true exp2 false Strukturlogikapengulangan for
Struktur Pengulangan for exp1 exp3 statements true exp2 false Strukturlogikapengulangan for