Judul
{Deskripsi yang menjelaskan algoritma secara ringkas
untuk memudahkan pembaca memahami}
{Keadaan Awal: }
{Keadaan Akhir:}
Kamus
{Bagian tempat mendeklarasikan data, prosedur, dan
fungsi}
Algoritma
{Bagian tempat menuliskan langkat-langkah atau instruksi
penyelesaian masalah }
Program • Nama dalam teks algoritma adalah
kata atau frasa yg digunakan sebagai
identifikasi dari: Program, Prosedur,
Prosedur Fungsi, Variabel, Konstanta, Tipe Data
• Sebagai identitas, maka Nama bersifat
Fungsi unik
Nama • Pilihan kata atau frasa sebaiknya yang
mencermin makna bagi pembaca
Variabel
dalam memahami algoritma
• Konvensi: gunakan tanda garis bawah,
Konstanta pemisah antar kata dalam sebuah
nama; contoh: Luas_Persegi_Panjang,
Keliling_Lingkaran, dll
Tipe Data
Tipe • Tipe data adalah pola representasi
Dasar data dalam komputer
• Mendefinisikan tipe data berarti:
Tipe • Menyebutkan nama tipe data yang
String •
dimaksud dalam Kamus
Tipe Data Mendefinisikan domain nilai yang
dapat dimiliki oleh nama tersebut
Tipe • Menyepakati tentang bagaimana
Enumerasi menuliskan nilai data dari tipe
tersebut
Tipe • Menyepakati tetang operator yang
Bentukan dapat dioperasikan terhadap nilai-
nilai dari tipe data tersebut
• Tipe dasar adalah tipe yang
Boolean sudah didefinisikan dalam
bahasa eksekutor algoritma
Integer • Karena telah didefinisikan, maka
Tipe kita dapat menggunakan nama-
Dasar
Real nama ini dalam teks algoritma
kita
Character
TIPE BOOLEAN
True
Operation Result Operation Result
Nilai
T and T T T or T T
T and F F T or F T
False
F and T F F or T T
F and F F F or F F
Operator Arti Tipe
Hasil T xor T F F xor T T
And Dan Boolean T xor F T F xor F F
Or Atau Bollean
Xor Exclusive Boolean Not T F Not F T
Or
Not Negasi Boolean
TIPE INTEGER
Operasi Aritmatika
Operator Arti Result Type
+ Tambah Integer
- Kurang Integer
* Kali Integer
Operasi Pembandingan
/ Bagi Real
Operator Arti Tipe hasil
Mod Sisa pembagian Integer
> Lebih besar Boolean bulat
< Lebih kecil Bollean Div Bagi Integer
≥ Lebih besar atau Boolean
Abs Nilai absolut Integer
sama dengan
≤ Lebih kecil atau Boolean ^ Pangkat Integer
sama dengan
= Sama dengan Boolean
≠ Tdk sama dengan Boolean
CONTOH
Contoh Hasil Contoh Hasil
3 + 10 3 < 10
87 – 31 87 > 31
5 * 10 5≤5
10 / 3 5<5
10 div 3 5=5
20 mod 5 20 ≠ 5
TIPE REAL
Operasi Aritmatika
Operator Arti Result Type
+ Tambah Real
- Kurang Integer
* Kali Integer
Operasi Pembandingan
/ Bagi Real
Operator Arti Tipe hasil
Mod Sisa pembagian Integer
> Lebih besar Boolean bulat
< Lebih kecil Bollean Div Bagi Integer
≥ Lebih besar atau Boolean
Abs Nilai absolut Integer
sama dengan
≤ Lebih kecil atau Boolean ^ Pangkat Integer
sama dengan
= Sama dengan Boolean
≠ Tdk sama dengan Boolean
TIPE CHARACTER (CHAR)
Domain nilai : {…, ‘a’, ‘b’, ‘c’, … , ‘A’, ‘B’, ‘C’, … , ‘!’, ‘?’, ‘.’, ‘,’, … , RETURN, SPACE, …}
Operasi Pembandingan
Operator Arti Tipe hasil
= Sama dengan Boolean
≠ Tdk sama dengan Boolean
CONTOH
Contoh Hasil Contoh Hasil
6.3 + 5.8 3.0 ≠ 3.5
10 / 3 1/ 3 = 0.333
10 / 2.5 ‘a’ = ‘a’
7.2 * 2.5 ‘T’ = ‘t’
0.003 < 0.3 ‘m’ < ‘z’
8.0 ≥ 5 ‘Q’ > ‘z’
TIPE STRING
Domain nilai : {…, “a”, “ab”, “abc”, … , ‘”Apel”, “Beri”, “Ceri”, … }
Operasi Pembandingan Operasi Konkatenasi
Operator Arti Tipe hasil Operator Arti Tipe hasil
= Sama dengan Boolean • Tambah satu String
≠ Tdk sama dengan Boolean karakter di
akhir string
Tambah satu String
˚ karakter di
awal string
& Konkatenasi String
string
TIPE ENUMERASI
Tipe yang domain nilainya didefinisikan dengan menyebutkan menyebutkan satu per satu anggotanya
Biasa digunakan untuk suatu kumpulan nilai yang sejenis, misalnya:
type Hari = (Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu)
type Bulan = (Jan, Feb, Mar, Apr, Mei, Jun, Jul, Ags, Sep, Okt, Nov, Des)
Operasi Mengakses/Mengacu Nila Eleman
Operator Artinya Hasil Contoh:
type Hari = (Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu)
First Elemen Nilai elemen
pertama pertama
H : Hari {H adalah variable bertipe Hari}
Last Elemen terakhir Nilai elemen
terakhir maka berikut adalah operasi-operasi yang dapat diterapkan
Succ Successor dari Nilai elemen pada nilai variable H:
sebuah elemen setelahnya
First(H) {menghasilkan nilai Senin}
Pred Predecesor Nilai elemen
Last(H) {menghasilkan nilai Minggu}
dari sebuah sebelumnya
Succ(Rabu) {menghasilkan nilai Kamis}
elemen
Pred(Rabu) {menghasilkan nilai Selasa}
• Nilai atau harga adalah besaran dari tipe data yg
NILAI, EKSPRESI, DAN telah dikenal, contoh
Nilai dari tipe integer, misalnya: 5, 10 dll
NAMA DATA (VARIABLE) Nilai dari tipe real, misalnya 1.5 , 3.14 dll
Nilai dari tipe character, misalnya ‘C’, ‘!’ dll
• Ekspresi adalah rumus perhitungan yang terdiri dari
operator (+ - * / and or dll) dan operan (nilai) yang
dikenakan operasi dalam ekspresi tersebut, contoh:
100 * 0.3
(100 * 0.3) + (75 * 0.7)
(100 + 75) / 2
50 > 10
(50 > 10) and (3 < 1)
• Nama data adalah nama suatu data dari tipe yg
telah dikenal. Nama data diberikan melalui
mekanisme pendefnisiannya dalam Kamus, contoh:
• Konstanta adalan nama data yang nilainya tidak
berubah
• Variabel adalah nama data yang nilainya dapat
berubah
• Nilai sebuah Konstanta diberikan pada saat
PENGISIAN NILAI dideklarasikan pada bagian Kamu. Contoh:
(ASSIGNMENT)
• Nilai sebuah Variabel diberikan melalui aksi /
instruksi yg disebut Assignment ( ) atau melalui
alat masukan dengan perintah input (
<nama_variable> ), seperti pada contoh gambar
di sebelah kiri.
• Nama data atau variabel harus bertipe sama
dengan nilai data yang di-assign kepadanya
• Konstanta tidak bisa diubah nilai melalui perintah
assignment maupun perintah input.
PERINTAH INPUT DAN • Input
Instruksi input() adalah instruksi untuk membaca data
OUTPUT dari alat masukan (keyboard, mouse, scanner, dll)
dan menyimpan nilai yang dibaca ke variable.
Berikut adalah bentuk-bentuk instruksi input() yang
dapat digunakan dalam notasi algoritmik.
input ( <variabel> )
input ( <list-variabel> )
• Output
Instruksi output() adalah instruksi untuk mencetak
atau menampilkan nilai data ke alat keluaran (layer,
printer, plotter, dll)
Berikut adalah bentuk-bentuk instruksi outpu() yang
dapat digunakan dalam notasi algoritmik.
output ( <nilai-data> )
output ( <list-nilai> )
Nilai data dapat berupa konstanta, nama variabel,
maupun ekspresi
Judul
{Deskripsi yang menjelaskan algoritma secara ringkas
untuk memudahkan pembaca memahami}
{Keadaan Awal: }
{Keadaan Akhir:}
Kamus
{Bagian tempat mendeklarasikan data, prosedur, dan
fungsi}
Algoritma
{Bagian tempat menuliskan langkat-langkah atau instruksi
penyelesaian masalah }
Program Luas_Persegi _Panjang
{Program menghitung luas persegi panjang}
{Keadaan Awal: apapun}
{Keadaan Akhir: nilai luas persegi panjang tercetak di
layar sesuai dengan input data panjang dan lebar
persegi panjang}
Kamus
P : integer {Panjang}
L : integer {Lebar}
Luas : integer
Algoritma
Input (P)
Input (L)
Luas P * L
Output (Luas)
Program Luas_Persegi _Panjang
{Program menghitung luas persegi panjang}
{Keadaan Awal: apapun}
{Keadaan Akhir: nilai luas persegi panjang tercetak di
layar sesuai dengan input data panjang dan lebar
persegi panjang}
Kamus
Panjang : integer
Lebar : integer
Luas : integer
Algoritma
Input (P)
Input (L)
Luas P * L
Output (Luas)
Program Luas_Persegi _Panjang
{Program menghitung luas persegi panjang}
{Keadaan Awal: apapun}
{Keadaan Akhir: nilai luas persegi panjang tercetak di
layar sesuai dengan input data panjang dan lebar
persegi panjang}
Kamus
P : integer {Panjang}
L : integer {Lebar}
L : integer {Luas}
Algoritma
input (P)
input (L)
Luas P * L
output (Luas)
PERSOALAN MENUKAR ISI GELAS
A B C
• Ada tiga gelas A, B, dan C
• Gelas A berisi cairan merah, Gelas B berisi cairan biru,
dan Gelas C kosong
Proses
• Bagaimana urutan langkah-Langkah untuk menukar isi
gelas A dan B?
A B C
DEFINISI PERSOALAN MENUKAR ISI
GELAS
A B C
• {Keadaan awal: Isi gelas A merah, Isi gelas B
biru, gelas C kosong}
• Instruksi-1
• Instruksi-2
• ...
• Instruksi-n
• {Keadaan akhir: Isi gelas A biru, isi gelas B
merah, gelas C kosong}
A B C
Program Tukar_AB
{Program menukar isi variabel A dan B
Nilai variabel A dan B di baca dari alat input
Program mencetak Nilai A dan B sebelum ditukar,
dan setelah ditukar}
{Keadaan Awal: apapun}
{Keadaan Akhir: nilai variable A dan B tercetak pada
alat keluaran sebelum ditukar dan setelah ditukar}
Kamus
A : integer
B : integer
C : integer
Algoritma
……………….. {membaca nilai A}
……………….. {membaca nilai B}
output (“Nilai sebelum ditukar”)
………………..
………………..
………………..
output (“Nilai sebelum ditukar”)
……………….. {membaca nilai A}
……………….. {membaca nilai B}
Judul
{Deskripsi yang menjelaskan algoritma secara ringkas
untuk memudahkan pembaca memahami}
{Keadaan Awal: }
{Keadaan Akhir:}
Kamus
Constant Pi : real = 3.1429
GajiTotal, GajiPokok, Tunjangan, PotGaji : real
Mid1, Mid2 : integer
Urutan, Ranking : integer Tipe Hasil atau
Ekspresi
CC1, CC2 : character Komentar
S1, Message : string Urutan – 1
Found : boolean
CC1 or CC2
Function AddXY (X, Y : integer) → integer Found and (Urutan > 100)
{Menghasilkan penjumlahan X + Y} (Urutan^2) + GajiTotal +
Algoritma AddXY (Mid1, Mid2)
Urutan * 2 / Ranking
Message & S1
Message = “HELLO”
Start AKSI SEKUENSIAL
Tuang isi gelas A • Aksis sekuensial (sequential statement) adalah
ke Gelas C sederetan instruksi elementer dan/atau aksi yang
akan dilaksanakan oleh mesin (komputer)
Tuang isi gelas B
ke Gelas A berdasarkan urutan penulisannya
• Aksi sekuensial merupakan struktur kontrol paling
Tuang isi gelas C sederhana dalam
ke Gelas B
End
Program SEQ1 Program SEQ2
{Contoh penulisan aksi sekuensial} {Contoh penulisan aksi sekuensial dengan tanda titik
koma}
Kamus Kamus
i : integer i : integer
x : real x : real
Flag : boolean Flag : boolean
Algoritma Algoritma
input (i) input (i) ; x 0.0 ; Flag true
x 0.0 output (x) ; output (i * 2, Flag)
Flag true
output (x)
output (i * 2, Flag)
Program SEQ3
{Contoh aksi sekuensial yang mempengaruhi hasil jika
urutannya diubah }
Kamus
i : integer
Algoritma
{state: i belum terdefinisi}
input (i)
{state: i terdefinisi; berisi nilai hasil input}
output (i)
{state: i tertulis ke dalam alat keluaran}
Program HelloX
{Menulis Hello berikut nama yang dibaca dari alat masukan
ke alat keluaran }
Kamus
nama : string
Algoritma
input (nama)
output (“Hello”, nama)
Program Jarak
{ dibaca v dan t, menghitung S = v * t dan menuliskan
hasilnya }
{ menggunakan nama antara }
Kamus
v : integer {kecepatan dalam satuan m/detik}
t : integer {waktu dalam satuan detik}
S : integer {jarak dalam meter yang ditempuh dalam
waktu t dgn kecepatan v, pada gerak lurus
beraturan}
Algoritma
input (v, t)
S=v*t
output (S)
Program Jarak2
{ dibaca v dan t, menghitung jarak v * t dan menuliskan
hasilnya }
{ tanpa menggunakan nama antara }
Kamus
v : integer {kecepatan dalam satuan m/detik}
t : integer {waktu dalam satuan detik}
Algoritma
input (v, t)
output (v * t)
Program Jarak3
{ dibaca v dan t, menghitung jarak v * t dan menuliskan
hasilnya }
{ tanpa menggunakan nama antara }
Kamus
v : integer {kecepatan dalam satuan m/detik}
t : integer {waktu dalam satuan detik}
Algoritma
output (“Ketikkan data kecepatan: “)
input (v)
output (“Ketikkan data waktu temput: “)
input (t)
output (“Jarak temput: “, v * t)
Program JamMenitDetik
{ dibaca n nilai integer dalam satuan detik }
{ menghitung konversi nilai n detik ke dalam J (jam),
M (menit), dan D (detik sisanya) dan mencetak hasil
ke alat keluaran}
Kamus
n : integer [0..999999] {data yg dibaca}
H : integer ≥ 0 {Hari}
J : integer [0..23] {Jam}
M : integer [0..59] {Menit}
D : integer [0..59] {Detik}
rH : integer [0..86399] {sisa detik dalam perhitungan Hari}
rJ : integer [0..3599] {sisa detik dalam perhitungan Jam}
Algoritma
input (n) {0 ≤ n ≤ 999999}
H n div 86400; rH n mod 86400
{n = H * 86400 + rH and 0 ≤ rH < 86400}
J rH div 3600 ; rJ rH mod 3600
{n = H * 86400 + J * 3600 + rJ and 0 ≤ rH < 86400 and 0 ≤ rJ <
3600}
M = rJ div 60 ; D rJ mod 60
{n = H * 86400 + J * 3600 + rJ and 0 ≤ rH < 86400 and 0 ≤ rJ <
3600
and 0 ≤ M < 60 and 0 ≤ D < 60}