• Tidak ada hasil yang ditemukan

Altien Jonathan Rindengan, S.Si., M.Kom

N/A
N/A
Protected

Academic year: 2018

Membagikan "Altien Jonathan Rindengan, S.Si., M.Kom"

Copied!
62
0
0

Teks penuh

(1)

PROSEDUR DAN FUNGSI

(2)
(3)

Merupakan penerapan konsep program modular,

yaitu memecah-mecah program yang rumit menjadi

program-program bagian yang lebih sederhana

dalam bentuk prosedur-prosedur.

untuk hal-hal yang sering dilakukan berulang-ulang,

cukup dituliskan sekali saja dalam prosedur dan

dapat dipanggil atau dipergunakan sewaktu-waktu

bila dipergunakan.

(4)

Pendefinisian Prosedur

Mendefinisikan prosedur, artinya :

menuliskan nama prosedur

mendeklarasikan nama-nama konstanta, variabel,

tipe, label, dll

menjabarkan rangkaian aksi yang dilakukan

Struktur prosedur sama dengan struktur

program

Judul/nama prosedur

Deklarasi parameter

(5)

Pendefinisian Prosedur

….

Nama prosedur

sebaiknya diawali dengan

kata kerja

, mis: hitung_luas, cari_maks

Parameter

: nama-nama variabel yang

dideklarasikan pada bagian

judul prosedur

Program memerlukan pertukaran

(6)

Tiap item data ditransfer antara

parameter aktual

(argumen)

dan

parameter formal

yang

bersesuaian.

Parameter aktual : parameter yang disertakan

pada waktu pemanggilan prosedur

Parameter formal : parameter yang dideklarasikan

di bagian judul program.

(7)

Notasi prosedur (

tanpa parameter

)

Pendefinisian Prosedur

….

procedure

NamaProsedur (deklarasi parameter, jika ada)

DEKLARASI

{

semua nama konst, var, dll yang dipakai dan hanya

bersifat lokal di dalam prosedur ini

}

ALGORITMA

(8)

Contoh : Prosedur membaca panjang alas & tinggi

segitiga, menghitung luas dan mencetak luas

segitiga.

Pendefinisian Prosedur

….

tinggi

(9)

Pendefinisian Prosedur

….

procedure

Hitung_Luas_Segitiga

DEKLARASI

alas,tinggi,luas : real

ALGORITMA

read(alas,tinggi)

(10)

Pemanggilan Prosedur

Prosedur bukan program yang berdiri sendiri

Tidak dapat dieksekusi secara langsung

Prosedur diakses/dipanggil dengan cara

memanggil namanya dari program pemanggil

(program utama atau modul program lain)

Prosedur tanpa parameter cukup dipanggil

(11)

Pemanggilan Prosedur

….

Contoh :

Jika terdapat N buah segitiga dan ingin

dihitung luasnya.

(12)

program segitiga;

uses crt;

var

i,n:integer;

procedure hitung_luas_segitiga;

var

alas,tinggi,luas:real;

begin

write('Panjang alas: ');readln(alas);

write('Tinggi: ');readln(tinggi);

luas:=alas*tinggi/2;

writeln('Luas segitiga ',i,' : ',luas:0:2);

end;

begin

clrscr;

write('Banyaknya segitiga: ');readln(n);

for i:=1 to n do

hitung_luas_segitiga;

readln;

end.

variabel global

(13)
(14)

Deklarasi global & lokal

Deklarasi : konstanta, variabel, tipe dll

Global :

dideklarasi di program utama

dapat digunakan pada seluruh bagian program,

termasuk prosedur yang ada

Lokal:

Dideklarasi di dalam prosedur

(15)

Deklarasi global & lokal

….

Perhatikan kasus hitung_luas_segitiga

Bagaimana jika varibel alas dan tinggi dijadikan

variabel global

Prosedur hitung_luas_segitiga hanya menghitung

luas, tidak membaca input alas dan tinggi

(16)

Deklarasi global & lokal

….

Dalam pemrograman dengan prosedur:

Usahakan menggunakan variabel global sesedikit

mungkin

Penggunaan variabel lokal meminimumkan usaha

pencarian kesalahan yg disebabkan variabel tsb

Prosedur yang baik adalah prosedur yang

independen dari program pemanggilnya (utama)

Jika program utama perlu mengkomunikasikan nilai

(17)

Parameter

