Tuesday, 27 January 2015

FUNCTION




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.
FUNGSI merupakan suatu program terpisah dalam blok tersendiri yang berfungsi sebagai subprogram dan dideklarasikan dengan tipe yang 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 :
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.
2.   Function Hitung(Var A,B,C : Integer): Integer;                    Output :
      Begin
                   A:=A+2;                                                       Nilai X ? 2
                   B:=B+2;                                                      Nilai Y ? 3
                   C:=A+B;
                   Hitung:=C;                                                  4 + 5 = 9
       End;

       Var
                   X,Y,Z,Hasil : Integer;
        Begin
                   Write(‘Nilai X ?’);
                   Readln(X);
                   Write(“Nilai Y ?’);
                   Readln(Y);
                   Writeln;
                   Hasil :=Hitung(X,Y,Z);
                   Writeln(X,’+’,Y, ‘=’,Hasil);
        End.   

·         Perbedaan Fungsi  dengan Prosedur adalah :
1.   Pada fungsi, nilai yang dikirimkan balik 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 hasil yang akan dikirimkan dari Fungsi sebagai berikut :
Hitung := A+B;



Nama Fungsi yang berisi nilai yang akan dikirimkan

2.   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.

Parameter
Parameter merupakan suatu nilai atau referensi yang dilewatkan ke dalam rutin tertentu dan kehadirannya akan mempengaruhi proses maupun nilai yang terdapat di dalam rutin itu sendiri. Parameter ditempatkan di dalam tanda kurung setelah nama rutin bersangkutan.
Suatu fungsi umumnya mempunyai parameter. Namun bisa saja suatu fungsi tidak memiliki paramater.
Setiap parameter yang dilewatkan harus memiliki tipe data tersendiri yang dapat berupa dari tipe dasar maupun bentukan seperti array, record atau pointer. Untuk mengetahui arti parameter, perhatikan fungsi matematika di bawah ini.
f (x) =  2x2 + 5x – 3

Bila x=1, maka f akan mengembalikan nilai 4, yang berasal dari
f (1) =  2(1)2 + 5(1) – 3 = 2 + 5 – 3 = 4

Bila x=2, maka f akan mengembalikan nilai 15, yang berasal dari
f (2) =  2(2)2 + 5(2) – 3 = 8 + 10 – 3 = 15

Dari ilustrasi tersebut terlihat jelas bahwa hasil nilai dari fungsi f ditentukan oleh besarnya nilai x, sehingga x disebut sebagai parameter dari fungsi f.
Contoh:
Function hitung(Var A,B : integer):integer; è Var A,B: integer merupakan
Begin                                                                      parameter
hitung:=A+B;
end;
·         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 :
Type                                                  
Huruf  = String;                                
Function Garis : Huruf;                     Output:
Begin                                                 --------                           
             Garis := ‘-----------‘;                Pascal
End;                                                   --------

Begin
          Writeln(Garis);
          Writeln(‘Pascal’);
          Writeln(Garis);
End. 
Atau dapat juga didefinisikan sebagai suatu konstanta dibagian definisi konstanta, sebagai berikut :

Contoh :
Const                                                 Output :
Garis:=’---------‘;                                  ---------
Begin                                                 Pascal
          Writeln(Garis);                          ---------                          
          Writeln(‘Pascal’);
          Writeln(Garis);
End.

·         Pengiriman Parameter Dalam Fungsi
Parameter dalam fungsi dapat dikirimkan secara Nilai (By Value) atau secara Acuan (By Reference).
Pengiriman parameter secara Nilai (By Value) 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                                                  Output :    
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.

Pengiriman parameter secara Acuan (By Reference) adalah dengan menambahkan kata 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 :
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 :
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

·         Fungsi Memanggil Dirinya Sendiri (Fungsi Rekursif)
Suatu Fungsi dapat juga memanggil dirinya sendiri atau disebut dengan Recursion
Fungsi Rekursif : fungsi yang dapat memanggil dirinya sendiri. Berikut ini sebuah contoh fungsi rekursif
Contoh :
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 :
Berapa Faktorial ? 5
5 Faktorial = 120

·         Fungsi Memanggil Fungsi Yang Lain
      Suatu Fungsi dapat juga memanggil Fungsi yang lainnya. Fungsi yang dipanggil letaknya harus berada diatas Fungsi yang memanggil.
Contoh :                                                      Output :
Function Fungsi2(Y:Integer):Integer;           11
Begin                            
          Fungsi2 := Y*2;                                 Didapat dari :
End;                                                                    
                                                                   Fungsi1 := Fungsi2(X) + 5
Function Fungsi1(X:Integer):Integer;          Fungsi1 := Y * 2+5
Begin                                                           Maka untuk Nilai Fungsi(3) adalah
3 * 2 + 5 = 11  
          Fungsi1 := Fungsi2(X)+5;                 
End;

Begin
          Writeln(Fungsi1(3));
End.