T0616 ALGORITMA DAN PEMROGRAMAN (7-8) UNIVERSITAS BINA NUSANTARA

Download Report

Transcript T0616 ALGORITMA DAN PEMROGRAMAN (7-8) UNIVERSITAS BINA NUSANTARA

T0616
ALGORITMA DAN PEMROGRAMAN
(7-8)
SUBANDIJO
UNIVERSITAS BINA NUSANTARA
FAKULTAS ILMU KOMPUTER
JAKARTA, 2005
6/28/2016
T0616 - Algoritma dan Pemrograman
1
STRUKTUR SELEKSI
• DIGUNAKAN UNTUK MEMILIH PERNYATAAN ATAU
BLOK PERNYATAAN YANG AKAN DIEKSEKUSI.
• SUATU PERYATAAN ATAU BLOK PERNYATAAN
MUNGKIN DIEKSEKUSI ATAU TIDAK DIEKSEKUSI
TERGANTUNG PADA NILAI KONDISI YANG DIUJI.
• KEYWORDS: IF, IF-ELSE, SWITCH-CASE
6/28/2016
T0616 - Algoritma dan Pemrograman
2
KONSTRUKSI IF
(1)
• SINTAKS
if (exp) pernyataan;
ATAU
if (exp) {
pernyataan1;
pernyataan2;
…
}
6/28/2016
• JIKA exp BERNILAI
TRUE MAKA
PERNYATAAN ATAU
BLOK PERNYATAAN
AKAN DIEKSEKUSI.
T0616 - Algoritma dan Pemrograman
3
KONSTRUKSI IF-ELSE
(1)
• SINTAKS
if (exp) pernyataan1;
else pernyataan2;
ATAU
if (exp) {
<pernyataan-pernyataan1>;
else
<pernyataan-pernyataan2>;;
}
6/28/2016
T0616 - Algoritma dan Pemrograman
4
KONSTRUKSI IF-ELSE
(2)
• JIKA exp BERNILAI TRUE MAKA PERNYATAAN 1
ATAU BLOK <PERNYATAAN- PERNYATAAN 1>
AKAN DIEKSEKUSI. JIKA TIDAK, eks BERNILAI
FALSE, MAKA PERNYATAAN2 ATAU BLOK
<PERNYATAN- PERNYATAAN2> YANG AKAN
DIEKSEKUSI.
6/28/2016
T0616 - Algoritma dan Pemrograman
5
IF VS IF-ELSE
statemen1

statemen1

false
eks

true
statemenA

statemen2
eks

statemenB

true
statemenA


6/28/2016
false

statemen2 
T0616 - Algoritma dan Pemrograman

