Jumat, 29 Juni 2012

Function


NAMA : FAJAR IMAN PRAYOGA
NPM    :14409786
KELAS : 3IB02

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