• Tidak ada hasil yang ditemukan

Algoritma Pemrograman

N/A
N/A
Protected

Academic year: 2021

Membagikan "Algoritma Pemrograman"

Copied!
19
0
0

Teks penuh

(1)

Algoritma Pemrograman

Pertemuan Ke-10

(Fungsi)

Noor Ifada

(2)

Sub Pokok Bahasan

Pendahuluan

Pendefinisian Fungsi

Pemanggilan Fungsi

(3)

Seperti halnya prosedur, fungsi juga merupakan modul

program yang mempunyai tujuan spesifik

Fungsi adalah modul program yang

memberikan/mengembalikan (return) sebuah nilai dan

Pendahuluan

(4)

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

Pendefinisian Fungsi

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

(5)

Notasi algoritma untuk mendefinisikan

fungsi

function NamaFungsi(input daftar parameter formal)→→→→tipe hasil

{ Spesifikasi fungsi, menjelaskan apa yang dilakukan dan yang dikembalikan oleh fungsi. }

DEKLARASI

{ semua nama yang dipakai dalam algoritma fungsi

dideklarasikan di sini. Nama yang didefinisikan di dalam dideklarasikan di sini. Nama yang didefinisikan di dalam Deklarasi lokal hanya dikenal dan dipakai di dalam fungsi ini saja }

DESKRIPSI:

{ badan fungsi, berisi kumpulan instruksi untuk menghasilkan nilai yang akan dikembalikan oleh 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

Perihal 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

(7)

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

Pemanggilan Fungsi

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)

function F(input x:real) → real

{ Mengembalikan nilai F(x) = x2 + 2x – 3, x Є R }

DEKLARASI

{ tidak ada }

DESKRIPSI:

Contoh 1:

Fungsi untuk menghasilkan nilai F(x)= x2+2x–3, xЄR

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

Fungsi dari Contoh 1 dapat dipanggil untuk menampilkan tabel

nilai-nilai x dan F(x) di dalam selang [10,15] dengan ∆x = 0.5 seperti

Contoh 2:

Pemanggilan Fungsi F(x)= x2+2x–3, xЄR

nilai x dan F(x) di dalam selang [10,15] dengan ∆x = 0.5 seperti

(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(‘---‘) 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(‘---‘); write(‘---‘) write(‘ x F(x) ‘) write(‘---‘) x ← 10.0 while x15.0 do write(x,‘ ‘,F(x)) xx + 0.5 endwhile write(‘---‘) 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.

(11)

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

Penggunaan Prosedur atau Fungsi?

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

(12)

(a) Mengubah

fungsi menjadi

prosedur

Contoh: fungsi Maks dan program utama untuk menentukan bilangan terbesar di

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 }

bilangan terbesar di antara dua buah bilangan DESKRIPSI : (* Fungsi *) if ab then return a else return b endif

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

(13)

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; end; begin write(‘Masukkan nilai a ? ‘); readln(a); write(‘Masukkan nilai b ? ‘); readln(b);

(14)

Di samping sebagai fungsi, fungsi Maks

juga dapat dituliskan sebagai prosedur

TentukanMaks dan

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 } TentukanMaks dan program utama { tidak ada } DESKRIPSI : (* Prosedur *) if a ≥ b then maks a else maks b endif

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

(15)

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; end; begin write(‘Masukkan nilai a ? ‘); readln(a); write(‘Masukkan nilai b ? ‘); readln(b); Tentukan_Maks(a,b,m);

(16)

(b) Mengubah

prosedur menjadi

fungsi

Contoh: prosedur

HitungRataRata

dan program utama untuk menghitung nilai rata-rata dari

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 } nilai rata-rata dari

sejumlah data bilangan bulat

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

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

(17)

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); readln(x); jumlah := jumlah + x; end; rata := jumlah/N; end; begin

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

(18)

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}

Prosedur HitungRataRata

memiliki satu parameter

keluaran, karena itu ia dapat diubah menjadi fungsi.

Apabila ditulis sebagai

fungsi, maka parameter 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 *)

read(Ndata)

fungsi, maka parameter keluaran rata tidak

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

(19)

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

Referensi

Dokumen terkait

Seiring dengan adanya perluasan permasalahan yang dialami wanita saat ini, sasaran klien PSKW Yogyakarta juga diperluas yaitu bagi wanita rawan sosial psikologis

Database atau basis data adalah kumpulan data yang disimpan secara sistematis di dalam komputer yang dapat diolah atau dimanipulasi menggunakan perangkat lunak (program

Pada alat tenun ini benang lusi dalam posisi vertikal dan selalu tegang karena ada pemberat atau beban, sedangkan benang pakan disisipkan dengan suatu alat yang disebut

Menimbang, bahwa terlepas dari ketentuan-ketentuan formil sebagaimana terurai di atas, dalam perkara aquo, disamping ada kepentingan hukum Para Pemohon, juga

Dinas Perumahan, Kawasan Permukiman dan Cipta Karya melalui Bidang Permukiman berupaya untuk selalu mereview dan memperbaharui status dari Database infrastruktur,

minimal produktivity penjualan pribadi mencapai PH Rp.200.000.000 dan 12 unit motor +mobil dalam 6 bulan.. Periode perhitungan dilakukan Jan- Juni dan

Fungsi tersebut memiliki sebuah parameter yaitu derajat yang akan dikonversi, dan memiliki sebuah return value berupa hasil konversi dalam radian.. Tulislah

2 subproblem tersebut menghasilkan suatu solusi optimum dengan semua variabelnya bernilai integer; jika solusi optimum ini mempunyai nilai fungsi objektif yang lebih baik