Anda di halaman 1dari 9

11

11.1 Definisi Fungsi

MODUL 11 SUBPROGRAM 2 ( FUNCTION )

Fungsi adalah modul program yang memberikan/mengembalikan (return) sebuah nilai yang bertipe sederhana (integer, real, Boolean, string). Sebagaimana halnya dengan prosedur, fungsi diakses dengan memanggil namanya. Selain itu fungsi juga dapat mengandung daftar parameter formal. Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Penulisannya adalah : FUNCTION identifier(daftar parameter) : type; Contoh :

Function Faktorial(Var Fak, Hasil : integer) : integer; Function Pangkat(X,Y : real) : real;
Blok fungsi sama dengan blok prosedur yang diawali dengan kata Begin dan diakhiri dengan kata End dan titik koma. Berikut adalah Contoh : Function Hitung(Var A,B : integer) : integer; Begin Hitung := A + B; End; Var X, Y : integer; Begin Write(Nilai X ? ); Readln(X); Dasar pemrograman/ Modul_10_SubProgram(Fungsi)

Write(Nilai Y ? ); Readln(Y); Writeln; Writeln(X, + ,Y, = ,Hitung(X,Y)); End.

Bila program dijalankan : Nilai X ? 2 Nilai Y ? 3 2 + 3 = 5

11.2

PARAMETER DALAM FUNGSI Sama dengan prosedur, parameter dalam fungsi dapat dikirim secara nilai (by

value) atau secara acuan (by reference). Parameter By Value Pengiriman parameter berdasarkan nilai, jenis pengiriman ini akan mengirimkan parameter satu arah, sehingga jika terjadi perubahan nilai pada parameter yang terdapat di fungsi tidak akan mempengaruhi nilai yang ada di fungsi yang memanggil. Untuk pengiriman nilai tidak memerlukan keyword var dalam daftar parameternya. Bentuk umum pengiriman parameter pada fungsi secara nilai: FUNCTION Name (formal_parameter_list) : tipedata fungsi ; Contoh : Berikut akan dibuat suatu fungsi yang akan menghasilkan nilai terbesar dari 2 buah nilai real.

Dasar pemrograman/ Modul_10_SubProgram(Fungsi)

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;

Bila program dijalankan : Nilai pertama ? 12.356 Nilai kedua ? 55.182 Nilai terbesar adalah 55.182

Parameter by Reference Pengiriman parameter dengan secara acuan akan mengakibatkan perubahan nilai parameter di fungsi juga merubah nilai parameter di modul yang mengirimkannya. Untuk pengiriman sacara acuan HARUS menggunakan keyword var pendeklarasian variabel dalam daftar parameternya. sebelum

Bentuk umum pengiriman parameter pada fungsi secara acuan: FUNCTION Name ( VAR formal_parameter_list) : Tipedata_fungsi ;

Dasar pemrograman/ Modul_10_SubProgram(Fungsi)

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.

Bila program dijalankan : Nilai X ? 2 Nilai Y ? 3 2+3=5 2*3=6

FUNGSI PANGKAT Pada pascal tidak menyediakan fungsi untuk perpangkatan tinggi, yang ada hanyalah fungsi standar sqr, yaitu pemangkatan kuadrat. Bila akan dilakukan pemangkatan lebih dari pangkat 2, maka harus dibuat program tersendiri. Berikut contohnya :

Dasar pemrograman/ Modul_10_SubProgram(Fungsi)

Function Pangkat(X:real; Y:integer) : real; Var Pangkat : real; I : integer; Begin Pangkat :=1; For I := 1 to Y do Pangkat := Pangkat*X; PangkatI := Pangkat; End; Var A : real; B : integer; Begin Write(Nilai yang akan dipangkatkan ? ); Readln(A); Write(Dipangkatkan dengan ? ); Readln(B); Writeln(A:9:3, pangkat ,B, adalah ,PangkatI(A,B):9:3); End.

Bila program dijalankan : Nilai akan dipangkatkan ? 1.5 Dipangkatkan dengan 1.500 pangkat 3 adalah ? 3 3.375

11.3

