Function.

advertisement
Function
 Blok Fungsi hampir sama dengan blok prosedur, hanya
fungsi harus dideklarasikan dengan tipenya. Tipe
deklarasi ini menunjukkan tipe hasil dari fungsi.
Contoh Program
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 Program
 Nilai X ? 2
Nilai Y ?
2+3=5
Perbedaan Fungsi dan Procedure
 Pada fungsi, nilai yang dikirimkan nalik terdapat pada
nama Fungsinya (kalau pada prosedur pada Parameter
yang dikirimkan secara acuan). Pada contoh, nama Fungsi
tersebut adalah Hitung dan nilai yang dikirim balik berada
pada nama Fungsi tersebut. Sehingga nama Fungsi ini
harus digunakan untuk menampung hahsil yang akan
dikirimkan dari Fungsi sebagai berikut : Hitung := A+B;
 Karena nilai balik berada di nama Fungsi tersebut, maka
Fungsi tersebut dapat langsung digunakan untuk dicetak
hasil sebagai berikut : Writeln(X,’+’,Y, ‘=’, Hitung(X,Y);
 Atau Nilai Fungsi tersebut dapat juga langsung
dipindahkan ke pengenal Variabel yang lainnya,
sebagai berikut :
 Hasil := Hitung(X,Y);
 Writeln(X, ‘+’ ,Y, ‘=’, Hasil);
 Sedang pada Prosedur, nama Prosedur tersebut tidak
dapat digunakan langsung, yang dapat langsung
digunakan adalah parameternya yang langsung
mengandung nilai balik.
Fungsi Tanpa Parameter
 Suatu Fungsi yang tanpa menggunakan parameter
berarti nilai balik yang akan dihasilkan merupakan
nilai yang sudah pasti. Pada Fungsi yang tidak
mempunyai parameter, maka hsail tersebut tidak
dapat diatur dari modul yang menggunakannya,
karena tidak ada parameter yang dikirimkan.
Contoh
Program Contoh1;
Type
Huruf = String;
Function Garis : Huruf;
Begin
Garis := ‘-----------‘;
End;
Begin
Writeln(Garis);
Writeln(‘Pascal’);
Writeln(Garis);
End.
Output
Output :
-------Pascal
--------
Contoh
Atau dapat juga didefinisikan sebagai suatu konstanta
dibagian definisi konstanta, sebagai berikut :
Program Contoh2;
Const
Garis:=’---------‘;
Begin
Writeln(Garis);
Writeln(‘Pascal’);
Writeln(Garis);
End.
Parameter dalam Fungsi
 Parameter dalam fungsi dapat dikirimkan secara Nilai
(By Value) atau secara Acuan (By Reference).
Penulisan judul Fungsi yang menggunakan parameter
dengan pengiriman sevara Nilai adalah tampak
sebagai berikut :

Function Hitung(A,B : Integer): Integer;
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
Nilai1,Nilai2 :Real;
Begin
Write(‘Nilai Pertama ?’);Readln(Nilai1);
Write(‘Nilai Kedua ?’); Readln(Nilai2);
Writeln(‘Nilai Terbesar adalah’ ,Terbesar(Nilai1,Nilai2):9:3);
End.
Output
Output :
Nilai Pertama ? 12,356
Nilai Kedua ? 55.182
Nilai Terbesar adalah 55,182
 Sedang Penulisan judul Fungsi yang menggunakan
parameter dengan pengiriman secara Acuan adalah
dengan menambahkan katan cadangan Var sebagai
berikut :

Function Hitung(Var A,B : Integer):Integer;
 Pengiriman parameter dengan secara Acuan akan
mengakibatkan perubahan nilai parameter di Fungsi
juga merubah nilai parameter dimodul yang
mengirimkannya.
Contoh
Program Contoh3:
Function Hitung(Var A,B,C : Integer):Integer;
Begin
Hitung :=A+B;
C :=A*B;
End.
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);
End.
Output
 Output :
 Nilai X ? 2
 Nilai Y ? 3
2+3=5
2*3=6
Fungsi Pangkat
 Pascal tidak menyediakan Fungsi untuk perpangkatan
tinggi, yang ada hanyalah SQR, yaitu untuk
pemangkatan kuadrat. Bila akan melakukan
perpangkatan lebih dari pangkat 2, 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;
Var
A: Real;
B : Integer;
Begin
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
 Output :
 Nilai akan dipangkatkan ? 1.5
 Dipangkatkan dengan ? 3

1.500 pangkat 3 adalah 3.375
Rekursif
 Suatu Fungsi dapat juga memanggil dirinya sendiri