6
KONSTRUKSI IF-ELSE
(2)
• SUSUN PROGRAM UNTUK MENGHITUNG AKARAKAR PERSAMAAN KUADRAT.
• ALGORITMA:
MASUKKAN KOEFISIEN A, B, C
HITUNG DISKRIMINAN D = B * B - 4 * A * C
JIKA D >= 0, MAKA HITUNG X1 DAN X2
JIKA D < 0, MAKA STOP (AKAR IMAJINER)
STOP
6/28/2016
T0616 - Algoritma dan Pemrograman
7
KONSTRUKSI IF-ELSE
(3)
• RUMUS UNTUK MENGHITUNG X1 DAN X2
X1 = (-B + D) / 2A
X2 = (-B - D) / 2A
• #include<stdio.h>
#include<math.h>
float a, b, c, d, x1, x2
main() {
printf(“\n Input koef. a : “); scanf(“%f “, &a);
printf(“\n Input koef. b : “); scanf(“%f “, &b);
printf(“\n Input koef. c : “); scanf(“%f “, &c);
D
6/28/2016
T0616 - Algoritma dan Pemrograman
8
KONSTRUKSI IF-ELSE
(4)
d = b* b - 4 * a * c;
if(d >= 0) {
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
printf(“\nx1 = %f, x2 = %f”, x1, x2);
}
else {
printf(“\n Akar Persamaan Imajiner”);
}
}
6/28/2016
T0616 - Algoritma dan Pemrograman
9
NESTED IF-ELSE
• KONSTRUKSI IF-ELSE DI DALAM IF-ELSE
• SINTAKS
if (eks. Boolean_1) statement_1;
else if (eks. Boolean_2) statement_2;
else if (eks. Boolean_3) statement_3;
…
else (eks. Boolean_n) statement_n;
6/28/2016
T0616 - Algoritma dan Pemrograman
10
PROGRAM KALKULATOR
main() {
float bil1, bil2;
char op;
while(1) {
printf(“\n Ketik bil, op, bil\n”);
scanf(“%f %c %f”, &bil1, &op, &bil2);
if(op==‘+’) printf(“ = %f”, bil1 + bil2);
elseif(op==‘-’) printf(“ = %f”, bil1 - bil2);
elseif(op==‘*’) printf(“ = %f”, bil1 * bil2);
else(op==‘/’) printf(“ = %f”, bil1 / bil2);
}
}
6/28/2016
T0616 - Algoritma dan Pemrograman
11
KONSTRUKSI SWITCH-CASE
(1)
SINTAKS
SWITCH(EKS) {
CASE CONSTANT 1: PERNYATAAN_1: BREAK;
CASE CONSTANT 2: PERNYATAAN_2: BREAK;
…
CASE CONSTANT N: PERNYATAAN_N: BREAK;
DEFAULT: PERNYATAAN;
}
6/28/2016
T0616 - Algoritma dan Pemrograman
12
KONSTRUKSI SWITCH-CASE
(2)
• DIGUNAKAN SEBAGAI ALTERNATIF NESTED IFELSE JIKA IA “BERTINGKAT” TERLALU DALAM.
• PERNYATAAN SWITCH MENGEVALUASI EKS DAN
KEMUDIAN MELIHAT ISI CASE CONSTANT. JIKA
NILAI EKS ADA DIDALAM CONSTANT LIST MAKA
PERNYATAAN DIEKSEKUSI. JIKA TIDAK,
PERNYATAAN DEFAULT YANG DIEKSEKUSI.
• CATATAN: NILAI EKSPRESI HARUS INTEGER DAN
CONSTANT HARUS INTEGER CONSTANT
TERMASUK CHAR.
6/28/2016
T0616 - Algoritma dan Pemrograman
13
CONTOH SWITCH CASE
main() {
float bil1, bil2; char op;
while(1) {
printf(“\n Ketik bil, op, bil\n”);
scanf(“%f %c %f”, &bil1, &op, &bil2);
switch(op){
case(‘+’): printf(“ = %f”, bil1 + bil2); break;
case(‘-’) : printf(“ = %f”, bil1 - bil2); break;
case(‘*’) : printf(“ = %f”, bil1 * bil2); break;
case(‘/’) : printf(“ = %f”, bil1 / bil2); break;
default : printf(“OP TAK DIKENAL”; }
}
} 6/28/2016
T0616 - Algoritma dan Pemrograman
14
OPERATOR KONDISIONAL ? :
• SINTAKS
VARIABEL = KONDISI? EKS_1: EKS_2;
• JIKA KONDISI = TRUE MAKA VARIABEL = EKS_1.
JIKA TIDAK MAKA VARIABEL = EKS_2.
• CONTOH 1
ABS = (BIL<0)? - BIL : BIL;
ABS = (BIL>0)? BIL : - BIL;
6/28/2016
T0616 - Algoritma dan Pemrograman
15
OPERATOR KONDISIONAL ? :
(2)
• CONTOH 2
MIN = (BIL1 < BIL2)? BIL1 : BIL2;
MAX = (BIL1 > BIL2)? BIL1 : BIL2;
• PERNYATAAN TERAKHIR EKUIVALEN DENGAN
IF(BIL1>BIL2) MAX = BIL1;
ELSE MAX = BIL2;
6/28/2016
T0616 - Algoritma dan Pemrograman
16
OPERATOR KONDISIONAL ? :
(3)
• CONTOH 3: BAGAIMANA PERNYATAAN BERIKUT
DI EVALUASI:
P = (X<Y? -1 : (X==Y? 0 : 1));
• PERNYATAAN EKUIVALEN DENGAN
IF(X < Y) P = -1;
ELSE IF (X == Y) P = 0;
ELSE P = 1;
6/28/2016
T0616 - Algoritma dan Pemrograman
17
BREAK VS CONTINUE
• BREAK: MENGAKHIRI LOOP ATAU KELUAR DARI
SWITCH.
• CONTINUE: BY PASS/SKIP SISA PERNYATAAN
DALAM LOOP. EKSEKUSI LOOP BERJALAN
TERUS.
6/28/2016
T0616 - Algoritma dan Pemrograman
18
BREAK VS CONTINUE
(2)
do {
scanf(“%f”, &x);
if(x<0) {
printf”\nEror. Negatif”);
break;
}
/*Proses nonnegatif */
…
} while(exp);
6/28/2016
do {
scanf(“%f”, &x);
if(x<0) {
printf”\nEror. Negatif”);
continue;
}
/*Proses nonnegatif */
…
} while(exp);
T0616 - Algoritma dan Pemrograman
19
BREAK VS CONTINUE
(3)
main() {
int n;
for(; ;) {
printf(“\n Enter integer : “); scanf(“%d “, &n);
if(n%2==0) continue;
else if(n%3==0) break;
APA OUTPUT
PROGRAM JIKA
printf(“\n\t Bottom of loop.”);
ANDA
MASUKKAN NILAI
}
7, 4 DAN 9
print(“\n\t Outside of loop.”);
BERTURUTTURUT?
}
6/28/2016
T0616 - Algoritma dan Pemrograman
20
DANGLING IF
main() {
int suhu;
printf(“Input suhu F”);
scanf(“%d”,&suhu);
if(suhu<80)
if(suhu>60)
printf(“\nPanas”);
else
printf(“\nSejuk”);
}
6/28/2016
main() {
int suhu;
printf(“Input suhu F”);
scanf(“%d”,&suhu);
if(suhu<80) {
if(suhu>60)
printf(“\nPanas”);
}
else
printf(“\nSejuk”);
}
T0616 - Algoritma dan Pemrograman
21
PHYTAGOREAN TRIPLE
• SEKUEN TIGA BILANGAN A, B DAN C DISEBUT
PHYTAGOREAN TRIPLE JIKA MEMENUHI
KONDISI A ^ 2 + B ^ 2 = C ^ 2. TIGA BILANGAN
PHYTAGOREN TRIPLE YANG PERTAMA ADALAH
3, 4 DAN 5.
for (a=1; a <= 500; a++)
for (b=1; b <= 500; b++)
for (c=1; c <= 500; c++)
if(a*a + b*b == c*c)
printf(“\n%3d %3d %3d “, a, b, c);
6/28/2016
T0616 - Algoritma dan Pemrograman
22
BILANGAN TRIANGULAR
main() {
int i, bil = 0;
for(i=1; i<= 5; i++) {
bil += i;
printf(“%5d “, bil);
}
}
• PROGRAM DI SAMPING MENCETAK
SEKUEN BILANG-AN:
1, 3, 6, 10, 15 YANG
DISEBUT BILANGAN
TRIANGULAR.

T10
6/28/2016
T0616 - Algoritma dan Pemrograman
 
  
   
23
OBLONG NUMBER
• TULISLAH PROGRAM UNTUK MENCETAK
BILANGAN OBLONG SBB: 2, 6, 12, 20, 30, DST.
SEKUEN BILANGAN INI TIDAK LAIN ADALAH
SEKUEN BILANGAN TRIANGULAR YANG MASINGMASING ELLEMENNYA DIBAGI 2.

    
 
    
  
    
T10
   
     O20
6/28/2016
T0616 - Algoritma dan Pemrograman
24
SQUARE NUMBER
• TULISLAH PROGRAM UNTUK MENCETAK
SEKUEN BILANGAN SQUARE SBB: 1, 4, 9, 16, 25
DST.






 







• S1 S4
S9
S16
S25
6/28/2016
T0616 - Algoritma dan Pemrograman
25
THE END
“...ALL YOU NEED IS LOVE…”
6/28/2016
T0616 - Algoritma dan Pemrograman
26