Pendefinisian Fungsi Pemanggilan Fungsi Penggunaan Prosedur atau Fungsi

  Algoritma Pemrograman Pertemuan Ke-9

  (Fungsi) :: Noor Ifada ::

Sub Pokok Bahasan

  Pendefinisian Fungsi Pemanggilan Fungsi Penggunaan Prosedur atau Fungsi

Pendahuluan

  Seperti halnya prosedur, fungsi juga merupakan modul program yang mempunyai tujuan spesifik. Fungsi adalah modul program yang

memberikan/mengembalikan (return)

sebuah nilai dan tipe tertentu (tipe dasar atau tipe bentukan)

  

Pendefinisian Fungsi

  • • Sebagaimana halnya dengan prosedur, fungsi diakses

    dengan memanggil namanya. Selain itu, fungsi juga

    dapat mengandung daftar parameter formal.

    Parameter pada fungsi selalu merupakan parameter

    masukan. Jenis parameter masukan pada fungsi

    disebabkan oleh kenyataan bahwa parameter pada

    fungsi merupakan masukan yang digunakan oleh fungsi tersebut untuk menghasilkan nilai
  • • Struktur fungsi sama dengan struktur algoritma yang

    sudah dikenal sebelumnya:
    • – ada bagian header yang berisi nama fungsi dan spesifikasi

      fungsi
    • – bagian Deklarasi – badan fungsi

  Notasi algoritma untuk mendefinisikan fungsi

  • Tipe hasil menspesifikasikan tipe nilai yang diberikan oleh fungsi. Nilai yang diberikan oleh fungsi dapat bertipe dasar maupun

    bertipe bentukan. Sebagaimana halnya pada

    prosedur, parameter fungsi pada fungsi tidak selalu harus ada
  • Semua nama peubah/konstanta yang hanya berlaku di dalam fungsi saja dideklarasikan di dalam bagian Deklarasi (lokal). Nama yang didefinisikan di dalam bagian Deklarasi fungsi hanya dikenal dan berlaku di dalam fungsi yang bersangkutan saja, fungsi lain atau program utama tidak dapat menggunakannya