atau disebut dengan Recursion
Contoh
Program Contoh5;
Function Faktorial(Nilai :Integer):Real;
Begin
If Nilai = 0 Then
Faktorial := 1
Else
Faktorial := Nilai * Faktorial(Nilai-1);
End;
Var
N:=Integer;
Begin
Write(‘Berapa Faktorial ?’);
Readln(N);
Writeln(N,’Faktorial = ‘,Faktorial(N):9:0);
End.
Output
 Output :
 Berapa Faktorial ? 5
 5 Faktorial = 120
Fungsi memanggil Fungsi Lain
 Suatu Fungsi dapat juga memanggil Fungsi yang
lainnya. Fungsi yang dipanggil letaknya harus berada
diatas Fungsi yang memanggil.
Contoh
Contoh :
Function Fungsi2(Y:Integer):Integer;
Begin
Fungsi2 := Y*2;
End;
Function Fungsi1(X:Integer):Integer;
Begin
Fungsi1 := Fungsi2(X)+5;
End;
Begin
Writeln(Fungsi1(3));
End.
Output
 Output :
 11
 Didapat dari :
 Fungsi1 := Fungsi2(X) + 5
 Fungsi1 := Y * 2+5
Fungsi Standar
 Dalam Pascal disediakan beberapa Fungsi Standar
yang telah didefinisikan dan tidak perlu dibuat
kembali oleh pemakai, diantaranya adalah
 Fungsi Standar Arithtmatika
 Fungsi Standar Transfer
Fungsi Standar Arithtmatika
 Fungsi Standar ABS
 Fungsi Standar EXP
 Fungsi Standar LN
 Fungsi Standar INT
 Fungsi Standar FRAC
 Fungsi Standar SQR
 Fungsi Standar SQRT
Fungsi Standar ABS
 Bentuk Umum : ABS(X);
 Digunakan untuk memutlakkan suatu nilai yang
ditunjukkan oleh argumen X. Argumen X dapat
berupa tipe Real atau Integer dan hasil dari Fungsi ini
akan sama dengan tipe argumennya. Memutlakkan
suatu nilai berarti nilai negatif dipositifkan dan nilai
positif tetap positif.
CONTOH
Contoh :
Program Mutlak;
Var
X : Real;
Begin
Write(‘Nilai yang akan dimutlakkan ?’);
Readln(X);
Writeln(‘Nilai Mutlaknya =’,Abs(X):9:2);
End.
OUTPUT
 Output :
 Nilai yang akan dimutlakkan ? –25.75
 Nilai mutlaknya = 25.75
Fungsi Standar EXP
 Bentuk Umum : EXP(X:Real):Real;
 Digunukan untuk menghitung nilai pangkat dari
bilangan e (bilangan alam), yaitu sebesar ex . Argumen
X dapat berbentuk tipe Real atau Integer dan hasil dari
Fungsinya adalah Real.
CONTOH
Contoh :
Program Misal;
Var
X : Real;
Begin
Write(‘Nilai yang akan dieksponentialkan ?’);
Readln(X);
Writeln(‘Nilai Eksponentialnya = ‘,Exp(X):9:5);
End.
OUTPUT
 Output :
 Nilai yang akan dieksponentialkan ? 7.5
 Nilai Eksponentialnya = 1808.04241
Fungsi Standar LN
 Bentuk Umum : Ln(X:Real):Real;
 Digunakan untuk menghitung nilai Algorithma alam
(Natural Logarithm) dari nilai X. Argumen X dapat
berbentuk tipe Real atau Integer dan hasil dari
Fungsinya adaah Real
CONTOH
Program Misal2;
Var
X : Real;
Begin
Write(‘Nilai yang akan di Ln ?’);
Readln(X);
Writeln(‘Nilai Ln = ‘,Ln(X):9:2);
End.
OUTPUT
 Output :
 Nilai yang akan di Ln ? 100
 Nilai Ln
= 4.61
Fungsi Standar INT
 Bentuk Umum : Int(X:Real):Real;
 Digunakan untuk menghasilkan nilai Integer dari X.
Hasil dari Fungsi adalah tipe Real. Hasil dari Fungsi
adalah Tipe Real dengan nilai ya ng berupa
pembulatan ke bawah (nilai pecahan dibuang) dari
nilai X.

CONTOH
Contoh :
Program Misal3;
Var
X : Real;
Begin
Write(‘Nilai yang akan dibulatkan ?’);
Readln(X);
Writeln(‘Nilai pembulatannya = ‘,Int(X):9:2);
End.
OUTPUT
 Output :
 Nilai yang akan dibulatkan ? 9.99
 Nilai pembulatannya = 9.00
Fungsi Standar FRAC
 Bentuk Umum : Frac(X:Real):Real;
 Digunakan untuk mendapatkan nilai pecahan dari
