Kamis, 17 April 2008

ATURAN PENULISAN ALGORITMA


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

ditulis dalam notasi apapun, asalkan mudah dibaca dan dimengerti, karena memang tidak

ada notasi baku dalam penulisan algoritma. Tiap orang dapat membuat aturan penulisan

dan notasi algoritma sendiri. Agar notasi algoritma mudah ditranslasi ke dalam notasi

bahasa pemrograman, maka sebaiknya notasi algoritma tersebut berkorespnden dengan

notasi bahasa pemrograman secara umum.

Aturan Penulisan Algoritma

Setiap Algoritma akan selalu terdiri dari tiga bagian yaitu :

Judul (Header)

Kamus

Algoritma

Pada setiap bagian tersebut apabila akan dituliskan komentar mengenai setiap bagian

tersebut dituliskan diantara tanda kurung kurawa contoh { Komentar }. Notasi algoritmis

yang dituliskan diantara tanda ini tidak akan dieksekusi oleh program.

Lisensi Dokumen:

Copyright © 2003 IlmuKomputer.Com

Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan

disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat

tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang

disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang,

kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.

Kuliah Berseri IlmuKomputer.Com

Copyright © 2003 IlmuKomputer.Com

Pengantar Algoritma dan Pemrograman

Alex Budiyanto

2

Contoh :

Judul (Header)

Judul adalah bagian teks algoritma yang digunakan sebagai tempat mendefinisikan nama

dengan menentukan apakah teks tersebut adalah program, prosedur, fungsi. Setelah judul

disarankan untuk menuliskan spesifikasi singkat dari teks algoritma tersebut. Nama

algoritma sebaiknya singkat namun cukup menggambarkan apa yang akan dilakukan oleh

algoritma tersebut.

Contoh :

Catatan :

Untuk memisahkan antara kata dalam judul algoritma menggunakan tanda “_” bukanlah

suatu keharusan. Anda dapat menuliskan LuasLingkaran atau Luas_Lingkaran. Tetapi

sebaiknya anda tidak menggunakan spasi “ “ untuk memisahkan antara kata di dalam nama

algoritma.

Judul

{ Komentar mengenai Algoritma seperti cara kerja program, Kondisi awal dan kondisi

akhir dari algoritma }

Kamus

{ Pada bagian ini, didefinifikan nama konstanta, nama variable, nama prosedur dan

nama fungsi }

Algoritma

{ Pada bagian ini algoritma dituliskan. Semua teks yang dituliskan tidak diantara tanda

kurung kurawa akan dianggap sebagai notasi algoritma yang akan berpengaruh

terhadap kebenaran algoritma }

Program Luas_Kubus ← {Judul Algoritma}

{ Menghitung luas kubus untuk ukuran sisi yang dibaca dari piranti masukan lalu

mencetak hasilnya kepiranti keluaran} ← {Spesifikasi Algoritma}

Kuliah Berseri IlmuKomputer.Com

Copyright © 2003 IlmuKomputer.Com

Pengantar Algoritma dan Pemrograman

Alex Budiyanto

3

Kamus (Deklarasi)

Kamus adalah bagian teks algoritma sebagai tempat untuk mendefinisikan :

Nama type

Nama konstanta

Nama variabel

Nama fungsi

Nama prosedur

Semua nama tersebut baru dapat dipakai di dalam algoritma jika telah didefinisikan terlebih

dahulu didalam kamus. Penulisan sekumpulan nama dalam kamus sebaiknya dikelompokan

menurut jenis nama tersebut.

Nama variabel belum terdefinisi nilainya ketika didefinisikan. Pendefinisian nama

konstanta sekaligus memberikan harga konstanta tersebut, pendefinisian nama fungsi

dilakukan sekaligus dengan domain / range serta spesifikasinya. Pendefinisian nama

prosedur sekaligus dengan pendefinisian parameter (jika ada) dan spesifikasi prosedur

(kondisi awal “Initial State”, Kondisi akhir “ Final State” dan proses yang dilakukan).

Contoh :

Kamus

{Nama type, hanya untuk type yang bukan type dasar}

