Pengulangan (looping)
410 likes | 667 Views
Pengulangan (looping). 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
Pengulangan (looping)
E N D
Presentation Transcript
Pengulangan (looping) 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