4 - prosedure dan function.doc

15
Pemrograman PASCAL : Procedure & Function Halaman : 1 P RO CED U RED ANF U NC T I O N Procedure dan Function adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian dari pekerjaan program utama. n PROCEDURE Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul  prosedurnya. Prosedur banyak digunakan pada program yang terstruktur, karena : . !erupakan pen erapan konsep program modu lar, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedu r. ". #ntuk hal-hal yang ser ing dilakukan b erulang-ulang, cukup dituli skan sekali s aja dalam  prosedur dan dapat dipang gil atau dipergunakan s ewaktu-waktu bila dip erlukan. $ebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block. Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja. %entuk #mum header suatu procedure adalah : &tau PROCEDURE nama; PROCEDURE nama (formal parameter : jenis); 'ika kita menggunakan procedure dalam suatu program, maka procedure tersebut harus dituliskan  pada bagian deklarasi. ontoh : !isal akan dibuat suatu procedure untu k menentukan bilan gan bulat terbesar diantara tiga bilangan bulat, maka procedure tersebut adalah sebagai berikut : P*+#+ maksimum & ma/ : integer %+012 +2. 1F a 3 b 45+2 ma/ :6 a +7$+ ma/ :6 b 1F c 3 ma/ 45+2 ma/ :6 c 814+72(ma/) $elanjutnya, di dalam suatu program, procedure ini dapat digunakan dengan bentuk penulisan sebagai berikut :

Upload: pipit-riski-s

Post on 03-Mar-2016

29 views

Category:

Documents


0 download

DESCRIPTION

Tugas Teknik Kompilasi

TRANSCRIPT

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 1/15

Pemrograman PASCAL : Procedure & Function

Halaman : 1

PROCEDURE DAN FUNCTION

Procedure dan Function adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai

sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian

dari pekerjaan program utama.

n

PROCEDURE

Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur 

dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul

 prosedurnya.

Prosedur banyak digunakan pada program yang terstruktur, karena :

. !erupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit

menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.". #ntuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam

 prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

$ebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block.

Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja.

%entuk #mum header suatu procedure adalah :

&tauPROCEDURE nama;

PROCEDURE nama (formal parameter : jenis);

'ika kita menggunakan procedure dalam suatu program, maka procedure tersebut harus dituliskan

 pada bagian deklarasi.

ontoh : !isal akan dibuat suatu procedure untuk menentukan bilangan bulat terbesar diantara

tiga bilangan bulat, maka procedure tersebut adalah sebagai berikut :

P*+#+ maksimum

& ma/ : integer

%+012

+2.

1F a 3 b 45+2 ma/ :6 a +7$+ ma/ :6 b

1F c 3 ma/ 45+2 ma/ :6 c814+72(ma/)

$elanjutnya, di dalam suatu program, procedure ini dapat digunakan dengan bentuk penulisan

sebagai berikut :

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 2/15

P*0&! contoh9 5+&+ program utama

& a,b,c : integer

P*+#+ maksimum

& ma/ : integer

%+012

1F a3b 45+2 ma/ :6 a +7$+ ma/ :6 b deklarasi program

1F c3ma/ 45+2 ma/ :6 c utama

814+72(ma/)

+2

%+012

+&72(a,b,c)

!aksimum statement program utama

+2.

ontoh " :

P*0&! *24*59"& p,l,t,ol,panj : real

P*+#+ kotak

& ,pl : real

%+012

+2

%+012

+2.

:6 p ; l ; t

 pl :6 p < ".= ; t

writeln(,pl)

writeln(>panjang? : =,?lebar? : =,?tinggi? : =)

readln(p,l,t)

kotak

JANGKAUAN IDENI!IER 

1dentifier yang dideklarasikan dalam suatu blok program hanya berlaku pada blok dimana

identifier tersebut didefinisikan.

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 3/15

ontoh :

. P*0&! p

& / : real

P*+#+ pl

& y : integer

 begin

@@@@@@.. daerah berlakunya y daerah

@@@@@@.. berlakunya /

end

 begin

@@@@@@..

@@@@@@..

end.

y A ariabel global

". Program P

ar /,y : real y (real) berlaku disemua blok 

@@@@@ program P, kecuali di P

@@@@@ / (real) berlaku disemua

 blok P, kecuali di P"