Argumen X. Argumen X dapat berbentuk tipe Real
maupun Integer dan hasil dari Fungsinya adalah Real.
CONTOH
Contoh :
Program Misal4;
Var
X : Real;
Begin
Write(‘Nilai yang akan diambil pecahannya ?’);
Readln(X);
Writeln(‘Nilai pecahannya = ‘,Frac(X):6:5);
End.
OUTPUT
 Output :
 Nilai yang akan diambil pecahannya ? 9.99
 Nilai pecahannya = 0.99000
Fungsi Standar SQR
 Bentuk Umum : SQR(X);
 Digunakan untuk menghitung nilai pangkat kuadrat
dari argumen X. Argumen X dapat berbentuk tipe
Real atau Integer dan hasil Fungsinya akan sama
dengan tipe argumennya.
CONTOH
Program Misal5;
Var
X : Real;
Begin
Write(‘Nilai yang akan dikuadratkan ?’);
Readln(X);
Writeln(‘Nilai kuadratnya =’, SQR(X):9:2);
End.
OUTPUT
 Output :
 Nilai yang akan dikuadratkan ? 5
 Nilai kuadratnya = 25.00
Fungsi Standar SQRT
 Bentuk Umum : SQRT(X:Real):Real;
 Digunakan untuk menghitung nilai akar dari argumen
X. Argumen X dapat berbentuk tipe Real 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.
OUTPUT
 Output :
 Panjang Sisi Tegak ? 30
 Panjang Sisi Datar ?40
 Panjang Sisi Miring = 50.00
Fungsi Standar Transfer
 Digunakan untuk merubah suatu nilai ke bentuk nilai
yang lain. Fungsi-fungsi standar transfer yang
tersedia, yaitu Fungsi Standar Chr, Ord, Round dan
Trunc
 Fungsi Standar CHR
 Fungsi Standar ORD
 Fungsi Standar ROUND
 Fungsi Standar TRUNC
Fungsi Standar CHR
 Bentuk Umum : Chr(X:Byte):Char;
 Digunakan untuk merubah nilai dari Byte X ke bentuk
karakter yang sesuai dengan kode ASCII nya.
CONTOH
Program Misal7;
Var
X : Byte;
Begin
Write(‘Nilai kode ASCII (0-255) ?; Readln(X);
Writeln(‘Karakter kode ASCII ini adalah : ‘,
Chr(X));
End.
OUTPUT
 Output :
 Nilai kode ASCII (0-255) ? 66
 Karakter kode ASCII ini adalah : B
Fungsi Standar ORD
 Bentuk Umum : Ord(X):Longint;
 Digunakan untuk merubah nilai X ke bentuk nilai
Longint yang sesuai dengan kode ASCIInya.
CONTOH
Program Misal8;
Var
Karakter : Char;
Begin
‘Write(‘Karakter ?’);
Readln(Karakter);
Writeln(Karakter,’adalah kode ASCII : ‘,Ord(Karakter));
End.
OUTPUT
 Output :
 Karakter ? B
 B adalah kode ASCII : 66
Fungsi Standar ROUND
 Bentuk Umum : Round(X:Real):Longint;
 Digunakan untuk membulatkan nilai dari Real X ke
nilai Longint yang terdekat. Bila nilai pecahan sama
dengan taua lebih besar dari 0.5 akan dibulatkan ke
atas, sedang bila nilai pecahan lebih kecil dari 0.5 akan
dibulatkan ke bawah
CONTOH
Program Misal9;
Begin
Writeln(’10 dibagi 3 hasil pembulatan terdekat adalah ‘,Round(10/3));
Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Round(20/3);
End.
OUTPUT
 Output :
 10 dibagi 3 hasil pembulatan terdekat adalah 3
 20 dibagi 3 hasil pembulatan terdekat adalah 6
Fungsi Standar TRUNC
 Bentuk Umum : Trunc(X:Real):Longint;
 Digunakan untuk membulatkan nilai Real X ke nilai
Longint terkecil atau dengan kata lain membulatkan
ke bawah.
CONTOH
Program Misal10;
Begin
Writeln(’10 dibagi 3 hasil pembulatan ke bawah adalah ‘,Trunc(10/3));
Writeln(’20 dibagi 3 hasil pembulatan ke bawah adalah ‘,Trunc(20/3));
End.
OUTPUT
 Output :
 10 dibagi 3 hasil pembulatan ke bawah adalah 3
 20 dibagi 3 hasil pembulatan ke bawah adalah 6
Referensi
 susi22.staff.gunadarma.ac.id/Downloads/files/27508/F
UNCTION-ok.doc
Download