2. STRUKTUR KENDALI
PEMILIHAN
Suatu Struktur dasar algoritma yang memiliki satu atau
lebih kondisi tertentu dimana sebuah instruksi dilaksanakan
jika sebuah kondisi/persyaratan terpenuhi. Ada beberapa
bentuk struktur dasar pemilihan ini :
Sebuah pernyataan yang dapat dipakai muntuk mengambil
keputusan berdasarkan suatu kondisi. Bentuk pernyataan
ini ada dua macam :
- if saja, dan
- if else
3. PEMILIHAN (SELECTION)
if (kondisi) pernyataan;
Pernyataan dilaksanakan jika dan
hanya jika kondisi yang diinginkan
terpenuhi, jika tidak program tidak
memberikan hasil apa-apa.
Contoh ptongan program :
If(nilai >= 56)
puts(“Lulus”);
kondisi
pernyataan
truefalse
4. PEMILIHAN (SELECTION)
if(kondisi) pernyataan1; else pernyataan2;
•Pernyataan1 dilaksanakan jika dan hanya jika
kondisi yang diinginkan terpenuhi, jika tidak,
lakukan pernyataan2.
•Jika Anda tidak mempergunakan
pernyataan else program tidak akan error,
namun jika anda mempergunakan pernyataan
else tanpa didahului pernyataan if, maka
program akan error.
•Jika pernyataan1 atau pernyataan2 hanya
terdiri dari satu baris, maka tanda { } tidak
diperlukan, namun jika lebih maka
diperlukan.
•Selain dari if … else, juga dikenal
bentuk if … else if.
kondisi
pernyataan1
truefalse
pernyataan2
5. PEMILIHAN (SELECTION)
Instruksi switch
Pernyataan swich adalah pernyataan yang digunakan untuk menjalankan
salah satu pernyataan dari beberapa kemungkinan pernyataan,
berdasarkan nilai dari sebuah ungkapan dan nilai penyeleksian.
Pernyataan if…else jamak dapat dibangun dengan pernyataan switch.
Switch (ekspresi) {
case konstanta1 : pernyataan_1;
[break;]
case konstanta2 : pernyataan_2;
[break;]
…
case konstantan : pernyataan_n;
[break;]
[default] : pernyataan_x
}
Ekspresi dievaluasi, jika hasilnya konstanta1,
maka pernyataan_1 dikerjakan, jika hasilnya
konstanta2, maka pernyataan_2 dikerjakan.
Jika hasilnya bukan merupakan semua
konstanta1.. n, maka pernyataan_x
dikerjakan.
Klausa [default] dan [break] bersifat oprtional
6. PEMILIHAN (SELECTION)
//contoh : Switch : 1 = senin, 2= selasa dst.
#include <stdio.h>
#include <stdlib.h>
int main() {
int angka;
printf(“input Angka 1 - 7: “);scanf(“%d”,&angka);
switch(angka) {
case 1 : puts(“senin”);break;
case 2 : puts(“selasa”);break;
case 3 : puts(“rabu”);break;
case 4 : puts(“kamis”);break;
case 5 : puts(“jumat”);break;
case 6 : puts(“sabtu”);break;
case 7 : puts(“minggu”); // PERLU BREAK ATAU TIDAK?
}
system(“PAUSE”);
}
7. PEMILIHAN (SELECTION)
//contoh : Switch
#include <stdio.h>
#include <stdlib.h>
int main() {
int nilai;
printf(“input nilai : “);scanf(“%d”,&nilai);
switch(nilai/10) {
case 10 :
case 9 :
case 8 : puts(“hebat”);break;
case 7 :
case 6 : puts(“cukup”);break;
case 5 : puts(“buruk”);break;
default: puts(“Anda harus mengulang !”);
}
system(“PAUSE”);
}
8. STRUKTUR KENDALI PENGULANGAN
Sebuah / kelompok instruksi diulang untuk jumlah
pengulangan tertentu. Baik yang terdifinisikan
sebelumnya ataupun tidak.
Struktur pengulangan terdiri atas dua bagian :
1. Kondisi pengulangan yaitu ekspresi boolean yang harus
dipenuhi untuk melaksanakan pengulangan
2. Isi atau badan pengulangan yaitu satu atau lebih
pernyataan (aksi) yang akan diulang.
Perintah atau notasi dalam struktur pengulangan
adalah :
1. Pernyataan for
2. Pernyataan while
3. Pernyataan do .. while
4. Pernyataan continue dan break
5. Pernyataan go to
9. STRUKTUR KENDALI PENGULANGAN
Instruksi for
Instruksi for digunakan untuk menghasilkan pengulangan(looping)
beberapa kali tanpa penggunaan kondisi apapun. Pada umumnya
looping yang dilakukan oleh for telah diketahui batas awal, syarat
looping dan perubahannya. Selama kondisi terpenuhi, maka
pernyataan akan terus dieksekusi.
Syntax : for ([expr1];[expr2];[expr3]) statement;
Expr1 untuk inisialisasi, berupa satu atau beberapa instruksi yang
dipisahkan koma.
Expr2 berupa ekspresi kondisional untuk menentukan kondisi
pengulangan. Selama menghasilkan nilai true, maka statement
dikerjakan
Expr3 untuk menaikkan atau menurunkan nilai pengendali
10. STRUKTUR KENDALI PENGULANGAN
for(expr1;expr2;expr3) statement;
expr1
expr2 statement expr3
true
false
Expr1 dikerjakan hanya
sekali (nilai awal)
Expr2 diperiksa, jika
true, kerjakan statement
Expr3 dikerjakan
Expr2 diperiksa, jika
true, kerjakan statement
Expr3 dikerjakan
Proses berulang
sehingga expr2 bernilai
false
11. Statement for : contoh 1
int main() {
int i;
printf("percobaan 1:n");
for (i = 0; i < 10; i++) printf("%d ", i);
printf("npercobaan 2:n");
for (i = 1; i <= 10; i++) printf("%d ", i);
printf("npercobaan 3:n");
for (i = 0; i < 10; i = i+2) printf("%d ", i);
...
}
int main() {
int i;
printf("percobaan 1:n");
for (i = 0; i < 10; i++) printf("%d ", i);
printf("npercobaan 2:n");
for (i = 1; i <= 10; i++) printf("%d ", i);
printf("npercobaan 3:n");
for (i = 0; i < 10; i = i+2) printf("%d ", i);
...
}
percobaan 1:
0 1 2 3 4 5 6 7 8 9
percobaan 2:
1 2 3 4 5 6 7 8 9 10
percobaan 3:
0 2 4 6 8
percobaan 1:
0 1 2 3 4 5 6 7 8 9
percobaan 2:
1 2 3 4 5 6 7 8 9 10
percobaan 3:
0 2 4 6 8
12. Statement for : contoh 2
int main() {
...
printf("npercobaan 4:n");
for (i = 9; i >= 0; i--) printf("%d ", i);
printf("npercobaan 5:n");
for (i = 9; i >= 0; i -= 2) printf("%d ", i);
return 0;
}
int main() {
...
printf("npercobaan 4:n");
for (i = 9; i >= 0; i--) printf("%d ", i);
printf("npercobaan 5:n");
for (i = 9; i >= 0; i -= 2) printf("%d ", i);
return 0;
}
percobaan 4:
9 8 7 6 5 4 3 2 1 0
percobaan 5:
9 7 5 3 1
percobaan 4:
9 8 7 6 5 4 3 2 1 0
percobaan 5:
9 7 5 3 1
13. Statement for : contoh 3
int main() {
int i, batas;
printf("Tabel Perkalian Liman");
printf("sampai dengan ? ");
scanf("%d", &batas);
for (i = 1; i <= batas; i++)
printf("5 * %d = %dn", i, 5 * i);
return 0;
}
int main() {
int i, batas;
printf("Tabel Perkalian Liman");
printf("sampai dengan ? ");
scanf("%d", &batas);
for (i = 1; i <= batas; i++)
printf("5 * %d = %dn", i, 5 * i);
return 0;
}
Tabel Perkalian Lima
sampai dengan ? 3
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
Tabel Perkalian Lima
sampai dengan ? 3
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
14. Statement for : contoh 3
for (i = 1; i <= batas; i++)
printf("5 * %d = %dn", i, 5 * i);
for (i = 1; i <= batas; i++)
printf("5 * %d = %dn", i, 5 * i);
Langkah Instruksi i batas i <= batas Keluaran
1 scanf( ) ? 3
2 i = 1 1 3
3 i <= batas 1 3 true
4 printf("...", i, 5*i) 1 3 5 * 1 = 5
5 i++ 2 3
6 i <= batas 2 3 true
7 printf("...", i, 5*i) 2 3 5 * 2 = 10
8 i++ 3 3
15. Statement for : contoh 3
Langkah Instruksi i batas i <= batas Keluaran
9 i <= batas 3 3 true
10 printf("...", i, 5*i) 3 3 5 * 3 = 5
11 i++ 4 3
12 i <= batas 4 3 false
for (i = 1; i <= batas; i++)
printf("5 * %d = %dn", i, 5 * i);
for (i = 1; i <= batas; i++)
printf("5 * %d = %dn", i, 5 * i);
16. Statement for : contoh 4
Tulis program untuk
menampilkan bilangan-
bilangan genap antara
dua bilangan. Kedua
bilangan batas ini ikut
ditampilkan bila
merupakan bilangan
genap.
13 19
13 14 15 16 17 18 19 20
15 10
10 11 12 13 14 15 16
baca bil1, bil2
jika bil1 <= bil2
cacah ← bil1
ulangi selama cacah <= bil2
jika cacah habis dibagi 2
cetak cacah
akhir jika
cacah ← cacah + 1
akhir pengulangan
selain itu
cacah ← bil2
ulangi selama cacah <= bil1
jika cacah habis dibagi 2
cetak cacah
akhir jika
cacah ← cacah + 1
akhir pengulangan
akhir jika
baca bil1, bil2
jika bil1 <= bil2
cacah ← bil1
ulangi selama cacah <= bil2
jika cacah habis dibagi 2
cetak cacah
akhir jika
cacah ← cacah + 1
akhir pengulangan
selain itu
cacah ← bil2
ulangi selama cacah <= bil1
jika cacah habis dibagi 2
cetak cacah
akhir jika
cacah ← cacah + 1
akhir pengulangan
akhir jika
17. Statement for : contoh 4
int main() {
int bil1, bil2, cacah;
scanf("%d %d", &bil1, &bil2);
if (bil1 <= bil2) {
for (cacah = bil1; cacah <= bil2; cacah++)
if ((cacah % 2) == 0) printf("%d ", cacah);
} else {
for (cacah = bil2; cacah <= bil1; cacah++)
if ((cacah % 2) == 0) printf("%d ", cacah);
}
return 0;
}
int main() {
int bil1, bil2, cacah;
scanf("%d %d", &bil1, &bil2);
if (bil1 <= bil2) {
for (cacah = bil1; cacah <= bil2; cacah++)
if ((cacah % 2) == 0) printf("%d ", cacah);
} else {
for (cacah = bil2; cacah <= bil1; cacah++)
if ((cacah % 2) == 0) printf("%d ", cacah);
}
return 0;
}
13 25
14 16 18 20 22 24
13 25
14 16 18 20 22 24
16 9
10 12 14 16
16 9
10 12 14 16
18. STRUKTUR KENDALI PENGULANGAN
while (kondisi) statement;
while biasanya digunakan untuk
perulangan stetment yang
jumlah perulangannya tidak
menentu. Statement yang ada
didalam while bisa diabaikan
sama sekali (tidak dikerjakan)
apabila kondisi awal tersebut
bernilai false.
Statement akan terus
dikerjakan selama kondisi
masih bernilai true.
kondisi statement
true
false
19. STRUKTUR KENDALI PENGULANGAN
do statement while (kondisi);
Sama seperti while, do..
while biasanya digunakan
untuk perulangan stetment
yang jumlah perulangannya
tidak menentu.
Perbedaannya statement
yang ada didalam do .. while
minimal dikerjakan satu kali.
Statement akan terus
dikerjakan selama kondisi
masih bernilai true.
kondisi
statement
true
false
20. break dan continue
break digunakan untuk menghentikan sebuah loop, walaupun
sebenarnya kondisi dalam loop tersebut masih mungkin bernilai
true.
Selain untuk statement looping juga bisa digunakan untuk switch
Contoh :
#include <stdio.h>
#include <stdlib.h>
int main() {
int a;
for(a=1;a < 5;a ++) {
printf(“a = %dn”,a);
if(a==3) break;
}
system(“PAUSE”);
}
21. break dan continue
continue digunakan untuk melanjutkan loop ke nilai
counter berikutnya dengan mengabaikan semua
statement yang ada setelah statement continue tersebut
Contoh :
#include <stdio.h>
#include <stdlib.h>
int main() {
int i;
for(i=0;1<=100;i++)
if(i % 2 == 0) continue;
printf(“%3d”,i);
}
22. Infinite Loop: Pengulangan tanpa akhir
Infinite loop
Pengulangan tanpa akhir
for ( ; ; )
for ( ; 1 ;)
while (1)
do while (1)
24. Statement while: contoh 2
Apa hasil dari potongan program dibawah ini
a) While (a < 10) printf(“%d”,a);
b) b = 10;
while (b < 20) { printf(“%d”,b); b += 2; }
c) jawab = ‘’;
while (jawab != ‘Y’ && jawab != ‘T’)
jawab = getchar();
d) while (jawab != ‘Y’ && jawab != ‘T’)
jawab = getchar();
a) While (a < 10) printf(“%d”,a);
b) b = 10;
while (b < 20) { printf(“%d”,b); b += 2; }
c) jawab = ‘’;
while (jawab != ‘Y’ && jawab != ‘T’)
jawab = getchar();
d) while (jawab != ‘Y’ && jawab != ‘T’)
jawab = getchar();
25. Statement while: contoh 3
Ketik sejumlah bilangan, diakhiri 0
45 37 29 66 83 7 0
Jumlah Nilai = 267
Rerata = 44.5
Ketik sejumlah bilangan, diakhiri 0
45 37 29 66 83 7 0
Jumlah Nilai = 267
Rerata = 44.5
Buatlah program untuk memasukkan bilangan-bilangan.
Kemudian jumlahkan bilangan-bilangan tersebut dan
juga hitung reratanya.
Jika user mengetikkan 0 berarti selesai dan 0
tersebut tidak dimasukkan ke dalam perhitungan.
Gunakan statement while
Buatlah program untuk memasukkan bilangan-bilangan.
Kemudian jumlahkan bilangan-bilangan tersebut dan
juga hitung reratanya.
Jika user mengetikkan 0 berarti selesai dan 0
tersebut tidak dimasukkan ke dalam perhitungan.
Gunakan statement while
27. Statement do while: contoh 1
Buat program untuk menebak angka yang
dimasukkan user (antara 1-100). Angka yang
ditebak dikeluarkan secara random ( function
random).
Jika angka terlalu kecil / besar / tepat berikan
pesan ke user.
Jika user menebak dengan tepat, maka
program selesai.