type jam : :integer> {Type jam terdiri dari 3 masukan yaitu “hh” sebagai

jam. “mm” sebagai menit dan “ss” sebagai detik}

{Nama konstanta, harus menyebutkan type dan nilai }

constant phi : real = 3,14159

constant nama : string = ‘Alex’

constant benar : boolean = true

{Nama Informasi, menyebutkan type}

x,y : integer {suatu nilai yang bertype bilangan bulat}

NMax : real {nilai maksimum yang bertype bilangan real}

Nama : string {suatu nilai yang merupakan kumpulan character}

P : point {suatu nilai pada bidang kartesian}

Cari : Boolean {suatu nilai logika}

Kuliah Berseri IlmuKomputer.Com

Copyright © 2003 IlmuKomputer.Com

Pengantar Algoritma dan Pemrograman

Alex Budiyanto

4

Algoritma (Deskripsi)

Algoritma adalah bagian inti dari suatu algoritma yang berisi instruksi atau pemanggilan

aksi yang telah didefinisikan. Komponen teks algoritma dalam pemrograman procedural

dapat berupa :

Instruksi dasar seperti input/output, assignment

Sequence (runtutan)

Analisa kasus

Perulangan

Setiap langkah algoritma dibaca dari “atas” ke “bawah”. Urutan deskripsi penulisan

menentuan urutan langkah pelaksanaan perintah.

Contoh :

Algoritma

input (c,d) {menerima masukan 2 bilangan c dan d}

if c <>then {operasi kondisional}

e ← a + b {e di assignment oleh nilai a dan b}

else

e ← a – b

output (e) {hasil keluaran berupa bilangan e}

{Nama fungsi, menyebutkan domain dan range}

function RealToInt (x:real) → integer

{mengubah harga x yang bertype real menjadi harga ekivalen yang bertype integer}

{Nama prosedur, menyebutkan “IS” initial state, “FS” final state dan proses}

procedure tukar (input/output x,y : real)

{ IS x dan y terdefinisi, x = a dan y = b

FS x = b dan y = a

Proses : menukar isi informasi bilangan x dan y }

Kuliah Berseri IlmuKomputer.Com

Copyright © 2003 IlmuKomputer.Com

Pengantar Algoritma dan Pemrograman

Alex Budiyanto

5

Catatan :

Untuk kata-kata input, output, if then else, output akan dipelajari lebih mendalam dalam

bab-bab selanjutnya.

Contoh Penyelesaian Masalah Oleh Algoritma

Mencetak String “Selamat Belajar Algoritma dan Pemrograman” ke piranti Keluaran.

Menentukan nilai terbesar dari bilangan bulat yang dibaca dari piranti masukan dan

menuliskan hasilnya ke piranti keluaran.

Program Cetak_string

{mencetak string “Selamat Belajar Algoritma dan Pemrograman” ke piranti

keluaran}

Kamus

{tidak ada}

Algoritma

Output (‘Selamat Belajar Algoritma dan Pemrograman’)

Program Nilai_Maksimal

{Menentukan nilai tertinggi yang dibaca dari piranti masukan dan hasilnya dicetak

ke piranti keluaran}

Kamus

hasil,x,y : integer {hasil merupakan variabel untuk menampung nilai keluaran}

{x,y adalah variabel untuk menampung nilai masukan}

Algoritma

input (x,y) {membaca nilai x dan y dari piranti masukan}

if x <>then {operasi kondisional}

hasil ← x {hasil di assignment oleh nila terbesar}

else

hasil ← y

output (hasil) (nilai didalam variabel hasil dicetak ke piranti keluaran}

Algoritma Utama/Fungsi/prosedur

Algoritma utama adalah badan utama dari algoritma sebagai analogi program

utama dalam program. Namun berbeda dengan program, algoritma bisa jadi

hanya merupakan bagian tertentu dari suatu program bahkan bagian dari suatu

fungsi/prosedur dari program tsb..

Fungsi/prosedur adalah sederetan perintah/operasi seperti halnya algoritma itu

sendiri yang dipisahkan dari algoritma utamanya guna menjadikannya sebagai

