Kamis, 09 Desember 2010

SUBRUTIN PROSEDUR DAN FUNGSI

SUBRUTIN PROSEDUR DAN FUNGSI


8.1 Definisi
8.1.1 Pemrograman Modular
Sebuah sistem program yang besar dibangun oleh ribuan baris bahkan jutaan baris perintah. Jika hal itu dibuat utuh dalam sebuah program, maka akan muncul beberapa kendala, yaitu:
- Kesulitan membaca logika program
- Kesulitan perbaikan program
- Kesulitan dalam pencarian kesalahan
- Kesulitan pengembangan program
- Kemungkinan banyak perintah yang sama ditulis secara berulang-ulang.
- Pada saat di eksekusi program menjadi lambat karena membutuhkan ruang lebih di dalam memory.
Oleh karena itu program yang besar perlu dipecah menjadi beberapa bagian program (subprogram) yang lebih kecil berupa modul-modul program yang terpisah dari program utama. Modul-modul program ini akan dijalankan dan dikendalikan oleh program utama.
Program yang dibangun oleh beberapa subprogram disebut dengan pemrograman modular. Struktur pemrograman modular dijelaskan dalam gambar berikut:


















Program utama dipecah menjadi beberapa subprogram agar lebih mudah dikodekan, lebih mudah dipahami serta penghematan dalam penulisan kode program. Selain itu penggunaan memory komputer lebih sedikit sehingga program akan berjalan lebih cepat. Hal ini akan mempermudah dalam melakukan perbaikan program (debugging).

8.1.2 Subprogram
Sub program adalah bagian program yang berdiri sendiri, tetapi pengontrolannya tetap dilakukan melalui program utama. Sub program dapat berupa prosedur atau fungsi. Dalam subprogram dikenal 2 macam variabel, yaitu:
1. Variabel Lokal
Variabel yang dideklarasikan di dalam sebuah subprogram, dan hanya dikenali di dalam subprogram yang bersangkutan.
2. Variabel Global
Variabel umum yang dideklarasikan di dalam program utama. Memiliki lingkup yang global sehingga dapat dikenali diseluruh bagian program baik di dalam subprogram maupun dalam program utama.



Ciri-ciri subprogram yang baik:
1. Memiliki satu fungsi tujuan (Logical Inherent)
Artinya hanya mengandung satu fungsi saja, tidak tercampur dengan hal-hal/ fungsi yang lain.
2. Tidak tergantung pada subprogram yang lain (Independent)
Dapat dijalankan sendiri-sendiri tanpa harus menunggu modul lain selesai. Selain itu harus di parameterisasi dengan baik, sehingga tidak merusak nilai dari nama variabel yang didefinisikan diluar subprogram tersebut.
3. Berukuran kecil (Small size)
Jika subprogram terlalu besar, harus dibagi-bagi lagi menjadi subprogram yang lebih sederhana.
4. Tidak menggunakan variabel global dalam badan subprogramnya.
Struktur penulisan subprogram (prosedur/ fungsi) hampir sama dengan proram pada umumnya, yaitu terdiri dari tiga bagian: Header (kepala program), Deklarasi (variabel lokal) dan badan program yang diawali BEGIN dan diakhiri dengan END dan tanda titik koma.

8.2 Parameter
Parameter merupakan suatu variabel yang berfungsi untuk berkomunikasi antara subprogram dengan titik dimana subprogram tersebut dipanggil pada program utama. Eksekusi subprogram yang diparameterisasi akan melakukan komunikasi antara parameter formal dengan parameter aktual yang berupa transfer data dari parameter aktual sebagai pengirim nilai, dan parameter formal sebagai penerima sekaligus pengembali nilai kepada yang mengirim nilai.
Terdapat 2 macam parameter, yaitu:
a. Parameter Formal
Parameter pada pendeklarasian subprogram, digunakan untuk mendefinisikan suatu data yang akan diolah dan hasil olahannya di dalam subprogram.


