PENGAMBILAN KEPUTUSAN
A. TUJUAN
1. Menjelaskan tentang operator kondisi (operator relasi dan logika)
2. Menjelaskan penggunaan pernyataan if
3. Menjelaskan penggunaan pernyataan if-else
4. Menjelaskan penggunaan pernyataan if dalam if
5. Menjelaskan penggunaan pernyataan else-if
6. Menjelaskan penggunaan pernyataan switch
B. DASAR TEORI
Pengambilan keputusan diperlukan jika ada dua atau lebih kondisi yang harus dipilih
salah satu. Pernyataan-pernyataan yang dapat digunakan dalam pengambilan keputusan
adalah :
Pernyataan if
Pernyataan if-else
Pernyataan switch
Pernyataan-pernyataan diatas memerlukan suatu kondisi Æ dibentuk dengan operator
relasi dan/atau operator logika.
1. Operator Relasi
Operator relasi menghasilkan kondisi BENAR atau SALAH.
Operator Makna
22
Contoh :
2. Operator Logika
Bentuk operator Logika adalah :
Operator Makna
&& dan (AND)
|| atau (OR)
! tidak (NOT)
23
Prioritas dalam pengambilan keputusan untuk Operator Logika dan Relasi :
Prioritas Operator
Tertinggi !
> >= < <=
== !=
&&
Terendah ||
- Pernyataan if
Sintak:
if (kondisi) kondisi
Salah
pernyataan;
Benar
pernyataan
- Pernyataan if-else
Sintak:
Salah
if (kondisi) kondisi
pernyataan1;
Benar
else
pernyataan2; pernyataan1 pernyataan2
- Nested -if
Di dalam pernyataan if (atau if-else) bisa terdapat pernyataan if (atau if-else) yang
lain.
24
Bentuk umum:
if (kondisi-1)
if (kondisi-2)
.
.
if(kondisi-n)
pernyataan
else
pernyataan;
.
.
else
pernyataan;
else
pernyataan;
- Pernyataan Switch-Case
Digunakan sebagai pengganti pernyataan if bertingkat (else-if)
Bentuk umum :
switch (ekspresi)
{
case konstanta-1:
pernyataan-11;
......
break;
case konstanta-2:
.
.
case konstanta-n:
pernyataan-n1;
.......
break;
default:
.......
break;
}
25
C. PERCOBAAN
main()
{
double total_pembelian, discount = 0;
main()
{
int bil, abs;
if(bil < 0)
abs = -bil;
main()
{
float a, b;
printf("\n");
if (b == 0)
printf("%g dibagi dengan nol = TAK BERHINGGA\n", a);
else
printf("%g dibagi dengan %g = %g\n", a, b, a/b);
}
26
4. Pemakaian if-else untuk mengecek hasil modulus.
/* File program : bagi2.c */
#include <stdio.h>
main()
{
int bil1, bil2, sisa;
main()
{
char karakter;
main()
{
int bil, tanda;
if (bil < 0)
tanda = -1;
else if (bil == 0)
tanda = 0;
27
else
tanda = 1;
main()
{
/* valid_operator diinisialisasi dg logika 1 */
int valid_operator = 1;
char operator;
float bil1, bil2, hasil;
if(operator == '*')
hasil = bil1 * bil2;
else if(operator == '/')
hasil = bil1 / bil2;
else if(operator == '+')
hasil = bil1 + bil2;
else if(operator == '-')
hasil = bil1 - bil2;
else
valid_operator = 0;
if(valid_operator)
printf("%g %c %g is %g\n", bil1, operator, bil2,
hasil);
else
printf("Invalid operator!\n");
}
main()
{
/* valid_operator diinisialisasi dg logika 1 */
int valid_operator = 1;
char operator;
float bil1, bil2, hasil;
switch(operator) {
case '*' : hasil = bil1 * bil2; break;
case '/' : hasil = bil1 / bil2; break;
case '+' : hasil = bil1 + bil2; break;
28
case '-' : hasil = bil1 - bil2; break;
default : valid_operator = 0;
}
if(valid_operator)
printf("%g %c %g is %g\n", bil1, operator, bil2,hasil);
else
printf("Invalid operator!\n");
}
D. SOAL
1. Buatlah program untuk menerima 2 buah bilangan bulat masukan. Tampilkan hasil dari
pembagian bilangan pertama dengan bilangan kedua, dengan ketelitian 3 desimal.
Nilai tambah : program bisa mengecek pembagian dengan nol, yaitu jika bilangan kedua
adalah nol, maka tidak dilakukan proses pembagian, namun ditampilkan pesan
kesalahannya (division by zero).
2. Buatlah program untuk menghitung determinan dan mencari akar-akar dari persamaan
kuadrat : ax2 + bx + c = 0 , dengan ketentuan sbb :
D = b2 - 4ac
• Jika D = 0 , maka terdapat 2 akar real yang kembar, yaitu : x1 = x2 = -b / 2a
• Jika D > 0 , maka terdapat 2 akar real yang berlainan, yaitu :
x1 = (-b + sqrt(D)) / 2a
x2 = (-b - sqrt(D)) / 2a
• Jika D < 0 , maka terdapat 2 akar imaginair yang berlainan, yaitu :
x1 = -b / 2a + (sqrt(-D) / 2a) i
x2 = -b / 2a - (sqrt(-D) / 2a) i
Input : a, b, c (float)
Output : Nilai Determinan serta nilai akar-akar persamaan tsb (x1& x2).
Petunjuk : - untuk mencari akar dari x, gunakan : sqrt(x) yang didefinisikan pada
<math.h>.
29
- gunakan else if
30