subfokus dalam algoritma. Dalam suatu algoritma jika apa yang dikerjakan

dalam fungsi/prosedur itu dapat dianggap jelas maka fungsi/prosedur tersebut

tidak dituliskan atau digantikan dengan kalimat bahasa seharihari..

Pascal menyediakan sejumlah fungsi/prosedur yang siap pakai (tanpa

pemrogram menuliskan lagi fungsi/prosedur itu), dalam Pseudopascal ini

beberapa fungsi/prosedur Pascal tertentu yang sangat umum juga digunakan.

􀂾 Misalnya read (untuk membaca masukan), readln (membaca masukan

termasuk karakter “end of line”), write (untuk mencetak keluaran),

writeln (mencetak keluaran dan suatu “end of line”), eof (untuk

memeriksan apakah masukan sudah mencapai “end of file”).

Mengikuti definisi Pascal, fungsi dibedakan dari prosedur dari adanya harga

yang dihasilkan oleh fungsi sebagai akibat dari pemanggilan/penggunaan fungsi

tersebut.

Suatu fungsi/prosedur bisa didefinisikan dengan sejumlah argumen (istilah lain:

parameter). Pada saat pemanggilan fungsi/prosedur yang bersangkutan,

argumen ini jika ada dituliskan di dalam tanda kurung setelah nama

fungsi/prosedur itu.

Ada dua jenis argumen: argumen bersifat “call by value” dan argumen “call by

reference”. Untuk “call by value” dalam pemanggilannya yang dikirimkan ke

fungsi/prosedur adalah harganya sementara “call by reference” yang dikirimkan

adalah variabel itu sendiri. Perbedaan kedua argumen ini dinyatakan di daftar

argumen di bagian definisi fungsi dengan mengawali nama variabel ybs dengan

notasi “var”.

􀂾 Misalnya: fungsi kubik di atas memerlukan satu argumen ‘call by value”

dan prosedur sw memerlukan dua argumen “call by reference”.

Untuk “call by value” selain suatu harga literal, harga suatu variabel, bisa juga

hasil dari suatu operasi aritmatis atau ekspresi lojik.

􀂾 Misalnya “kubik(Tbl[I,1] – t0)” memanggil fungsi kubik dengan argumen

adalah harga yang dihasilkan dari operasi “Tbl[I,1] – t0”.

Khususnya pada pemanggilan fungsi yang akan menghasilkan harga setelah

pemanggilan itu dilaksanakan, harga hasilnya itu kemudian menggantikannya

di dalam operasi/ekspresi yang bersangkutan.

􀂾 Misalnya: dalam “sum.x := sum.x + kubik(Tbl[I,1] – t0)” setelah

pemanggilan “kubik(Tbl[I,1] – t0)”, harga yang dihasilkannya beserta

harga dalam sum.x dijumlahkan dan hasilnya diassign kembali ke sum.x

11

Untuk “call by reference” argumen di bagian yang melakukan pemanggilan

hanya dapat berupa variabel saja dan ke variabel itu di bagian fungsi/prosedur

jika mengalami perubahan isi (walau dengan nama variabel yang lain), saat

kembali ke pemanggil perubahan itu tetap berlaku.

􀂾 Misalnya: dalam pemanggilan “sw(sum.x, sum.y)” variabel sw.x dan

sw.y saat berada di prosedur sw dengan nama baru a dan b akan

dieprtukarkan, sehingga saat kembali isi sw.x dan sw.y sudah

bertukaran.

Aturanaturan Penulisan Struktur Kendali Aliran

Secara umum aturanaturan penulisan struktur kendali aliran ini mengikuti aturan

