Anda di halaman 1dari 12

MASALAH DAN SOLUSI

Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun


secara sistematis dan logis. Kata logis merupakan kata kunci dalam algoritma.
Langkah-langkah dalam algoritma harus logis dan harus dapat ditentukan bernilai salah
atau benar.
Kata Algoritma berasal dari nama Abu Jafar Mohammed Ibnu Ms al-Khowrzm
seoang ilmuwan Persia yang menulis buku berjudul al-jabr wal-muqabala (Rules of
Restoration dan Reduction) sekitar tahun 825.
JENIS DAN PROSES ALGORITMA :
1. Sequence (runtutan), instruksi dikerjakan berurutan (sekuensial).
2. Selection (pemilihan), instruksi dikerjakan bila kreteria tertentu terpenuhi.
- Jika syarat terpenuhi kerjakan proses x
- Jika syarat tidak terpenuhi kerjakan proses y
3. Iteration (pengulangan) suatu intruksi yang dikerjakan berulang-ulang selama
beberapa kali selama masih memenuhi suatu kondisi .
NOTASI ALGORITMA (FLOWCHART)
SIMBOL
KETERANGAN
Input/output digunakan
untuk mewakili data i/o
Garis alir, menunjukkan
arus dari proses
Penghubung,
menunjukkan
penghubung ke halaman
yang sama atau halaman
lain
Persiapan, digunakan
untuk member nilai awal
suatu besaran

SIMBOL

KETERANGAN
Proses, digunakan untuk
mewakili suatu proses
Keputusan, digunakan
untuk suatu seleksi
kondisi dilamam program
Proses terdefinisi,
menunjukkan suatu
operasi yang rinciannya
ditunjukkan ditempat lain
Terminal, menunjukkan
awal dan akhir dari suatu
proses

Struktur Skuensial (RUNUT)

Struktur Seleksi

Struktur Pengulangan

NOTASI ALGORITMA (PSEUDOCODE)


input, read, get, key-

Masukan

Keluaran

in
print,
write,
display
:

Pemberian nilai :
Pemilihan

:
IF

<kondisi benar>
<proses

Else
<proses>
Endif
If
endif

<kondisi benar>
<proses>

Pengulangan :
for

<kondisi benar>
<proses>
endfor
while <kondisi benar>
<proses>
endwhile
do

<kondisi benar>
<proses>
while <kondisi benar>
repeat
<proses>
until <kondisi benar>

NOTASI ALGORITMA (KODE MAYA)


Masukan

Isi, baca, masukan,


ketik, baca file

Keluaran

Tulis, cetak, tampil, rekam

Pemberian nilai :
Pemilihan

Pengulangan

jika <kondisi benar>


<proses
selain itu
<proses>
akhir jika

Ulangi selama <kondisi benar>


<proses>
akhir pengulangan

jika <kondisi benar>


<proses>
akhirjika

Sampai

Ulangi
<proses>
<kondisi benar>

Contoh1
Toko Indo April Mau Mengecat dinding kedua sisi, 12 m2 perlu sekaleng cat. Berapa
kaleng cat diperlukan?
Masukan ?

Keluaran ?

Panjang dinding
Tinggi dinding

Jumlah kaleng cat

PJ1, TG1
ALGORITMA

PJ1, TG2

KALENG

FLOWCHART
PSEUDOCODE
KODE MAYA

12 m2 perlu sekaleng cat


START

Read
PJ1,TG1
PJ2,TG2

LS =
PJ1 X TG1 +
PJ2XTG2

KLG =
LS/12

Print
klg

STOP
A

PSEUDOCODE
read panjang1, tinggi1, panjang2, tinggi2
luas
panjag1 * tinggi1 + panjang2*tinggi2
kaleng luas1/2
print kaleng

KODE MAYA
baca panjang1, tinggi1, panjang2, tinggi2
luas
panjag1 * tinggi1 + panjang2*tinggi2
kaleng luas1/2
cetak kaleng

Contoh2 :
Toko Indo April member potongan harga susu 20 %, maksimal 3 kaleng/kotak. Berapa
uang yang harus dibayar pembeli?
Masukan ?

Keluaran ?

Jumlah yang
dibeli
Harga sekarang

Uang yang harus


dibayar

Jumlah harga

ALGORITMA

Bayar

FLOWCHART
PSEUDOCODE
KODE MAYA

Potongan 20%, maksimu 3


START

PRINT
BYR

Read
HRG,
JML

STOP
JML 3

BYR =
3*HRG*0.8+
(JML-3)*HRG

BYR =
3*HRG*0.8+
(JML-3)*HRG

PSEUDOCODE
input harga, jumlah
if jumlah <= 3
bayar jumlah * harga *0.8
else
bayar
(3*harga*0.8) + (jumlah 3) * harga
endif
print bayar
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

SYARAT ALGORITMA
1. Finiteness
Algoritma harus berakhir (terminate) setelah melakukan sejumlah langkah proses.
2. Definiteness
Setiap langkah algoritma harus didefinisikan dengan tepat dan tidak menimbulkan
makna ganda (ambiguous). Karena itu maka sebenarnya cara yang paling tepat untuk
menuliskan algoritma dengan menggunakan formal language
3. Input
Setiap algoritma memerlukan data sebagai masukan untuk diolah
4. Output
Setiap algoritma memberikan satu atau beberapa hasil keluaran
5. Effectiveness
Langkah-langkah algoritma dikerjakan dalam waktu yang wajar
PEMECAHAN MASALAH
A. Definisi masalah
B. Membuat model
C. Merancang algoritma
D. Menulis program
E. Kompilasi program
F. Run dan hasil
G. Dokumentasi

SIKLUS PEMECAHAN MASALAH

MASALAH
Berapa besarnya biaya untuk memasang

keramik pada suatu kamar belajar?

DATA YANG DIPERLUKAN


Bentuk ruangan ? Persegi panjang
Ukuran ruangan ? pj ruang dan lb ruang
Ukuran keramik ? pj krmik dan lb krmik
harga perbox, keping perbox
Harga keramik ?
upah permeter
Upah kerja ?

MODEL PERHITUNGAN
hitung kebutuhan keramik
hitung upah kerja
total biaya = biaya krmik + upah kerja

get pj_ruang, lb_ruang


get pj_krmik, lb_krmik

masukan

get harga_perbox, keping_perbox


get upah_permeter
krmik_sisi_pj pj_ruang \ pj_krmik
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

# 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);
}

proses

# 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);
error
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);
}

# include <stdio.h>
Tambahan
# include <math.h>
void main() {
m
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);
}