• Tidak ada hasil yang ditemukan

Algoritma Pemrograman

N/A
N/A
Protected

Academic year: 2021

Membagikan "Algoritma Pemrograman"

Copied!
23
0
0

Teks penuh

(1)

Algoritma Pemrograman

Pertemuan Ke-9

(Fungsi)

(2)

Sub Pokok Bahasan

Pendefinisian Fungsi

Pemanggilan Fungsi

Penggunaan Prosedur atau

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)

Notasi algoritma untuk

mendefinisikan fungsi

(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

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

(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

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:

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

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

(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

(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

rata merupakan nilai yang dihasilkan

(

return value

) oleh fungsi

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

jumlahjumlah + x

endfor

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

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

(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

P2 Yah gimana yah mbak, udah ditinggal sama istri sekarang jadi hidup sendiri sama ini ibu saya, anak juga cuma satu itupun jauh, mana ada juga yang tertarik dengan keadaan

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

Massively Multiplayer Online First- person shooter games (MMOFPS) Game online jenis ini mengambil sudut pandang orang pertama sehingga seolah-olah pemain berada dalam

Pengumpulan data dilakukan dengan menggunakan kuisioner yang dilakukan oleh ahli (satu ahli penjas dan dua ali pembelajaran), uji coba kelompok kecil (24 siswa), dan uji coba

Berdasarkan hasil analisis data hasil belajar peserta didik untuk kompetensi sikap, pengetahuan, dan keterampilan, dapat ditarik kesimpulan bahwa pembelajaran dengan

Kerja PT Prima Indah Sanitoun Kota Binjai Terhadap Penyakit Paru Kerja..

Transaksi perdagangan luar negri lebih dikenal dengan ekspor-impor. Transaksi ini pada dasarnya sama dengan transakasi jual beli, hanya saja dalam.. transaksi ini jangkauannya