Selasa, 10 Februari 2015

pertemuan ke empat (struktur kendali pemilihan)



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;
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