Sabtu, 11 Mei 2013

FUNGSI (FUNCTION)



FUNGSI (FUNCTION)

KONSEP
Ø Subprogram yang memberikan/mengembalikan (return) sebuah nilai dari tipe tertentu (tipe dasar atau bentukan).
Ø Diakses dengan memanggil namanya.
Ø Dapat memiliki parameter formal yang selalu bersifat sebagai parameter masukan.

PENDEFINISIAN FUNGSI
Ø Memiliki struktur yang sama dengan prosedur yaitu bagian header, deklarasi, dan definisi.
Bentuk pendefinisian fungsi :
function NamaFungsi(input daftarparameter, jika ada)® tipe
{Spesifikasi fungsi,menjelaskan apa yang dilakukan dan yang dikembalikan fungsi}
DEKLARASI :
   {semua nama peubah}

DEFINISI :
   {urutan instruksi/aksi}
   return ekspresi
end function

Contoh 1:
function Hitung_Nilai_Maks (input a,b : integer) ® integer
{Menghitung nilai maksimal antara dua bilangan}
DEKLARASI :
   maks  : integer
DEFINISI :
   if a > b then
      maks ¬ a
   else
      maks ¬ b
   return maks
end function

Contoh 2 :
function Faktorial (input bil:integer) ® integer
{Mencari hasil factorial bilangan, bilangan ³ 0}
DEKLARASI:
   i,fak : integer
DEFINISI :
fak¬1
for i¬1 to bil do
   fak ¬ fak * i
endfor
return fak
end function

Contoh 3 :
function Pangkat_bil(input bil, n:integer) ® integer
{Mencari hasil pangkat bil sebanyak n kali}

DEKLARASI :
   hasil,i : integer
DEFINISI :
   hasil¬1
   for i¬1 to n do
      hasil¬hasil * bil
   endfor
   return hasil
end function

PEMANGGILAN FUNGSI
Seperti prosedur, fungsi diakses dengan cara memanggil namanya dari program pemanggil seperti program utama atau subprogram lainnya diikuti dengan daftar parameter aktual jika ada.
Karena fungsi menghasilkan nilai, maka nilai tersebut dapat diproses dengan dua cara, yakni :
Ø Nilai ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi.
peubah ¬ NamaFungsi(parameter aktual, jika ada)
Sebagai contoh :
·       y¬Pangkat_bil(5, 3)
·       h¬Faktorial(6)
Ø Nilai langsung dimanipulasi seperti pada contoh berikut :
·       write(Pangkat_bil(5, 3))
·       if Faktorial(6) > 50 then
      write(‘Sukses’)
endfor

Contoh 4 (Pemanggilan Fungsi):
Algoritma Hitung_Nilai_Maks
{Menghitung nilai maksimal antara dua bilangan dengan menggunakan fungsi}
DEKLARASI :
   a,b : integer
   function Hitung_Nilai_Maks(input a, b : integer)® integer
DEFINISI :
   read(a, b)
   write(Hitung_Nilai_Maks(a, b))
End Algoritma

Contoh 5 :
Algoritma Hitung_Faktorial
{Mencari hasil factorial bilangan yang lebih besar atau sama dengan 0 dengan menggunakan fungsi}
DEKLARASI :
   Bilangan  : integer
function Faktorial (input bil:integer) ® integer
DEFINISI :
   Read(Bilangan)
Write(‘Hasil Faktorial dari ‘, Bilangan,‘= ’, Faktorial(Bilangan))
End Algoritma

Contoh 6 :
Algoritma Hitung_Pangkat_Bilangan
{Mencari hasil pangkat bil sebanyak n kali dengan menggunakan fungsi}
DEKLARASI :
   Bilangan  : integer
   Pangkat   : integer
   function Pangkat_bil(input bil, n:integer) ® integer
DEFINISI :
   Read(Bilangan)
   Read(Pangkat)
   If (Bilangan = 0) then
      Write(‘Hasil pangkat adalah 0’)
   Else
Write(‘Hasil pangkat adalah ’, Pangkat_bil(Bilangan, Pangkat))
   End for
End Algoritma

  




