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);
Atau dapat juga didefinisikan sebagai suatu suatu konstanta dibagian definisi konstanta, sebagai berikut : Contoh :

  Output: Program Contoh2;

  • Const

  Pascal Garis:=’---------‘;

  • Begin Writeln(Garis); Writeln(‘Pascal’); Writeln(Garis); End.
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;

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