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