FUNGSI MEMANGGIL DIRINYA SENDIRI

Seperti halnya prosedur, fungsi juga dapat memanggil dirinya sendiri. Proses fungsi memanggil dirinya sendiri juga merupakan proses recursion. Contoh :

Dasar pemrograman/ Modul_10_SubProgram(Fungsi)

Function Faktorial(Nilai : integer) : real; Begin If Nilai = 0 then Faktorial := 1 Else Faktorial := Nilai * Faktorial(Nilai-1); End; Var Begin N : integer; Write(Berapa faktorial ? ); Readln(N); Writeln(N, faktorial = ,Faktorial(N):9:0);

End.

11.4

FUNGSI MEMANGGIL FUNGSI YANG LAIN

Suatu fungsi dapat juga memanggil fungsi yang lainnya. Fungsi yang dipanggil letaknya harus berada diatas fungsi yang memanggil. 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.

Bila program dijalankan : 11 Dasar pemrograman/ Modul_10_SubProgram(Fungsi)

11.5

FUNGSI BERSARANG

Fungsi bersarang merupakan fungsi yang letaknya berada didalam fungsi yang lainnya. Contoh : Function Fungsi1(X:integer) : integer; Function Fungsi2(Y:integer) : integer; Begin Fungsi2 := Y*2; End; Begin Fungsi1 := Fungsi2(X) + 5; End; Begin Writeln(Fungsi1(3)); End.

11.6

FUNGSI STANDAR

Pascal menyediakan beberapa fungsi standar yang telah didefinisikan dan tidak perlu dibuat kembali oleh si pemakai. Berikut beberapa contoh fungsi standar : Jenis fungsi standar Arithmatika Contoh Abs(X); Exp(x:real):real; Int(x:real):real; Sqr(x); Transfer Chr(X:byte):char; Ord(X):longint; Round(x:real):longint; Contoh : Panggunaan fungsi standar Abs Keterangan Memutlakan suatu nilai yang ditunjukkan oleh argumen x Menghitung nilai pangkat dari bilangan e Menghasilkan nilai integer dari x Menghitung nilai pangkat kuadrat dari argumen x Merubah nilai dari byte x ke bentuk karakter yang sesuai dengan kode ASCII Merubah nilai x ke bentuk nilai longint yang sesuai dengan kode ASCII Membulatkan nilai dari real x ke longint yeng terdekat

Dasar pemrograman/ Modul_10_SubProgram(Fungsi)

Var X : real; Begin Write(Nilai yang akan dimutlakan ? ); readln(X); Writeln(Nilai mutlaknya = ,Abs(X):9:2); End.

Bila program dijalankan : Nilai yang akan dimutlakkan ? -25.75 Nilai mutlaknya = 25.75 Contoh : Penggunaan fungsi standar Exp Var X : real; Begin Write(Nilai yang akan diexponentialkan ? ); readln(X); Writeln(Nilai exponentialnya = ,Exp(X):9:2); End.

Bila program dijalankan : Nilai yang akan diexponentialkan ? 7.5 Nilai exponentialnya = 1808.04241 Contoh : Fungsi standar SQRT 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); Contoh : Penggunaan fungsi standar CHR End. Dasar pemrograman/ Modul_10_SubProgram(Fungsi)

Var X : byte; Begin Write(Nilai kode ASCII (0-255) ? ); Readln(X); Writeln(Karakter kode ASCII ini adalah : ,chr(X)); End.

Contoh : Penggunaan fungsi standar round Begin Writeln(10 dibagi 3 hasil pembulatan terdekat adalah , Round(10/3)); Writeln(20 dibagi 3 hasil pembulatan terdekat adalah , Round(20/3)); End.

Referensi: Jogiyanto, Turbo Pascal, Andi Offset, Yogyakarta, 1993

Rinaldi Munir, Algoritma dan Pemrograman Dalam Bahasa Pascal dan C, Edisi ke-3, Penerbit Informatika, Bandung 2003

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta, 2004

===========

Dasar pemrograman/ Modul_10_SubProgram(Fungsi)

Anda mungkin juga menyukai