• Tidak ada hasil yang ditemukan

Pendefinisian Fungsi Pemanggilan Fungsi Penggunaan Prosedur atau Fungsi

N/A
N/A
Protected

Academic year: 2018

Membagikan "Pendefinisian Fungsi Pemanggilan Fungsi Penggunaan Prosedur atau Fungsi"

Copied!
23
0
0

Teks penuh

(1)

Algoritma Pemrograman

Pertemuan Ke-9

(Fungsi)

(2)

Sub Pokok Bahasan

Pendefinisian Fungsi

Pemanggilan Fungsi

(3)

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

(4)

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

(5)
(6)

• 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

(7)

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

(8)

Contoh:

Fungsi untuk menghasilkan nilai

F(x) = x

2

+ 2x – 3, x Є R. Algoritmanya adalah

sebagai berikut:

function F(input x:real) → real

{ Mengembalikan nilai F(x) = x2 + 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:

(9)

• 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

(10)

Algoritma CONTOH_PEMANGGILAN_FUNGSI

{ Program utama untuk pemanggilan fungsi F } DEKLARASI

x : real

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(‘---‘)

x ← 10.0

while x ≤ 15.0 do write(x,‘ ‘,F(x))

xx + 0.5 endwhile

(11)

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(‘---‘);

(12)

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,

(13)

(a) Mengubah fungsi menjadi prosedur

• Sebagai contoh

adalah fungsi

Maks

dan

program utama

untuk menentukan

bilangan terbesar

di antara dua

buah bilangan

Algoritma MENENTUKAN_MAKSIMUM

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

DEKLARASI (* Program Utama *)

a, b : integer

function Maks(input a,b : integer)→ integer { Mengembalikan harga terbesar dari a dan b } DEKLARASI (* Fungsi *)

{ tidak ada }

DESKRIPSI : (* Fungsi *) if ab then

return a

else

return b

endif

(14)

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));

(15)

• Di samping

sebagai fungsi,

fungsi

Maks

juga

dapat dituliskan

sebagai prosedur

TentukanMaks

dan program

utama seperti

algoritma berikut

ini:

Algoritma MENENTUKAN_MAKSIMUM

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

DEKLARASI (* Program Utama *)

a, b, m : integer

procedure TentukanMaks(input a,b : integer, output

maks : integer)

{ Menentukan nilai terbesar dari a dan b } { K.awal: a dan b sudah terdefinisi nilai }

{ K.akhir: maks berisi nilai terbesar dari a atau b } DEKLARASI (* Prosedur *)

{ tidak ada }

DESKRIPSI : (* Prosedur *) if ab then

maks ← a

else

maks b

endif

(16)

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);

(17)

(b) Mengubah

prosedur

menjadi fungsi

• Berikut adalah

contoh mengubah

prosedur menjadi

fungsi dengan

meninjau prosedur

menghitung nilai

rata-rata dari

sejumlah data

bilangan bulat

sebagai berikut:

Algoritma MENGHITUNG_RATA_RATA

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

Ndata : integer

rerata : real

procedure HitungRataRata(input N : integer, output

rata : real)

{ Menghitung nilai rata-rata N buah bilangan bulat } { K.awal: N berisi banyaknya bilangan bulat, N > 0 } { K.awal: rata berisi rata-rata seluruh bilangan } DEKLARASI (* Prosedur *)

x : integer { data bilangan bulat yang dibaca dari piranti masukan }

k : integer { pencacah banyak bilangan }

jumlah : integer { jumlah seluruh bilangan } DESKRIPSI : (* Prosedur *)

jumlah ← 0 { inisialisasi penjumlah } for k ← 1 to N do

read(x)

jumlah ← jumlah + x

endfor

(18)

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);

(19)

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

(20)

Algoritma MENGHITUNG_RATA_RATA

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

DEKLARASI (* Program Utama *)

Ndata : integer

rerata : real

function RataRata(input N : integer) → real

{ 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 }

k : integer { pencacah banyak bilangan }

jumlah : integer { jumlah seluruh bilangan } DESKRIPSI : (* Fungsi *)

jumlah ← 0 { inisialisasi penjumlah } for k ← 1 to N do

read(x)

jumlah ← jumlah + x

endfor

return jumlah/N { rata-rata seluruh bilangan } DESKRIPSI : (* Program Utama *)

read(Ndata)

(21)

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))

(22)

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

(23)

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

Referensi

Dokumen terkait

Majlis Pelancaran Kempen Kami Prihatin - &#34;Apakah Dosaku&#34; Peringkat Institusi Pengajian Tinggi (IPT) mi adalah anjuran Kementerian Pengajian Tinggi Malaysia

(3) Perencanaan penanggulangan bencana di daerah sebagaimana dimaksud pada ayat (1) dilakukan melalui penyusunan data tentang risiko bencana pada suatu wilayah dalam

Babak penyisihan akan diikuti oleh seluruh tim yang telah melakukan registrasi dan telah memenuhi persyaratan sebagai Peserta Lomba Cerdas Cermat Ekonomi Pertanian (LCCEP) Babak

Dengan asumsi bahwa tujuan keberhasilan reforestasi adalah indeks unsur hara mikro linier terhadap umur tanaman sampai mencapai kondisi hutan alam, dan terdapat hubungan yang

Proses klasterisasi pada PSO relatif lebih lama dibandingkan PSO + K- means, karena PSO memerlukan iterasi yang lebih banyak untuk mendapatkan nilai ADVDC

Berdasarkan teori-teori di atas, dapat disimpulkan bahwa sistem informasi merupakan kumpulan komponen- komponen, bisa berupa manusia, perangkat lunak, perangkat keras,

121 REDY CAHYADI Pendamping Lokal Desa Babakan Jaya, Gabus, Carenang Udik Kopo Serang. 122 TAJUDIN Pendamping Lokal Desa Mekarbaru, Kopo, Nanggung, Garut

Dalam penelitian ini regresi berganda digunakan untuk menguji variabel Kepribadian Proaktif (X1) dan Persepsi Dukungan Organisasi (X2) sebagai variabel independen