ALGORTIMA DAN PEMROGRAMAN PROSEDUR
Pendahuluan Dalam memprogram yang besar perlu memecah program menjadi pbeberapa subprogram yang lebih kecil. Tiap subprogram kadangkala cukup independen dari program utama sehingga programnya dapat dirancang tanpa memepertimbangkan konteks tempat ia digunakan. Tiap subprogram disebut modul. Dalam bahasa pemrograman modul disebut rutin, prosedur atau fungsi.
1
Pendefinisian Prosedur Prosedur adalah modul program yang mengerjakan tugas/aktifitas yang spesifik dan menghasilkan suatu efek netto. Suatu efek netto diketahui dengan membandingkan keadaan awal dengan keadaan akhir pada pelaksanaaan sebuah prosedur. Struktur prosedur sama dengan struktur algoritma yang sudah kita kenal, yaitu ada bagian judul (header) yang terdiri dari nama prosedur, deklarasi dan badan prosedur.
Notasi Algoritma Procedure Namaprosedur {spesifikasi prosedur berisi penjelasan tentang apa yang dilakukan oleh prosedur ini} {IS : keadaan awal sebelum prosedur dilaksanakan } {FS : keadaan akhir sesudah prosedur dilaksanakan} Deklarasi : {semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur} Deskripsi : {badan prosedur, berisi kumpulan instruksi}
2
Contoh : procedure Hitung_rata {mengitung ratarata-rata N buah bilangan bulat yang dibaca dari piranti masukan} {IS: sembarang} {FS: nilai ratarata-rata seluruh bilangan bulat dicetak di piranti keluaran} Deklarasi : N: integer {jumlah data, > 0} x: integer {bilangan bulat yg dibaca dari papan kunci} k: integer {pencacah banyaknya pengulangan} jumlah : integer {pencacah {pencacah jumlah nilai} rerata : integer {rata{rata-rata nilai}
Lanjutan Deskripsi : read (N) Jumlah Å 0 for k Å 1 to N do read (x) jumlah Å jumlah + x endfor rerata Å jumlah/N write (rerata)
3
Pemanggilan Prosedur Prosedur bukan program yang berdiri sendiri, jadi tidak dapat dieksekusi secara langsung. Ini berarti instruksiinstruksi di dalam prosedur baru dapat dilaksanakan bila prosedur tersebut diakses dengan cara memanggil namanya dari program pemanggil (program utama atau modul lain).
Contoh : Algoritma Rata_Rata {program utama untuk menghitung ratarata-rata N buah bilangan bulat} Deklarasi : Procedure Hitung_Rata {mengitung ratarata-rata N buah bilangan bulat yang dibaca dari piranti masukan} Deskripsi : write (‘menghitung ratarata-rata N buah bilangan bulat’ bulat’) Hitung_Rata write (‘sukses’ sukses’)
4
Nama Global atau Lokal NamaNama-nama yang dideklarasikan di dalam prosedur hanya dikenal di dalam badan prosedur ang bersangkutan dan ini dikatakan bersifat ‘lokal’ lokal’. NamaNama-nama yang dideklarasikan di dalam program utama dikatakan bersifat ‘global’ global’, yang dapat digunakan dibagian manapun di dalam program baik di program utama maupun di dalam prosedur. Pengunaan nama akan dideklarasikan global atau lokal bergantung kepada penggunaan nama tersebut. Bila suatu nama digunakan diseluruh bagian program, maka nama tersebut harus dideklarasikan global.
Lanjutan .. Bila nama tersebut hanya digunakan di dalam prosedur saja maka sebaiknya di deklarasikan sebagai peubah lokal (walaupun global masih tetap benar). Usahakan menggunakan nama-nama global sesedikit mungkin. Penggunaan nama lokal akan memberikan keuntungan sebab nama lokal membuat program lebih elegan, dan dapat meminimumkan usaha pencarian kesalahan yang disebabkan oleh nama tersebut.
5
Parameter Penggunaan parameter merupakan mekanisme pertukaran informasi antara prosedur (atau fungsi) dan titik di mana ia dipanggil. Tiap item data ditransfer antara parameter aktual dan parameter formal yang bersesuaian. Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan. Parameter formal adalah parameter yang dideklarasikan di dalam header prosedur itu sendiri.
Jenis Parameter Tiga jenis parameter formal yang disertakan di dalam prosedur : 1. Parameter Input 2. Parameter Output 3. Parameter
6
Parameter masukan (input parameter)
Parameter yang nilainya berlaku sebagai masukan untuk prosedur yang disebut parameter nilai (value parameter/parameter by value). Nilai parameter aktual diisikan (assign) ke dalam parameter formal yang bersesuaian. Nilai yang dinyatakan oleh parameter masukan tidak dapat dikirim dalam arah sebaliknya. Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai parameter aktual. Nama parameter aktual boleh berbeda dengan nama parameter formal yang bersesuaian.
Contoh : Procedure Satu (input (input x,y : integer) integer) {contoh prosedur dengan parameter formal berjenis parameter masukan} {IS : nilai x dan y sudah terdefinisi} {FS : nilai x dan y masingmasing-masing dinaikan satu lalu dicetak} Deklarasi : { tidak ada } Deskripsi : xÅx+1 yÅy+1 write (x,y)
7
Program Utama Algoritma PQR {program utama untuk memanggil prosedur satu} Deklarasi : a,b : integer Procedure Satu (input x,y : integer) {contoh prosedur dengan parameter formal berjenis parameter masukan} Deskripsi : Satu (4, 10) {pemanggilan Satu yang pertama kali} read (a,b) Satu (a,b) {pemanggilan Satu yang kedua kali} Satu (a+5,17) {pemanggilan Satu yang ketiga kali}
Hasil Pada pemanggilan pertama, menghasilkan x = 4 dan y = 11 Pada pemanggilan kedua, nilai x dan y tergantung pada pemasukan data nilai a dan b, misalkan a =10 dan b =21, maka x =11 dan y=22. dst
8
Parameter keluaran (output parameter) Parameter yang menampung keluaran yang dihasilkan oleh prosedur, yang disebut dengan parameter acuan (reference parameter/parameter by reference). Bila prosedur yang mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program pemanggil menggantikan nama parameter formal yang bersesuaidi dalam prosedur. Bila di dalam prosedur parameter aktual diisi suatu nilai, nilai ini akan tetap berada di dalam parameter aktual meskipun prosedur selesai dilaksanakan.
Contoh : Prosedure dua dengan parameter keluaran : Procedure Dua (input (input x : integer, integer, output y : real) real) {contoh prosedur dengan parameter formal berjenis parameter keluaran} {IS : nilai x sudah terdefinisi} {FS : y berisi nilai x ditambah satu dan dikalikan tiga} Deklarasi : { tidak ada } Deskripsi : xÅx+1 yÅx+1
9
Program Utama Algoritma XYZ{program utama untuk memanggil prosedur dua} Deklarasi : a,b : integer Procedure Dua (input (input x : integer, integer, output y : real) real) {contoh prosedur dengan parameter formal berjenis parameter keluaran} Deskripsi : dua (4, b) write (b) read (a) dua (a, b) write (b) dua (a+5,b) write (b)
{pemanggilan dua yang pertama kali}
{pemanggilan dua yang pertama kali} {pemanggilan dua yang ketiga kali}
Parameter masukan/keluaran (input/output parameter) Parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut, yang disebut dengan parameter acuan (reference parameter/parameter by reference). Digunakan pada aplikasi yang informasinya dikirim dalam kedua arah. Bila parameter aktual diubah nilainya di dalam badan prosedur, makasesudah pemanggilan prosedur nilai parameter dititik pemanggilan juga berubah.
10
Contoh : Prosedure tiga dengan parameter masukan/keluaran Procedure tiga (input/output (input/output x,y : integer) integer) {contoh prosedur dengan parameter formal berjenis parameter masukan/keluaran} {IS : nilai x dan y sudah terdefinisi} {FS : nilai x dan y bertambah masingmasing-masing empat dan dicetak} Deklarasi : { tidak ada } Deskripsi : xÅx+4 yÅy+4 write (‘nilai x dan y diakhir prosedur adalah ‘) write (‘x = ‘,x) write (‘y = ‘,y)
Program Utama Algoritma ABC {program utama untuk memanggil prosedur tiga} Deklarasi : a,b : integer Procedure tiga (input/output (input/output x,y : integer) integer) {contoh prosedur dengan parameter formal berjenis parameter masukan/keluaran} Deskripsi : A Å 15 B Å 10 write (‘nilai a dan b sebelum pemanggilan prosedur ‘) write (‘a = ‘,a) write (‘b = ‘,b) tiga (a, b)
11
{pemanggilan tiga pertama kali } write (‘nilai a dan b sesudah pemanggilan prosedur ‘) write (‘a = ‘,a) write (‘b = ‘,b) Jika program di atas dieksekusi maka menghasilkan : nilai a dan b sebelum pemanggilan prosedur a = 15 B = 10 nilai x dan y di akhir prosedur adalah x = 19 y = 14 nilai a dan b sesudah pemanggilan prosedur a = 19 B = 14
12