FUNCTION (FUNGSI)

advertisement
F U N C T I O N (F U N G S I)
Blok Fungsi hampir sama dengan blok prosedur, hanya fungsi
harus
dideklarasikan
dengan
tipenya.
Tipe
deklarasi
ini
menunjukkan tipe hasil dari fungsi.
Bentuk Umum :
Function Identifier(daftar-parameter):type;
Contoh :
Function Faktorial(Var Fak,Hasil : Integer):Integer;
Function Pangkat(X,Y : Real):Real;
Blok Fungsi diawali dengan kata cadangan Begin dan diakhiri
dengan kata cadangan End dan titik koma.
Contoh :
1. Function Hitung(Var A,B : Integer):Integer;
Output :
Begin
Hitung :=A+B;
Nilai X ? 2
End;
Nilai Y ? 3
Var
2+3=5
X,Y : Integer;
Begin
Write(‘Nilai X ?’);
Readln(X);
Write(‘Nilai Y ?’);
Readln(Y);
Writeln;
Writeln(X,’+’,Y, ‘=’,Hitung(X,Y));
End.
2. Function Hitung(Var A,B,C : Integer): Integer;
Output :
Begin
A:=A+2;
Nilai X ? 2
B:=B+2;
Nilai Y ? 3
C:=A+B;
Hitung:=C;
4+5=9
End.
Var
X,Y,Z,Hasil : Integer;
Begin
Write(‘Nilai X ?’);
Readln(X);
Write(“Nilai Y ?’);
Readln(Y);
Writeln;
Hasil :=Hitung(X,Y,Z);
Writeln(X,’+’,Y, ‘=’,Hasil);
End.

Perbedaan Fungsi dengan Prosedur adalah :
1. 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;
Nama Fungsi yang berisi nilai yang akan dikirimkan
2. 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);
Nama Fungsi yang langsung digunakan untuk ditampilkan hasilnya
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
digunakan
langsung,
adalah
yang
parameternya
dapat
langsung
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
dikirimkan.
Contoh :
Program Contoh1;
Output :
Type
-------Huruf = String;
Function Garis : Huruf;
Pascal
--------
yang
Begin
Garis := ‘-----------‘;
End;
Begin
Writeln(Garis);
Writeln(‘Pascal’);
Writeln(Garis);
End.
Atau dapat juga didefinisikan sebagai suatu konstanta dibagian
definisi konstanta, sebagai berikut :
Contoh :
Program Contoh2;
Output :
Const
Garis:=’---------‘;
Begin
--------Pascal
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;
Output :
Begin
If X>Y then
Terbesar :=X
Else
Nilai Pertama ? 12,356
Nilai Kedua ? 55.182
Nilai Terbesar adalah 55,182
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.
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;
Output :
Begin
Hitung :=A+B;
Nilai X ? 2
C :=A*B;
Nilai Y ? 3
End.
2+3=5
Var
2*3=6
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.

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 :
Nilai akan dipangkatkan ? 1.5
Dipangkatkan dengan ? 3
1.500 pangkat 3 adalah 3.375

Fungsi Memanggil Dirinya Sendiri
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 :
Berapa Faktorial ? 5
5 Faktorial = 120

Fungsi Memanggil Fungsi Yang Lain
Suatu Fungsi dapat juga memanggil Fungsi yang lainnya.
Fungsi yang dipanggil letaknya harus berada diatas Fungsi yang
memanggil.
Contoh :
Output :
Function Fungsi2(Y:Integer):Integer;
11
Begin
Fungsi2 := Y*2;
Didapat dari :
End;
Fungsi1 := Fungsi2(X) + 5
Function Fungsi1(X:Integer):Integer;
Begin
Fungsi1 := Y * 2+5
Maka untuk Nilai Fungsi(3) adalah
3 * 2 + 5 = 11
Fungsi1 := Fungsi2(X)+5;
End;
Begin
Writeln(Fungsi1(3));
End.

Fungsi Standar
Dalam Pascal disediakan beberapa Fungsi Standar yang telah
didefinisikan dan tidak perlu dibuat kembali oleh pemakai,
diantaranya adalah :
~ Fungsi Standar Arithtmatika
Digunakan
untuk
operasi-operasi
Arithmatika
diantaranya
adalah :
1. 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 :
Program Mutlak;
Var
X : Real;
Begin
Write(‘Nilai yang akan dimutlakkan ?’);Readln(X);
Writeln(‘Nilai Mutlaknya =’,Abs(X):9:2);
End.
Output :
Nilai yang akan dimutlakkan ? –25.75
Nilai mutlaknya = 25.75
2. 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 :
Program Misal;
Var
X : Real;
Begin
Write(‘Nilai yang akan dieksponentialkan ?’);Readln(X);
Writeln(‘Nilai Eksponentialnya = ‘,Exp(X):9:5);
End.
Output :
Nilai yang akan dieksponentialkan ? 7.5
Nilai Eksponentialnya = 1808.04241
3. 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 :
Nilai yang akan di Ln ? 100
Nilai Ln
= 4.61
4. 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 :
Program Misal3;
Var
X : Real;
Begin
Write(‘Nilai yang akan dibulatkan ?’); Readln(X);
Writeln(‘Nilai pembulatannya = ‘,Int(X):9:2);
End.
Output :
Nilai yang akan dibulatkan ? 9.99
Nilai pembulatannya = 9.00
5. 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 :
Program Misal4;
Var
X : Real;
Begin
Write(‘Nilai yang akan diambil pecahannya ?’);Readln(X);
Writeln(‘Nilai pecahannya = ‘,Frac(X):6:5);
End.
Output :
Nilai yang akan diambil pecahannya ? 9.99
Nilai pecahannya = 0.99000
6. Fungsi Standar SQR
Bentuk Umum : SQR(X);
Digunakan untuk menghitung nilai pangkat kuadrat dari
argumen X.
Argumen X dapat berbentuk tipe Real atau
Integer
hasil
dan
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 :
Nilai yang akan dikuadratkan ? 5
Nilai kuadratnya = 25.00
7. 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 :
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
1. 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 :
Nilai kode ASCII (0-255) ? 66
Karakter kode ASCII ini adalah : B
2. 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 :
Karakter ? B
B adalah kode ASCII : 66
3. 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 :
10 dibagi 3 hasil pembulatan terdekat adalah 3
20 dibagi 3 hasil pembulatan terdekat adalah 6
4. 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 :
10 dibagi 3 hasil pembulatan ke bawah adalah 3
20 dibagi 3 hasil pembulatan ke bawah adalah 6
Download