You are here

Tutor 4.2 (prosedur dan fungsi) 2

------------------------------------------------------- 
{ tutorial pascal / turbo pascal }
{ second my tutorial for my friend }
{ writen by : m3n_tu4r1 } padang, 20 mei 2003
-------------------------------------------------------

PENGUNAAN FUNCTION dan PROCEDURE
1. FUNCTION
fungsi : koleksi pernyataan2 yang mempunyai tujuan tertentu

 sintax : FUNCTION nm_funct [(deklarasi var)]; type funct;
          BEGIN
               .
               .
               .
          END. 

penjelasan =

 nm_funct = nama fungsi
 deklarasi var = parameter yang dikirim
 type funct = jenis fungsi

Contoh Penggunaan Fungsi: (1)

  { buat fungsi yang menentukan nilai terbesar }
  { dari 2 buah bilangan }
  
  USES CRT;
  VAR
	  A : interger;
	  B : interger;
	  C : interger;
  FUNCTION nilaiterbesar (na,nb:interger):interger;
	  BEGIN
		   IF na>nb THEN
			   nilaiterbesar:=na
		   ELSE
			   nilai terbear:=nb;
	  END;
  BEGIN
	  CLRSCR;
	  WRITE ('Masukan nilai A:');
	  READLN (A);
	  WRITE ('Masukan nilai B:');
	  READLN (B);
	  C:=nilaiterbesar (A,B);
	  WRITELN ('NILAI TERBESAR = ',C );
  END.

Contoh Penggunaan Fungsi: (2)

 { program fungsi pangkat }
   
 USES CRT;
 VAR
  X : real ;
  Y : interger ;
 FUNCTION XPY ( X:real, Y:interger ):real;
   VAR
     hasil : real ;
	 i : interger ;
   BEGIN
     IF Y=1 THEN 
       XPY:= X;
      ELSE
        BEGIN
          hasil:= 1.0;
          FOR i:=1 TO Y DO
            hasil:= hasil * X;
          XPY:=hasil;
        END; 
    END;
 BEGIN
   CLRSCR;
   WRITE (' Masukan X:');
   READ (X);
   WRITE (' Masukan Y:');
   READ (Y); 
   WRITELN (X:10:2,'pangkat',Y:5,'adalah = ',
XPY(X,Y):15:2);
 END.

2. PROCEDURE
fungsi : hampir sama dengan function tapi lebih komplek
dan dapat dipangil dari file yang berbeda.
procedure sama dengan subrutine sebuah program

Contoh Penggunaan Procedure:

 USES CRT;
 CONST
     max = 10;
     garis = '--------------------------------------
--------------------------';
 TYPE
     rec_data = record;
     nip : string[25];
     nama : string[25];
     gol : string[5];
     gapok : real;
     tunj : real;
     gator : real; 
     pot : real;
     gaber : real;
 END;
 VAR
     rpeg : rec_data;
     peg : file of rec_data;
     lagi : char;
          
 PROCEDURE entrydata;
   BEGIN
     ASSIGN (peg,'c:\peg.dat');
     REWRITE (peg);
     CLRSCR;
       BEGIN
          CLRSCR;
          WRITE ('nip :');READLN(rpeg.nip);
          IF rpeg.nip=" THEN HALT;
          WRITE ('nama :');READLN(rpeg.nama);
          WRITE ('golongan :');READLN(rpeg.gol);
       END;
   END; 
   {Akhir procedure entrydata} 
           
 PROCEDURE prosesdata;
   BEGIN
     IF rpeg.gol = 'I/a' THEN rpeg.gapok :=250000;
     IF rpeg.gol = 'I/b' THEN rpeg.gapok :=300000;
     IF rpeg.gol = 'II/a' THEN rpeg.gapok :=350000;
     IF rpeg.gol = 'II/b' THEN rpeg.gapok :=400000;
     IF rpeg.gol = 'III/a' THEN rpeg.gapok :=450000; 
     IF rpeg.gol = 'III/b' THEN rpeg.gapok :=500000;
     rpeg.tunj :=(0.1)*rpeg.gapok;
     rpeg.gator :=rpeg.gapok*rpeg.tunj;
     rpeg.pot :=(0.02)*rpeg.gator;
     rpeg.gaber :=rpeg.gator-rpeg.pot;
   END;
   {Akhir procedure prosesdata}
     
 PROCEDURE tampildata; 
   BEGIN
     CLRSCR;
     GOTOXY (1,1);WRITE (' daftar gaji pegawai ');
     GOTOXY (1,2);WRITE (garis);
     GOTOXY (1,3);WRITE (' nip nama gol gapok tunj
gator pot gaber');
     GOTOXY (1,4);WRITE (garis);
     BEGIN
          GOTOXY (2,5) ;WRITELN (rpeg.nip);
          GOTOXY (9,5) ;WRITELN (rpeg.nama);
          GOTOXY (18,5);WRITELN (rpeg.gol);
          GOTOXY (24,5);WRITE (rpeg.gapok:10:0);
          GOTOXY (33,5);WRITE (rpeg.tunj:10:0);
          GOTOXY (44,5);WRITE (rpeg.gator:10:0);
          GOTOXY (54,5);WRITE (rpeg.pot:10:0);
          GOTOXY (68,5);WRITE (rpeg.gaber:10:0);
     END;
   END;
   {Akhir procedure tampildata}

 BEGIN {Program utama}
     CLRSCR;
     REPEAT
          entrydata;
          prosesdata;
          tampildata;
          WRITELN;
          WRITE (' coba lagi : [Y/T]:');
          REPEAT
             lagi:=UPCASE (READKEY);
          UNTIL lagi IN ['Y','T'];
     UNTIL lagi ='T';
     CLOSE (peg);
 END.

Regards,

m3n_tu4r1