PEMROGRAMAN MODULAR (MODULARISASI)




 PEMROGRAMAN MODULAR (MODULARISASI)

KONSEP
Ø  Program yang besar (kompleks) sebaiknya dipecah menjadi beberapa subprogram yang lebih kecil.
Ø  Setiap subprogram melakukan tugas (komputasi) yang spesifik.
Ø  Subprogram yang baik adalah yang bersifat independen dari program utamanya.
Ø  Teknik pemecahan program menjadi beberapa subprogram dinamakan teknik pemrograman modular (modularisasi).

SUBPROGRAM
Ø  Memiliki struktur yang sama dengan program utama yaitu bagian header, deklarasi dan definisi.
Ø  Subprogram dieksekusi dengan memanggil namanya dari program utama.
Ø  Ketika sebuah subprogram dipanggil, maka pelaksanaan program berpindah ke subprogram. Selanjutnya, seluruh instruksi di dalam subprogram akan dijalankan. Setelah seluruh instruksi dijalankan, pelaksanaan program kembali ke program utama untuk menjalankan instruksi berikutnya.

KELEBIHAN PEMROGRAMAN MODULAR (MODULARISASI)
Ø  Memberikan kemudahan dalam penulisan bagian (instruksi) program yang sama. Dengan kata lain, modularisasi menghindari penulisan bagian program yang berulang.
Ø  Memberikan kemudahan untuk menulis dan menemukan kesalahan (debug) program.

JENIS SUBPROGRAM
Ø  Prosedur (Procedure)
Ø  Fungsi (Function)

PROSEDUR (PROCEDURE)
Ø  Merupakan subprogram yang mengerjakan tugas (aktifitas) yang spesifik dan menghasilkan suatu efek netto.
Ø  Efek netto diketahui dengan membandingkan keadaan awal dan akhir pada pelaksanaan sebuah prosedur.

PENDEFINISIAN PROSEDUR
Ø  Menuliskan nama prosedur (beserta parameter jika ada), mendeklarasikan nama peubah (variabel, konstanta, tipe, dll), dan menjabarkan rangkaian aksi yang dilakukan.
Ø  Setiap prosedur memiliki nama yang unik dan sebaiknya menggunakan kata kerja. Sebagai contoh, Hitung_Luas_segitiga, Cari_Nilai_Maks.
Ø  Parameter digunakan untuk pertukaran data/informasi  antara prosedur dengan titik (lokasi) pemanggilannya.
Ø  Terdapat dua jenis parameter yakni, aktual dan formal. Parameter aktual (argumen) disertakan pada saat pemanggilan prosedur. Sedangkan parameter formal dideklarasikan dalam bagian header prosedur.
Bentuk pendefinisian prosedur :
Procedure NamaProsedur(deklarasi parameter jika ada)
{Spesifikasi prosedur, keadaan awal dan akhir prosedur}
DEKLARASI :
     {semua nama peubah}
DEFINISI :
     {urutan instruksi/aksi}

Contoh 1 (Prosedur dengan parameter):
procedure Hitung_Nilai_Maks (input a,b : integer)
{Menghitung nilai maksimal antara dua bilangan}
DEKLARASI :
     maks : integer
DEFINISI :
     if a > b then
          maks ¬ a
     else
          maks ¬ b
     write(maks)
end procedure



Contoh 2 (Prosedur tanpa parameter):
procedure Tulis_Deret_Bilangan_Genap
{Menampilkan deret bilangan genap yang kurang dari 10}
DEKLARASI :
     bilangan : integer
DEFINISI :
     bilangan ¬ 2
     while (bilangan < 10)do
          write(bilangan)
     bilangan ¬ bilangan + 2
endwhile
end procedure

PEMANGGILAN PROSEDUR
Ø  Prosedur diakses dengan cara memanggil namanya dari program pemanggil seperti program utama atau subprogram lainnya.
Ø  Prosedur harus dideklarasikan dahulu dalam program pemanggil sehingga dapat dikenali pada saat pengaksesannya. Pendeklarasian prosedur berisi bagian header prosedur.

