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 “
Contoh :
Kamus
{Nama type, hanya untuk type yang bukan type dasar}
type jam :
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 sehari‐hari..
• 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.
•
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.
Aturan‐aturan Penulisan Struktur Kendali Aliran
Secara umum aturan‐aturan penulisan struktur kendali aliran ini mengikuti aturan
bahasa Pascal. Seperti hanya Pascal (dan bahasa‐bahasa lain, penulisan notas‐notasi,
perintah‐perintah atau ekspresi‐ekspresi 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 sehari‐hari dituliskan tidak dicampur dalam
satu baris dengan elemen algoritma yang lain.
• Indentasi yang sama untuk blok struktur yang sama sangat disarankan..
D.1 Struktur begin‐end
• Perintah‐perintah 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 sehari‐hari dituliskan tanpa tanda
separator tsb.
• Jika terdapat struktur lain di antara satu begin‐end, maka struktur itu
diperlakukan sebagaimana perintah yang ditulis dalam bahasa pascal (diakhiri
separator “;”).
D.2 Strktur if‐then
• Kondisi yang akan diperiksa dalam struktur ini adalah ekspresi lojik yang
diletakan di antara notasi if dan notasi then. Perintah (atau perintah‐perintah)
yang akan dilakukan jika ekspresi lojik itu berharga boolean true diletakkan
setelah notasi then.
• Jika lebih dari satu perintah maka perintah‐perintah itu dijadikan satu kesatuan
struktur dengan tambahan notasi begin‐end yang mengapitnya.
D.3 if‐then‐else
12
• Seperti pada if‐then Kondisi yang akan diperiksa dalam struktur ini adalah
ekspresi lojik yang diletakan di antara notasi if dan notasi then. Perintah (atau
perintah‐perintah) yang akan dilakukan jika ekspresi lojik itu berharga boolean
true diletakkan setelah notasi then dan perintah (atau perintah‐perintah) yang
akan dijalankan jika berharga false diletakkan setelah notasi else.
• Baik untuk then maupun untuk else, jika lebih dari satu perintah maka masingmasing
perintah‐perintah itu dijadikan kesatuan‐kesatuan struktur dengan
tambahan notasi begin‐end yang mengapitnya (masing‐masing).
D.4 for‐do
• 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 perintah‐perintah) yang akan dilakukan pada
setiap kali iterasi dituliskan. Jika lebih dari satu perintah maka perintah‐perintah
itu dijadikan satu kesatuan struktur dengan tambahan notasi begin‐end yang
mengapitnya.
D.5 while‐do
• Kondisi yang akan diperiksa adalah ekspresi lojik yang diltakan di antara notasi
while dan notasi do. Perintah (atau perintah‐perintah) yang akan dilakukan
secara berulang‐ulang selama ekspresi lojik itu berharga boolean true diletakkan
setelah notasi do.
• Jika lebih dari satu perintah maka perintah‐perintah itu dijadikan satu kesatuan
struktur dengan tambahan notasi begin‐end yang mengapitnya.
D.6 repeat‐until
• Kondisi yang akan diperiksa adalah ekspresi lojik yang diltakan setelah notasi
until. Perintah (atau perintah‐perintah) yang akan dilakukan dan kemudian
diulang‐ulang selama ekspresi lojik itu berharga boolean false diletakkan antara
notasi repeat dan notasi until.
D.7 case‐of‐end
13
• Hal yang akan diperiksa adalah variabel atau ekspresi arinmatis yang memiliki
harga‐harga 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 perintah‐perintah) 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 perintah‐perintah itu
dijadikan satu kesatuan struktur dengan tambahan notasi begin‐end yang
mengapitnya.
E. Aturan‐aturan 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 sehari‐hari, perintah‐perintah rinci yang bukan fokus diperlihatkan sebagai baris
“….”. Seperti halnya nama variabel nama‐nama 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 argumen‐argumen 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 pass‐by‐reference 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 bilangan‐bilangan 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 argumen‐argumennya 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:
Posting Komentar