pertemuan8 struktur dasar algoritma

Download Report

Transcript pertemuan8 struktur dasar algoritma

ALGORITMA
SOURCE
CODE
MASALAH
HASIL
EXECUTABLE
CODE
RUN
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
1

Algoritma
◦ urutan langkah-langkah yang logis utuk
memecahkan masalah

Kata algoritma diambil dari nama seorang
ilmuwan Persia Abu Ja’far Mohammed Ibn
Mûsâ al-Khowârizmî
◦ menulis buku berjudul Kitab Al jabr w’al-muqabala
(rules of restoration and reduction, pada sekitar
tahun 825).
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
2

Sequence, runut
◦ Langkah kedua dikerjakan setelah mengerjakan
langkap pertama

Selection, pemilihan
◦ Jika syarat terpenuhi maka kerjakan proses X
◦ Jika syarat tidak terpenuhi maka kerjakan
proses Y

Iteration, pengulangan
◦ Proses dikerjakan berulang kali sampai kondisi
tidak memenuhi
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
3
Terminal, mengawali atau
mengakhiri rangkaian proses
Input/Output, membaca masukan
atau menampilkan keluaran
Process, mengolah
Decision, memeriksa kondisi
Connector, menggabung proses
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
4
Start
SEQUENCE
RUNUT
A
Langkah ke-1: Proses A
B
Langkah ke-2: Proses B
C
Langkah ke-3: Proses C
D
Langkah ke-4: Proses D
Stop
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
5
Start
SELECTION
PEMILIHAN
A
B
ATAU
Ke-1: Proses A
Ke-2: Proses B
Ke-3: Proses D
Ya
C
D
Stop
ALGORITMA dan STRUKTUR DATA: Bahasa C
Ke-1:
Ke-2:
Ke-3:
Ke-4:
Pendahuluan
Proses
Proses
Proses
Proses
A
B
C
D
6
Start
SELECTION
PEMILIHAN
A
B
C
D
Ke-1:
Ke-2:
Ke-3:
Ke-4:
Proses
Proses
Proses
Proses
A
B
D
E
Ya
E
Stop
ALGORITMA dan STRUKTUR DATA: Bahasa C
Ke-1:
Ke-2:
Ke-3:
Ke-4:
Pendahuluan
Proses
Proses
Proses
Proses
A
B
C
E
7
Start
ITERATION
PENGULANGAN
A
Ke-1: Proses A
Ke-2: Proses B
Ke-3: Proses C
Ke-4: Proses B
Ke-5: Proses C
…
Ke-n-1: Proses B
Ke-n: Proses D
C
B
Ya
D
Stop
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
8
Masukan
input, read, get, key-in
Keluaran
print, write, display
Pemberian nilai
Pemilihan

if <kondisi benar>
<proses>
else
<proses>
endif
if <kondisi benar>
<proses>
endif
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
9
P
E
N
G
U
L
A
N
G
A
N
for <kondisi benar>
<proses>
endfor
while <kondisi benar>
<proses>
endwhile
do <kondisi benar>
<proses>
while <kondisi benar>
repeat
<proses>
until <kondisi benar>
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
10
Masukan
isi, baca, masukkan,
ketik, baca file
Keluaran
tulis, cetak, tampil , rekam
Pemberian nilai

