Anda di halaman 1dari 11

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 ariabel maks. !. Ambil bilangan kedua dan bandingkan nilainya dengan maks. "ika bilangan kedua lebih besar dari maks, simpan nilai bilangan kedua ke ariabel maks. 3. Ambil bilangan ketiga dan bandingkan nilainya dengan maks. "ika bilangan ketiga lebih besar dari maks, simpan nilai bilangan ketiga ke ariabel maks. #. $ampilkan nilai dari ariabel maks (yang merupakan bilangan terbesar). Catatan : Variabel adalah tempat yang digunakan untuk menampung suatu nilai. %elemahan penulisan algoritma dalam bahasa natural adalah sering membingungkan (ambiguous). &ara penulisan algoritma yang lain adalah dengan menggunakan flowchart (diagram alir) seperti berikut

! 'enulisan algoritma dengan flowchart cukup bagus secara isual tetapi akan men(adi repot dan tidak praktis kalau algoritmanya pan(ang. &ara penulisan yang lain adalah menggunakan pseudo-code (kode semu). 'enulisan dengan cara ini sudah lebih dekat ke bahasa pemrograman, namun sulit dipahami oleh orang yang tidak mengerti bahasa pemrograman. 'ada dasarnya tidak ada notasi yang baku dalam penulisan algoritma. )etiap orang dapat membuat aturan penulisan dan notasinya sendiri. *otasi yang digunakan dalam menulis algoritma disebut dengan notasi algoritmik. II. Contoh Penul !an Al"o# t$a den"an Kode Se$u (Pseudo-Code) +erikut ini adalah salah satu contoh penulisan algoritma : %on!t pi , 3.1#1-.!/-3-0.1.3!30#/!/#3303!1.&un%t on luas_lingkaran(r) 2Algoritma yang menghasilkan luas suatu lingkaran apabila diberikan (ari-(arinya r3 l pi4r4r #etu#n l '#o%edu#e tukar_nilai(a, b) 2Algoritma yang mempertukarkan isi a dan isi b3 ca ab bc Algoritma yang ditulis dengan cara seperti di atas sering disebut dengan kode semu (pseudo-code). %ode semu pun tidak memiliki bentuk yang baku, masing-masing orang bisa menuliskan kode semu dalam bentuk yang berbeda. 5ari contoh di atas tampak bah6a suatu algoritma dapat dinyatakan sebagai sebuah 7ungsi (function) atau prosedur (procedure). 'erbedaan 7ungsi dan prosedur adalah 7ungsi menghasilkan suatu nilai kembali sedangkan prosedur tidak. 8ungsi maupun prosedur seringkali mempunyai parameter yang dapat digunakan untuk mele6atkan suatu nilai ke/dari 7ungsi/prosedur. 'ada kedua contoh di atas r, a, maupun b merupakan contoh parameter. 'ada contoh di atas 7ungsi luas_lingkaran akan menghasilkan nilai kembali !- (ika nilai parameter masukan r adalah -. )edangkan prosedur tukar_nilai sama sekali tidak Moh Edi Wibowo 3 menghasilkan nilai kembali, tetapi prosedur tersebut akan mempertukarkan nilai dari ariabel- ariabel yang di(adikan parameternya. 9isalnya ariabel x pada a6alnya bernilai 1: dan ariabel y bernilai 1, maka setelah dilakukan prosedur tukar_nilai(x, y) maka ariabel x men(adi bernilai 1 dan ariabel y men(adi bernilai 1:. )uatu 7ungsi ditandai dengan adanya kata #etu#n. 'ada contoh di atas terdapat kata %on!t, kata %on!t merupakan salah satu contoh dari apa yang dinamakan deklarasi. 5eklarasi adalah bagian dari algoritma yang mende7inisikan nama-nama yang akan digunakan pada algoritma. 5eklarasi ada bermacam-macam, antara lain : (. De)la#a! )on!tanta %onstanta memiliki nilai yang tetap, tidak dapat diubah di bagian manapun dari algoritma. &ontoh deklarasi konstanta :