b. Parameter Aktual
Parameter pada saat eksekusi subprogram dengan cara dipanggil dari program utama yang berfungsi untuk mengirimkan nilai dan menerima hasil olahannya.
Aturan korespondensi antara parameter aktual dan parameter formal:
1. Jumlah parameter aktual pada pemanggilan subprogram harus sama dengan jumlah parameter formal pada pendeklarasian subprogramnya.
2. Tiap parameter aktual harus bertipe sama dengan tipe parameter formal yang bersesuaian.
3. Tiap parameter aktual harus di ekspresikan dengan cara yang taat dengan parameter formal yang bersesuaian.
Berdasarkan maksud penggunaannya, terdapat 3 jenis parameter formal, yaitu:
1. Parameter Masukan (Input Parameter)
Parameter yang nilainya berlaku sebagai masukan untuk subprogram. Biasanya dinamakan parameter nilai (value parameter/ by value). Saat subprogram dieksekusi, parameter ini tidak terpengaruh oleh nilai variabel yang lain karena hanya berfungsi sebagai penerima data saja.
2. Parameter Keluaran (Output Parameter)
Parameter yang menampung keluaran yang di hasilkan oleh subprogram. Parameter ini sebagai pengirim data nilai hasil proses kepada program pemanggilnya. Jika subprogram dieksekusi, parameter ini tidak terpengaruh oleh nilai yang lain karena hanya sebagai pengirim data nilai hasil proses saja.
3. Parameter Rujukan/ Parameter Input-Output (By Reference)
Parameter yang berfungsi ganda sebagai penerima input dan pengirim hasil proses. Parameter ini digunakan jika informasi harus dikit\rim dalam dua arah. Jika subprogram dieksekusi, maka parameter ini akan ikut berubah. Parameter by reference harus berupa variabel tidak boleh berupa konstanta.


8.3 Prosedur
Prosedur merupakan subprogram yang tidak selalu menghasilkan nilai, tetapi menghasilkan suatu efek netto. Efek netto diketahui dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur.
Suatu prosedur dikenal berdasarkan nama prosedurnya, kemudian diikuti dengan parameter yang ditulis didalam tanda kurung, bila ada.
Bentuk umum penulisan prosedur:

PROCEDURE nama_prosedur (parameter_formal);
Var
……..
Begin
Pernyataan_1;
Pernyataan_2;
.
.
.
End;

Pemanggilan prosedur:
Prosedur dijalankan dengan cara memanggil namanya dari program utama.
a. Prosedur tanpa parameter
Nama_prosedur;
b. Prosedur dengan parameter
Nama_prosedur (parameter_aktual);








Contoh:
Program luas_persegi_panjang;
Var
P,L :Real;
Procedure Luas_pp (var panjang,lebar :real);
Var
Luas : real;
Begin
Luas:=panjang * lebar;
Writeln(‘Luas Persegi Panjang = ‘, Luas:5:2);
End;

Begin
Write(‘Masukkan panjang=); Readln(P);
Write(‘Masukkan lebar=); Readln(L);
Luas_pp (P,L);
End.

8.4 Fungsi
Fungsi merupakan subprogram yang memberikan/ mengembalikan sebuah nilai tertentu (return value). Nilai hasil dikembalikan ke dalam nama fungsi, oleh karena itu nama fungsi juga sebagai variabel yang memiliki tipe data tertentu.









Bentuk umum penulisan fungsi:
FUNCTION nama_fungsi (parameter_formal) : tipe_data;
Var
……..
Begin
Pernyataan_1;
Pernyataan_2;
.
.
.
{return value}
End;

Pemanggilan fungsi:
Fungsi dijalankan dengan cara memanggil namanya dari program utama. Fungsi pada program utama diperlakukan seperti sebuah variabel yang menampung sebuah nilai hasil fungsi.
a. Fungsi tanpa parameter
Var := Nama_fungsi;
Atau
Writeln (nama_fungsi);
b. Fungsi dengan parameter
Var := Nama_ fungsi (parameter_aktual);
Atau
Writeln (nama_fungsi(parameter_aktual));






Contoh:
Program luas_persegi_panjang;
Var
P,L,Lp :Real;
Function Luas_pp (var panjang,lebar :real):Real;
Var
Luas : real;
Begin
Luas:=panjang * lebar;
Luas_pp := Luas;
End;

Begin
Write(‘Masukkan panjang=); Readln(P);
Write(‘Masukkan lebar=); Readln(L);
Lp := Luas_pp (P,L);
Writeln (‘Luas Persegi Panjang = ‘, Lp:5:2);
End.

8.5 Rekursi
Rekursi adalah suatu subprogram yang memanggil dirinya sendiri. Algoritma rekursif menyediakan teknik penyelesaian persoalan yang di dalamnya mengandung definisi persoalan itu sendiri.
Langkah-langkah merancang algoritma rekursif:
1. Menyatakan persoalan secara rekursif
2. Menentukan kasus yang menyebabkan pemanggilan rekursif berhenti (basis)
3. Menentukan kasus yang menyebabkan pemanggilan rekursif (rekurens).


Contoh: Menghitung nilai faktorial
Function faktorial (n :integer): longint;
Begin
If n = 0 then
Faktorial := 1
Else
Faktorial := n * faktorial (n-1);

Tidak ada komentar:

Poskan Komentar