Prosedur dengan parameter diakses dengan cara

memanggil namanya dari program utama/

pemanggil

Parameter yang disertakan pada waktu

pemanggilan disebut parameter aktual

Model :

Ketika prosedur dipanggil, parameter aktual

berkorespondensi dengan parameter formal

(global)

(18)

Parameter ….

Aturan korespondensi parameter aktual dan formal:

Jumlah parameter aktual =parameter formal

Bertipe sama (yang bersesuaian)

Ekspresi parameter bersesuaian bergantung pada

jenis parameter formal:

Input parameter

Output parameter

(19)

Input Parameter

Parameter input disebut juga

parameter nilai

Nilai ini digunakan dalam badan prosedur

Karena yang dipentingkan nilainya, maka

nama parameter aktual boleh berbeda dengan

nama parameter formal yang bersesuaian

(20)

Input Parameter ….

Perhatikan kasus hitung_luas_segitiga:

Misalkan variabel alas dan tinggi sebagai

parameter aktual (input parameter) pada

prosedur hitung_luas_segitiga

(21)

program segitiga_2; uses crt;

var

i,n:integer; a,t:real;

procedure hitung_luas_segitiga(alas,tinggi:real); var

luas:real; begin

luas:=alas*tinggi/2;

writeln('Luas segitiga ',i,' : ',luas:0:2); end;

begin

clrscr;

write('Banyaknya segitiga: ');readln(n); for i:=1 to n do

begin

write('Panjang alas: ');readln(a); write('Tinggi : ');readln(t); hitung_luas_segitiga(a,t);

(22)
(23)

Prosedur mungkin menghasilkan satu/lebih output

yg akan digunakan oleh program

utama/pemanggil

Nilai output tersebut ditampung dalam parameter

output

Output Parameter

procedure

Nama_prosedur

(24)

Misal : variabel

luas

pada prosedur

hitung_luas_segitiga dicetak pada program utama

(bukan dalam prosedur) maka luas dinyatakan

sebagai

varibel output

(25)

program segitiga_3; uses crt;

var

i,n:integer; a,t,L:real;

procedure hitung_luas_segitiga(alas,tinggi:real;var luas:real); begin

luas:=alas*tinggi/2; end;

begin

clrscr;

write('Banyaknya segitiga: ');readln(n); for i:=1 to n do

begin

write('Panjang alas: ');readln(a); write('Tinggi : ');readln(t); hitung_luas_segitiga(a,t,L);

writeln('Luas segitiga ',i,' : ',L:0:2); end;

(26)
(27)

Input parameter digunakan pada situasi dimana

informasi dikirim hanya dari titik pemanggilan

prosedur ke prosedur itu sendiri

Output parameter hanya mengirim informasi dari

prosedur ke titik pemanggilan prosedur

Ada parameter yang berfungsi keduanya

(terutama jika ada looping perhitungan)

(28)

program tambah_empat; uses crt;

var

a,b:integer;

procedure tambah_empat(x,y:integer); begin

x:=x+4; y:=y+4;

writeln('Nilai x dan y di akhir prosedur tambah_empat'); writeln(' x = ',x);

writeln(' y = ',y); end;

begin

clrscr;

a:=15; b:=10;

writeln('Nilai a dan b sebelum pemanggilan prosedur tambah_empat'); writeln(' a = ',a);

writeln(' b = ',b); tambah_empat(a,b);

writeln('Nilai a dan b setelah pemanggilan prosedur tambah_empat'); writeln(' a = ',a);

writeln(' b = ',b); readln;

end.

Parameter input

(29)
(30)

program tambah_empat1; uses crt;

var

a,b:integer;

procedure tambah_empat(var x,y:integer); begin

x:=x+4; y:=y+4;

writeln('Nilai x dan y di akhir prosedur tambah_empat'); writeln(' x = ',x);

writeln(' y = ',y); end;

begin

clrscr;

a:=15; b:=10;

writeln('Nilai a dan b sebelum pemanggilan prosedur tambah_empat'); writeln(' a = ',a);

writeln(' b = ',b); tambah_empat(a,b);

writeln('Nilai a dan b setelah pemanggilan prosedur tambah_empat'); writeln(' a = ',a);

writeln(' b = ',b); readln;

end.

Input/Output

Parameter ….

(31)
(32)

Program dengan Prosedur atau tidak?

Program dengan prosedur