2deklarasi konstanta3 %on!t pi , 3.1#1-.!/-3-0.1.3!30#/!/#3303!1.&un%t on luas_lingkaran(r) 2Algoritma yang menghasilkan luas suatu lingkaran apabila diberikan (ari-(arinya r3 l pi4r4r #etu#n l 2deklarasi konstanta3 %on!t e = !.110!010!0#-.:#-!3-3/:!01#113-!1 * Catatan : Bagian yang berada di dalam kurung kurawa 23 disebut dengan komentar. ungsi komentar adalah untuk memberikan pen!elasan pada algoritma. "omentar bukan termasuk dari langkah-langkah algoritma yang akan dieksekusi. Bahkan komentar dapat dibuang begitu sa!a tanpa mempengaruhi kebenaran algoritma. +. De)la#a! t 'e $ipe yang dimaksud di sini adalah tipe-tipe data yang digunakan di dalam algoritma. Ada dua (enis tipe data yaitu tipe dasar dan tipe bentukan. $ipe dasar adalah tipe yang tidak perlu dideklarasikan lagi, biasanya sudah dikenal secara umum dan didukung langsung oleh perangkat keras komputer. $ipe bentukan adalah tipe yang perlu dideklarasikan, Moh Edi Wibowo # biasanya belum dikenal secara umum dan tidak mendapat dukungan langsung dari perangkat keras. &ontoh tipe dasar antara lain integer, real, char, dan boolean. &ontoh tipe bentukan adalah record, enumerasi, array, dan lain lain. +erikut ini adalah contoh deklarasi suatu tipe bentukan : 2deklarasi tipe3 t,'e kompleks , #e%o#d nyata: real ima!iner: real &un%t on norma_kompleks(c: kompleks) 2Algoritma yang menghasilkan norma dari suatu bilangan kompleks3 n c.nyata#c.nyata $ c.ima!iner#c.ima!iner #etu#n n t,'e person , #e%o#d name: string age: integer male: boolean t,'e tab = a##a, ;1..-:< o& integers t,'e gender , enu$ 2male, female3 t,'e matriks , a##a, ;1..!:, 1..!:< o& integers t,'e pointerperson , person * %adang-kadang suatu tipe dideklarasikan hanya sebagai nama alias dari tipe yang lain : t,'e bilanganbulat = integers t,'e !eniskelamin , gender *

'embahasan mengenai berbagai (enis tipe terdapat pada bagian selan(utnya. Moh Edi Wibowo -. De)la#a! .a# a/el =ariabel adalah tempat yang digunakan untuk menampung suatu nilai. )etiap ariabel memiliki tipe tertentu. +erbeda dengan konstanta, nilai dari ariabel dapat diubah di berbagai bagian dari algoritma. &ontoh deklarasi ariabel adalah sebagai berikut : t,'e kompleks , #e%o#d nyata: real ima!iner: real 2deklarasi ariabel3 a: kompleks b: kompleks '#o%edu#e tukar 2Algoritma untuk menukar isi a dan b3 temp: real 2deklarasi ariabel3 temp a.nyata a.nyata b.nyata b.nyata temp temp a.ima!iner a.ima!iner b.ima!iner b.ima!iner temp %on!t n , !-: 2deklarasi ariabel3 i: integer f: real c: char b: booelan s: string r: a##a, ;1..3:< o& integers %: a##a, ;1..n< o& integers a##a, u;1..1::< a##a, w;1..n< Moh Edi Wibowo / t: tab l: gender m: matriks * 5eklarasi ariabel dapat dilakukan di sebarang tempat. =ariabel yang dideklarasikan di dalam suatu 7ungsi/prosedur disebut sebagai ariabel lokal sedangkan ariabel yang dideklarasikan tidak di dalam 7ungsi/prosedur disebut ariabel global. =ariabel lokal dikenali hanya di dalam 7ungsi yang bersangkutan dan tidak akan dikenali di luar 7ungsi tersebut. =aribel global dapat dikenali di sebarang tempat dari algoritma. 5alam banyak kasus, deklarasi ariabel tidak selalu harus dilakukan. %adang-kadang notasi algoritmik men(adi lebih sederhana dan lebih (elas apabila ariabel- ariabel yang ada pada algoritma

