PROSEDUR
Prosedur adalah sederetan instruksi algoritmik yang diberi nama, dan akan
menghasilkan efek neto yang terdefinisi. Prosedur menyatakan suatu aksi dalam
konsep algoritma yang dibicarakan pada cerita “Mengupas kentang”.
Mendefinisikan (membuat spesifikasi) prosedur berarti menentukan nama prosedur
serta parameternya (jika ada), dan mendefinisikan keadaan awal (Initial State, I.S.)
dan keadaan akhir (Final State, F.S.) dari prosedur tersebut. Prosedur didefinisikan
(dituliskan spesifikasinya) dalam kamus. Cara penulisan spesifikasi : prosedur diberi
nama, dan parameter formal (jika ada) yang juga diberi nama dan dijelaskan
typenya.
Secara sederhana, dapat diartikan bahwa sebuah prosedur yang terdefinisi “disimpan”
di tempat lain, dan ketika “dipanggil” dengan menyebutkan namanya “seakan-akan”
teks yang tersimpan di tempat lain itu menggantikan teks pemanggilan. Pada saat itu
terjadi asosiasi parameter (jika ada). Dengan konsep ini, maka I.S dan F.S dari
prosedurlah yang menjamin bahwa eksekusi program akan menghasilkan efek neto
yang diharapkan.
Jadi, setiap prosedur harus:
- didefinisikan (dibuat spesifikasinya) dan dituliskan kode programnya,
- dipanggil, pada saat eksekusi oleh prosedur lain atau oleh program utama.
Parameter Prosedur
Prosedur tanpa parameter memanfaatkan nilai dari nama-nama yang terdefinisi
pada kamus global. Pemakaiannya biasanya harus “hati-hati”, apalagi jika teks
program sudah sangat besar dan implementasinya menjadi banyak file.
Prosedur berparameter dirancang, agar sepotong kode yang sama ketika eksekusi
dilakukan, dapat dipakai untuk nama parameter yang bebeda-beda.
Nama parameter yang dituliskan pada definisi/spesifikasi prosedur disebut sebagai
parameter formal. Sedangkan parameter yang dituliskan pada pemanggilan prosedur
disebut sebagai parameter aktual.
Parameter formal adalah nama-nama variabel (list nama) yang dipakai dalam
mendefinisikan prosedur, dan membuat prosedur tersebut dapat dieksekusi dengan
nama-nama yang berbeda ketika dipanggil. Parameter formal adalah list nama yang
akan dipakai pada prosedur, yang nantinya akan diasosiasikan terhadap nama
variabel lain pada saat pemanggilan. Sesuai dengan ketentuan nilainya, ada tiga type
parameter formal:
-parameter input, yaitu parameter yang diperlukan prosedur sebagai masukan untuk
melakukan aksi yang efektif.
- parameter output, yaitu parameter yang nilainya akan dihasilkan oleh prosedur.
Hasil nilai akan disimpan pada nama parameter Output ini.
- parameter input/output, yaitu parameter yang nilainya diperlukan prosedur sebagai
masukan untuk melakukan aksi, dan pada akhir prosedur akan dihasilkan nilai
yang baru.
Pemanggilan Prosedur
Memakai, atau "memanggil" prosedur adalah menuliskan nama prosedur yang pernah
didefinisikan, dan memberikan harga-harga yang dibutuhkan oleh prosedur itu untuk
dapat melaksanakan suatu aksi terdefinisi. Sebuah prosedur juga boleh "memakai"
atau memanggil prosedur. Pada saat pemanggilan terjadi “passing parameter”.
Parameter aktual adalah nama-nama informasi yang dipakai ketika prosedur itu
dipakai ("dipanggil"). Parameter aktual dapat berupa nama atau harga, tetapi harus
berupa nama jika parameter tersebut adalah parameter output (karena hasilnya akan
disimpan dalam nama tersebut). Sesuai dengan jenis parameter formal, parameter
aktual pada saat pemanggilan:
- parameter input harus terdefinisi nilainya (karena dibutuhkan oleh prosedur untuk
menghasilkan nilai). Karena yang dibutuhkan untuk eksekusi hanya nilai, maka
parameter input dapat digantikan dengan suatu nilai tanpa menggunakan nama.
- parameter output tidak perlu terdefinisi nilainya, tetapi justru setelah pemanggilan
prosedur akan dimanfaatkan oleh deretan instruksi berikutnya, karena nilainya
akan dihasilkan oleh prosedur. Karena parameter output menampung hasil, maka
harus berupa nama, dan tidak boleh diberikan nilai saja.
- parameter input/output harus terdefinisi nilainya dan nilai baru yang diperoleh
karena eksekusi prosedur akan dimanfaatkan oleh deretan instruksi berikutnya.
Seperti halnya parameter output, maka paramteter aktual harus berupa nama.
Pada saat eksekusi, terjadi asosiasi nama parameter formal dengan nama parameter
aktual. Pada notasi algoritmik, asosiasi dilakukan dengan cara “by position”. urutan
nama pada parameter aktual akan diasosiasikan sesuai dengan urutan parameter
formal. Karena itu, type harus kompatibel.
Beberapa bahasa pemrograman, dapat dilakukan asosiasi dengan nama dan
memperbolehkan adanya nilai default. Beberapa bahasa pemrograman (Ada, C) juga
memperbolehkan nama prosedur yang sama, tetapi parameternya berbeda
(overloading).
Prosedur dapat mempunyai kamus lokal, yaitu pendefinisan nama yang dipakai dan
hanya berlaku dalam ruang lingkup prosedur tersebut. Jika nama yang dipakai di
dalam prosedur tidak terdefinisi dalam list parameter formal atau dalam kamus lokal,
maka nama tersebut harus sudah terdefinisi pada prosedur yang memakainya.
Penulisan kamus lokal sama dengan kamus global, yang berbeda adalah lingkup
berlakunya nama yang didefinisikan:
- pada kamus "global", nama berlaku untuk program dan semua prosedur/fungsi
yang didefinisikan.
- pada kamus lokal, nama berlaku untuk prosedur/fungsi yang bersangkutan dan
prosedur / fungsi yang didefinisikan di dalamnya.
- nilai yang disimpan dalam nama yang didefinisikan pada kamus lokal, hanya akan
terdefinisi selama eksekusi prosedur, dan tidak dikenal lagi oleh pemanggilnya.
Program yang moduler adalah program yang dibagi-bagi menjadi modul-modul yang
terdefinisi dengan baik dalam bentuk prosedur-prosedur. Setiap prosedur harus jelas
definisi dan ruang lingkupnya, supaya dapat dipanggil secara independent.
Pembagian program besar dalam prosedur-prosedur akan mempermudah pembagian
kerja di antara beberapa pemrogram. Penulisan prosedur juga akan memudahkan
program untuk dibaca oleh "manusia" karena kita tidak perlu terpaku pada detil kode
prosedur untuk mengerti efek neto yang dihasilkannya. Bahkan dalam beberapa hal,
pemrogram tidak perlu tahu sama sekali "isi" atau kode dari prosedur dengan
mengetahui spesifikasinya, beberapa bahasa pemrograman bahkan menyediakan
prosedur terdefinisi yang sering dipakai dalam memrogram sehingga pemrogram
tidak perlu lagi menuliskan kodenya.
Prosedur berlaku untuk ruang lingkup (universe) tertentu, terutama untuk prosedur
yang tidak mempunyai parameter. Dalam dua bab berikut, yaitu Mesin Gambar dan
Mesin Karakter, akan diberikan gambaran lebih jelas dan lengkap tentang
pendefinisian dan pemakaian prosedur karena keduanya adalah mesin abstrak yang
tertentu.
Notasi Algoritmik untuk Prosedur
Pada bagian ini diberikan skema pendefinisian dan pemanggilan prosedur.
Pendefinisian/Spesifikasi Prosedur
dengan syarat :
- Nama prosedur dan prameternya harus disebutkan dalam kamus pemanggil.
- List parameter formal boleh tidak ada (kosong), dalam hal ini di dalam prosedur
akan dipakai nama lokal dan nama-nama yang telah terdefinisi dalam kamus
"pemakai"nya.
- Jika list parameter formal ada (tidak kosong, minimal satu nama), maka harus
berupa satu atau beberapa nama INFORMASI beserta typenya.
dengan syarat :
- Pada waktu pemanggilan terjadilah asosiasi antara parameter formal dengan
parameter aktual sesuai dengan urutan penulisan dalam list-nama parameter
formal.
- List parameter aktual harus sama jumlah, urutan dan typenya dengan list
parameter formal.
- List parameter aktual yang berupa input dapat berupa nama informasi atau nama
konstanta/ekspresi yang telah terdefinisi dalam kamus atau konstanta; dapat juga
berupa harga konstanta, atau harga yang dihasilkan oleh suatu ekspresi atau
fungsi.
- List parameter aktual yang berupa input/output atau output harus berupa nama
informasi. Jika didefinisikan sebagai Input, walaupun pernah diubah dalam badan
prosedur, isi dari nama yang dipakai pada parameter aktual tidak pernah berubah.
Jika didefinisikan sebagai parameter Output dan parameter aktual yang
diasosiasikan terhadapnya pernah diubah harganya dalam badan prosedur, isinya
akan berubah.
Contoh
Contoh 1: VOLTAGE
Tuliskanlah program yang membaca tahanan (Ohm) dan arus (Ampere), kemudian
menghitung tegangan yang dihasilkan dan menuliskan hasilnya. Perhitungan tegangan
harus dituliskan menjadi suatu prosedur bernama PROSES, supaya struktur program
jelas : Input - Proses - Output.
Input : R : integer, tahanan (Ohm) dan A : integer, arus (Ampere)
Proses : menghitung V= R * A
Output : V : integer, tegangan (Volt)
Pelajarilah dua buah solusi yang diberikan berikut ini, dan berikan komentar anda.
Catatan :
1. Prosedur dengan parameter lebih menjamin modularitas program. Sedapat
mungkin semua prosedur diparametrisasi dengan baik.
2. Prosedur tanpa parameter bekerja dengan nama global. Hanya boleh dipakai untuk
kasus yang sangat khusus, yaitu jika nama global merupakan “universe” (dunia,
lingkungan) dari program, misalnya pada contoh mesin abstrak.
3. Prosedur tanpa parameter tidak boleh dipakai jika alasannya hanya karena
pemrogram malas menuliskan parameter.
Contoh 2: PROSEDUR TUKAR
Prosedur untuk menukar dua harga yang disimpan dalam dua nama a dan b.
I.S. : Diberikan a = A dan b = B
F.S. : a = B dan b = A
Contoh 3: PROSEDUR PUTAR3BIL
Contoh pemanfaatan prosedur yang pernah dipakai
Gunakan prosedur TUKAR untuk menulis prosedur yang "memutar" 3 buah nama
integer.
Contoh : Jika a berisi 1, b berisi 2 dan c berisi 3, maka hasilnya :
a berisi 3, b berisi 1, dan c berisi 2.
Contoh di atas adalah contoh sebuah prosedur yang memakai sebuah prosedur lain.
Catatan:
Contoh-contoh di atas tidak terlalu mewakili daya guna penulisan prosedur dengan
nyata, pada bagian-bagian berikutnya akan terlihat lebih nyata manfaat penulisan
prosedur, yang membuat:
- program mudah dibaca,
- prosedur yang sama dipakai berkali-kali sehingga mengurangi penulisan yang
berulang,
- pengkodean yang independen.
Komentar
Posting Komentar