Program yang dipecah menjadi beberapa prosedur

(33)

Prosedur dengan Parameter atau tidak?

Prosedur dengan parameter

Parameter berfungsi sebagai media komunikasi

antara prosedur dengan program

utama/pemanggil

Parameter mengurangi kebutuhan penggunaan

(34)

Parameter input atau output?

Bergantung pada masalah, apakah prosedur

menghasilkan output yang digunakan oleh program

utama/pemanggil atau tidak

Bila prosedur tidak menghasilkan output(atau

mengahilkan output tapi hanya digunakan prosedur itu

sendiri) gunakan parameter input

Bila prosedur menghasilkan output yang digunakan

program utama/pemanggil, gunakan parameter output

Bila prosedur menerima input sekaligus output pada

(35)
(36)

Pendahuluan

Merupakan bagian program yang mempunyai

tujuan spesifik

Seperti prosedur, fungsi mempunyai tujuan yang

ekivalen

Pada beberapa masalah akan lebih tepat

menggunakan fungsi atau sebaliknya

Fungsi memberikan/mengembalikan sebuah nilai

dari tipe tertentu

Definisi fungsi dalam program bersesuaian dengan

(37)

Fungsi diakses dengan memanggil namanya

Fungsi juga mempunyai parameter formal

Parameter pada fungsi selalu merupakan

parameter masukan (input parameter)

Parameter masukan ini berarti masukan yang

digunakan oleh fungsi tersebut untuk menghasilkan

nilai

(38)

Notasi Fungsi

function Nama_Fungsi (input deklarasi parameter) tipe

Deklarasi

{semua nama yang dipakai dalam fungsi dan hanya berlaku lokal di dalam fungsi yang didefinisikan disini}

Algoritma

{badan fungsi, berisikan instruksi-instruksi untuk

menghasilkan nilai yang akan dikembalikan oleh fungsi}

(39)

Contoh

Notasi Fungsi

function F (input x:real) real

{mengembalikan nilai f(x)=2x2+5x-8,x R}

Deklarasi {tidak ada}

Algoritma

(40)

Pemanggilan Fungsi

Fungsi diakses dengan cara memanggil namanya

dari program pemanggil/utama, diikuti dengan

daftar parameter aktual (jika ada).

Karena fungsi menghasilkan nilai, maka nilai

tersebut dapat diperlakukan dengan 2 cara :

Nilai yang dikembalikan oleh fungsi ditampung dalam

sebuah variabel yang bertipe sama dengan fungsi

(41)

program fungsi1; uses crt;

var

x,y:real;

function G (x:real):real; begin

G:=sqr(x)+4*x-5; end;

begin

clrscr;

write('Masukkan nilai x : ');readln(x); y:=G(x);

writeln('Nilai y : ',y:0:2);

writeln('Nilai y + 3 : ',(y+3):0:2); writeln('Nilai dari G : ',G(x):0:2);

writeln('Nilai dari G + 3 : ',(G(x)+3):0:2); readln;

(42)
(43)

program tabel_fungsi; uses crt;

var

x:real;

function F (x:real):real; begin F:=2*x*x+5*x-8; end; begin clrscr; writeln('---'); writeln(' x f(x) '); writeln('---'); x:=10.0;

while x<=15.0 do begin

writeln(x:4:2,' ',F(x):10:3); x:=x+0.3

end;

writeln('---'); readln;

(44)
(45)

program fungsi2; uses crt;

var

x:integer;

function Habis_Dibagi_3 (n:integer):boolean; begin

Habis_Dibagi_3 := (n mod 3 = 0); end;

begin

clrscr;

write('Masukkan sembarang integer : ');readln(x); if Habis_Dibagi_3(x) then

writeln ('Bilangan ',x,' habis dibagi tiga') else

writeln ('Bilangan ',x,' tidak habis dibagi tiga'); readln;

(46)
(47)

Prosedur atau Fungsi ?

Fungsi digunakan apabila modul program

mengembalikan sebuah nilai

Prosedur digunakan bila modul menghasilkan efek

netto dari satu atau sekumpulan aksi

Namun sering pemilihan modul sebagai fungsi atau

prosedur bergantung pada kebutuhan dari

pemrogram

(48)

Prosedur atau Fungsi

Mengubah fungsi menjadi prosedur :

Menyatakan nilai yang dikembalikan oleh fungsi

