Chapter 6

PROSEDUR DAN FUNGSI

Dalam aktivitas yang sebenarnya, pembuatan sistem akan melibatkan program yang besar dan rumit. Sehingga pemrogram terkadang perlu untuk memecah program menjadi beberapa sub program yang lebih kecil dan sederhana. Sub program yang telah dibuat dapat dipanggil pada program utama pada saat dibutuhkan. Teknik pemrograman yang memecah program menjadi beberapa sub program dan memanggilnya pada saat dibutuhkan dinamakan teknik pemrograman modular. Sub program yang dibuat dapat berupa prosedur ataupun fungsi. Pemilihan apakah suatu suatu subprogram adalah prosedur atau fungsi akan dibahas selanjutnya.

Ada 2 keuntungan modularisasi program ini, yakni :

1. Untuk aktivitas yang dilakukan berulang-ulang, modularisasi menghindari penulisan teks program yang sama berulang-ulang;

2. Kemudahan dalam menuliskan dan menemukan kesalahan dalam program.

    1. Prosedur

Prosedur adalah modul program yang mengerjakan tugas/aktivitas yang spesifik dan menghasilkan suatu efek netto. Suatu efek netto diketahui dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur. 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 eksekus 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.

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.

Notasi Algoritmik Untuk Prosedur

Pendefinisian/Spesifikasi Prosedur

procedure NAMAPROSEDUR ( [list nama parameter formal: type])

{Spesifikasi , Initial State, Final State}

Kamus lokal:

{ semua NAMA yang dipakai dalam BADAN PROSEDUR}

Algoritma :

{ BADAN PROSEDUR }

{Deretan instruksi pemberian harga, input, output, analisis kasus, pengulangan atau prosedur)

Dengan syarat :

  • Nama prosedur dan parameternya 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.

Pemanggilan Prosedur

Program NAMA_PROGRAM

{Spesifikasi , Input, Proses, Output}

Kamus :

{ semua NAMA yang dipakai dalam algoritma }

procedure NAMAPROSEDUR (Input/Output : <list-nama parameter formal>)

{Spesifikasi : Initial State, Final State}

Algoritma :

{Deretan instruksi assignment/pemberian harga, input, output, analisis kasus,

pengulangan )

NAMAPROSEDUR (<list parameter aktual>)

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.

7.2. Fungsi

Secara algoritmik, sebuah fungsi akan menerima suatu harga yang diberikan lewat parameter formal bertype tertentu (jika ada) dan menghasilkan suatu nilai sesuai dengan domain yang didefinisikan dalam spesifikasi fungsi.

Dalam penulisannya, fungsi diberi nama, dan parameter formal yaitu harga masukan yang juga diberi nama dan dijelaskan typenya. Fungsi harus didefinisikan dalam kamus. Fungsi yang didefinisikan dapat “dipanggil” untuk dieksekusi lewat namanya, dan dengan diberikan parameter aktualnya.

Notasi Algoritmik Untuk Fungsi

Pendefinisian/Spesifikasi fungsi

function NAMAF (<list-parameter input>) → <type hasil>

{Spesifikasi fungsi: diberikan ….. menghasilkan …..}

Deklarasi/Kamus lokal:

{semua NAMA yang dipakai dalam algoritma/realisasi fungsi}

Deskripsi :

{deretan instruksi algoritmik : pemberian harga, input, output, analisis kasus, pengulangan)

{ Pengiriman harga di akhir fungsi, harus sesuai dengan type hasil}

→ hasil

dengan syarat :

  • list parameter input boleh tidak ada (kosong), dalam hal ini di fungsi tidak membutuhkan apa-apa dari pemakainya untuk menghasilkan harga.

  • jika list parameter input (parameter formal) tidak kosong, minimal mengandung satu nama, maka nama tersebut harus berupa nama informasi beserta typenya.

  • instruksi “terakhir” yang harus ada pada fungsi harus merupakan pengiriman harga yang dihasilkan oleh fungsi (dituliskan seperti pada notasi di atas, dengan type hasil boleh type dasar atau type terstruktur). Type hasil boleh dinyatakan oleh suatu nama type. Dengan catatan, bahwa instruksi “terakhir” belum tentu dituliskan pada baris terakhir, misalnya jika hasil merupakan sebuah nilai yang dikirimkan berdasarkan analisis kasus.

Fungsi Terdefinisi

adalah fungsi yang sudah diberikan oleh sistem, dan tinggal dipakai (dipanggil). Fungsi terdefinisi selalu diberikan daftar dan spesifikasinya (domain + range).

Fungsi terdefinisi untuk melakukan konversi tipe. Seringkali, dibutuhkan konversi dari bilangan riil menjadi integer atau sebaliknya. Maka didefinisikan duabuah fungsi konversi bilangan numerik sebagai berikut:

function RealToInteger (x:real) → integer

{mengkonversi harga x yang bertype real menjadi harga lain yang betype integer dengan pemotongan, yaitu menghilangkan bagian di belakang titik desimalnya}

function IntToReal (i:integer) → real

{mengkonversi harga i yang bertype integer menjadi harga ekivalen yang betype real }

Fungsi-fungsi terdefinisi untuk seleksi terhadap sebuah string :

Function AWAL (S: string) → string

{Menghasilkan sisa string S tanpa karakter terakhir}

function AKHIR (S: string) → string

{Menghasilkan sisa string S tanpa karakter pertama}

function FIRSTCHAR (S:string , tidak kosong) → character

{Menghasilkan Karakter pertama string S}

function LASTCHAR (S: string, tidak kosong) → character

{Menghasilkan Karakter terakhir string S}

Fungsi-fungsi untuk memperoleh informasi tentang sebuah string :

function LONG (S:string) → integer

{Menghasilkan panjang string S}

function IsKOSONG (S: string) → Boolean

{Menghasilkan true jika S adalah string kosong }

Fungsi matematik

function Sin (x: real) → real

{Menghasilkan sinus(x), x dalam radian}

function Cos (x: real) →real

{Menghasilkan cosinus(x), x dalam radian}

function Abs {Menghasilkan (x: integer) → integer

(menghasilkan|x|}

Contoh Penulisan Algoritmik

Berikut ini diberikan contoh pendefinisian dan pemakaian (pemanggilan) fungsi.

Pendefinisian Fungsi

function FX_KUADRAT (x : integer) → integer

{Diberikan x, integer, menghitung f(x) = x2 + 3x – 5 }

Kamus lokal :

Deskripsi :

→ (x * x + 3 * x – 5)

Leave a Reply