Pemanggilan Fungsi

  • Fungsi diakses dengan cara memanggil namanya dari program pemanggil, diikuti dengan daftar parameter aktual (bila ada)
  • Karena fungsi menghasilkan nilai, maka nilai tersebut dapat ditampung dalam sebuah peubah yang bertipe sama dengan

    tipe fungsi atau nilai yang dikembalikan

    oleh fungsi dapat langsung dimanipulasi.

    Parameter aktual dapat berupa konstanta, nama konstanta, atau nama peubah

  • Contoh: Fungsi untuk menghasilkan nilai

  sebagai berikut: :real) real

  function F(input x2

  { Mengembalikan nilai F(x) = x + 2x – 3, x Є R } DEKLARASI { tidak ada } DESKRIPSI:

  • * return x x + 2* x – 3

Keterangan :

  • F adalah nama fungsi, tipenya real
  • x adalah parameter (by value) formal
  • Di dalam badan fungsi, nilai yang dihasilkan oleh fungsi dikembalikan (return) ke titik pemanggilan:

  return x*x + 2*x – 3

  • Fungsi dapat dipanggil dari program utama atau dari modul program lain. Di dalam DEKLARASI program pemanggil harus

    dideklarasikan prototip atau header fungsi yang digunakan.

    Pendeklarasian prototip fungsi di dalam DEKLARASI diperlukan agar fungsi tersebut dikenal oleh program pemanggil serta cara fungsi dipanggil.
  • • Berikut ini adalah contoh sebuah program pemanggil fungsi F

    yang sudah didefinisikan pada contoh di atas. Program ini menampilkan tabel nilai-nilai x dan F(x) di dalam selang [10,15] dengan Δx = 0.5 seperti contoh berikut:

  Algoritma CONTOH_PEMANGGILAN_FUNGSI

  { Program utama untuk pemanggilan fungsi F } DEKLARASI : real x

  function F(input x:real) real

  → { Mengembalikan nilai F(x) = x2 + 2x – 3, x Є R } return x x + 2* x * - 3 DESKRIPSI: write(‘-------------------‘) write(‘ x F(x) ‘) write(‘-------------------‘)

  10.0 x ← while ≤ 15.0 do x write( x ,‘ ‘, F ( x )) x x + 0.5

  ← endwhile write(‘-------------------‘)

  Program CONTOH_PEMANGGILAN_FUNGSI; var

  x :

  real; function F(x : real) : real; begin

  F := x*x + 2*x - 3

  end; begin writeln(‘-------------------‘); writeln(‘ x F(x) ‘); writeln(‘-------------------‘);

  x := 10.0;

  while x <= 15.0 do begin writeln(x:6:2,‘ ‘, F(x) :6:2);

  x := x + 0.5;

  end; writeln(‘-------------------‘); end.

Penggunaan Prosedur atau Fungsi

  • Dalam pemrograman modular, seringkali muncul pertanyaan apakah modul akan dibuat sebagai prosedur atau fungsi. Fungsi lebih tepat digunakan apabila modul program mengembalikan sebuah nilai, sementara prosedur digunakan bila modul menghasilkan efek netto dari (satu atau) sekumpulan aksi. Namun dalam praktek, seringkali perbedaan antara keduanya tidak jelas, karena sebuah prosedur dapat juga ditulis sebagai fungsi, demikian pula

    sebaliknya. Pemilihan apakah sebuah modul direalisasikan

    sebagai fungsi atau prosedur bergantung pada kebutuhan dan seni memprogram
  • Fungsi dapat dikonversikan sebagai prosedur dengan menyatakan nilai yang dikembalikan oleh fungsi tersebut sebagai parameter keluaran prosedur. Demikian juga, prosedur yang mempunyai satu buah parameter keluaran

    dapat ditulis sebagai fungsi dengan menyatakan parameter

    keluaran sebagai nilai yang dikembalikan oleh fungsi

  (a) Mengubah fungsi menjadi prosedur Algoritma MENENTUKAN_MAKSIMUM

  { Program utama yang memanggil fungsi MAKS untuk menentukan nilai maksimum dari dua buah bilangan buat a dan b. }

  • Sebagai contoh

  DEKLARASI (* Program Utama *)

  adalah fungsi

  , : integer

  a b Maks dan

  , : integer) integer

  function Maks(input a b → program utama

  { Mengembalikan harga terbesar dari a dan b }

  untuk menentukan

  DEKLARASI (* Fungsi *) { tidak ada }

  bilangan terbesar di antara dua

  DESKRIPSI : (* Fungsi *) if ab then

  buah bilangan

  return

  a

  else return

  b

  endif DESKRIPSI : (* Program Utama *) read( a , b ) write( ( , ))

  Maks a b

  Program CONTOH_PEMANGGILAN_FUNGSI; var

  a :

  integer;

  b :

  integer; function Maks(a, b : integer) : integer; begin if a >= b then

  Maks := a

  else

  Maks := b;

  end; begin write(‘Masukkan nilai a ? ‘); readln(a); write(‘Masukkan nilai b ? ‘); readln(b); writeln(‘Nilai yang terbesar adalah : ‘, Maks(a,b) ); end.

  Algoritma MENENTUKAN_MAKSIMUM

  { Program utama yang memanggil prosedur TentukanMaks untuk menentukan nilai maksimum dua buah bilangan bulat a dan b }

  • Di samping

  DEKLARASI (* Program Utama *) , , : integer

  a b m sebagai fungsi, fungsi Maks juga

  , : integer, output

  procedure TentukanMaks(input a b maks : integer) dapat dituliskan

  { Menentukan nilai terbesar dari a dan b }

  sebagai prosedur

  { K.awal: a dan b sudah terdefinisi nilai } { K.akhir: maks berisi nilai terbesar dari a atau b }

TentukanMaks

  dan program

  DEKLARASI (* Prosedur *) { tidak ada }

  utama seperti algoritma berikut

  DESKRIPSI : (* Prosedur *) if ≥ then

  a b ini: maks a

  ←

  else

  maks b

  endif DESKRIPSI : (* Program Utama *) read( a , b )

  ( , , )

  

TentukanMaks a b m

  write( m )

  Program CONTOH_PEMANGGILAN_FUNGSI; var

  a :

  integer;

  b :

  integer;

  m :

  integer; procedure Tentukan_Maks(a,b:integer; var maks:integer); begin if a >= b then

  Maks := a

  else

  Maks := b;

  end; begin write(‘Masukkan nilai a ? ‘); readln(a); write(‘Masukkan nilai b ? ‘); readln(b);

  Tentukan_Maks(a,b,m);

  writeln(‘Nilai yang terbesar adalah : ‘,m); end.

  Algoritma MENGHITUNG_RATA_RATA

  { Program utama untuk menghitung nilai rata-rata N buah bilangan bulat yang dibaca dari piranti masukan}

  (b) Mengubah

  DEKLARASI (* Program Utama *)

  Ndata : integer prosedur

  : real

  rerata

  : integer, output

  procedure HitungRataRata(input N menjadi fungsi rata : real)

  { Menghitung nilai rata-rata N buah bilangan bulat } { K.awal: N berisi banyaknya bilangan bulat, N > 0 }

  • Berikut adalah

  { K.awal: rata berisi rata-rata seluruh bilangan }

  contoh mengubah

  DEKLARASI (* Prosedur *) : integer { data bilangan bulat yang dibaca

  x prosedur menjadi

  dari piranti masukan }

  fungsi dengan

  : integer { pencacah banyak bilangan }

  k jumlah : integer { jumlah seluruh bilangan } meninjau prosedur

  DESKRIPSI : (* Prosedur *)

  menghitung nilai jumlah ← 0 { inisialisasi penjumlah } rata-rata dari for 1 to do kN

  read( x )

  sejumlah data jumlah

  ← jumlah x

  • bilangan bulat endfor

  ratajumlah / N { rata-rata seluruh bilangan } sebagai berikut:

  DESKRIPSI : (* Program Utama *) read( )

  Ndata HitungRataRata ( Ndata , rerata )

  write( )

  

rerata

  Program MENGHITUNG_RATA_RATA; var

  Ndata :

  integer;

  rerata :

  real; procedure HitungRataRata(N : integer; var rata : real); var

  x, k, jumlah : integer;

  begin

  jumlah := 0;

  for k := 1 to N do begin

  write(‘Nilai x ? ‘); readln(x); jumlah := jumlah + x;

  end;

  rata := jumlah/N;

  end; begin writeln(‘Menghitung rata-rata N buah bilangan bulat’); write(‘Masukkan banyaknya data ? ’); readln(Ndata);

  HitungRataRata(Ndata,rerata);

  writeln(‘Nilai rata-rata = ‘,rerata) end.

  

Prosedur HitungRataRata memiliki satu

parameter keluaran, karena itu ia dapat diubah menjadi fungsi. Apabila ditulis

sebagai fungsi, maka parameter keluaran

rata tidak diperlukan lagi, karena nilai rata merupakan nilai yang dihasilkan (return value) oleh fungsi

  Algoritma MENGHITUNG_RATA_RATA

  { Program utama untuk menghitung nilai rata-rata N buah bilangan bulat yang dibaca dari piranti masukan. } DEKLARASI (* Program Utama *)

  : integer

  Ndata rerata : real

  : integer) real

  function RataRata(input N

  { Menghitung nilai rata-rata N buah bilangan bulat yang dibaca dari piranti masukan. Rata-rata bilangan merupakan nilai yang dikembalikan oleh fungsi } DEKLARASI (* Fungsi *)

  x : integer { data bilangan bulat }

  : integer { pencacah banyak bilangan }

  k jumlah : integer { jumlah seluruh bilangan }

  DESKRIPSI : (* Fungsi *)

  jumlah 0 { inisialisasi penjumlah } ←

  for k 1 to N do

  ←

  read( x )

  • endfor return jumlah / N { rata-rata seluruh bilangan } DESKRIPSI : (* Program Utama *) read( Ndata ) write( ( ))

  jumlahjumlah x

  RataRata Ndata

  Program CONTOH_PEMANGGILAN_FUNGSI; var

  Ndata :

  integer;

  rerata :

  real; function RataRata(N : integer) : real; var

  x, k, jumlah : integer;

  begin

  jumlah := 0;

  for k := 1 to N do begin

  write(‘Nilai x ? ‘); readln(x); jumlah := jumlah + x;

  end;

  RataRata := jumlah/N;

  end; begin writeln(‘Menghitung rata-rata N buah bilangan bulat’); write(‘Masukkan banyaknya data ? ’); readln(Ndata);

  )

  writeln(‘Nilai rata-rata = ‘, RataRata(Ndata) end.

Summary

  • • Fungsi adalah modul program yang memberikan/mengembalikan

    (return) sebuah nilai dan tipe tertentu (tipe dasar atau tipe bentukan)
  • • Struktur fungsi terdiri dari bagian header, bagian Deklarasi dan

    badan fungsi
  • Semua nama peubah/konstanta yang hanya berlaku di dalam fungsi saja dideklarasikan di dalam bagian Deklarasi (lokal). Nama yang didefinisikan di dalam bagian Deklarasi fungsi hanya dikenal dan berlaku di dalam fungsi yang bersangkutan saja, fungsi lain atau program utama tidak dapat menggunakannya
  • Fungsi diakses dengan cara memanggil namanya dari program pemanggil, diikuti dengan daftar parameter aktual (bila ada)
  • Fungsi dapat dikonversikan sebagai prosedur, demikian juga prosedur yang mempunyai satu buah parameter keluaran dapat ditulis sebagai fungsi

  

Daftar Pustaka

  • Jogiyanto HM [1989]. Turbo Pascal, Andi Offset, Yogyakarta.
  • Noor Ifada, ST [2005]. Diktat Matakuliah

  Algoritma Pemrograman, Hibah Kompetisi A1, Jurusan Teknik Informatika, Universitas Trunojoyo.

  • Rinaldi Munir [2003]. Algoritma dan

  Pemrograman dengan Pascal dan C edisi Kedua, Penerbit Informatika, Bandung.