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