tidak dideklarasikan terlebih dahulu. 0. De)la#a! &un"! 1'#o!edu# 'ada contoh di atas, setiap algoritma mengandung sebuah 7ungsi/prosedur yang dapat disebut sebagai 7ungsi/prosedur utama. %adang-kadang 7ungsi/prosedur utama memanggil sebuah 7ungsi/prosedur yang lain. 9aka 7ungsi/prosedur yang dipanggil tersebut (uga harus dideklarasikan di dalam algoritma. &ontoh algoritma yang memiliki lebih dari satu 7ungsi : %on!t pi , 3.1#1-.!/-3-0.1.3!30#/!/#3303!1.&un%t on luas_lingkaran(r) l pi4r4r #etu#n l &un%t on isi_silinder(r, t) 2Algoritma yang menghasilkan olume silinder apabila diberikan (ari-(ari alas r dan tinggi t3 a luas_lingkaran(r) % a4t #etu#n % Moh Edi Wibowo 1 +erikut ini adalah contoh algoritma yang cukup rumit penulisannya : %on!t & , 1:: t,'e tabs , a##a, ;1..&< o& integers ': tabs '#o%edu#e isi_data &o# i 1 to & do ';i< random(1:4&) &un%t on isi_dan_cari_minimum 2Algoritma untuk mengisi elemen-elemen ' secara random kemudian mencari nilai minimum dari elemen-elemen ' tersebut3 isi_data min ';1< &o# i ! to & do & ';i< 2 min then min ';i< #etu#n min III. St#u)tu# Da!a# Al"o# t$a Algoritma berisi langkah-langkah penyelesaian suatu masalah. >angkah-langkah tersebut ditulis dalam bentuk instruksi-instruksi di dalam 7ungsi atau prosedur. )ekelompok instruksi dapat membentuk sebuah blok instruksi. )ebuah blok instruksi dapat dianggap sebagai satu kesatuan yang tidak terpisah. Instruksi-instruksi yang tergabung dalam sebuah blok ditulis men(orok untuk membedakan dengan instruksi-instruksi di dekatnya yang tidak termasuk sebagai anggota blok. +entuk instruksi yang sering ditemui adalah : ab +entuk tersebut merupakan instruksi untuk mengisi ariabel a dengan nilai (isi) dari ariabel b. +entuk yang mirip dengan instruksi di atas adalah :

ab?c Moh Edi Wibowo 0 +entuk tersebut merupakan instruksi untuk mengisi ariabel a dengan hasil pen(umlahan dari isi ariabel b dengan isi ariabel c. )imbol seperti dan ? sering disebut sebagai operator. @perator disebut sebagai operator penugasan (assignment) dan operator ? disebut sebagai operator pen(umlahan. )uatu operator bertugas melakukan operasi, operator akan melakukan operasi penugasan sedangkan operator ? akan melakukan operasi pen(umlahan. 5ata yang dikenai operasi oleh operator disebut sebagai operand, dengan demikian a, b, atau c pada contoh di atas disebut sebagai operand. )atu atau gabungan beberapa operasi sering disebut dengan ekspresi. "adi ekspresi terdiri dari satu atau lebih operator maupun operand. +entuk-bentuk instruksi yang lain masih banyak, begitu pula dengan (enis-(enis operasi dan operator. )etiap orang boleh membuat instruksi, operasi, dan operatornya sendiri asal mudah dipahami dan dimengerti oleh orang lain. >angkah-langkah yang ada di dalam algoritma membentuk tiga buah struktur dasar, yaitu : a. runtutan (se(uence) b. pemilihan (selection) c. pengulangan (repetition) a. Runtutan Auntutan adalah instruksi-instruksi yang diker(akan secara berurutan. +erurutan di sini berarti sesuai dengan urutan penulisannya, yakni sebuah instruksi di(alankan setelah instruksi sebelumnya selesai diker(akan. &ontoh algoritma yang hanya terdiri dari runtutan adalah sebagai berikut : '#o%edu#e menampilkan_tiga_kata write(BAkuB) write(B&intaB) write(BIndonesiaB) ekspresi a?bCc operator operand Moh Edi Wibowo . %on!t pi , 3.1#1-.!/-3-0.1.3!30#/!/#3303!1.&un%t on luas_lingkaran(r) l pi4r4r #etu#n l /. Pe$ l han 'emilihan ter(adi ketika suatu instruksi diker(akan apabila suatu kondisi terpenuhi. 9isalnya instruksi A diker(akan karena kondisi D terpenuhi (yang (uga berarti instruksi A tidak diker(akan bila kondisi D tidak terpenuhi). 5alam kasus yang lain instruksi A diker(akan bila kondisi D terpenuhi, atau instruksi + yang diker(akan bila kondisi D tidak terpenuhi. &ontoh algoritmanya adalah sebagai berikut : '#o%edu#e tampilkan_kalimat(i) & i , : then