Contoh 3 (Pengaksesan Prosedur Dari Program Pemanggil):
Algoritma Hitung_Nilai_Maks
{Menghitung nilai maksimal antara dua bilangan dengan menggunakan prosedur}
DEKLARASI :
     a,b : integer
     procedure Hitung_Nilai_Maks(input a, b : integer)
DEFINISI :
     read(a, b)
     Hitung_Nilai_Maks(a, b)
End Algoritma


NAMA GLOBAL, NAMA LOKAL, DAN LINGKUP
Ø  Nama global dideklarasikan dalam algoritma/program utama untuk dapat digunakan dalam seluruh bagian algoritma/program tersebut termasuk prosedur yang ada di dalamnya.
Ø  Nama lokal dideklarasikan dalam prosedur sehingga hanya akan dikenal dan digunakan dalam prosedur tersebut.

PARAMETER
Ø  Digunakan untuk menukar data/informasi antara algoritma/program utama dan prosedur.
Ø  Ketika prosedur dipanggil, parameter aktual berkorespondensi dengan parameter formal. Setiap parameter aktual berpasangan dengan parameter formal yang bersesuaian.
Ø  Jumlah parameter aktual harus sama dengan parameter formal.
Ø  Setiap parameter aktual harus bertipe sama dengan parameter formal yang bersesuaian.
Ø  Setiap parameter aktual harus diekspresikan dalam cara yang sesuai dengan jenis parameter formal.
Terdapat tiga jenis parameter formal, yakni :
Ø  Parameter masukan (input)/parameter nilai, yakni parameter yang nilainya berlaku sebagai masukan untuk prosedur
Ø  Parameter keluaran (outpout), yakni parameter yang menampung keluaran (output) yang dihasilkan prosedur
Ø  Parameter masukan/keluaran, yakni parameter yang berfungsi sebagai masukan dan keluaran bagi prosedur.
Contoh 3 (Prosedur dengan parameter masukan) :
procedure Hitung_rata1(input n : integer)
{Menghitung rata-rata dari n buah bilangan}
DEKLARASI :
     i,bil,jum : integer
     rata      : real
DEFINISI :
     jum¬0
     for i¬1 to n do
          write(‘Masukkan Bilangan ke-’,i)
          read(bil)
          jum¬jum+bil
     endfor
     rata¬jum/n
     write(‘Rata-rata =’,rata)
end_procedure

Algoritma Hitung_rata1
{Menghitung rata-rata dari n buah bilangan dengan menggunakan prosedur}
DEKLARASI :
     n    : integer
DEFINSI :
     write(‘Masukkan jumlah bilangan’)
     read(n)
     Hitung_rata1(n)
End Algoritma

Contoh 4 (Prosedur dengan parameter keluaran) :
procedure Hitung_rata2(output rata :real)
{Menghitung rata-rata dari n buah bilangan}
DEKLARASI :
     i,bil,jum,n   : integer
     rata           : real
DEFINISI :
     write(‘Masukkan jumlah bilangan’)
     read(n)
     jum¬0
     for i¬1 to n do
          write(‘Masukkan Bilangan ke-’,i)
          read(bil)
          jum¬jum+bil
     endfor
     rata¬jum/n
end_procedure

Algoritma Hitung_rata2
{Menghitung rata-rata dari n buah bilangan dengan menggunakan prosedur}
DEKLARASI :
nilai_rata    : real
DEFINSI :
     Hitung_rata(nilai_rata)
     write(‘Rata-rata =’,nilai_rata)
End Algoritma

Contoh 5 (Prosedur dengan parameter masukan/keluaran) :
Procedure Pangkat_empat
(input/output bil:integer)
{Menghitung hasil pangkat empat dari bilangan}
DEKLARASI:
     {tidak ada}
DEFINISI:
     bil¬bil*bil*bil*bil
end_procedure

Algoritma Pangkat_empat
{Menghitung hasil pangkat empat dari bilangan dengan menggunakan prosedur}
DEKLARASI:
     bilangan :integer
DEFINISI:
     Write(‘Masukkan nilai bilangan’)
     Read(bilangan)
     Pangkat_empat(bilangan)
     Write(‘Hasil pangkat empat =’,bilangan)
End Algoritma