Anda di halaman 1dari 14

Moh Edi Wibowo

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 :

Algoritma memilih bilangan terbesar dari 3 buah bilangan :

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.

Kelemahan penulisan algoritma dalam bahasa natural adalah sering membingungkan


(ambiguous). Cara penulisan algoritma yang lain adalah dengan menggunakan flowchart
(diagram alir) seperti berikut :

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.

II. Contoh Penulisan Algoritma dengan Kode Semu (Pseudo-Code)

Berikut ini adalah salah satu contoh penulisan algoritma :

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

function norma_kompleks(c: kompleks)


{Algoritma yang menghasilkan norma dari suatu bilangan kompleks}
n c.nyata*c.nyata + c.imajiner*c.imajiner
return n

type person = record


name: string
age: integer
male: boolean

type tab = array [1..50] of integers

type gender = enum {male, female}

type matriks = array [1..20, 1..20] of integers

type pointerperson = person

Kadang-kadang suatu tipe dideklarasikan hanya sebagai nama alias dari tipe yang lain :

type bilanganbulat = integers

type jeniskelamin = gender

Pembahasan mengenai berbagai jenis tipe terdapat pada bagian selanjutnya.

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 :

type kompleks = record


nyata: real
imajiner: real

{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

r: array [1..30] of integers


v: array [1..n] of integers
array u[1..100]
array w[1..n]

5
Moh Edi Wibowo

t: tab
l: gender
m: matriks

Deklarasi variabel dapat dilakukan di sebarang tempat. Variabel yang dideklarasikan di


dalam suatu fungsi/prosedur disebut sebagai variabel lokal sedangkan variabel yang
dideklarasikan tidak di dalam fungsi/prosedur disebut variabel global. Variabel lokal
dikenali hanya di dalam fungsi yang bersangkutan dan tidak akan dikenali di luar fungsi
tersebut. Varibel global dapat dikenali di sebarang tempat dari algoritma. Dalam banyak
kasus, deklarasi variabel tidak selalu harus dilakukan. Kadang-kadang notasi algoritmik
menjadi lebih sederhana dan lebih jelas apabila variabel-variabel yang ada pada algoritma
tidak dideklarasikan terlebih dahulu.

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

Berikut ini adalah contoh algoritma yang cukup rumit penulisannya :

const N = 100

type tabs = array [1..N] of integers

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

III. Struktur Dasar Algoritma

Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkah-langkah tersebut


ditulis dalam bentuk instruksi-instruksi di dalam fungsi atau prosedur. Sekelompok
instruksi dapat membentuk sebuah blok instruksi. Sebuah blok instruksi dapat dianggap
sebagai satu kesatuan yang tidak terpisah. Instruksi-instruksi yang tergabung dalam
sebuah blok ditulis menjorok untuk membedakan dengan instruksi-instruksi di dekatnya
yang tidak termasuk sebagai anggota blok.

Bentuk instruksi yang sering ditemui adalah :

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

Runtutan adalah instruksi-instruksi yang dikerjakan secara berurutan. Berurutan di sini


berarti sesuai dengan urutan penulisannya, yakni sebuah instruksi dijalankan setelah
instruksi sebelumnya selesai dikerjakan. Contoh algoritma yang hanya terdiri dari
runtutan adalah sebagai berikut :

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)

Algoritma-algoritma di atas melakukan penulisan sebanyak n putaran. Pada setiap


putaran algoritma-algoritma tersebut menuliskan kata maupun nomor. Putaran pada
pengulangan sering disebut dengan iterasi. Jadi algoritma-algoritma di atas melakukan n
kali iterasi, mulai dari iterasi pertama sampai iterasi ke-n.

Pada contoh-contoh di atas juga tampak adanya suatu kesamaan, yaitu jumlah
pengulangan telah diketahui lebih dahulu yaitu sebanyak n kali.

Contoh yang lain adalah sebagai berikut :

procedure tampilkan_nomor(n)
for i 3 to n step 2 do
write(i)

11
Moh Edi Wibowo

Algortima di atas melakukan pengulangan sebanyak ((n − 3) ÷ 2 ) + 1 kali. Jika n diberi


nilai 15 maka algoritma di atas menampilkan angka-angka
3 5 7 9 11 13 15

Contoh yang lain lagi adalah sebagai berikut :

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)

Algoritma di atas menggunakan pengulangan bentuk while. Sebelum melakukan


pengulangan, dilakukan pengecekan terlebih dahulu pada kondisi dari while. Bila kondisi
terpenuhi maka iterasi dimulai, dan bila kondisi tidak terpenuhi maka pengulangan tidak
akan pernah dilakukan. Setiap kali akan memasuki iterasi baru (pada awal iterasi),
dilakukan pengecekan lagi pada kondisi. Iterasi dilanjutkan jika kondisi masih terpenuhi
dan pengulangan berakhir ketika kondisi tidak terpenuhi. Algoritma di atas mungkin
akan menampilkan kata contoh sebanyak 1 kali, 100 kali, 60 kali, atau bahkan tidak
menampilkan kata contoh sama sekali.

12
Moh Edi Wibowo

procedure tampilkan_lebih_dari_sekali
repeat
write(’contoh’)
i random(10)
until i ≠ 5

Algoritma di atas menggunakan pengulangan bentuk repeat. Pada bentuk repeat,


pengulangan langsung memasuki iterasi yang pertama. Pada akhir iterasi, dilakukan
pengecekan pada kondisi dari repeat. Iterasi dilanjutkan jika kondisi terpenuhi dan
pengulangan berakhir jika kondisi tidak terpenuhi. Algoritma di atas akan menampilkan
kata contoh sedikitnya 1 kali.

Kadang-kadang diperlukan untuk mengakhiri pengulangan tanpa menghiraukan jumlah


iterasi yang sudah ditempuh maupun kondisi yang ada pada suatu saat. Pengulangan
dapat dipaksa berakhir dengan menggunakan instruksi break.

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

Algoritma di atas juga menampilkan angka-angka


12345

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

procedure tampilkan_nomor_dan kuadratnya


for i 1 to 6 do
write(i)
if i > 3 then
continue
write(i*i)

Algoritma di atas akan menampilkan angka-angka


112439456

14

Anda mungkin juga menyukai