Pemilihan
jika <kondisi benar>
<proses>
selain itu
<proses>
akhir jika
jika <kondisi benar>
<proses>
akhir jika
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pengulangan
ulangi selama <kondisi benar>
<proses>
akhir pengulangan
ulangi
<proses>
sampai <kondisi benar>
Pendahuluan
11
Toko Indo April mau mengecat dinding kedua sisi,
12m2 perlu sekaleng cat. Berapa kaleng cat
diperlukan?
Masukan ?
Keluaran ?
Panjang dinding
Tinggi dinding
Jumlah kaleng cat
Pj1, Tg1,
Pj2, Tg2
Algoritma
Kaleng
Flowchart
Pseudodcode
Kode Maya
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
12
12m2 perlu sekaleng cat.
Start
A
Read
Pj1, Tg1,
Pj2, Tg2
Klg=
Ls / 12
Ls=
Pj1*Tg1 +
Pj2*Tg2
Print
Klg
A
ALGORITMA dan STRUKTUR DATA: Bahasa C
Stop
Pendahuluan
13
12m2 perlu sekaleng cat.
PSEUDOCODE
read panjang1, tinggi1, panjang2, tinggi2
luas  panjang1 * tinggi1 + panjang2 * tinggi2
kaleng  luas / 12
print kaleng
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
14
12m2 perlu sekaleng cat.
KODE MAYA
baca panjang1, tinggi1, panjang2, tinggi2
luas  panjang1 * tinggi1 + panjang2 * tinggi2
kaleng  luas / 12
cetak kaleng
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
15
Toko Indo April memberi potongan harga susu 20%,
maksimum 3 kaleng atau kotak. Berapa uang yang
harus dibayar pembeli?
Masukan ?
Keluaran ?
Jumlah yang dibeli
Harga sekaleng
Uang yang harus dibayar
Jumlah,
Harga
Algoritma
Bayar
Flowchart
Pseudodcode
Kode Maya
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
16
Potongan 20%, maksimum 3.
Start
A
Read
HRG,
JML
Print
BYR
JML  3
BYR=
3*HRG*0.8 +
(JML-3)*HRG
Stop
Ya
BYR=
JML*HRG*0.8
A
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
17
Potongan 20%, maksimum 3.
PSEUDOCODE
input harga, jumlah
if jumlah <= 3
bayar  jumlah * harga * 0.8
else
bayar  (3 * harga * 0.8) + (jumlah – 3) * harga
endif
print bayar
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
18
Potongan 20%, maksimum 3.
KODE MAYA
baca harga, jumlah
jika jumlah <= 3
bayar  jumlah * harga * 0.8
selain itu
bayar  (3 * harga * 0.8) + (jumlah – 3) * harga
akhir jika
cetak bayar
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
19
1. Finiteness
◦
Algoritma harus berakhir, terminate, halt
◦
Langkah algoritma harus didefinisikan dengan
tepat dan tidak ambiguous
2. Definiteness
3. Input
◦
Algoritma memerlukan masukan untuk diolah
◦
Algoritma memberi hasil keluaran
◦
Langkah algoritma dikerjakan dalam waktu yang
wajar
4. Output
5. Effectiveness
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
20
A.
B.
C.
D.
E.
F.
G.
Definisi masalah
Membuat model
Merancang algoritma
Menulis program
Kompilasi program
Run dan hasil
Dokumentasi
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
21
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGO
TULIS
PROGRAM
COMPILE
Y
S.Err
RUN
Y
O.Err
DOKUMENTASI
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
22
MASALAH
Berapa besarnya biaya untuk memasang
keramik pada suatu kamar belajar?
DATA YANG DIPERLUKAN
Persegi panjang
Bentuk ruangan ?
pj ruang dan lb ruang
Ukuran ruangan ?
pj krmik dan lb krmik
Ukuran keramik ?
harga perbox, keping perbox
Harga keramik ?
upah permeter
Upah kerja ?
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
23
MODEL PERHITUNGAN
hitung kebutuhan keramik
hitung upah kerja
total biaya = biaya krmik + upah kerja
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
24
get pj_ruang, lb_ruang
masukan
get pj_krmik, lb_krmik
get harga_perbox, keping_perbox
get upah_permeter
krmik_sisi_pj  pj_ruang \ pj_krmik
proses
krmik_sisi_lb  lb_ruang \ lb_krmik
jml_krmik  krmik_sisi_pj * krmik_sisi_lbr
jml_cadang  5% * jml_krmik
total_krmik  jumlah_krmik + jumlah_cadang
biaya_krmik  total_krmik \ keping_perbox *
harga_perbox
biaya_upah  pj_ruang * lb_ruang / upah_permeter
total_biaya  biaya_krmik + biaya_upah
print total_biaya
keluaran
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
25
# include <stdio.h>
void main() {
int
pj_ruang, lb_ruang, pj_krmik, lb_krmik, keping;
float harga, upah, bea_krmik, bea_upah;
int
sisi_pj, sisi_lb, butuh;
scanf("%d %d", &pj_ruang, &lb_ruang);
scanf("%d %d", &pj_krmik, &lb_krmik);
scanf("%f %d %f", &harga, &keping, &upah);
sisi_pj = ceil(pj_ruang / pj_krmik);
sisi_lb = ceil(lb_ruang / lb_krmik);
butuh = ceil (sisi_pj * sisi_lb * 1.05);
bea_krmik = butuh / keping * harga;
bea_upah = pj_ruang * lb_ruang * upah / 10000;
printf("bea keramik = %.0f \n", bea_krmik);
printf("bea upah
= %.0f \n", bea_upah);
printf("total bea
= %.0f", bea_krmik + bea_upah);
}
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
26
# include <stdio.h>
void main() {
int pj_ruang, lb_ruang, pj_krmik, lb_krmik, keping;
float harga, upah, bea_krmik, bea_upah;
int
sisi_pj, sisi_lb, butuh;
scanf("%d %d", &pj_ruang, &lb_ruang);
scanf("%d %d", &pj_krmik, &lb_krmik);
scanf("%f %d %f", &harga, &keping, &upah);
sisi_pj = ceil(pj_ruang / pj_krmik);
ERROR
sisi_lb = ceil(lb_ruang / lb_krmik);
butuh = ceil (sisi_pj * sisi_lb * 1.05);
bea_krmik = butuh / keping * harga;
bea_upah = pj_ruang * lb_ruang * upah / 10000;
printf("bea keramik = %.0f \n", bea_krmik);
printf("bea upah
= %.0f \n", bea_upah);
printf("total bea
= %.0f", bea_krmik + bea_upah);
}
Function ‘ceil’ should have a prototype
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
27
# include <stdio.h>
# include <math.h>
tambahkan
void main() {
int pj_ruang, lb_ruang, pj_krmik, lb_krmik, keping;
float harga, upah, bea_krmik, bea_upah;
int
sisi_pj, sisi_lb, butuh;
scanf("%d %d", &pj_ruang, &lb_ruang);
scanf("%d %d", &pj_krmik, &lb_krmik);
scanf("%f %d %f", &harga, &keping, &upah);
sisi_pj = ceil(pj_ruang / pj_krmik);
sisi_lb = ceil(lb_ruang / lb_krmik);
butuh = ceil (sisi_pj * sisi_lb * 1.05);
bea_krmik = butuh / keping * harga;
bea_upah = pj_ruang * lb_ruang * upah / 10000;
printf("bea keramik = %.0f \n", bea_krmik);
printf("bea upah
= %.0f \n", bea_upah);
printf("total bea
= %.0f", bea_krmik + bea_upah);
}
Success
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
28
200 320
30 30
50000 5 75000
bea keramik = 600000
bea upah
= -11520
total bea
= 588480
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
29
# include <stdio.h>
# include <math.h>
void main() {
float pj_ruang, lb_ruang, pj_krmik, lb_krmik;
float harga, keping, upah;
float sisi_pj, sisi_lb, butuh, bea_krmik, bea_upah;
scanf("%f %f", &pj_ruang, &lb_ruang);
scanf("%f %f", &pj_krmik, &lb_krmik);
scanf("%f %f %f", &harga, &keping, &upah);
sisi_pj = ceil(pj_ruang / pj_krmik);
sisi_lb = ceil(lb_ruang / lb_krmik);
butuh = ceil (sisi_pj * sisi_lb * 1.05);
bea_krmik = ceil(butuh / keping) * harga;
bea_upah = pj_ruang * lb_ruang * upah / 10000;
printf("bea keramik = %.0f \n", bea_krmik);
printf("bea upah
= %.0f \n", bea_upah);
printf("total bea
= %.0f", bea_krmik + bea_upah);
}
Success
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
30
200 320
30 30
50000 5 75000
bea keramik = 850000
bea upah
= 480000
total bea
= 1330000
100 100
20 20
10000 10 50000
bea keramik = 30000
bea upah
= 50000
total bea
= 80000
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
31
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
// menghitung biaya pemasangan keramik
# include <stdio.h>
# include <math.h>
void main() {
float pj_ruang, lb_ruang, pj_krmik, lb_krmik;
float harga, keping, upah;
float sisi_pj, sisi_lb, butuh, bea_krmik, bea_upah;
scanf("%f %f", &pj_ruang, &lb_ruang);
scanf("%f %f", &pj_krmik, &lb_krmik);
scanf("%f %f %f", &harga, &keping, &upah);
sisi_pj = ceil(pj_ruang / pj_krmik);
sisi_lb = ceil(lb_ruang / lb_krmik);
butuh = ceil (sisi_pj * sisi_lb * 1.05);
bea_krmik = ceil(butuh / keping) * harga;
bea_upah = pj_ruang * lb_ruang * upah / 10000;
printf("bea keramik = %.0f \n", bea_krmik);
printf("bea upah
= %.0f \n", bea_upah);
printf("total bea
= %.0f", bea_krmik + bea_upah);
}
ALGORITMA dan STRUKTUR DATA: Bahasa C
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
Pendahuluan
32
Pendahuluan
33