write(BAku B) write(B&inta B) write(BIndonesiaB) 'ada contoh di atas, bila i bernilai ! maka kondisi dari & (yaitu i , :) tidak terpenuhi sehingga kalimat tidak akan ditampilkan. '#o%edu#e pilih_kalimat(i) & i , : then write(BAku B) write(B&inta B) write(BIndonesia B) el!e write(BAku B) write(B&inta B) write(B9alaysiaB) 'ada contoh di atas, bila i bernilai ! maka kondisi dari & tidak terpenuhi sehingga kalimat yang ditampilkan adalah Aku &inta 9alaysia Moh Edi Wibowo 1: '#o%edu#e pilih_dari_tiga_kalimat(i) & i , : then write(BAku B) write(B&inta B) write(BIndonesiaB) el!e & i , 1 then write(BAku B) write(B&inta B) write(B9alaysiaB) el!e write(BAku B) write(B&inta B) write(B$imor >esteB) 'ada contoh di atas, bila i bernilai ! maka kondisi dari & yang pertama tidak terpenuhi sehingga dilan(utkan ke bagian el!e yang pertama. 'ada bagian el!e yang pertama ditemui & yang kedua. %ondisi dari & yang kedua (uga tidak terpenuhi sehingga kalimat yang ditampilkan adalah Aku &inta $imor >este +entuk & yang bersarang (ada & di dalam &) seperti pada contoh algoritma yang terakhir, kadang-kadang dapat dituliskan dalam bentuk lain seperti berikut : '#o%edu#e pilih_dari_tiga_kalimat(i) %a!e i , : : write(BAku B) write(B&inta B) write(BIndonesiaB) i,1: write(BAku B)

write(B&inta B) write(B9alaysiaB) el!e write(BAku B) write(B&inta B) write(B$imor >esteB) Moh Edi Wibowo 11 %. Pen"ulan"an 'engulangan ter(adi ketika ada suatu instruksi yang dilakukan terus-menerus selama suatu kondisi terpenuhi. +entuk pengulangan yang sering di(umpai ditampilkan pada contoh-contoh di ba6ah ini : '#o%edu#e tampilkan_n_kata(n) &o# i 1 to n do write(BcontohB) '#o%edu#e tampilkan_n_nomor(n) &o# i 1 to n do write(B*omor B) write(i) '#o%edu#e tampilkan_n_kata(n) #e'eat n t $e! write(Bcontoh lainB) '#o%edu#e tampilkan_n_nomor(n) &o# i n do3nto 1 do write(B*omor B, i) Algoritma-algoritma di atas melakukan penulisan sebanyak n putaran. 'ada setiap putaran algoritma-algoritma tersebut menuliskan kata maupun nomor. 'utaran pada pengulangan sering disebut dengan iterasi. "adi algoritma-algoritma di atas melakukan n kali iterasi, mulai dari iterasi pertama sampai iterasi ke-n. 'ada contoh-contoh di atas (uga tampak adanya suatu kesamaan, yaitu (umlah pengulangan telah diketahui lebih dahulu yaitu sebanyak n kali. &ontoh yang lain adalah sebagai berikut : '#o%edu#e tampilkan_nomor(n) &o# i 3 to n !te' ! do write(i) Moh Edi Wibowo 1! Algortima di atas melakukan pengulangan sebanyak ((n 3) !)+ 1kali. "ika n diberi nilai 1- maka algoritma di atas menampilkan angka-angka 3 - 1 . 11 13 1&ontoh yang lain lagi adalah sebagai berikut : '#o%edu#e tampilkan_nomor(n) C 21, 3, -, 1, .3 &o# each i C do write(i) Catatan :