bahasa Pascal. Seperti hanya Pascal (dan bahasabahasa lain, penulisan notasnotasi,

perintahperintah atau ekspresiekspresi tidak harus dibaris tersendiri/tertentu; bisa saja

beberapa elemen imi dituliskan bergabung dengan baris yang sama. Namun, demi

kejelasan dalam pembacaan algoritma beberapa kebiasaan dilakukan (tapi tidak harus).

Perintah yang ditulis dalam bahasa seharihari dituliskan tidak dicampur dalam

satu baris dengan elemen algoritma yang lain.

Indentasi yang sama untuk blok struktur yang sama sangat disarankan..

D.1 Struktur beginend

Perintahperintah dalam satu deret yang menjadi satu kesatuan struktural (satu

blok) dituliskan di antara notasi begin dan notasi end. Perintah yang ditulis

dalam notasi bahasa Pascal dituliskan dengan tanda separator “;” di akhir setiap

perintah sementara perintah dalam bahasa seharihari dituliskan tanpa tanda

separator tsb.

Jika terdapat struktur lain di antara satu beginend, maka struktur itu

diperlakukan sebagaimana perintah yang ditulis dalam bahasa pascal (diakhiri

separator “;”).

D.2 Strktur ifthen

Kondisi yang akan diperiksa dalam struktur ini adalah ekspresi lojik yang

diletakan di antara notasi if dan notasi then. Perintah (atau perintahperintah)

yang akan dilakukan jika ekspresi lojik itu berharga boolean true diletakkan

setelah notasi then.

Jika lebih dari satu perintah maka perintahperintah itu dijadikan satu kesatuan

struktur dengan tambahan notasi beginend yang mengapitnya.

D.3 ifthenelse

12

Seperti pada ifthen Kondisi yang akan diperiksa dalam struktur ini adalah

ekspresi lojik yang diletakan di antara notasi if dan notasi then. Perintah (atau

perintahperintah) yang akan dilakukan jika ekspresi lojik itu berharga boolean

true diletakkan setelah notasi then dan perintah (atau perintahperintah) yang

akan dijalankan jika berharga false diletakkan setelah notasi else.

Baik untuk then maupun untuk else, jika lebih dari satu perintah maka masingmasing

perintahperintah itu dijadikan kesatuankesatuan struktur dengan

tambahan notasi beginend yang mengapitnya (masingmasing).

D.4 fordo

Di antara notasi for dan notasi do ekspresi iteratif (ekspresi yang menyatakan

bagaimana iterasi itu harus terjadi) dituliskan.

􀂾 Penulisan ekspresi iteratif berisi

􀂾 nama variabel iterator (variabel integer yang harganya akan berubahubah

sejalan dengan iterasi yang terjadi),

􀂾 setelah tanda assignment dituliskan harga awal iterator (yang bisa

merupakan suatu harga literal atau ekspresi aritmatis),

􀂾 notasi to atau downto yang menyatakan arah harga iterator menaik atau

menurun, harga terakhir interasi itu masih akan dilakukan (yang bisa

merupakan suatu harga literal atau suatu ekspresi aritmatis), dan

􀂾 jika kenaikan/penurunan bukan bilangan 1, harga perubahan yang terjadi

pada iterator setiap satu iterasi dilalui dinyatakan dengan notasi step dan

diikuti harga perubahannya (misalnya “step 2”).

Setelah notasi do perintah (atau perintahperintah) yang akan dilakukan pada

setiap kali iterasi dituliskan. Jika lebih dari satu perintah maka perintahperintah

itu dijadikan satu kesatuan struktur dengan tambahan notasi beginend yang

mengapitnya.

D.5 whiledo

Kondisi yang akan diperiksa adalah ekspresi lojik yang diltakan di antara notasi

while dan notasi do. Perintah (atau perintahperintah) yang akan dilakukan

secara berulangulang selama ekspresi lojik itu berharga boolean true diletakkan

setelah notasi do.

Jika lebih dari satu perintah maka perintahperintah itu dijadikan satu kesatuan

struktur dengan tambahan notasi beginend yang mengapitnya.

D.6 repeatuntil

Kondisi yang akan diperiksa adalah ekspresi lojik yang diltakan setelah notasi

until. Perintah (atau perintahperintah) yang akan dilakukan dan kemudian

diulangulang selama ekspresi lojik itu berharga boolean false diletakkan antara

notasi repeat dan notasi until.

D.7 caseofend

13

Hal yang akan diperiksa adalah variabel atau ekspresi arinmatis yang memiliki

hargaharga tertentu. Variabel atau ekspresi aritmatis itu diletakkan di antara

notasi case dan notasi of.

Di antara notasi of dan notasi end terdaftar sejumlah kemungkinan harga/kasus

dan perintah (atau perintahperintah) yang akan dijalankan untuk kemungkinan

harga tersebut.

Satu harga literal13 yang mungkin14 diletakkan di sebelah kiri, diikuti notasi “:

(titik dua) lalu diikuti oleh perintah yang akan dijalankan selanjutnya sebuah “;

(titik koma)15.

Jika ada beberapa perintah yang akan dijalankan maka perintahperintah itu

dijadikan satu kesatuan struktur dengan tambahan notasi beginend yang

mengapitnya.

E. Aturanaturan Penulisan Prosedur dan Fungsi

Secara umum aturan kerangka penulisannya mengikuti aturan dalam bahasa Pascal

kecuali beberapa hal termasuk bahwa badan algoritma di dalam fungsi atau prosedur

sesuai dengan pembahasan algoritma di atas (memungkinkan baris perintah dalam

bahasa seharihari, perintahperintah rinci yang bukan fokus diperlihatkan sebagai baris

“….”. Seperti halnya nama variabel namanama prosedur maupun function bersifat case

insentitive namun demi untuk memberikan kejelasan dalam pembacaan, penamaan

prosedur/function maupun variabel direkomendasikan untuk konsisten di setiap bagian

algoritma.

Dalam bahasa Pascal, suatu prosedur/function dapat memiliki prosedur/function

lokalnya sendiri. Dalam pseudocode ini demi kompatibilitas dengan bahasa lain, hal itu

ditiadakan.

E.1 Prosedur

Mengawali suatu prosedur notasi procedure dituliskan dan diikuti nama prosedur. Jika

ada argumen, mana argumenargumen didaftarkan di dalam tanda kurung dan setiap

argumen tersebut dituliskan dengan dipisahkan dengan tanda koma (“,”). Dalam

bahasa Pascal jenis variabel harus dispesifikasikan, namun dalam Pseudopascal ini

seandainya cukup jelas maka demi mempersingkat, jenis variabel bisa dihilangkan.

Untuk menunjukkan suatu argumen bersifat passbyreference maka di depan nama

argumen itu dituliskan notasi var (seperti pada bahasa Pascal).

13 Dalam Bahasa C, sebelum harga literal tsb, ada notasi “case” mendahuluinya.

14 Dalam Pascal harga yang mungkin ini bisa dinyatakan sebagai range harga yang mungkin

misalnya bilanganbilangan antara 1 sampai dengan 10 dengan menulisnya sebagai “1..10” atau

beberapa kemungkinan harga dengan dipisahkan koma misalnya “2, 5, 9”. Hal ini tidak ada di bahasa C

sehingga dalam Pseudopascal ini hal itu dihindari.

15 Dalam bahasa C, harus diikuti notasi “break;” karena tanpa itu maka alirannya jadi sangat berbeda.

14

Berikutnya jika ada variabel lokal yang perlu ditonjolkan didaftarkan (beserta jenis

variabel tersebut) setelah notasi var. Badan algoritma prosedur dituliskan di antara

begin dan end dan diikuti tanda “;” (titik koma).

E.2 Fungsi

Mirip seperti pada prosedur kecuali tiga hal berikut ini. Pertama, yang mengawali

fungsi adalah notasi function. Kedua, setelah nama (serta argumenargumennya yang

dituliskan di dalam tanda kurung), suatu notasi “:” (titik dua) dan jenis harga yang akan

dihasilkan fungsi dituliskan. Ketiga dalam badan algoritma nama fungsi digunakan

seolah suatu variabel penerima assignment yang apabila algoritma dalam fungsi selesai

dijalankan maka harga terakhir yang diberikan padanya adalah harga yang akan

dikembalikan ke algoritma pemanggil fungsi ini. Jika nama fungsi berada sebagai

operand dari suatu operasi maka yang terjadi adalah pemanggilan fungsi terhadap

disinya sendiri yang dikenal dengan istilah rekursif.

Tidak ada komentar: