Dasar-Dasar Pemrograman Prosedur dan Fungsi
Definisi Prosedur dan fungsi adalah subprogram terpisah dalam blok sendiri yang merupakan bagian dari program utama. Prosedur dan fungsi diletakkan pada bagian deklarasi program.
Prosedur Menggunakan reserved word procedure. Bentuk: PROCEDURE nama; atau PROCEDURE nama (parameter formal:tipe data);
Prosedur Bentuk: uses crt; var x:integer; procedure coba; var y:real; begin … end; end. Variabel x berlaku di semua program, sedangkan variabel y hanya berlaku di prosedur coba.
Prosedur dengan Parameter Nilai di dalam suatu modul program sifatnya lokal, artinya hanya dapat digunakan pada modul yang bersangkutan saja, tidak dapat digunakan pada modul yang lain. Supaya nilai variabel dapat digunakan di modul lainnya, maka dapat dilakukan dengan cara : Dibuat bersifat global: harus dideklarasikan di atas modul yang menggunakannya. Dikirimkan sebagai parameter ke modul yang membutuhkannya
Parameter Terdapat dua jenis parameter: Parameter aktual Parameter formal
Parameter Aktual Parameter yang dikirim dari modul utama ke modul prosedur.
Parameter Formal Parameter yang ada pada prosedur dan dituliskan pada judul prosedur.
Pengiriman Parameter Terdapat 2 pengiriman parameter: Pengiriman berdasarkan referensi (call by reference) Pengiriman berdasarkan nilai (call by value)
Pengiriman berdasarkan Nilai Parameter formal yang ada di prosedur akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur.
Pengiriman berdasarkan Nilai Ex. uses crt; var x,y,jumlah:integer; procedure hitung(a,b,jum:integer); begin jum:=a+b; writeln('Di dalam prosedur: ',a,'+',b,'=',jum); end; clrscr; write('Masukkan nilai x = ');readln(x); write('Masukkan nilai y = ');readln(y); hitung(x,y,jumlah); writeln('Di luar prosedur: ',x,'+',y,'=',jumlah); readln; end.
Pengiriman berdasarkan Nilai Ex. Hasil: Masukkan nilai x = 4 Masukkan nilai y = 5 Di dalam prosedur: 4+5=9 Di luar prosedur: 4+5=0
Pengiriman berdasarkan Acuan Perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter aktual.
Pengiriman berdasarkan Acuan Ex. uses crt; var x,y,jumlah:integer; procedure hitung(a,b:integer; var jum:integer); begin jum:=a+b; writeln('Di dalam prosedur: ',a,'+',b,'=',jum); end; clrscr; write('Masukkan nilai x = ');readln(x); write('Masukkan nilai y = ');readln(y); hitung(x,y,jumlah); writeln('Di luar prosedur: ',x,'+',y,'=',jumlah); readln; end.
Pengiriman berdasarkan Acuan Ex. Hasil: Masukkan nilai x = 4 Masukkan nilai y = 5 Di dalam prosedur: 4+5=9 Di luar prosedur: 4+5=9
Fungsi Menggunakan reserved word function. Fungsi hampir sama dengan prosedur, hanya hasil fungsi harus dideklarasikan dengan tipe datanya. Bentuk: FUNCTION nama:tipe data hasil; atau FUNCTION nama (parameter formal:tipe data):tipe data hasil;
Contoh Hasil: Masukkan nilai x = 4 Masukkan nilai y = 5 4+5=9 uses crt; var x,y,jumlah:integer; function hitung(a,b:integer):integer; begin hitung:=a+b; end; clrscr; write('Masukkan nilai x = ');readln(x); write('Masukkan nilai y = ');readln(y); writeln(x,'+',y,'=',hitung(x,y)); readln; end. Hasil: Masukkan nilai x = 4 Masukkan nilai y = 5 4+5=9
Prosedur vs Fungsi Nama fungsi harus digunakan untuk menampung hasil yang akan dikirimkan dari fungsi ke program. Contoh: function hitung (a,b:integer):integer; begin hitung:=a+b; end; Jika prosedur, hasil dikirimkan dengan parameter yang dikirimkan secara acuan.
Prosedur vs Fungsi Karena hasil berada di nama fungsi tersebut, maka fungsi dapat langsung digunakan untuk dicetak hasilnya pada program utama. Contoh: begin a:=4; b:=3; write(hitung(a,b)); readln; end. Jika prosedur, nama prosedur tidak dapat langsung digunakan langsung, yang dapat langsung digunakan adalah parameternya yang mengandung nilai balik.