Struktur Kontrol Perulangan: while

  St rukt ur Kont rol Perulangan (Loop)

  • Program akan mengulang sat u at au lebih pernyat aan berdasarkan kondisi t ert ent u.
    • – Kondisi dinyatakan sebagai ekspresi.

  • Kumpulan lebih dari sat u pernyat aan disebut

  Algorit me dan Pemrograman compound st at ement

  • – Diapit kuraw al • Pernyat aan yang digunakan disebut loop st at ement .

  Kuliah #4

  • Ada t iga bent
  • St rukt ur kont rol perulangan: w hile, do …
    • – w hile

  w hile, for

  • – do … w hile
  • – for KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU

  

St rukt ur Kont rol Perulangan: w hile St rukt ur Kont rol Perulangan: w hile

  • Lakukan sesuat u selam a kondisi bernilai t rue
  • while ( kondisi) pernyat aan; Hent ikan jika kondisi bernilai false.

  FALSE k on d isi ?

  Per n y at aan di dalam

  • Form at :

  st r u k t u r WHI LE ak an dipr oses m in im u m NOL TRUE k ali. Men gapa?

  while (kondisi)

  p e rn y a t a an simple or compound statement ; KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU

  

St rukt ur Kont rol Perulangan: w hile St rukt ur Kont rol Perulangan: w hile

  • Apa out put pot ongan program berikut ?
  • Perhat ikan pot ongan program berikut : int i=5;

  int i=0; while (i<10) while (i<5) { printf("%d", i++); printf("%d", i); printf("%d", i);

  5 6 7 8 9 1 0

  i++;

  • Bagaimana dengan pot ongan program berikut ?

  } int i=5;

  • while (i++<10)

  Out put : printf("%d", i);

  6 7 8 9 1 0 1 1

  01234 KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU printf("%d", i); KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU

  St rukt ur Kont rol Perulangan: do … while Lat ihan

  • Lakukan sesuat u, dan ulangi selama kondisi bernilai
  • Dengan m enggunakan pernyat aan w hile dan

  t rue

  jum lah inst ruksi sesedikit m ungkin, t uliskan

  • Berart i mengerjakan pernyat aan di dalamnya t erlebih program unt uk m encet ak barisan nilai: dahulu, baru kemudian memeriksa kondisi yang ada.
    • – Pernyataan akan diproses m inim al sebanyak berapa kali?

  • Format :

  14 8 2 -4 -10 -16 do { pernyataan; } while (kondisi);

  St rukt ur Kont rol Perulangan: do … while St rukt ur Kont rol Perulangan: do … while

  #include <stdio.h> int main() { do int i, n=10;

  p e rn y a t a an

  i=5; do { printf("%d\t", i); while ( kondisi) i++;

  } while (i<n);

  TRUE k on d isi

  return 0;

  ?

  }

  Per n y at aan ( st at em en t s) di dalam st r u k t u r DO … WHI LE Out put program t ersebut adalah: ak an dipr oses m in im u m SATU

  FALSE k ali. Men gapa?

  5

  6

  7

  8

  Contoh: Program menulis bilangan

  #include <stdio.h> #include <stdio.h>

  • int main() int main()

  Um um nya digunakan unt uk m em proses {

  { pernyat aan secara berulang-ulang dengan int n; int n; scanf("%d", &n); scanf("%d", &n); jum lah perulangan t ert ent u while (n){ do {

  • – printf("%d", n%10); printf("%d", n%10); Terut am a di bahasa pem rogram an lain n /= 10; n /= 10;
  • – Di C bisa m enggant ikan w hile

  } } while (n); return 0; return 0;

  • Cont oh:

  } }

  • – M enuliskan bilangan bulat 1 sam pai dengan 5

  9 8 7

  Jika diberikan input 789, apa output program tsb? – M em baca n bilangan bulat . Ubah program agar m enggunakan w hile

  • Bent uk um um for (expr1; expr2; expr3) { s1; s2; ...
  • Proses yang dilakukan mengikut i alur berikut : – expr1 dieksekusi hanya sat u kali sebelum mulai looping.
    • – expr2 merupakan ekspresi boolean. Jika t idak dit uliskan, diasumsikan bernilai t rue.
    • – Jika expr2 bernilai false, maka proses looping dihent ikan.
    • – Jika expr2 bernilai t rue, maka s1, s2, ... dieksekusi.
    • – Set elah eksekusi s1, s2, ..., maka expr3 dieksekusi.

  • expr1, expr2, dan expr3 bersifat opsional (dapat dit uliskan, juga dapat t idak dit uliskan).

  ?

  }

  } printf("%d\n", sum); return 0;

  #include <stdio.h> int main() { int i, n, bil, sum=0; scanf("%d", &n); for (i=1; i<=n; i++) { scanf("%d", &bil); sum+=bil;

  4 5 for: Contoh #4

  Apa out put program t ersebut ? Apa yang dilakukannya? Bagaimana jika menggunakan for(;i++<n; sum+=i); ?

  }

  #include <stdio.h> int main(){ int i=5, n=10, sum=0; for (; i<=n; sum+=i++); printf("%d\n", sum); return 0;

  3 2 1 2 1 0 for: Contoh #3 (backw ard loop)

  for(; i--;)

  St rukt ur Kont rol Perulangan: for

  } return 0; } Apa out put program t ersebut ? Bagaimana jika baris for menjadi

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

  Apa out put program t ersebut ? (t race dengan diagram alir for) 5 6 7 8 9 for: Contoh #2 (backw ard loop)

  } return 0; }

  #include <stdio.h> int main(){ int i, n = 10; for (i=5; i<n; i++) { printf("%d", i);

  TRUE FALSE for ( e x pr 1 ; e x pr 2 ; e x pr 3 ) pe r n y a t a a n ; e x pr3 e x pr1 for: Contoh #1

  St rukt ur Kont rol Perulangan: for e x pr2 ? Pe rnya t a a n

  }

  Apa out put program jika diberi input 3 44 7 9? Apa yang dilakukan program t ersebut ? 6 0 Out put ? St rukt ur Kont rol Perulangan: nested for

  • Pernyataan for yang bersarang, artinya terdapat pernyataan for

  … lainnya di dalam pernyataan for. int a, b=4;

  • – Dapat juga dilakukan unt uk w hile dan do … w hile Contoh, apa output potongan program berikut? •

  for ( ; a=b, b-- ; ) int i, j; printf("%d %d\n",a,b);

  • * *

  for (i=1; i<=3; i++) {

  • * *

  … for (j=1; j<=2; j++) {

  • * *

  printf("*");

  4 3

  }

  3 2

  printf("\n");

  2 1

  }

  1 0 Nested for: St rukt ur Kont rol Perulangan: nested for

  M isalkan ingin m enuliskan bilangan 1, 2, … dalam bent uk m at riks ukuran M enggunakan variabel sebelumnya

  • 3x4. Set iap baris hanya diakhiri oleh new l
  • Perhat ikan cont oh berikut . St rukt ur for unt uk

  #include <stdio.h> j i variabel menggunakan variabel .

  • Perhat ikan juga posisi inisialisasi sum

  int main() {

  • int i, j, c=1; Apa out put nya? Apa yang dilakukan?

  for (i=1; i<=3; i++) for (j=1; j<=4; j++) { int i, j, sum; 1 1 2 3

printf("%d", c++); for (i=1; i<=4; i++) {

  3 6 if (j!=4) printf(" ");

  sum=0;

  4 10 else printf("\n");

  for (j=1; j<=i; j++)

  }

  sum+=j;

  return 0;

  printf("%d %d\n", i, sum);

  }

  }

  Nested FOR: Lat ihan #1

  M enggunakan variabel sebelumnya

  • Berapa kali st ring IPB dicet ak oleh program berikut ?

  #include <stdio.h>

  • Apa out put pot ongan program berikut ?

  int main() { int i; int i, j, n=5;

  • * * * * *

  for (i=1; i<=20; i++) {

  • * * * *

  for (i=1; i<=n; i++) { if (i=5)

  • * * *

  for (j=i; j<=n; j++)

  • * * printf ("IPB\n");

  }

  • * printf("*");

  return 0; printf("\n");

  } }

  Lat ihan #4 Lat ihan #2

  • Apa out put pot ongan program berikut jika
  • Buat program unt uk membaca sebuah bilangan bulat

  8

  diberikan input dat a 16 24 ? n , dan menampilkan out put sepert i dalam cont oh.

  • Set iap baris out put hanya diakhiri dengan new line.

  Apa yang dilakukan?

  Cont oh input :

  • int main() {

  int a, b, t;

  int i, j, n=5;

  5

  for (i=1; i<=n; i++) { scanf("%d %d", &a, &b); for (j=1; j<=i; j++)

  while (b) {

  • Cont oh out put :

  printf("*");

  t = a%b;

  • printf("\n");

  a = b;

  • }

  b = t;

  • return 0;

  }

  • }

  printf("%d\n", a); KOMPUTER INSTITUT

  • PERTANIAN BOGOR DEPARTEMEN ILMU

  Lat ihan #6 Lat ihan #5

  • Apa out put pot ongan program berikut jika

  Apa out put pot ongan program berikut jika

  • 1 5 2 7

  diberikan input 7251 ? diberikan input dat a -5 77 3 -1 -99 ?

  4

  • Apa yang dilakukan?
  • Apa yang dilakukan?

  int bil, t=0; int bil, c=0; scanf("%d", &bil); scanf("%d", &bil); while (bil!=-99) { while (bil) { c++; t = (t*10) + (bil%10); scanf("%d", &bil); bil/=10;

  } } printf("%d\n", c); KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU printf("%d\n", t); KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU

  Lat ihan #7 Suat u sensor dipasang pada t anam an unt uk m engat ur suplai air. Sensor secara periodik m engukur kandungan air t anah di sekit ar t anam an. Jika t erdet eksi dat a

  float bil=0, jum=0;

  kandungan air t anah kurang dari 4.5 sat uan, alat akan m enyuplai air sebanyak 0.12 lit er. Dem ikian set erusnya sam pai diperoleh dat a kandungan air t anah lebih while (bil<4.5) { besar at au sam adengan 4.5 sat uan dan alat akan berhent i sem entara. Buat

  jum += 0.12;

  program C unt uk m enghitung t ot al volume air yang disuplai sam pai alat t ersebut berhent i sem entara. Out put dit ulis dalam dua desim al di belakang

  scanf("%d", &bil); t it ik. }

  Cont oh input : 1.2 4.2 4.3 4.4 5.2

  printf("%d\n", jum);

  Cont oh out put :

  0.48 Cont oh input :

  4.9

  0.00 Cont oh out put : KOMPUTER INSTITUT PERTANIAN BOGOR DEPARTEMEN ILMU

Lat ihan #8

  Seorang anak suka berm ain dengan bilangan bulat . Jika diberikan bilangan bulat lebih besar at au sam adengan 100, dia hanya akan m engam bil digit paling kiri dan paling kanan unt uk m em bent uk suat u bilangan baru dengan dua digit . M isalkan diberikan nilai 7895, dia m em bent uk bilangan baru yait u 75. Selanjut nya, dia m enuliskan sisa pem bagian bilangan baru t ersebut dengan 6 di kert as. Jika bilangan bulat yang diberikan kurang dari 100, m aka dia t idak m elakukan apa-apa. Buat program C unt uk m endapat kan nilai sepert i yang dit uliskan anak t adi.

  Cont oh input : 7895 Cont oh input : 37

  int kiri,kanan,bil,jum, i, sisa; scanf("%d", &bil); kanan = bil % 10; while (bil>10) { bil = bil/10;

  } kiri = bil * 10; bil = kiri + kanan; bil=bil%6; printf("%d\n", bil);

Cont oh out put : 3 Cont oh out put : DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Lat ihan #9

  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 3 1 2 2 3 1 2 0 1 2 2 1 1 1 3 5 3 4 4 1 2 2