23
S1 Teknik Informatika-Unijoyo 1 Algoritma Pemrograman Pertemuan Ke-9 (Fungsi) :: Noor Ifada ::

Algoritma Pemrograman - fathulharib.files.wordpress.com file–ada bagian header yang berisi nama fungsi dan spesifikasi fungsi –bagian Deklarasi –badan fungsi. S1 Teknik Informatika-Unijoyo

Embed Size (px)

Citation preview

S1 Teknik Informatika-Unijoyo 1

Algoritma Pemrograman

Pertemuan Ke-9(Fungsi)

:: Noor Ifada ::

S1 Teknik Informatika-Unijoyo 2

Sub Pokok Bahasan

Pendefinisian FungsiPemanggilan FungsiPenggunaan Prosedur atau Fungsi

S1 Teknik Informatika-Unijoyo 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 dasar atau tipe bentukan)

S1 Teknik Informatika-Unijoyo 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– bagian Deklarasi – badan fungsi

S1 Teknik Informatika-Unijoyo 5

Notasi algoritma untuk mendefinisikan fungsi

S1 Teknik Informatika-Unijoyo 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 program utama tidak dapat menggunakannya

S1 Teknik Informatika-Unijoyo 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 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

S1 Teknik Informatika-Unijoyo 8

• Contoh: Fungsi untuk menghasilkan nilai F(x) = x2 + 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:return x*x + 2*x – 3

S1 Teknik Informatika-Unijoyo 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 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:

S1 Teknik Informatika-Unijoyo 10

Algoritma CONTOH_PEMANGGILAN_FUNGSI{ Program utama untuk pemanggilan fungsi F }DEKLARASIx : 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.0while x ≤ 15.0 do

write(x,‘ ‘,F(x))x ← x + 0.5

endwhilewrite(‘-------------------‘)

S1 Teknik Informatika-Unijoyo 11

Program CONTOH_PEMANGGILAN_FUNGSI;var

x : real;

function F(x : real) : real;begin

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

beginwriteln(‘-------------------‘);writeln(‘ x F(x) ‘);writeln(‘-------------------‘);x := 10.0;while x <= 15.0 dobegin

writeln(x:6:2,‘ ‘,F(x) :6:2);x := x + 0.5;

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

end.

S1 Teknik Informatika-Unijoyo 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, prosedur yang mempunyai satu buah parameter keluaran dapat ditulis sebagai fungsi dengan menyatakan parameter keluaran sebagai nilai yang dikembalikan oleh fungsi

S1 Teknik Informatika-Unijoyo 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 a ≥ b then

return aelse

return bendif

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

S1 Teknik Informatika-Unijoyo 14

Program CONTOH_PEMANGGILAN_FUNGSI;var

a : integer;b : integer;

function Maks(a, b : integer) : integer;begin

if a >= b thenMaks := a

elseMaks := b;

end;

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

end.

S1 Teknik Informatika-Unijoyo 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 a ≥ b then

maks ← aelse

maks ← bendif

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

S1 Teknik Informatika-Unijoyo 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 thenMaks := a

elseMaks := b;

end;

beginwrite(‘Masukkan nilai a ? ‘);readln(a);write(‘Masukkan nilai b ? ‘);readln(b);Tentukan_Maks(a,b,m);writeln(‘Nilai yang terbesar adalah : ‘,m);

end.

S1 Teknik Informatika-Unijoyo 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 : integerrerata : 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 dibacadari 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

endforrata ← jumlah/N { rata-rata seluruh bilangan }

DESKRIPSI : (* Program Utama *)read(Ndata)HitungRataRata(Ndata,rerata)write(rerata)

S1 Teknik Informatika-Unijoyo 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 dobegin

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

end;rata := jumlah/N;

end;

beginwriteln(‘Menghitung rata-rata N buah bilangan bulat’);write(‘Masukkan banyaknya data ? ’);readln(Ndata);HitungRataRata(Ndata,rerata);writeln(‘Nilai rata-rata = ‘,rerata)

end.

S1 Teknik Informatika-Unijoyo 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 rata merupakan nilai yang dihasilkan (return value) oleh fungsi

S1 Teknik Informatika-Unijoyo 20

Algoritma MENGHITUNG_RATA_RATA{ Program utama untuk menghitung nilai rata-rata N buahbilangan bulat yang dibaca dari piranti masukan. }

DEKLARASI (* Program Utama *)Ndata : integerrerata : 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

endforreturn jumlah/N { rata-rata seluruh bilangan }

DESKRIPSI : (* Program Utama *)read(Ndata)write(RataRata(Ndata))

S1 Teknik Informatika-Unijoyo 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 dobegin

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

end;RataRata := jumlah/N;

end;

beginwriteln(‘Menghitung rata-rata N buah bilangan bulat’);write(‘Masukkan banyaknya data ? ’); readln(Ndata);writeln(‘Nilai rata-rata = ‘,RataRata(Ndata))

end.

S1 Teknik Informatika-Unijoyo 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 prosedur yang mempunyai satu buah parameter keluaran dapat ditulis sebagai fungsi

S1 Teknik Informatika-Unijoyo 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 Kedua, Penerbit Informatika, Bandung.