Pertemuan ke empat
Struktur kendali
pemilihan
Instruksi if
if (kondisi) statement
-
Jika kondisi true maka statement dikerjakan
-
Jika kondisi false maka statement tidak
dikerjakan
1.
Dengan kondisi tunggal
if(nilai>59) printf(“lulus”);
jika nilai lebih besar daripada 59 maka ditampilkan lulus
if((bil%2)==0) printf(“bilangan genap”);
jika bilangan dibagi dua sisanya nol maka ditampilkan bilangan genap
2.
Dengan kondisi tunggal
If((grade==’D’)||(grade==’E’)) printf(“tidak lulus”);
Jika grade berisi huruf D atau E maka ditampilkan tidak lulus
If((ips>=3.50)&&(sks>=20)) printf(“berprestasi”);
Jika
ips tidak kurang daripada 3.50 dan sks tidak kurang daripada 20 maka
ditampilkan berprestasi
Contoh :
Sebuah operator selular menawarkan biaya percakapan sebesar
Rp 8 per 30 detik dan Rp 1 perdetik. Tulis program untuk menghitung besarnya
biaya melakukan suatu percakapan. Masukkan berupa jam mulai dan jam selesai
dalam format 99:99:99(pada hari yang sama).
Pemyelesaian
in main() {
int h1, m1, s1 h2, m2, s2 biaya;
int durasi_jam, durasi_menit, durasi_detik;
printf(“jam mulai ?”);
scanf(“%d:%d:%d”, &h1, &m1, &s1);
printf(“jam selesai ?”);
scanf(“%d:%d:%d”, &h2, &m2, &s2);
durasi_detik = s2-s1;
durasi_menit = m2-m1;
durasi_jam = h2-h1;
if (durasi-detik<0){
durasi_menit--;
durasi_detik +=60;
}
if(durasi_menit<0) {
durasi jam--;
durasi_menit +=60;
}
biaya = durasi_jam*960=durasi_menit*16;
if((durasi_detik>=30) {
biaya +=8;
durasi-detik -=30;
}
biaya +=durasi_detik;
printf(“biaya percakapan=%d”, biaya);
return 0;
}
Instruksi if else
if(kondisi)statement1;else statement2;
-
Jika kondisi true maka statement1 yang
dikerjakan.
-
Jika kondisi false maka statement2 yang
dikerjakan
Contoh pemakaian
if(nilai>=60) printf(“lulus”);
else printf(“tidak lulus”);
if((bil%2)==0) printf(“bilangan
genap”);
else printf(“bilangan ganjil”);
if((grade ==’D’)||(grade==’E’));
printf(“tidak lulus”);
else printf(“lulus”);
if((grade
==’A’)||(grade==’B’)||(grade==’C’)) printf(“lulus”);
else printf(“tidak lulus”);
nested if
-
Pada suatu instruksi if, stetement yang
dikerjakan apal=bila kondisi bernilai true dapat berupa instruksi if yang lain
-
If yang menjadi statement dari suatu if
membentuk nested if.
Condition expression
Kondisi ? ekspresi_benar : ekspresi-salah;
-
Jika kondisi true maka ekspresi_benar dikerjakan
-
Jika kondisi false maka ekspresi_salah
dikerjakan
int main() {
int bil;
int bil;
scanf(“%d”, &bil);
bil > 0 ? printf(“positif”)
:
printf(“nol atau negatif”);\
Return 0;
}
Conditional expression secara nested
int main() {
int bil;
scanf(“%d”, &bil);
bil > 0 ? printf(“positif”): bil== 0 ?
printf(“nol”): printf(“negatif”);
return 0;
}
Conditional expression dan assignent
int
main() {
int bil;
scanf(“%d”, &bil);
bil_abs = bil >0 ? bil : -bil;
printf(“abs(%d) = %d\n”, bil, bil_abs);
return 0;
}
Instruksi switch
switch (expression){
case const_expr_1 : statement_1;
case const_expr_2 : statement_2;
...
case const_expr_n:statement_n;
[default: statement_x;]
}
Instruksi swicth ini digunakan untuk
menyelesaikan satu ata sebagian dari sejumlah alternatif
swicth (expression){
case const_expr_1 : statement_1;
case const_expr_2 : statement_2;
...
case const_expr_n : statement_n;
[default: statement_x;]
}
Jika expression bernilai sebesar
const_expr_1 maka semua statement dikerjakan
int main() {
unsigned int bilangan;
scanf(“%ud”, &bilangan);
switch(bilangan) {
case 0: printf(“nol\n”);
case 1: printf(“satu\n”);
case 2: printf(“dua\n”);
case 3: printf(“tiga\n”);
default: printf (“lebih dari tigaa\n”);
}
Return 0;
}
Instruksi switch dan break
switch (expression){
case const_expr_1: statement_1; break;
case const_expr_2: statement_2; break;
...
Case const_expr_n: statement_n; break;
[default: statement_x;]
}
Switch(expr){
Case const_expr_1: sttm_1; break;
Case const_expr_2: sttm_2; break;
...
Case const_expr_n: sttm; break;
[default: sttm_x;]
}
Jika expr bernilai sebesar const_expr_2
maka hanya sttm_2 yang dikerjakan
Int main() {
Unsigned int bilangan;
Scanf(“%ud”, &bilangan);
Swicth(bilangan) {
Case 0: printf(“nol\n”); break;
Case 1: printf(“satu\n”); break;
Case 2: printf(“dua\n”); break;
Case 3: printf(“dua\n”); break;
Default: printf(“lebih dari tiga\n”);
}
Return 0;
}
Contoh soal
Kecamatan tanah abang di wilayah jakarta
pusat terdiri atas beberapa kelurahan dengan kode pos masing-masing seperti
tercantum ada tabel beriku. Tuliskan program untuk mencetak nama kelurahan
berdasarkan kode pos. Apabila kode posnya tidak tertera pada tabel maka ”cetak
diluar tanah abang”.
Kode pos
|
Kelurahan
|
10210
|
Bendungan hilir
|
10220
|
Karet tengsin
|
10230
|
Kebon melati
|
10240
|
Kebon kacang
|
10250
|
Kampung bali
|
10260
|
Petamburan
|
10270
|
Gelora
|
Int main() {
Unsigned int kode_pos;
Printf(“kode pos ?”); scanf(“%ud”,
&kode_pos);
Swicth (kode_pos) {
Case 10210: printf(“bendungan hilir\n”);
break;
Case 10220: print(“karet tengsin\n”);
break;
Case 10230: printf(“kebon melati\n”);
break;
Case 10240: printf(“kebon kacang\n”);
break;
Case 10250: printf(“kampung bali\n”);
break;
Case 10260: printf(“petamburan\n”); break;
Case 10270: printf(“gelora\n”); break;
Default: printf(“diluar tanah abang\n”);
}
Return 0;
}
Tidak ada komentar:
Posting Komentar