Procedure Pl

ar y : integer hanya berlaku di P saja (lokal)

@@@@@..

%egin

@@@

@@@

+nd

Procedure P"

ar / : char hanya berlaku di P" saja (lokal)

@@@@@

%egin

@@@..

@@@..

+nd

%egin

@@@@./ :6 @@. / dan y yang dimaksud adalah / dan y real

y :6 @@. (ariabel global)

@@@@+nd.

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 4/15

PROCEDURE DENGAN PARA"EER 

 2ilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan

 pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau

unit program yang lainnya.

ontoh :

Prosedur 4anya9hitung

ar B,C :real

%egin

+nd

%egin

+nd.

8rite (>2ilai B D?)

eadln(B)

C:6B;B

8riteln(>2ilai C 6 >,C:E:")

4anya95itung

5asilnya :

 2ilai B D

 2ilai C 6 ".==

Geterangan :

ariabel B dan C sifatnya adalah lokal untuk prosedur 4anya9hitung, artinya hanyadapat digunakan pada modul itu saja, Pada modul yang lain tidak dapat digunakan, contoh :

Prosedur 4anya9hitung

ar B,C :real

%egin

+nd

%egin

+nd.

8rite (>2ilai B D?)

eadln(B)

C:6B;B

4anya95itung

8riteln(>2ilai C 6 >,C:E:")

5asilnya :

+rror H: #nknown identifier 

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 5/15

$upaya nilai ariabel dapat digunakan di modul lainnya, maka dapat dilakukan dengan cara :

#$ Di%&at %ersifat 'lo%al

5arus dideklarasikan di atas modul yang menggunakannya.

Procedure kesatu

%egin

@@.

@@..

+nd (;akhir dari procedure kesatu@@;)

ar 

&,% : word

Procedure kedua

%egin

@@..

@@..

+nd (;akhir dari procedure kedua;)

Procedure ketiga

%egin

@@..

@@..

+nd (;akhir dari procedure ketiga;)

%egin

@@..

@@..

+nd. (;akhir dari modul utama;)

Pada contoh diatas, ariabel & dab % bersifat global untuk prosedur kedua, ketiga dan

utama, tetapi tidak bersifat global untuk prosedur kesatu, sehingga prosedur kesatu tidak 

dapat menggunakan ariabel-ariabel tersebut.

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 6/15

ar 

&,% : real

Procedure kesatu

%egin

@@.

@@..

+nd (;akhir dari procedure kesatu@@;)

Procedure kedua

%egin

@@..@@..

+nd (;akhir dari procedure kedua;)

Procedure ketiga

%egin

@@..

@@..

+nd (;akhir dari procedure ketiga;)

%egin

@@..@@..

+nd. (;akhir dari modul utama;)

Pada contoh ini, ariabel & dan % bersifat global untuk semua modul.

$ Diiriman se%a'ai parameter e mo*&l +an' mem%&t&,ann+a$

Parameter yang dikirim dari modul utama ke modul prosedur disebut actual parameter, dan

 parameter yang ada dan dituliskan pada judul prosedur disebut formal parameter.

$# Pen'iriman parameter se-ara nilai

Parameter yang dikirimkan secara nilai, maka parameter formal yang ada di prosedur

akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur.

Perhatikan procedure berikut :

Procedure konersi

 begin

f :6 (IJ) ; c < H" f dan c ariabel global, c sebagai input dan

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 7/15

writeln(c,f) f sebagai output.

end

Procedure di atas dapat dipanggil dengan ariabel yang berbeda, tetapi penulisannya harus diubah

dengan menggunakan parameter sbb:

Procedure konersi (ar f : real c : real)

%egin

F :6 (IJ) ; c < H" disebut formal parameter 

8riteln(c,f)

+nd

$elanjutnya procedure di atas dapat dipanggil dengan parameter lain, misalnya :

konersi (/,y)

actual parameter 

/ dan y disebut sebagai actual parameter.

Pada eksekusinya / akan menggantikan c dan y akan menggantikan f.

/ dan y ini dapat berupa :

- konstanta

- ariabel

- procedure, atau

- fungsi

ontoh :

Procedure 5itung(&,% : integer)

ar : integer

%egin

+nd

:6 & < %

8riteln(>2ilai 6 >,)

ar B,C : integer

%egin

+nd.

8rite(>2ilai B D >)

eadln(B)

8rite(>2ilai C D?)

eadln(C)

5itung(B,C)

5asilnya :

 2ilai B D "

 2ilai C D H

 2ilai 6

$ Pen'iriman parameter se-ara a-&an

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 8/15

%ila pengiriman parameter secara acuan (by reference), maka perubahan-perubahan yang

terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai actual parameter 

.

Procedure hitung(ar &,%, : integer)

!enunjukkan pengiriman parameter secara

acuan.

ontoh :

Procedure 5itung(ar &,%, : integer)

%egin

+nd :6 & < %

ar B,C,K : integer%egin

+nd.

B :6 " C:6 H

5itung(B,C,K)

8riteln(>B 6 >,B,? C 6 >,C,? K 6 >,K)

5asilnya :

B 6 " C 6 H K 6

A-&an !or.ar*

igunakan untuk mendeklarasikan dimuka judul prosedur terpisah dari bloknya.

ontoh :

Procedure pro(ar 1 : integer) Forward

Procedure pro"(ar 1 : integer)

%egin

+nd-

8riteln(>prosedur pro?, 1)

Procedure pro

%egin

+nd-8riteln(>prosedur pro?,1)

ar 1 : integer%egin

+nd.

1 :6 pro(1)

1 :6 " pro"(1)

5asilnya :

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 9/15

 prosedur pro

 prosedur pro"

Prose*&r /tan*ar

Prosedur yang disediakan oleh 4urbo Pascal :

#$ Prosedur standar E0I

igunakan untuk keluar dari suatu blok.

$ Prosedur standar 1A2

igunakan untuk menghentikan proses program baik di program bagian maupun di programutama.

3$ Prosedur standar "O4E

%entuk umum : "O4E (4ar so&r-e5*est; -o&nt : .or*);

igunakan untuk menyalin suatu blok sebanyak count byte memori dari blok dimulai byte

 pertama source dan disalinkan ke byte pertama dest.

6$ Prosedur standar !I22C1AR igunakan untuk mengisi sejumlah byte nilai ke dalam suatu ariabel, sebagai berikut

!illC,ar(7;-o&nt :.or*;-,);

B adalah ariabel yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal h

sebanyak count byte.

o FUNCTION

%lok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan

tipenya atau jenis hasilnya. 4ipe deklarasi ini menunjukkan tipe hasil dari fungsi.

Pada bahasa Pascal dikenal beberapa fungsi, misalkan : abs, pred, sLrt, sLr, succ dan sebagainya.Fungsi-fungsi tersebut biasanya dikenal dengan %uilt in Function. $edangkan function yang akan

 bicarakan disini adalah fungsi yang kita buat sendiri.

%erbeda dengan procedure, function merupakan modul program yang menghasilkan suatu

kuantitas.

5al ini dapat dilihat dari bentuk header-nya yang menyebutkan jenis data dari kuantitas yang

dihasilkan.

$ecara umum bentuk header suatu function adalah :

!UNCION nama : jenis ,asil;

&tau !UNCION nama (formal parameter : jenis ) : jenis8,asil;

ontoh :

. &kan dibuat suatu fungsi dengan nama !&B yang dapat menentukan integer terbesar di

antara dua integer.

Function !&B (/,y : integer) : integer

%egin

1f / M y then !&B :6 y

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 10/15

+nd

+lse !&B :6 /

$elanjutnya kita dapat menggunakan fungsi di atas dalam suatu program, misalnya dengan

menyatakan sebagai berikut :

P :6 !&B(a,b)

K :6 !&B(a<b,a;b)

N :6 !&B(!&B(a,b),c)

@@@@@@@@@@

dsb.

". Function 7*0 (/ : real) : real

%egin7*0 :6 ln (/) I ln (=.=)

+nd

H. Function P*8+ (/,y : real) : real

%egin

P*8+ :6 e/p (y ; ln (B))

+nd

a b

6 P*8+ (a,b)

 ba

6 P*8+ (b,a)(p < L)

rIs6 P*8+ (p < L, rIs)

@@@@@@@@@@@@..

dll

ontoh :

Function 5itung(ar &,% : integer): integer

%egin

+nd5itung :6 & < %

ar B,C : integer

%egin

+nd.

8rite(>2ilai B D >)eadln(B)

8rite(>2ilai C D >)

eadln(C)

8riteln

8riteln(B,? < >,C,? 6 >,5itung(B,C))

5asilnya :

 2ilai B D "

 2ilai C D H

< H 6

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 11/15

Per%e*aan f&n'si *en'an prose*&r a*ala, :

. Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya (kalau pada prosedur 

 pada parameter yang dikirimkan secara acuan). Pada contoh, nama fungsi tersebut adalah

5itung dan nilai yang dikirim balik berada pada nama fungsi tersebut. $ehingga nama fungsi

ini harus digunakan untuk menampung hasil yang akan dikirimkan dari fungsi, sebagai

 berikut :

5itung :6 & < %

 2ama fungsi yang berisi nilai yang akan dikirimkan

". Garena nilai balik berada di nama fungsi tersebut, maka fungsi tersebut dapat langsung

digunakan untuk dicetak hasilnya, sebagai berikut :

8riteln(B,? < >,C,? 6 >,5itung(B,C)) 2ama fungsi yang langsung digunakan

untuk ditampilkan hasilnya.

&tau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal ariabel yang lainnya,

sebagai berikut :

5asil :6 5itung(B,C)

8riteln(B,? < >,C, > < >,5asil)

$edang pada prosedur, nama prosedur tersebut tidak dapat digunakan langsung, yang dapat

langsung digunakan adalah parameternya yang mengandung nilai balik.

REKUR/I!

$uatu fungsi atau prosedur dalam bahasa Pascal dapat bersifat rekursif. &rtinya, fungsi

atau prosedur tersebut dapat memanggil dirinya sendiri. %erikut ini sebuah contoh fungsi

dan prosedur yang rekursif.

. function faktorial (nilai : integer) : integer

 begin

if nilai M6 = then faktorial :6

else faktorial :6 nilai ; faktorial (nilai-)

end

ar 

 2 : integer%egin

8rite(>%erapa faktorial D >)eadln(2)

8riteln(2,? faktorial 6 >,faktorial(2):J:=)

+nd.

faktorial (O) 6 O ; faktorial (H)

H ; faktorial (")

" ; faktorial ()

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 12/15

; faktorial (=)

6 O ; H ; " ; ;

6 "O

". %ilangan Fibonanci:F (=) 6 =

F () 6

F (n) 6 F ( n- ) < F (n-") untuk n 3

Function fibonacci ( n : integer ) : integer

%egin

1f n 6 = then fibonacci :6 =

+lse

+nd

1f n :6 then fibonacci :6

+lse fibonacci :6 fibonacci (n-) < fibonacci (n-")

H. Procedure reerse ( num : integer )

%egin

1f num M = then write(num)

+lse begin

8rite(num mod =)

eerse(num di =)

+nd

+nd

!&n'si /tan*ar

#$ !&n'si stan*ar ar&tmatia

P Fungsi standar A9/

%entuk umum : A9/(7);

igunakan untuk memutlakkan suatu nilai yang ditunjukkan oleh argumen /.

ontoh :

%egin

+nd.

B:6-".H

8rite(>2ilai B 6 >,B,? 2ilai mutlaknya 6 >,&bs(B):H:)

P Fungsi standar E0P

%entuk #mum : E0P(7:):real;

igunakan untuk menghitung nilai pangkat dari bilangan e yaitu sebesar e/.

5asilnya berupa nilai real.

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 13/15

P Fungsi standar 2N

%entuk umum : 2N(7):real;

igunakan untuk menghitung nilai logaritma alam (natural logarithm) dari nilai /.

5asilnya berupa nilai real.

P Fungsi standar IN%entuk umum : IN(7:real):real;

igunakan untuk menghasilkan nilai integer dari /. hasil dari fungsi adalah tipe

real dengan nilai yang berupa pembulatan ke bawah (nilai pecahan dibuang) dari

nilai /.

ontoh :

%egin

+nd.

5asil :

B:6J.JJ

8rite(>2ilai yang akan dibulatkan 6 >,B)

8riteln(>2ilai pembulatannya 6 >,1nt(B):H:")

 2ilai yang akan dibulatkan 6 J.JJ

 2ilai pembulatannya 6 J.==

P Fungsi standar !RAC

%entuk umum : !RAC(7:):real;

igunakan untuk mendapatkan nilai pecahan dari argumen /. &rgumen / dapat

 bernilai real maupun integer dan hasil dari fungsi adalah real.

ontoh :

%egin

+nd.

B:6J.JJ

8rite(>2ilai B 6 >,B,? 2ilai pecahannya 6 >,Frac(B):O:H)

5asilnya : 2ilai B 6 J.JJ 2ilai pecahannya 6 =.JJ=

P Fungsi standar /R 

%entuk umum : /R(7);

igunakan untuk menghitung nilai pangkat kuadrat dari argumen /.

ontoh :

%egin

+nd.

B :6"

8rite(>2ilai B 6 >,B,? 2ilai kuadratnya 6 >,sLr(/))

5asilnya : 2ilai B 6 " 2ilai kuadratnya 6 O

P Fungsi standar /R

%entuk umum : /R(7) : real;

igunakan untuk menghitung nilai akar dari argumen /, hasilnya berupa real.

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 14/15

P Fungsi standar PI5 /IN5 CO/5 ARCAN

#$ !&n'si /tan*ar ransferigunakan untuk merubah suatu nilai ke bentuk nilai lain.

P Fungsi standar C1R 

%entuk umum : C1R(7:%+te):-,ar;

igunakan untuk merubah nilai dari byte / ke bentuk karakter yang sesuai dengan

kode &$11.

ontoh :

B :6 EE

8rite(>2ilai B 6 >,/,? 2ilai karakternya 6 >,5(B))

5asilnya : 2ilai B 6 EE 2ilai karakternya 6 %

P Fungsi standar ORD

%entuk umum : ORD(7):lon'int;

igunakan untuk merubah nilai / ke bentuk nilai longint yang sesuai dengan kode

&$11, merupakan kebalikan dari fungsi 5.

P Fungsi standar ROUND

%entuk umum : ROUND(7:real):lon'int;

igunakan untuk membulatkan nilai dari real / ke nilai longint yang terdekat.

%ila nilai pecahan sama dengan atau lebih besar dari =. akan dibulatkan ke atas,

sedang kalau lebih kecil dari =. akan dibulatkan ke bawah.

ontoh :8rite(?= dibagi H hasil pembulatan terdekat >,ound(=IH))

8riteln(?"= dibagi H hasil pembulatan terdekat adalah >,ound("=IH)

5asilnya :

= dibagi H hasil pembulatan terdekat adalah H

"= dibagi H hasil pembulatan terdekat adalah Q

P Fungsi standar RUNC

%entuk umum : RUNC(7:real):lon'int;

igunakan untuk membulatkan nilai dari real / ke nilai longint terkecil. &tau

dengan kata lain membulatkan ke bawah.

ontoh :

8rite(?= dibagi H hasil pembulatan terdekat >,4runc(=IH))

8riteln(?"= dibagi H hasil pembulatan terdekat adalah >,4runc("=IH)

5asilnya :

= dibagi H hasil pembulatan terdekat adalah H

"= dibagi H hasil pembulatan terdekat adalah E

7/21/2019 4 - Prosedure dan Function.doc

http://slidepdf.com/reader/full/4-prosedure-dan-functiondoc 15/15

#$ !&n'si /tan*ar 2ainn+a

Fungsi standar yang tidak termasuk dalam kelompok pembagian di atas :

P Fungsi standar 1i5 2o5 /.ap

P Fungsi standar Ran*om

%entuk umum : Ran*om (ran'e :.or*)<;igunakan untuk menghasilkan angka random berkisar dari nilai lebih besar atau

sama dengan nol dan lebih kecil dari satu. %ila range tidak disebutkan, hasil dari

fungsi ini adalah real, bila range disebutkan, hasilnya adalah word.

P Fungsi standar /i=eOf 

%entuk umum : /i=eOf(7):.or*;

igunakan untuk menunjukkan besarnya byte yang digunakan oleh suatu ariabel

/, hasilnya berupa nilai word.

P Fungsi standar UPCA/E

%entuk umum : UpCase(C,:-,ar):-,ar;

igunakan untuk merubah argumen suatu karakter yang ditunjukkan oleh h

menjadi bentuk karakter huruf besar (upper case).