Penggunaan dan Penulisan FUNCTION pada Pascal

baca 3 menit
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.

pascal
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.

pascal
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.

pascal
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.

pascal
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.