1 / 37

Algoritme dan Pemrograman

Algoritme dan Pemrograman. Kuliah #5 Compound statement Kontrol Program : WHILE, DO..WHILE, FOR. Loop control structures. Program akan mengulang satu atau lebih statement untuk diproses atau tidak diproses berdasarkan kondisi tertentu . Kondisi dinyatakan sebagai ekspresi .

eddy
Download Presentation

Algoritme dan Pemrograman

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AlgoritmedanPemrograman Kuliah #5 Compound statement Kontrol Program : WHILE, DO..WHILE, FOR

  2. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Loop control structures • Program akanmengulangsatuataulebih statement untukdiprosesatautidakdiprosesberdasarkankondisitertentu. • Kondisidinyatakansebagaiekspresi. • Pernyataan yang digunakandisebutloop statement. • Adatigajenis: • Pernyataan WHILE • Pernyataan DO … WHILE • Pernyataan FOR

  3. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Loop control structures:WHILE • Implementasidaripernyataan: lakukansesuatuberulang-ulangselamakondisibernilai true (berartijugahentikanmelakukanitujikakondisibernilai false). • Format: while (kondisi) simple or compound statement;

  4. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Loop control structures:WHILE while (kondisi) statement; kondisi ? FALSE Pernyataan (statements) didalamstruktur WHILE akandiproses minimum NOL kali. Mengapa? TRUE statement

  5. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Loop control structures:WHILE • Perhatikanpotongan program berikut: int i=0; while (i<5) { printf("%d", i); i++; } • Output program tersebutadalah: 01234

  6. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Loop control structures:WHILE • Apa output potongan program berikut? int i=0; while (i<5) printf("%d", i++); • Bagaimanadenganpotongan program berikut? int i=0; while (i++<5) printf("%d", i); 01234 12345

  7. Latihan • Denganmenggunakanpernyataan looping WHILE danjumlahinstruksisesedikitmungkin, tuliskancuplikan program (bukan program lengkap, hanyainstruksiutama) untukmencetakderetnilai 20, 14, 8, 2, -4, dan -10

  8. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR int i=20; while (i>=-10) { printf("%d \n", i); i-=6; }

  9. Loop control structures:DO … WHILE • Implementasidaripernyataan: Lakukansesuatu. Kemudianulangisesuatuituselamakondisibernilai true • Berartimemprosespernyataandidalamnyaterlebihdahulu, barukemudianmemeriksakondisi yang ada. • Pernyataanakandiproses minimal SATU kali. • Format: do { pernyataan; } while (kondisi);

  10. Loop control structures:DO … WHILE #include <stdio.h> int main() { inti, n=5; i=0; do { printf("%d ", i); i++; } while (i<n); return 0; } Output program tersebutadalah: 0 1 2 3 4

  11. Loop control structures:DO … WHILE do statement while (kondisi) kondisi ? TRUE Pernyataan (statements) didalamstruktur DO … WHILE akandiproses minimum SATU kali. Mengapa? FALSE

  12. Contoh:Program menulisbilangan #include <stdio.h> int main() { int n; scanf("%d", &n); do { printf("%d", n%10); n /= 10; } while (n); return 0; } Jikadiberikan input 120, apa output program tsb? Ubah program menggunakanwhile #include <stdio.h> int main() { int n; scanf("%d", &n); while (n){ printf("%d", n%10); n /= 10; } return 0; } 021

  13. Loop control structures:FOR • Pernyataanforumumnyadigunakanuntukmemprosespernyataansecaraberulang-ulangdankitasebelumnyasudahmengetahuiberapa kali pernyataantersebutakandiulang. • Contoh: • Menuliskanbilanganbulat 1 sampaidengan 5 • Membaca n bilanganbulat.

  14. Loop control structures:FOR • Bentukumum for (expr1; expr2; expr3) { s1; s2; ... } • Proses yang dilakukanmengikutialurberikut: • expr1 dieksekusihanyasatu kali sebelummulai looping. • expr2 merupakanekspresi Boolean. Jikatidakdituliskan, diasumsikanbernilai true. • Jika expr2 bernilai false, makaproses looping dihentikan. • Jika expr2 bernilai true, maka s1, s2, ... dieksekusi. • Setelaheksekusi s1, s2, ..., maka expr3 dieksekusi. • expr1, expr2, dan expr3 bersifat optional (dapatdituliskan, jugadapattidakdituliskan).

  15. Loop control structures:FOR expr1 FOR (expr1 ; expr2 ; expr3) S; FALSE expr2 ? TRUE S expr3

  16. Pernyataan FOR:Contoh #1 #include <stdio.h> int main(){ int i,n = 5; for (i=0; i<n; i++) { printf("%d", i); } return 0; } Apa output program tersebut ? (ikuti diagram FOR pada slide sebelumnya) 01234

  17. Pernyataan FOR – loop backward: Contoh #2 #include <stdio.h> int main(){ int i=5; for ( ; i; i--) { printf("%d", i); } return 0; } Apa output program tersebut ? Bagaimanajikabaris for menjadi “for ( ; i--; ) ”? 54321 43210

  18. Pernyataan FOR – loop backward: Contoh #3 #include <stdio.h> int main(){ int i, n=5, sum=0; for (i=1 ; i<=n; sum+=i++); printf("%d\n", sum); return 0; } Apa output program tersebut ? Apa yang dilakukannya? Bagaimanajikamenggunakan “for ( ; i++<n; sum+=i);”? 15

  19. Pernyataan FOR: Contoh #4 #include <stdio.h> int main() { inti, n, bil, sum=0; scanf("%d", &n); for (i=1; i<=n; i++) { scanf("%d", &bil); sum+=bil; } printf("%d\n", sum); return 0; } Apa output program jikadiberi input 3 13 43 32? Apa yang dilakukan program tersebut? 88

  20. Output? 2 1 1 0 …int a, b=3;   for ( ; a=b, b-- ; )printf("%d %d\n",a,b); …

  21. Loop control structures:Nested FOR • Pernyataanfor yang bersarang, artinyaterdapatpernyataanforlainnyadidalampernyataanfor. • Contoh, apa output potongan program berikut? inti, j; for (i=1; i<=2; i++) { for (j=1; j<=3; j++) { printf("*"); } printf("\n"); } *** ***

  22. Nested FOR:Menulisbilanganbentukmatrik • Misalkaninginmenuliskanbilangan 1, 2, … dalambentukmatriksukuran 3x4. Setiapbarishanyadiakhirioleh newline. • Digunakannested for: #include <stdio.h> int main() { inti, j, c=1; for (i=1; i<=3; i++) for (j=1; j<=4; j++) { printf("%d", c++); if (j!=4) printf(" "); else printf("\n"); } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12

  23. Nested FOR:Menggunakanvariabelsebelumnya • Perhatikancontohberikut. Strukturforuntukvariabelj menggunakanvariabeli. • Apaoutputnya? Apa yang dilakukan? inti, j, sum; for (i=1; i<=3; i++) { sum=0; for (j=1; j<=i; j++) sum+=j; printf("%d %d\n", i, sum); } 1 3 3 6

  24. Nested FOR:Menggunakan variabel sebelumnya • Apa output potongan program berikut? inti, j, n=4; for (i=1; i<=n; i++) { for (j=i; j<=n; j++) printf("*"); printf("\n"); } **** *** ** *

  25. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Men-trace algoritme • Men-tracealgoritmeadalahsuatuprosesuntukmenelusurilangkahdemilangkahdarisuatualgoritmedanmenentukan output akhirnya. • Dalampemrograman, prosesinidisebutjugasebagaiprosesdebug. • Tips: • Ikutilangkahdemilangkah • Catatsetiapperubahannilaidarisuatuvariabel • Jikamenemukansuatupolatertentu, maka output akhirdapatlangsungditentukantanpamengikutialgoritmesampaiselesai (hanyadilakukanolehorang yang sudahsangatmemahamialgoritme)

  26. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Contoh men-tracealgoritme n 4 // Misal input n=4 procedure printN { read(n); c = 0; while (c<n) { c=c+1; print(c); } } 1 2 3 4 c 0 output 1 2 3 4 STOP

  27. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Latihan

  28. Latihan #1 • Berapa kali teks IPB dicetakoleh program berikut? #include <stdio.h> int main() { inti; for (i=1; i<=20; i++) { if (i==5) printf ("IPB\n"); } return 0; } • Apa yang dapatdisimpulkandarikasusini ?

  29. Latihan #2 • Buat program untukmembacasebuahbilanganbulatn, danmenampilkan output sepertidalamcontoh. Setiapbaris output hanyadiakhiridengannewline. • Contoh input: 5 • Contoh output: * ** *** **** ***** int main() { int i, j, n=5; for (i=1; i<=n; i++) { for (j=1; j<=i; j++) printf("*"); printf("\n"); } return 0; }

  30. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Latihan #4 Apa output potongan program berikutjikadiberikan input data 8 20 ? Apa yang dilakukan? int a, b, t; scanf("%d %d", &a, &b); while (b) { t = a%b; a = b; b = t; } printf("%d\n", a); 4

  31. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Latihan #5 Apa output potongan program berikutjikadiberikan input data 8 20 3 -99 ? Apa yang dilakukan? intbil, c=0; scanf("%d", &bil); while (bil!=-99) { c++; scanf("%d", &bil) } printf("%d\n", c); 3

  32. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Latihan #6 Apa output potongan program berikutjikadiberikan input data 9872 ? Apa yang dilakukan? intbil, t=0; scanf("%d", &bil); while (bil) { t = (t*10)+(bil%10); bil/=10; } printf("%d\n", t); 2789

  33. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Latihan #7 Suatualat sensor dipasangpadatanamanapeluntukmengatursuplai air. Alatsecaraperiodikmenerima data berupakandungan air tanahdisekitartanaman. Jikaalattersebutmenerima data kandungan air tanahkurangdari 4.5 satuan, makaalatakanmenyuplai air dengan volume 0.12 liter. Demikianseterusnyasampaidiperoleh data kandungan air tanahlebihbesaratausamadengan 4.5 satuandanalatakanberhentisementara. Buat program C untukmenghitung total volume air yang disuplaisampaialattersebutberhentisementara. Output ditulisdalamduadesimaldibelakangtitik. Contoh input : 1.2 4.2 4.3 4.4 5.2 Contoh output : 0.48 Contoh input : 4.9 Contoh output : 0.00

  34. float bil=0, jum=0; while (bil<4.5) { jum=jum+0.12; scanf("%d", &bil); } printf("%d\n", jum);

  35. DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR Latihan #8 Seoranganaksukabermaindenganbilanganbulat. Jikadiberikanbilanganbulatlebihbesaratausamadengan 100, diahanyaakanmengambildigit paling kiridanpaling kananuntukmembentuksuatubilanganbarudengandua digit. Misalkandiberikannilai 7895, diamembentukbilanganbaruyaitu 75. Selanjutnya, diamenuliskansisapembagianbilanganbarutersebutdengan6dikertas. Jikabilanganbulat yang diberikankurangdari 100, makadiatidakmelakukanapa-apa. Buat program C untukmendapatkannilaiseperti yang dituliskananaktadi. Contoh input : 7895 Contoh input : 37 Contoh output : 3 Contoh output :

  36. intkiri,kanan,bil,jum, i, sisa; scanf("%d", &bil); if(bil>100) { kanan = bil % 10; //ambil digit palingkanan while (bil>10) { bil = bil/10; } kiri = bil * 10; bil = kiri + kanan; bil=bil%6; printf("%d\n", bil); }

  37. Latihan #9 1 2 3 • int a=3, b=0;while (b++<a) printf("%d", b);int a=3, b=0;while (++b<a) printf("%d", b);int a=5, b=0;while (b++<a) printf("%d", b++);int a=3, b=0;while (b=a--) printf("%d %d\n", a,b);int a=3, b=0;while (b=--a) printf("%d %d\n", a,b);int a=5, b, c;while (c=--a, b=a--) • printf("%d %d %d\n", a,b,c); 1 2 1 3 5 2 3 1 2 0 1 2 2 1 1 3 4 4 1 2 2

More Related