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