ALGORITMA (KOMPUTER) :
ATURAN PENULISAN DAN STRUKTUR DASARNYA
I. Pendahuluan
Algoritma dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
Algoritma dapat ditulis dalam bahasa natural/bahasa sehari-hari (seperti bahasa
Indonesia, bahasa Inggris, dan lain-lain), contohnya adalah sebagai berikut :
1. Ambil bilangan pertama dan simpan nilai bilangan pertama tersebut ke variabel maks.
2. Ambil bilangan kedua dan bandingkan nilainya dengan maks. Jika bilangan kedua
lebih besar dari maks, simpan nilai bilangan kedua ke variabel maks.
3. Ambil bilangan ketiga dan bandingkan nilainya dengan maks. Jika bilangan ketiga
lebih besar dari maks, simpan nilai bilangan ketiga ke variabel maks.
4. Tampilkan nilai dari variabel maks (yang merupakan bilangan terbesar).
Catatan :
Variabel adalah tempat yang digunakan untuk menampung suatu nilai.
start
read bil-1, bil-2, bil-3
maks bil-1
bil-2 ya
maks bil-2
> maks ?
tidak
bil-3 ya
maks bil-3
> maks ?
tidak
write maks
finish
1
Moh Edi Wibowo
Penulisan algoritma dengan flowchart cukup bagus secara visual tetapi akan menjadi
repot dan tidak praktis kalau algoritmanya panjang.
Cara penulisan yang lain adalah menggunakan pseudo-code (kode semu). Penulisan
dengan cara ini sudah lebih dekat ke bahasa pemrograman, namun sulit dipahami oleh
orang yang tidak mengerti bahasa pemrograman.
Pada dasarnya tidak ada notasi yang baku dalam penulisan algoritma. Setiap orang dapat
membuat aturan penulisan dan notasinya sendiri. Notasi yang digunakan dalam menulis
algoritma disebut dengan notasi algoritmik.
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
{Algoritma yang menghasilkan luas suatu lingkaran apabila diberikan jari-jarinya r}
l pi*r*r
return l
procedure tukar_nilai(a, b)
{Algoritma yang mempertukarkan isi a dan isi b}
c a
a b
b c
Algoritma yang ditulis dengan cara seperti di atas sering disebut dengan kode semu
(pseudo-code). Kode semu pun tidak memiliki bentuk yang baku, masing-masing orang
bisa menuliskan kode semu dalam bentuk yang berbeda.
Dari contoh di atas tampak bahwa suatu algoritma dapat dinyatakan sebagai sebuah
fungsi (function) atau prosedur (procedure). Perbedaan fungsi dan prosedur adalah fungsi
menghasilkan suatu nilai kembali sedangkan prosedur tidak. Fungsi maupun prosedur
seringkali mempunyai parameter yang dapat digunakan untuk melewatkan suatu nilai
ke/dari fungsi/prosedur. Pada kedua contoh di atas r, a, maupun b merupakan contoh
parameter.
Pada contoh di atas fungsi luas_lingkaran akan menghasilkan nilai kembali 25 jika nilai
parameter masukan r adalah 5. Sedangkan prosedur tukar_nilai sama sekali tidak
2
Moh Edi Wibowo
menghasilkan nilai kembali, tetapi prosedur tersebut akan mempertukarkan nilai dari
variabel-variabel yang dijadikan parameternya. Misalnya variabel x pada awalnya
bernilai 10 dan variabel y bernilai 7, maka setelah dilakukan prosedur tukar_nilai(x, y)
maka variabel x menjadi bernilai 7 dan variabel y menjadi bernilai 10. Suatu fungsi
ditandai dengan adanya kata return.
Pada contoh di atas terdapat kata const, kata const merupakan salah satu contoh dari apa
yang dinamakan deklarasi. Deklarasi adalah bagian dari algoritma yang mendefinisikan
nama-nama yang akan digunakan pada algoritma. Deklarasi ada bermacam-macam,
antara lain :
1. Deklarasi konstanta
Konstanta memiliki nilai yang tetap, tidak dapat diubah di bagian manapun dari
algoritma. Contoh deklarasi konstanta :
{deklarasi konstanta}
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
{Algoritma yang menghasilkan luas suatu lingkaran apabila diberikan jari-jarinya r}
l pi*r*r
return l
{deklarasi konstanta}
const e = 2.7182818284590452353602874713527
…
Catatan :
Bagian yang berada di dalam kurung kurawa {} disebut dengan komentar. Fungsi
komentar adalah untuk memberikan penjelasan pada algoritma. Komentar bukan
termasuk dari langkah-langkah algoritma yang akan dieksekusi. Bahkan komentar
dapat dibuang begitu saja tanpa mempengaruhi kebenaran algoritma.
2. Deklarasi tipe
Tipe yang dimaksud di sini adalah tipe-tipe data yang digunakan di dalam algoritma. Ada
dua jenis tipe data yaitu tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang tidak
perlu dideklarasikan lagi, biasanya sudah dikenal secara umum dan didukung langsung
oleh perangkat keras komputer. Tipe bentukan adalah tipe yang perlu dideklarasikan,
3
Moh Edi Wibowo
biasanya belum dikenal secara umum dan tidak mendapat dukungan langsung dari
perangkat keras. Contoh tipe dasar antara lain integer, real, char, dan boolean. Contoh
tipe bentukan adalah record, enumerasi, array, dan lain lain. Berikut ini adalah contoh
deklarasi suatu tipe bentukan :
{deklarasi tipe}
type kompleks = record
nyata: real
imajiner: real
Kadang-kadang suatu tipe dideklarasikan hanya sebagai nama alias dari tipe yang lain :
4
Moh Edi Wibowo
3. Deklarasi variabel
Variabel adalah tempat yang digunakan untuk menampung suatu nilai. Setiap variabel
memiliki tipe tertentu. Berbeda dengan konstanta, nilai dari variabel dapat diubah di
berbagai bagian dari algoritma. Contoh deklarasi variabel adalah sebagai berikut :
{deklarasi variabel}
a: kompleks
b: kompleks
procedure tukar
{Algoritma untuk menukar isi a dan b}
temp: real {deklarasi variabel}
temp a.nyata
a.nyata b.nyata
b.nyata temp
temp a.imajiner
a.imajiner b.imajiner
b.imajiner temp
const n = 250
{deklarasi variabel}
i: integer
f: real
c: char
b: booelan
s: string
5
Moh Edi Wibowo
t: tab
l: gender
m: matriks
…
4. Deklarasi fungsi/prosedur
Pada contoh di atas, setiap algoritma mengandung sebuah fungsi/prosedur yang dapat
disebut sebagai fungsi/prosedur utama. Kadang-kadang fungsi/prosedur utama
memanggil sebuah fungsi/prosedur yang lain. Maka fungsi/prosedur yang dipanggil
tersebut juga harus dideklarasikan di dalam algoritma. Contoh algoritma yang memiliki
lebih dari satu fungsi :
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
l pi*r*r
return l
function isi_silinder(r, t)
{Algoritma yang menghasilkan volume silinder apabila diberikan jari-jari alas r dan
tinggi t}
a luas_lingkaran(r)
v a*t
return v
6
Moh Edi Wibowo
const N = 100
T: tabs
procedure isi_data
for i 1 to N do
T[i] random(10*N)
function isi_dan_cari_minimum
{Algoritma untuk mengisi elemen-elemen T secara random kemudian mencari nilai
minimum dari elemen-elemen T tersebut}
isi_data
min T[1]
for i 2 to N do
if T[i] < min then
min T[i]
return min
a b
Bentuk tersebut merupakan instruksi untuk mengisi variabel a dengan nilai (isi) dari
variabel b. Bentuk yang mirip dengan instruksi di atas adalah :
a b+c
7
Moh Edi Wibowo
Bentuk tersebut merupakan instruksi untuk mengisi variabel a dengan hasil penjumlahan
dari isi variabel b dengan isi variabel c. Simbol seperti dan + sering disebut sebagai
operator. Operator disebut sebagai operator penugasan (assignment) dan operator +
disebut sebagai operator penjumlahan. Suatu operator bertugas melakukan operasi,
operator akan melakukan operasi penugasan sedangkan operator + akan melakukan
operasi penjumlahan. Data yang dikenai operasi oleh operator disebut sebagai operand,
dengan demikian a, b, atau c pada contoh di atas disebut sebagai operand. Satu atau
gabungan beberapa operasi sering disebut dengan ekspresi. Jadi ekspresi terdiri dari satu
atau lebih operator maupun operand.
ekspresi
a+b–c
operator operand
Bentuk-bentuk instruksi yang lain masih banyak, begitu pula dengan jenis-jenis operasi
dan operator. Setiap orang boleh membuat instruksi, operasi, dan operatornya sendiri asal
mudah dipahami dan dimengerti oleh orang lain.
Langkah-langkah yang ada di dalam algoritma membentuk tiga buah struktur dasar,
yaitu :
a. runtutan (sequence)
b. pemilihan (selection)
c. pengulangan (repetition)
a. Runtutan
procedure menampilkan_tiga_kata
write(’Aku’)
write(’Cinta’)
write(’Indonesia’)
8
Moh Edi Wibowo
const pi = 3.1415926535897932384626433832795
function luas_lingkaran(r)
l pi*r*r
return l
b. Pemilihan
Pemilihan terjadi ketika suatu instruksi dikerjakan apabila suatu kondisi terpenuhi.
Misalnya instruksi A dikerjakan karena kondisi X terpenuhi (yang juga berarti instruksi A
tidak dikerjakan bila kondisi X tidak terpenuhi). Dalam kasus yang lain instruksi A
dikerjakan bila kondisi X terpenuhi, atau instruksi B yang dikerjakan bila kondisi X tidak
terpenuhi. Contoh algoritmanya adalah sebagai berikut :
procedure tampilkan_kalimat(i)
if i = 0 then
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia’)
Pada contoh di atas, bila i bernilai 2 maka kondisi dari if (yaitu i = 0) tidak terpenuhi
sehingga kalimat tidak akan ditampilkan.
procedure pilih_kalimat(i)
if i = 0 then
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia ’)
else
write(’Aku ’)
write(’Cinta ’)
write(’Malaysia’)
Pada contoh di atas, bila i bernilai 2 maka kondisi dari if tidak terpenuhi sehingga kalimat
yang ditampilkan adalah
Aku Cinta Malaysia
9
Moh Edi Wibowo
procedure pilih_dari_tiga_kalimat(i)
if i = 0 then
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia’)
else if i = 1 then
write(’Aku ’)
write(’Cinta ’)
write(’Malaysia’)
else
write(’Aku ’)
write(’Cinta ’)
write(’Timor Leste’)
Pada contoh di atas, bila i bernilai 2 maka kondisi dari if yang pertama tidak terpenuhi
sehingga dilanjutkan ke bagian else yang pertama. Pada bagian else yang pertama
ditemui if yang kedua. Kondisi dari if yang kedua juga tidak terpenuhi sehingga kalimat
yang ditampilkan adalah
Aku Cinta Timor Leste
Bentuk if yang bersarang (ada if di dalam if) seperti pada contoh algoritma yang terakhir,
kadang-kadang dapat dituliskan dalam bentuk lain seperti berikut :
procedure pilih_dari_tiga_kalimat(i)
case i = 0 :
write(’Aku ’)
write(’Cinta ’)
write(’Indonesia’)
i=1:
write(’Aku ’)
write(’Cinta ’)
write(’Malaysia’)
else
write(’Aku ’)
write(’Cinta ’)
write(’Timor Leste’)
10
Moh Edi Wibowo
c. Pengulangan
Pengulangan terjadi ketika ada suatu instruksi yang dilakukan terus-menerus selama
suatu kondisi terpenuhi. Bentuk pengulangan yang sering dijumpai ditampilkan pada
contoh-contoh di bawah ini :
procedure tampilkan_n_kata(n)
for i 1 to n do
write(’contoh’)
procedure tampilkan_n_nomor(n)
for i 1 to n do
write(’Nomor ’)
write(i)
procedure tampilkan_n_kata(n)
repeat n times
write(’contoh lain’)
procedure tampilkan_n_nomor(n)
for i n downto 1 do
write(’Nomor ’, i)
Pada contoh-contoh di atas juga tampak adanya suatu kesamaan, yaitu jumlah
pengulangan telah diketahui lebih dahulu yaitu sebanyak n kali.
procedure tampilkan_nomor(n)
for i 3 to n step 2 do
write(i)
11
Moh Edi Wibowo
procedure tampilkan_nomor(n)
C {1, 3, 5, 7, 9}
for each i ∈ C do
write(i)
Catatan :
Bagian yang ada di antara tanda kurung kurawa {} apada algoritma di atas bukanlah
komentar, tetapi menyatakan himpunan (set).
procedure tampilkan_nomor(n)
for each i bilangan ganjil di antara 0 dan 10 do
write(i)
Kedua algortima di atas berfungsi untuk menampilkan angka ganjil di antara 0 dan 10.
Untuk pengulangan yang jumlah iterasinya belum diketahui, biasanya digunakan bentuk
while dan repeat.
procedure tampilkan_beberapa_kali
i random(10)
while i ≠ 5 do
write(’contoh’)
i random(10)
12
Moh Edi Wibowo
procedure tampilkan_lebih_dari_sekali
repeat
write(’contoh’)
i random(10)
until i ≠ 5
procedure tampilkan_nomor
for i 1 to 10 do
write(i)
if i = 5 then
break
Pengulangan pada algoritma di atas akan berakhir setelah memasuki iterasi ke-5 sehingga
yang angka-angka yang ditampilkan adalah
12345
procedure tampilkan_nomor
i 1
while i < 10 do
write(i)
if i = 5 then
break
i i+1
Selain instruksi break juga terdapat instruksi continue yang berfungsi untuk melanjutkan
pengulangan langsung menuju ke iterasi selanjutnya dengan mengabaikan instruksi-
instruksi yang terletak setelah instruksi continue.
13
Moh Edi Wibowo
14