FUNGSI DAN PROCEDURE Pada modul ini akan lebih menjelaskan bagaimana menggunakan procedure dan fungsi dalam pascal dan bentuk dalam penulisan notasi algoritmik. istilah yang sering digunakan pada modul ini adalah variabel lokal, variabel global, parameter aktual dan parameter formal. variabel lokal adalah variabel yang hanya dapat digunakan untuk algoritma pada fungsi/procedure saja, sedangkan variabel global dapat digunakan baik algoritma program utama maupun algoritma procedure/fungsi. Parameter aktual adalah parameter yang disertakan saat pemanggilan fungsi/ procedure. Sedangkan parameter formal adalah parameter yang diletakan pada header fungsi/procedure tersebut. Ada 3 jenis parameter, yaitu : o o o
Parameter input , yaitu hanya bisa digunakan sebagai input masukan fungs/prosedur saja. Parameter output, yaitu hanya bisa diguanakan sebagai output fungsi/prosedur saja. Parameter input/output, yaitu bisa digunakan 2 sekaligus, yaitu sebagai input dan ouutput.
Dalam pascal hanya ada 2 parameter yaitu parameter input dan parameter input/output. Aturan yang harus diperhatikan dalam penulisan parameter formal dan parameter aktual adalah : o o o
Jumlah parameter formal aktual pada pemanggilan fungsi/procedure harus sama jumlahnya dengan jumlah parameter formal yang ada pada header fungsi/procedure. Tiap parameter formal harus bertipe sama dengan tipe parameter formal yang bersesuaian. Tiap parameter aktual harus sesuai jenis parameternya dengan parameter formal yang ada di header fungsi/procedure.
Procedure dan fungsi mempunyai perbedaan, yaitu fungsi harus mempunyai output berupa variabel tertentu sedangkan procedure tidak harus. 1. Procedure Procedure merupakan sekumpulan program yang diberi nama dan dapat dipanggil dari program utama. Procedure pada umumnya sama seperti halnya dengan program yang dijelaskan pada modul 1 dan 2. Procedure biasanya bersifat suatu aktifitas seperti menghitung luas, meghitung faktorial, mencari nilai maksimum/minimum,dsb.
Notasi Algoritmik program tukar kamus : A,R : integer {} procedure tukar (in/out : A,R : integer) algoritma : input (A,R) Tukar (A,R) Output (A,R)
procedure tukar2(in/out : A,R : integer) kamus lokal : B : integer algoritma : B←A A←R R←A Pascal Program tukar; Uses crt; var A,R : integer; procedure tukar2 (var : A,R : Integer) var B : integer; begin B := A; A := R; R := B; end; begin readln (A,R); Tukar2 (A,R); writeln (A,R); readln; end. Dari contoh diatas pada pascal, tulisan dengan block warna kuning itu adalah program untuk procedure, berbeda dengan notasi algoritmik yang meletakan setelah program utama. Parameter pada pascal tersebut adalah input/output , hal ini dapat dilihat dari tulisan var, apabila tidak ada tulisan var maka parameter tersebut hanya input saja. Procedure
memungkinkan tanpa menggunakan parameter, berikut adalah contoh program yang sama namun tanpa menggunakan parameter. Algoritmik program tukar kamus : A,R : integer {} procedure tukar2 algoritma : input (A,R) Tukar2 Output (A,R)
procedure tukar2 kamus lokal : B : integer algoritma : B←A A←R R←A Pascal Program tukar; Uses crt; var A,R : ineteger; procedure tukar2 ; var B : integer; begin B := A; A := R; R := B; end; begin readln (A,R); tukar2; writeln (A,R); readln; end.
2. Fungsi Fungsi sama seperti halnya dengan procedure, namun tetap ada perbedaannya yaitu fungsi mempunyai output dengan tipe variabel yang kita tentukan. Dan cara pemanggilan variabel ada 2 macam dalam pascal. Yaitu : o Mengoutputkan nilai dari fungsi tersebut Contoh : Writln (namafungsi(parameter)); o Dengan assignment Variabel1 := namafungsi(parameter); Berbeda dengan procedure yang bisa tidak menggunakan parameter, fungsi harus menggunakan parameter dalam penggunaannya. Berikut contoh fungsi dalam notasi algoritmik dan pasxal. algoritmik program faktorial kamus : a : integer function faktor (a : integer) → integer algoritma input (a) output (faktor(a)) function faktor (a:integer) →integer kamus : i, hasil : integer algoritma : hasil ← 1 i traversal [a..1] hasil ← hasil * i faktor ← hasil
Pascal program faktorial; uses crt; var a : integer; function faktor (a : integer) : integer; var i,hasil : integer; begin hasil := 1; for i:= a downto 1 do hasil := hasil * i; faktor := hasil; end; begin readln (n); writeln (hasil); end.
Program diatas adalah program untuk menentukan faktorial dari suatu bilangan. Dalam algotima function (block kuning) terdapat tulisan faktor := hasil; . tulisan ini diperlukan sebagai output dari function yang bertipe integer. Dapat disimpulkan bahwa ketika menggunakan fungsi, nama fungsi dijadikan variabel yang menyimpan data sebagai output.
Latihan Fungsi dan procedure akan terlihat tidak bermanfaat bila kita melihat hanya sebuah program sederhana saja, oleh karena itu cobalah berlatih untuk membuat program untuk memecahkan formula berikut : (a+b)! – (a-b)! Asumsi bahwa A selalu lebih besar dari B, gunakan fungsi dan procedure! (*tanda seru memiliki arti faktorial)
Referensi liem, inggriani (2008). DIKTAT KULIAH DASAR PEMROGRAMAN. BANDUNG : ITB