Bagian yang ada di antara tanda kurung kurawa 23 apada algoritma di atas bukanlah komentar) tetapi menyatakan himpunan *set+. '#o%edu#e tampilkan_nomor(n) &o# each i bilangan gan(il di antara : dan 1: do write(i) %edua algortima di atas ber7ungsi untuk menampilkan angka gan(il di antara : dan 1:. Entuk pengulangan yang (umlah iterasinya belum diketahui, biasanya digunakan bentuk 3h le dan #e'eat. '#o%edu#e tampilkan_beberapa_kali i random(1:) 3h le i - do write(BcontohB) i random(1:) Algoritma di atas menggunakan pengulangan bentuk 3h le. )ebelum melakukan pengulangan, dilakukan pengecekan terlebih dahulu pada kondisi dari 3h le. +ila kondisi terpenuhi maka iterasi dimulai, dan bila kondisi tidak terpenuhi maka pengulangan tidak akan pernah dilakukan. )etiap kali akan memasuki iterasi baru (pada a6al iterasi), dilakukan pengecekan lagi pada kondisi. Iterasi dilan(utkan (ika kondisi masih terpenuhi dan pengulangan berakhir ketika kondisi tidak terpenuhi. Algoritma di atas mungkin akan menampilkan kata %ontoh sebanyak 1 kali, 1:: kali, /: kali, atau bahkan tidak menampilkan kata %ontoh sama sekali. Moh Edi Wibowo 13 '#o%edu#e tampilkan_lebih_dari_sekali #e'eat write(BcontohB) i random(1:) unt l i Algoritma di atas menggunakan pengulangan bentuk #e'eat. 'ada bentuk #e'eat, pengulangan langsung memasuki iterasi yang pertama. 'ada akhir iterasi, dilakukan pengecekan pada kondisi dari #e'eat. Iterasi dilan(utkan (ika kondisi terpenuhi dan pengulangan berakhir (ika kondisi tidak terpenuhi. Algoritma di atas akan menampilkan kata %ontoh sedikitnya 1 kali. %adang-kadang diperlukan untuk mengakhiri pengulangan tanpa menghiraukan (umlah iterasi yang sudah ditempuh maupun kondisi yang ada pada suatu saat. 'engulangan dapat dipaksa berakhir dengan menggunakan instruksi /#ea). '#o%edu#e tampilkan_nomor &o# i 1 to 1: do write(i) & i , - then /#ea) 'engulangan pada algoritma di atas akan berakhir setelah memasuki iterasi ke-- sehingga yang angka-angka yang ditampilkan adalah 1!3#'#o%edu#e tampilkan_nomor i1

3h le i F 1: do write(i) & i , - then /#ea) ii?1 Algoritma di atas (uga menampilkan angka-angka 1!3#)elain instruksi /#ea) (uga terdapat instruksi %ont nue yang ber7ungsi untuk melan(utkan pengulangan langsung menu(u ke iterasi selan(utnya dengan mengabaikan instruksiinstruksi yang terletak setelah instruksi %ont nue. Moh Edi Wibowo 1# '#o%edu#e tampilkan_nomor_dan kuadratnya &o# i 1 to / do write(i) & i G 3 then %ont nue write(i#i) Algoritma di atas akan menampilkan angka-angka 11!#3.#-/

Anda mungkin juga menyukai