4 - prosedure dan function.doc
DESCRIPTION
Tugas Teknik KompilasiTRANSCRIPT
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).