NAMA : FAJAR IMAN PRAYOGA
NPM :14409786
KELAS : 3IB02
Alamat Blog : http://fajariman-juventus.blogspot.com/
Alamat Email : fajar_quintana16@yahoo.com
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 :
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.
Perbedaan Fungsi dengan Prosedur adalah :
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
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 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; Output :
Type --------
Huruf = String; Pascal
Function Garis : Huruf; --------
Begin
Garis := ‘-----------‘;
End;
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; Output :
Begin
If X>Y then Nilai Pertama ? 12,356
Terbesar :=X Nilai Kedua ? 55.182
Else 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