Algoritma dibangun dari 3 buah struktur dasar, yaitu : 1. Runtunan (sequence)
2. Pemilihan (selection) 3. Pengulangan (repetition)
Struktur Runtunan (sequence)
• Sebuah runtunan terdiri dari satu atau lebih instruksi.
• Dikerjakan secara berurutan sesuai dengan urutan penulisannya
• Urutan instruksi menentukan keadaan akhir algoritma, bila urutannya diubah, maka hasil akhirnya mungkin berubah.
Contoh 1 Pseudocode :
Algoritma Persegi Panjang
{ Menghitung Luas Persegi Panjang } { Deklarasi variabel }
var Panjang, Lebar, Luas : real { Deskripsi }
Read (Panjang) Read (Panjang)
Luas = Panjang * Lebar Write (Luas)
START
STOP Read Panjang, Lebar
Luas = Panjang * Lebar
Write Luas
Struktur Dasar Algoritma
Flowchart :
Algoritma Hitung_harga Contoh 2 :
{ untuk menghitung harga barang } { Deklarasi variabel }
var jum_brg, hrg_brg, jum_hrg : real;
{ Deskripsi }
Write(“Jumlah Barang = ") Read (jum_brg)
Write(“Harga Barang = ") Read (hrg_brg)
jum_hrg = jum_brg * hrg_brg
Write(" Jumlah Harga = ", jum_hrg)
Struktur Pemilihan (selection)
Adakalanya suatu aksi akan dikerjakan jika syarat tertentu terpenuhi.
jum_hrg = jum_brg x hrg_brg Write jum_hrg
START Read jum_brg, hrg_brg
STOP
Struktur seleksi pada algoritma/program menggunakan struktur IF.
Struktur Seleksi ada 4 bentuk : 1. IF Sederhana
2. IF-THEN-ELSE 3. IF Bertingkat 4. Case
IF Sederhana
Bentuk :
If kondisi then aksi
- Aksi (statement) hanya akan dikerjakan jika kondisi memenuhi (benar atau true).
- Jika kondisi tidak memenuhi (salah atau false) maka aksi tidak dikerjakan.
- Kondisi berupa suatu ekspresi logika.
1. Dalam kehidupan sehari-hari : Contoh :
Jika Amir juara kelas maka
Ayah akan membelikan motor
Maka contoh 1 diatas dalam algoritma, dapat ditulis sbb : If Amir juara kelas then
Ayah akan membelikan motor 2. Untuk menentukan bilangan terbesar
dari dua buah bilangan
Jika nilai X lebih besar dari nilai Y, maka Tulis X
Maka contoh 1, ditulis sbb : If X > Y then Write X
1. Mencari bilangan terbesar Contoh pseudocode dan flowchart :
Algoritma Max { Deklarasi } var X, Y : real;
{ Deskripsi } Read (X,Y)
If X > Y then Write X
2. Untuk menentukan penerimaan calon pegawai ditentukan persyaratan atau kondisi : Nilai test lebih besar atau sama dengan dari 60, maka cetak ”LULUS”.
Maka contoh 3, ditulis sbb :
If (Nilai>=60) then Write(“LULUS”)
Algoritma Nilai
Contoh pseudocode dan flowchart :
{ Deklarasi } var Nilai : real;
{ Deskripsi } Read (Nilai)
If Nilai >=60 then Write “LULUS
Buatlah Programnya ! Tugas :
If-Then-Else
Bentuk :
If kondisi then
X > Y Y T
MULAI Read
X,Y
MULAI
Nilai
>= 60
Y T
MULAI Read
Nilai
MULAI
Write X
Write
“LULUS
Aksi1 Else
Aksi2
- Jika kondisi memenuhi (benar atau true) maka aksi1 akan dikerjakan,
- Jika kondisi tidak memenuhi (salah atau false) maka aksi2 akan dikerjakan.
1. Untuk menentukan bilangan terbesar Contoh pseudocode dan flowchart :
dari dua buah bilangan : Jika nilai X lebih besar dari nilai Y, maka tulis X sebagai bilangan terbesar, jika X tidak lebih besar dari nilai Y, maka tulis Y sebagai bilangan terbesar.
Algoritma membandingkan 2 bilangan { Deklarasi }
var X, Y : real;
{ Deskripsi } Read (X,Y) If X > Y then
Write X else
Write Y
2. Untuk menentukan penerimaan calon pegawai ditentukan persyaratan atau kondisi : Nilai test lebih besar atau sama dengan dari 60, maka cetak ”LULUS”, jika Nilai test tidak lebih besar atau tidak sama dengan dari 60, maka cetak ”GAGAL”.
X > Y
Y T MULAI
Read X,Y
SELESAI
Write X
Write Y
Algoritma Nilai
Contoh pseudocode dan flowchart :
{ Deklarasi } var Nilai : real;
{ Deskripsi } Read (Nilai)
If Nilai >=60 then Write “LULUS”
Else
Write “GAGAL”
Soal latihan :
1. Buatlah algoritma flowchart dan programnya untuk menghitung pajak gaji pegawai, dengan ketentuan sbb :
- gaji pokok yang dikenakan pajak 15% hanya yang nilainya >= Rp. 2 juta
- cetak pajak
Nilai
>= 60
Y
T MULAI
Read Nilai
SELESAI
Write
“LULUS
Write
“GAGAL
2. Toko ABC memberikan discount dengan ketentuan : - Jika jumlah harga (jumlah pembelian) >= Rp.
500.000 maka discount 10% dari jumlah harga - Jika kurang dari Rp. 500.000 maka discount 5%
dari jumlah harga
- Cetak discount dan jumlah pembayaran Buatlah algoritma flowchart dan programnya.
Jawaban nomor 2 Flowchart :
gapok >=
Rp. 2 jt
Y
T MULAI
Read gapok
Pajak = 0.15 x gapok Pajak = 0
Program :
/* Program menghitung pajak */
#include <iostream.h>
void main() {
float gapok, pajak;
pajak = 0;
cout << “Input gaji pokok : “ ; cin >> gapok;
If (gapok >= 2000000) pajak = 0.15 * gapok;
/* cetak pajak */
// setiosflags () utk mengatur format
// ios::fixed agar output dlm bentuk desimal // setprecision() utk mengatur jml digit pecahan cout<<setiosflags(ios::fixed) << setprecision(2);
cout << "Besarnya pajak : " << pajak << endl;
}
If-Then-Else Bertingkat
Bentuk :
If kondisi-1 then Aksi-1 Else
If kondisi-2 then Aksi-2
Else . .
If kondisi-n then Aksi-n
Else
Aksi-n+1
Keterangan :
- Jika kondisi-1 memenuhi (benar atau true) maka aksi-1 akan dikerjakan
- Jika kondisi-2 tidak memenuhi (salah atau false) maka aksi-2 akan dikerjakan
- Jika kondisi-n tidak memenuhi (salah atau false) maka aksi-n akan dikerjakan
- Jika kondisi-1, kondisi-2, dan kondisi-n tidak memenuhi (salah atau false) maka aksi-n+1 yang akan dikerjakan.
Contoh soal :
Karyawan PT.ABC terbagi kedalam 4 golongan dengan ketentuan gaji pokok sbb :
Golongan Gaji pokok A Rp. 200.000,- B Rp. 250.000,- C Rp. 300.000,- D Rp. 350.000,-
Input : golongan, output : gaji pokok.
Buat algoritma dan programnya,
Algoritma Gaji Pokok { Deklarasi }
var Gapok : real;
Gol : char;
{ Deskripsi } Read (Gol)
if (Gol = “A”) then Gapok = 200000;
else
if (Gol = “B”) then Gapok = 250000;
else
if (Gol = “C”) then Gapok = 300000;
else
Gapok = 350000;
Write (Gapok)
Buatlah Programnya ! Tugas :
SELEKSI DENGAN DO-CASE Bentuk :
CASE (VAR)
Kondisi-1 : Aksi-1 Kondisi-2 : Aksi-2 .
Gol =”A”
Y
T
Gapok = 350000 T
Y
T Y MULAI
Read Gol
Gol = “B”
Gol = “C”
Gapok = 200000
Gapok = 250000
Gapok = 300000
SELESAI Read Gol
.
Otherwise : Aksi-n ENDCASE
Tiap kondisi diperiksa nilai kebenarannya.
Jika kondisi-1 benar, maka aksi-1 dilaksanakan, Jika kondisi-2 benar, maka aksi-2 dilaksanakan, Selain itu (otherwise), aksi-n dilaksanakan,
Flowchart Do-Case :
Contoh algoritma Do-Case : Algoritma Gaji Pokok
{ Deklarasi } var Gapok : real;
Gol : char;
{ Deskripsi } Read (Gol) CASE (Gol)
Gol
Gapok =
200000 Gapok =
250000 Gapok =
300000 Gapok = 350000
A B C D
“A” : Gapok = 200000;
“B” : Gapok = 250000;
“C” : Gapok = 300000;
“D” : Gapok = 350000;
Otherwise : Write “Data Golongan salah !”
ENDCASE Write Gapok;
Buatlah Programnya ! Tugas :
1. Dibaca masa kerja karyawan, besarnya bonus tahunan akan diberikan dengan ketentuan sbb : Soal latihan :
a. Jika masa kerja < = 1 tahun maka Bonus = Rp. 1 juta
b. Jika masa kerja > 1 s/d 3 tahun maka Bonus = Rp. 2 juta
c. Jika masa kerja > 3 tahun maka Bonus = Rp. 3 juta
Buatlah algoritma dengan flowchart dan pseudocode
Pseudocode Flowchart
Jawaban :
Algoritma Masa_Kerja
Deklarasi
Var MK, Bonus : Real;
Deskripsi Read (MK)
If MK <= 1 then
Bonus = 1000000 else If MK <= 3 then Bonus = 2000000 else
Bonus = 3000000 end if
Write (Bonus)
Program Jawaban 1 Seleksi bertingkat :
/* Program menghitung bonus */
#include <iostream.h>
#include <iomanip.h>
void main() {
int masa_kerja;
float bonus;
MK <=1
Y
T Y
T MULAI Read MK
MK <=3
Bonus = 1000000
Write Bonus SELESAI
Bonus = 2000000
Bonus = 3000000
/* cetak label input */
cout << “Ketik masa kerja : “ ; /* baca data */
cin >> masa_kerja;
/* proses seleksi */
If (masa_kerja <= 1) bonus = 1000000;
else
If (masa_kerja <= 3) bonus = 2000000;
else
bonus = 3000000;
/* cetak bonus */
/* format bil. bukan eksponensial / bukan pangkat */
cout << setiosflags(ios::fixed);
/* menentukan jumlah digit desimal */
cout << setprecision(2);
cout << "Besarnya bonus : " << bonus << endl;
}