sebagai output parameter (parameter keluaran)

pada prosedur)

Mengubah parameter menjadi fungsi:

Prosedur yang mempunyai satu buah output

(49)

program fungsi3; uses crt;

var

x,y:integer;

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

if a>=b then

writeln ('Nilai maks : ',a) else

writeln ('Nilai maks : ',b); end;

begin

clrscr;

write('Masukkan sembarang integer x : ');readln(x); write('Masukkan sembarang integer y : ');readln(y); max(x,y);

(50)
(51)

program fungsi3_pro; uses crt;

var

x,y,m:integer;

procedure max (a,b:integer;var maks:integer); begin

if a>=b then

writeln ('Nilai maks : ',a) else

writeln ('Nilai maks : ',b); end;

begin

clrscr;

write('Masukkan sembarang integer x : ');readln(x); write('Masukkan sembarang integer y : ');readln(y); max(x,y,m);

(52)
(53)

program fungsi4_pro; uses crt;

var n_data:integer; rataan:real;

procedure hitung_rataan (m_data:integer;var rata2:real); var x,i,jumlah:integer;

begin

jumlah:=0;

for i:=1 to m_data do begin

write('Data ke ',i,' : ');readln(x); jumlah:=jumlah+x;

end;

rata2:=jumlah/m_data;

writeln('Rata-rata : ',rata2:0:2); end;

begin

clrscr;

write('Banyaknya data : ');readln(n_data); hitung_rataan(n_data,rataan);

(54)
(55)

program fungsi4; uses crt;

var

n_data:integer;

function hitung_rataan (m_data:integer):real; var

x,i,jumlah:integer; rata2:real; begin

jumlah:=0;

for i:=1 to m_data do begin

write('Data ke ',i,' : ');readln(x); jumlah:=jumlah+x;

end;

rata2:=jumlah/m_data;

writeln('Rata-rata : ',rata2:0:2); end;

begin

clrscr;

write('Banyaknya data : ');readln(n_data); hitung_rataan(n_data);

(56)
(57)

Fungsi memanggil diri sendiri

Merupakan dasar dari program rekursif

function ulang (input deklarasi parameter): tipe;

Deklarasi

Algoritma

(58)

program fungsi5; uses crt;

var m:integer;

function faktorial(n:integer):real; begin

if n=0 then faktorial:=1 else faktorial:=n*faktorial(n-1); end; begin clrscr;

write('Berapa faktorial ? ');readln(m);

writeln(m,' faktorial = ',faktorial(m):0:0); readln;

(59)
(60)

Fungsi Tersarang

Fungsi tersarang (nested function) merupakan fungsi

(61)

program fungsi_6; uses crt;

var

z:integer;

function fungsi_a(x:integer):integer;

function fungsi_b(y:integer):integer; begin fungsi_b:=y*2; end; begin fungsi_a:=fungsi_b(x)+5; end; begin clrscr;

write('Masukkan nilai z: ');readln(z); writeln('Nilainya : ',fungsi_a(z)); readln;

(62)

Referensi

Dokumen terkait

Broom &amp; Selznic (1961:79) dalam Paul B.Horton &amp; Chester L.Hunt (987:89) menyatakan bahwa sosialisasi adalah proses membangim atau menanamkan nilai-.. nilai kelompok pada

Semoga di hari kemerdekaan Republik Indonesia ini, kita semua mampu untuk melakukan introspeksi diri dan menilai diri sendiri apakah sudah menjadi orang yang

me ngembangkan pengetahuan baru”. Ilmu pengetahuan alam diharapkan dapat menjadi wahana bagi siswa untuk mempelajari diri sendiri dan alam sekitar, serta cara

Kita harus berani menjadi pribadi merdeka dan ikut memerdekakan orang lain dari pengaruh yang menjauhkan mereka dari diri mereka sendiri sebagai manusia dan dari Tuhan

Unsur-unsur moralitas yang begitu nampak pada cerita di atas, Nilai moral individual ataupun masyarakat yang menyangkut hubungan manusia dengan kehidupan diri pribadi sendiri

Seperti Yakub, terkadang begitu sulit untuk menjadi jujur.. Bagaimana kita dapat mengingatkan

 Kendiri : ciri yg dipelajari merupakan gambaran individu mengenal dirinya / gambaran antara persepsi kendiri terhadap diri sendiri termasuk aspek nilai dan sikap dgn persepsi