FUNCTION
FUNCTION
Materi
Materi
FUNCTION
FUNCTION
Fungsi
Fungsi
•
Blok fungsi hampir sama dengan
dideklarasikan dengan tipenya atau
menunjukkan tipe hasil dari fungsi
•
Pada bahasa Pascal dikenal beberapa
sqr, succ dan sebagainya.
•
Fungsi-fungsi tersebut biasanya
Sedangkan function yang akan bicarakan
buat sendiri.
Fungsi
Fungsi
dengan blok prosedur, hanya fungsi harus
atau jenis hasilnya. Tipe deklarasi ini
fungsi.
beberapa fungsi, misalkan : abs, pred, sqrt,
dikenal dengan Built in Function.
bicarakan disini adalah fungsi yang kita
Berbeda dengan procedure, function
menghasilkan suatu kuantitas.
Hal ini dapat dilihat dari bentuk header
dari kuantitas yang dihasilkan.
Secara umum bentuk header suatu function
FUNCTION nama
Atau
FUNCTION nama (formal parameter :
Blok Fungsi diawali dengan kata cadangan
kata cadangan End dan titik koma.
function merupakan modul program yang
header-nya yang menyebutkan jenis data
function adalah :
nama : jenis hasil;
Atau
(formal parameter : jenis ) : jenis_hasil;
cadangan Begin dan diakhiri dengan
Contoh 1:
Function Hitung(Var A,B : Integer):Integer; Begin
Hitung :=A+B; End;
Var
X,Y : Integer; Begin
Write(‘Nilai X ?’); Readln(X);
Write(‘Nilai Y ?’); Readln(Y);
Writeln;
Writeln(X,’+’,Y, ‘=’,Hitung(X,Y)); End.
Output :
Nilai X ? 2 Nilai Y ? 3 2 + 3 = 5
Contoh 2:
Function Hitung(Var A,B,C : Integer): Integer Begin
Output : Nilai X ? 2
X,Y,Z,Hasil : Integer; Begin
Write(‘Nilai X ?’); Readln(X);
Write(“Nilai Y ?’); Readln(Y);
Writeln;
Contoh :
Function Hitung(Var A,B : integer): integer; Begin
Hitung := A + B; End;
Var X,Y : integer; Begin
Write(‘Nilai X ?’ ); Readln(X);
Write(‘Nilai Y ?’ ); Readln(Y);
Writeln;
Writeln(X, ‘+’ ,Y, ‘=‘ ,Hitung(X,Y)); End.
A,B : integer): integer;
PERBEDAAN FUNGSI DENGAN PROSEDUR
1. Pada fungsi, nilai yang dikirimkan balik pada prosedur pada parameter yang nama fungsi tersebut adalah Hitung nama fungsi tersebut. Sehingga nama menampung hasil yang akan dikirimkan
Hitung := A + B;
Nama fungsi yang
PERBEDAAN FUNGSI DENGAN PROSEDUR
balik terdapat pada nama fungsinya (kalau yang dikirimkan secara acuan). Pada contoh, dan nilai yang dikirim balik berada pada nama fungsi ini harus digunakan untuk dikirimkan dari fungsi, sebagai berikut :
yang berisi nilai yang akan dikirimkan
2. Karena nilai balik berada di nama fungsi langsung digunakan untuk dicetak hasilnya
Writeln(X, ‘+’ ,Y, ‘=‘ ,Hitung(X,Y));
Atau nilai fungsi tersebut dapat juga langsung yang lainnya, sebagai berikut :
Hasil := Hitung(X,Y);
Writeln(X, ‘+’ ,Y, ‘+’ ,Hasil);
Sedang pada prosedur, nama prosedur tersebut yang dapat langsung digunakan adalah parameternya
fungsi tersebut, maka fungsi tersebut dapat hasilnya, sebagai berikut :
langsung dipindahkan ke pengenal variabel
tersebut tidak dapat digunakan langsung, parameternya yang mengandung nilai balik.
Fungsi
Fungsi Tanpa
Tanpa
Suatu Fungsi yang tanpa menggunakan parameter merupakan nilai yang sudah pasti. Pada Fungsi hasil tersebut tidak dapat diatur dari modul parameter yang dikirimkan.
Contoh :
Program Contoh1; Type
Huruf = String;
Function Garis : Huruf; Begin
Tanpa Parameter
Parameter
parameter berarti nilai balik yang akan dihasilkan Fungsi yang tidak mempunyai parameter, maka modul yang menggunakannya, karena tidak ada
99
Output:
---Atau dapat juga didefinisikan sebagai suatu sebagai berikut :
Contoh :
Program Contoh2; Const
Garis:=’---‘; Begin
Writeln(Garis); Writeln(‘Pascal’); Writeln(Garis); End.
suatu konstanta dibagian definisi konstanta,
10 10
Output:
---Parameter
Parameter Dalam
Dalam
Parameter dalam fungsi dapat dikirimkan (By Reference). Penulisan judul Fungsi
pengiriman sevara Nilai adalah tampak sebagai
Function Hitung
Contoh :
Suatu Fungsi yang akan menghasilkan nilai terbesar dari 2 buah Nilai Real.
Function Terbesar(X,Y:Real):Real; Begin
If X>Y then
Terbesar :=X Else
Terbesar :=Y; End;
Var
Begin
End.
Dalam
Dalam Fungsi
Fungsi
secara Nilai (By Value) atau secara Acuan yang menggunakan parameter dengan sebagai berikut :
Hitung(A,B : Integer): Integer;
11 11
Var
Nilai1,Nilai2 :Real; Begin
Write(‘Nilai Pertama ?’);Readln(Nilai1); Write(‘Nilai Kedua ?’); Readln(Nilai2);
Sedang Penulisan judul Fungsi yang menggunakan secara Acuan adalah dengan menambahkan
Function Hitung(Var A,B : Integer):Integer; Pengiriman parameter dengan secara Acuan
parameter di Fungsi juga merubah nilai parameter
Contoh :
Program Contoh3:
Function Hitung(Var A,B,C : Integer):Integer;
Begin
Hitung :=A+B; C :=A*B; End.
Var
Begin
End.
menggunakan parameter dengan pengiriman menambahkan katan cadangan Var sebagai berikut :
A,B : Integer):Integer;
Acuan akan mengakibatkan perubahan nilai parameter dimodul yang mengirimkannya.
12 12
Var
X,Y,Z : Integer; Begin
Write(‘Nilai X ?’); Readln(X);
Write(‘Nilai Y?’); Readln(Y);
Writeln;
Writeln(X,’+’,Y, ‘=’,Hitung(X,Y,Z); Writeln(X,’*’,Y, ‘=’,Z);
Fungsi
Fungsi Pangkat
Pangkat
Pascal tidak menyediakan Fungsi untuk perpangkatan yaitu untuk pemangkatan kuadrat. Bila akan melakukan maka harus dibuat program tersendiri.
Contoh :
Program Contoh4;
Function PangkatI(X:Real; Y:Integer):Real;
Var
Pangkat :=1;
For I := 1 to Y do
Pangkat := Pangkat * X; PangkatI := Pangkat; End;
Pangkat
Pangkat
perpangkatan tinggi, yang ada hanyalah SQR, melakukan perpangkatan lebih dari pangkat 2,
13
Write(‘Nilai akan dipangkatkan ?’); Readln(A);
Write(‘Dipangkatkan dengan ?’); Readln(B);
Writeln(A:9:3, ‘Pangkat’ ,B, ‘adalah’,PangkatI(A,B):9:3); End.
Output :
REKURSIF
Suatu fungsi atau prosedur dalam bahasa Pascal dapat bersifat rekursif. Artinya, fungsi atau prosedur tersebut dapat memanggil dirinya sendiri.
Berikut ini sebuah contoh fungsi dan prosedur yang rekursif.
function
function faktorial (nilai : integer) : integer; begin
if nilai <= 0 then faktorial := 1;
else faktorial := nilai * faktorial (nilai-1) end;
Var
N : integer; Begin
Write(‘Berapa faktorial ?’ ); Readln(N);
Bilangan Fibonanci: F (0) = 0
F (1) = 1
F (n) = F ( n-1 ) + F (n-2); untuk n >1 Function fibonacci ( n : integer ) : integer; Begin
If n = 0 then fibonacci := 0 Else
If n := 1 then fibonacci := 1
Else fibonacci := fibonacci (n-1) + fibonacci (n-2); End;
2);
15 15
Procedure reverse ( num : integer ); Begin
If num < 10 then write(num) Else begin
Write(num mod 10); Reverse(num div 10); End;
FUNGSI STANDAR
1. Fungsi Standar Aritmatika
a) Fungsi standar ABS Bentuk umum : ABS(x);
Digunakan untuk memutlakkan suatu nilai Contoh :
Begin
X:=-2.3;
Write(Nilai X = ,X, Nilai mutlaknya = End.
FUNGSI STANDAR
nilai yang ditunjukkan oleh argumen x.
= ,Abs(X):3:1);
b) Fungsi standar EXP
Bentuk Umum : EXP(x:):real;
Digunakan untuk menghitung nilai pangkat Hasilnya berupa nilai real.
c) Fungsi standar LN Bentuk umum : LN(x):real;
Digunakan untuk menghitung nilai logaritma Hasilnya berupa nilai real.
pangkat dari bilangan e yaitu sebesar ex.
logaritma alam (natural logarithm) dari nilai x.
d) Fungsi standar INT
Bentuk umum : INT(x:real):real;
Digunakan untuk menghasilkan nilai integer dengan nilai yang berupa pembulatan ke bawah Contoh :
Begin
X:=9.99;
Write(‘Nilai yang akan dibulatkan = ‘ ,X); Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2); End.
Hasil :
Nilai yang akan dibulatkan = 9.99 Nilai pembulatannya = 9.00
integer dari x. hasil dari fungsi adalah tipe real bawah (nilai pecahan dibuang) dari nilai x.
= ‘ ,X); (X):3:2);
e) Fungsi standar FRAC
Bentuk umum : FRAC(x:):real;
Digunakan untuk mendapatkan nilai pecahan bernilai real maupun integer dan hasil dari
Contoh : Begin
X:=9.99;
Write(‘Nilai X = ‘,X, ‘Nilai pecahannya End.
Hasilnya : Nilai X = 9.99 Nilai pecahannya
pecahan dari argumen x. Argumen x dapat dari fungsi adalah real.
= ‘,Frac(X):4:3);
pecahannya = 0.990
f) Fungsi standar SQR Bentuk umum : SQR(x);
Digunakan untuk menghitung nilai pangkat kuadrat dari Real atau Integer dan hasil Fungsinya akan sama dengan Contoh :
Program Misal5; Var
X : Real; Begin
Write(‘Nilai yang akan dikuadratkan ?’); Readln Writeln(‘Nilai kuadratnya =’, SQR(X):9:2);
End.
Output :
Nilai yang akan dikuadratkan ? 5 Nilai kuadratnya = 25.00
dari argumen X. Argumen X dapat berbentuk tipe dengan tipe argumennya.
Readln(X);
g) Fungsi standar SQRT Bentuk umum : SQRT(x) : real;
Digunakan untuk menghitung nilai akar dari argumen atau Integer dan hasil dari Fungsinya adalah Real.
Contoh :
Program Misal6; Var
A,B,C : Real; Begin
Write(‘Panjang Sisi Tegak ?’);Readln(A); Write(‘Panjang Sisi Datar ?’); Readln(B); C := SQRT(SQR(A) + SQR(B));
Writeln(‘Panjang Sisi Miring = ‘,C:9:2); End.
argumen X. Argumen X dapat berbentuk tipe Real .
(A); (B);
21 21
Output :
Panjang Sisi Tegak ? 30 Panjang Sisi Datar ?40
2. Fungsi Standar Transfer
Digunakan untuk merubah suatu nilai ke bentuk nilai tersedia, yaitu Fungsi Standar Chr, Ord, Round dan Trunc a) Fungsi Standar CHR
Bentuk Umum : Chr(X:Byte):Char;
Digunakan untuk merubah nilai dari Byte X ke bentuk Contoh :
Program Misal7; Var
X : Byte; Begin
Write(‘Nilai kode ASCII (0-255) ?; Readln(X); Writeln(‘Karakter kode ASCII ini adalah : ‘, End.
Output :
Nilai kode ASCII (0-255) ? 66
Karakter kode ASCII ini adalah : B
nilai yang lain. Fungsi-fungsi standar transfer yang Trunc.
bentuk karakter yang sesuai dengan kode ASCII nya.
(X);
: ‘, Chr(X));
b) Fungsi Standar ORD
Bentuk Umum : Ord(X):Longint;
Digunakan untuk merubah nilai X ke bentuk nilai Contoh :
Program Misal8; Var
Karakter : Char; Begin
‘Write(‘Karakter ?’); Readln(Karakter);
Writeln(Karakter,’adalah kode ASCII : ‘,Ord(Karakter End.
Output : Karakter ? B
B adalah kode ASCII : 66
nilai Longint yang sesuai dengan kode ASCIInya.
Karakter));
c) Fungsi Standar ROUND
Bentuk Umum : Round(X:Real):Longint;
Digunakan untuk membulatkan nilai dari Real pecahan sama dengan taua lebih besar dari 0 pecahan lebih kecil dari 0.5 akan dibulatkan ke Contoh :
Program Misal9; Begin
Writeln(’10 dibagi 3 hasil pembulatan terdekat Writeln(’20 dibagi 3 hasil pembulatan terdekat End.
Output :
10 dibagi 3 hasil pembulatan terdekat adalah 20 dibagi 3 hasil pembulatan terdekat adalah
Real X ke nilai Longint yang terdekat. Bila nilai 0.5 akan dibulatkan ke atas, sedang bila nilai ke bawah.
terdekat adalah ‘,Round(10/3)); terdekat adalah ‘,Round(20/3);
3
d) Fungsi Standar TRUNC
Bentuk Umum : Trunc(X:Real):Longint;
Digunakan untuk membulatkan nilai Real X ke membulatkan ke bawah.
Contoh :
Program Misal10; Begin
Writeln(’10 dibagi 3 hasil pembulatan ke bawah Writeln(’20 dibagi 3 hasil pembulatan ke bawah End.
Output :
10 dibagi 3 hasil pembulatan ke bawah adalah 20 dibagi 3 hasil pembulatan ke bawah adalah
ke nilai Longint terkecil atau dengan kata lain
bawah adalah ‘,Trunc(10/3)); bawah adalah ‘,Trunc(20/3));
adalah 3 adalah 6
3. Fungsi Standar Lainnya
Fungsi standar yang tidak termasuk dalam a) Fungsi standar Random
Bentuk umum : Random [(range :word)];
Digunakan untuk menghasilkan angka random sama dengan nol dan lebih kecil dari satu
fungsi ini adalah real, bila range disebutkan
b) Fungsi standar SizeOf
Bentuk umum : SizeOf(x):word;
Digunakan untuk menunjukkan besarnya byte hasilnya berupa nilai word.
kelompok pembagian di atas :
random berkisar dari nilai lebih besar atau satu. Bila range tidak disebutkan, hasil dari disebutkan, hasilnya adalah word.
byte yang digunakan oleh suatu variabel x,
c) Fungsi standar UPCASE
Bentuk umum : UpCase(Ch:char):char;
Digunakan untuk merubah argumen suatu
menjadi bentuk karakter huruf besar (upper(upper case).suatu karakter yang ditunjukkan oleh Ch
TERIMAKASIH
TERIMAKASIH
Lilis Setyowati