Penggunaan dan Penulisan FUNCTION pada Pascal
Setelah sebelumnya kita membahas tentang PROCEDURE pada Pascal, pada kesempatan kali ini kita akan membahas penggunaan dan penulisan FUNCTION pada bahasa Pascal.
Deklarasi dan Struktur FUNCTION pada Pascal
Tempat mendeklarasikan FUNCTION sama seperti deklarasi PROCEDURE, yaitu tepat sebelum bagian begin
dari program utama. Keduanya memiliki struktur yang kurang lebih sama. Hanya satu hal yang membedakan, yaitu tipe data nilai kembailan pada FUNCTION.
Format penulisan FUNCTION pada Pascal.
procedure <nama-function>(<parameter>: <tipe-data>): <tipe-data-kembalian>;
// deklarasi lokal
begin
// tubuh function
end;
Perbedaan mendasar dari PROCEDURE dan FUNCTION ada pada data kembaliannya. Sub program yang tidak mengembalikan nilai dinamakan PROCEDURE, sedangkan yang mengembalikan nilai dinamakan FUNCTION. Seperti yang pernah kita bahas sebelumnya.
Apa itu data kembalian? dan kenapa harus ada?
Mari kita jawab dengan membuat program sederhana.
Penggunaan FUNCTION pada Pascal
Kali ini kita akan coba membuat program sederhana untuk mencari hasil dari suatu bilangan bulat b dipangkatkan dengan bilangan bulat n.
\[ hasil = b^n ]
Jika kita tidak menggunakan sub program (FUNCTION) maka penyelesaiannya kurang lebih seperti ini.
program cariPangkat;
uses crt;
var
b, n: integer;
hasil: integer;
begin
clrscr;
n := 5; // nilai n=5
b := 2; // nilai b=2
hasil := 1;
// melakukan perulangan while
// untuk mengalikan bilangan b sebanyak n kali
while n > 0 do
begin
n := n-1;
hasil := hasil * b;
end;
// output hasil
writeln('hasil: ', hasil);
readln;
end.
Pada program tersebut kita menghitung nilai dari 25 yang hasilnya adalah 32.
Metode yang kita gunakan untuk mencari hasil pangkat adalah dengan mengalikan bilangan b sebanyak n kali dengan menggunakan perulangan.
Kode tersbut memang tidak salah, tetapi apa jadinya jika kita ingin mencetak beberapa bilangan pangkat?
Dengan kekuatan copas, ketika kita ingin mencari hasil dari 25 dan 52 kodenya akan berubah menjadi seperti ini.
program cariPangkat;
uses crt;
var
b, n: integer;
hasil: integer;
begin
clrscr;
n := 5; // nilai n=5
b := 2; // nilai b=2
hasil := 1;
// melakukan perulangan while
// untuk mengalikan hasil dengan b sebanyak n kali
while n > 0 do
begin
n := n-1;
hasil := hasil *b;
end;
// output hasil
writeln('hasil: ', hasil);
n := 2; // nilai n=2
b := 5; // nilai b=5
hasil := 1;
// melakukan perulangan while
// untuk mengalikan hasil dengan b sebanyak n kali
while n > 0 do
begin
n := n-1;
hasil := hasil *b;
end;
// output hasil
writeln('hasil: ', hasil);
readln;
end.
Kode tersebut jadi terlihat sangat panjang, rumit, dan tidak enak dilihat.
Di sinilah FUNCTION dapat digunakan, mari kita format ulang kode tersebut dengan menggunakan sub program berupa FUNCTION.
program cariPangkat;
uses crt;
var
hasil: integer;
function hitungPangkat(b, n: integer): integer;
var
h: integer;
begin
h := 1;
while n > 0 do
begin
n := n-1;
h := h*b;
end;
hitungPangkat := h;
end;
begin
clrscr;
// menghitung 2^5
hasil := hitungPangkat(2, 5);
writeln('hasil: ', hasil);
// menghitung 5^2
hasil := hitungPangkat(5, 2);
writeln('hasil: ', hasil);
readln;
end.
Sekarang coba jalankan program tersebut. Nantinya akan keluar output yang sama seperti sebelumnya.
Pada program tersebut, FUNCTION hitungPangkat
memiliki logika yang sama seperti kode kita sebelumnya. Yaitu menggunakan perulangan untuk mengalikan bilangan b sebanyak n kali.
Hasil dari perkalian berulang kita masukkan kedalam variable lokal h. Setelah perulangan selesai, selanjutnya nilai dari variable h dimasukkan kedalam nama FUNCTION yaitu hitungPangkat. Nama FUNCTION tersebut seakan-akan berfungsi sebagai variable dengan tipe integer (tipe kembalian).
Selanjutnya, pada program utama kita melakukan pemanggilan FUNCTION sekaligus assignment ke dalam variable hasil. Dan jadilah output seperti yang diinginkan.
Supaya lebih simepl lagi, kita dapat menghapus variable hasil dan langsung memanggil FUNCTION hitungPangkat
sebagai parameter dalam perintah PRINTLN.
program cariPangkat;
uses crt;
function hitungPangkat(b, n: integer): integer;
var
h: integer;
begin
h := 1;
while n > 0 do
begin
n := n-1;
h := h*b;
end;
hitungPangkat := h;
end;
begin
clrscr;
writeln('hasil: ', hitungPangkat(2, 5));
writeln('hasil: ', hitungPangkat(5, 2));
writeln('hasil: ', hitungPangkat(5, 5));
writeln('hasil: ', hitungPangkat(2, 2));
readln;
end.
Penutup
Cukup sekian untuk kesempatan kali ini, semoga bermanfaat
Pada kesempatan selanjutnya kita akan membahas tentang FUNCTION dan PROCEDURE yang memanggil dirinya sendiri. Atau yang biasa disebut konsep fungsi rekursi pada Pascal.