• 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

(2)

Sub Pokok Bahasan

Pendahuluan

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 dasar atau tipe bentukan)

(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

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

Perihal fungsi

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

(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 1: Fungsi untuk menghasilkan nilai F(x)= x2+2x–3, xЄR

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

(9)

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

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

(10)

Algoritma CONTOH_PEMANGGILAN_FUNGSI Program CONTOH_PEMANGGILAN_FUNGSI;

{ Program utama untuk pemanggilan var

fungsi F } x : real;

DEKLARASI

x : real function F(x : real) : real;

begin function F(input x:real) → real

F := x*x + 2*x - 3 { Mengembalikan nilai F(x) = x2 + end;

2x – 3, x Є R } return x*x + 2*x - 3 begin writeln(‘---‘); DESKRIPSI: writeln(‘ x F(x) ‘); write(‘---‘) writeln(‘---‘); write(‘ x F(x) ‘) x := 10.0; write(‘---‘) while x <= 15.0 do x ← 10.0 begin while x ≤ 15.0 do writeln(x:6:2,‘ ‘,F(x) :6:2); write(x,‘ ‘,F(x)) x := x + 0.5; x ← x + 0.5 end; endwhile writeln(‘---‘); write(‘---‘) end.

(11)

Penggunaan 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

(12)

Algoritma MENENTUKAN_MAKSIMUM

(a) Mengubah

{ Program utama yang memanggil fungsi MAKS untuk menentukan nilai maksimum dari dua buah

fungsi menjadi

bilangan buat a dan b. }

prosedur

DEKLARASI (* Program Utama *)

a, b : integer

function Maks(input a,b : integer)→ integer

Contoh: fungsi Maks { Mengembalikan harga terbesar dari a dan b }

dan program utama

DEKLARASI (* Fungsi *)

untuk menentukan { tidak ada } bilangan terbesar di

DESKRIPSI : (* Fungsi *)

antara dua buah

if a ≥ b then

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

(14)

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)

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

fungsi, fungsi Maks

{ K.akhir: maks berisi nilai terbesar dari a atau b }

juga dapat dituliskan

DEKLARASI (* Prosedur *)

sebagai prosedur

{ tidak ada }

TentukanMaks dan

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

(16)

Algoritma MENGHITUNG_RATA_RATA

{ Program utama untuk menghitung nilai rata-rata N

(b) Mengubah

buah bilangan bulat yang dibaca dari piranti masukan} DEKLARASI (* Program Utama *)

prosedur menjadi

Ndata : integer

fungsi

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 }

Contoh: prosedur { K.awal: rata berisi rata-rata seluruh bilangan }

HitungRataRata

DEKLARASI (* Prosedur *)

dan program utama x : integer { data bilangan bulat yang dibaca untuk menghitung dari piranti masukan }

nilai rata-rata dari k : integer { pencacah banyak bilangan } jumlah : integer { jumlah seluruh bilangan }

sejumlah data

bilangan bulat DESKRIPSI : (* Prosedur *)

jumlah ← 0 { inisialisasi penjumlah }

for k ← 1 to N do read(x)

jumlah ← jumlah + x

endfor

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

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

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

Prosedur HitungRataRata

merupakan nilai yang dikembalikan oleh fungsi }

memiliki satu parameter

DEKLARASI (* Fungsi *)

keluaran, karena itu ia dapat x : integer {data bilangan bulat}

k : integer {pencacah banyak bilangan}

diubah menjadi fungsi.

jumlah : integer {jumlah seluruh bilangan}

Apabila ditulis sebagai

fungsi, maka parameter DESKRIPSI : (* Fungsi *)

jumlah ← 0 { inisialisasi penjumlah }

keluaran rata tidak for k ← 1 to N do diperlukan lagi, karena nilai read(x)

jumlah ← jumlah + x

rata merupakan nilai yang

endfor

dihasilkan (return value) oleh

return jumlah/N {rata-rata seluruh bilangan}

fungsi

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

(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

, a) Buatlah ADT (Abstract Data Type) &#34;ke'.rcut&#34; dengan memanfaatkan tipe data bentukan yang mempunya elemen/field :llas, tinggi, dan jari yang masing-masing.. bertipe

z Jika program utama perlu mengkomunikasikan nilai peubah global ke dalam prosedur, maka ada satu cara untuk melakukannya yaitu dengan y y g menggunakan parameter. Algoritma

Dalam penerapannya, fungsi hanya menggunakan parameter masukan, sementara untuk fungsi yang tidak menghasilkan nilai (prosedur) dapat menggunakan kedua tipe

Baris pertama mendeklarasikan konstanta bernama phi dengan nilai 3.14 yang bertipe float sedangkan baris kedua adalah pendeklarasian tipe string.. Pada string kita harus mengapit

Proses pencarian adalah mencari / menemukan nilai tertentu dalam sekumpulan data dan mempunyai tipe yang sama (tipe dasar atau tipe bentukan). Contoh : untuk menghapus atau

Sedangkan kelemahan dari menggunakan tipe data ini diantaranya saat ditentukan suatu variabel bertipe data array maka ia akan langsung mengambil tempat pada

Tipe data adalah himpunan nilai yang dapat dimiliki oleh sebuah data. Tipe data menentukan apakah sebuah nilai dapat dimiliki sebuah data atau tidak, serta

Struktur adalah tipe data bentukan yang menyimpan lebih dari satu variabel Struktur adalah tipe data bentukan yang menyimpan lebih dari satu variabel bertipe sama