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