Transcript Session10

MASALAH dan SOLUSI
ALGORITMA
SOURCE
CODE
MASALAH
HASIL
EXECUTABLE
CODE
RUN
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
0
ALGORITMA

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’almuqabala (rules of restoration and reduction,
pada sekitar tahun 825).
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
1
JENIS PROSES ALGORITMA

Sequence, runut


Selection, pemilihan



Langkah kedua dikerjakan setelah mengerjakan
langkap pertama
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
2
NOTASI ALGORITMA (FLOWCHART)
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
3
NOTASI ALGORITMA (FLOWCHART)
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:
Proses
Proses
Proses
Proses
A
B
C
D
Pendahuluan
4
NOTASI ALGORITMA (FLOWCHART)
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:
Proses
Proses
Proses
Proses
A
B
C
E
Pendahuluan
5
NOTASI ALGORITMA (PSEUDOCODE)
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
6
POTONGAN HARGA SUSU
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
7
POTONGAN HARGA SUSU
Potongan 20%, maksimum 3.
Start
A
Read
HRG,
JML
Print
BYR
JML  3
BYR=
3*HRG*0.8 +
(JML-3)*HRG
Ya
Stop
BYR=
JML*HRG*0.8
A
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
8
POTONGAN HARGA SUSU
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
9
POTONGAN HARGA SUSU
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
10
SYARAT ALGORITMA
1. Finiteness

Algoritma harus berakhir, terminate, halt
2. Definiteness

Langkah algoritma harus didefinisikan dengan
tepat dan tidak ambiguous
3. Input

Algoritma memerlukan masukan untuk diolah
4. Output

Algoritma memberi hasil keluaran
5. Effectiveness

Langkah algoritma dikerjakan dalam waktu
yang wajar
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
11
PEMECAHAN MASALAH
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
12
SIKLUS PEMECAHAN MASALAH
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGO
TULIS
PROGRAM
COMPILE
Y
S.Err
RUN
Y
O.Err
DOKUMENTASI
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
13
SIKLUS PEMECAHAN MASALAH
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
14
SIKLUS PEMECAHAN MASALAH
MODEL PERHITUNGAN
hitung kebutuhan keramik
hitung upah kerja
total biaya = biaya krmik + upah kerja
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
15
SIKLUS PEMECAHAN MASALAH
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
16
SIKLUS PEMECAHAN MASALAH
# 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
17
SIKLUS PEMECAHAN MASALAH
# 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
18
SIKLUS PEMECAHAN MASALAH
# 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
19
SIKLUS PEMECAHAN MASALAH
200 320
30 30
50000 5 75000
bea keramik = 600000
bea upah
= -11520
total bea
= 588480
ALGORITMA dan STRUKTUR DATA: Bahasa C
Pendahuluan
20
SIKLUS PEMECAHAN MASALAH
# 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
21
SIKLUS PEMECAHAN MASALAH
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
22
SIKLUS PEMECAHAN MASALAH
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
23