Senin, 07 Mei 2012

Materi ALGORITMA PEMROGRAMAN 2A - PERTEMUAN 6 (PROCEDURE)


PROCEDURE



Procedure adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian dari pekerjaan program utama.


ΠPROCEDURE


Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya.

Prosedur banyak digunakan pada program yang terstruktur, karena :
1.    Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.
2.    Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block. Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja.
Bentuk Umum header suatu procedure adalah :

            PROCEDURE nama;
Atau
            PROCEDURE nama (formal parameter : jenis);

Jika kita menggunakan procedure dalam suatu program, maka procedure tersebut harus dituliskan pada bagian deklarasi.

Contoh : Misal akan dibuat  suatu procedure untuk menentukan bilangan bulat terbesar diantara tiga bilangan bulat, maka procedure tersebut adalah sebagai berikut :

PROCEDURE maksimum;
VAR max : integer;
BEGIN
            IF a > b THEN max := a ELSE max := b;
            IF c > max THEN max := c;
            WRITELN(max);
END.

Selanjutnya, di dalam suatu program, procedure ini dapat digunakan dengan bentuk penulisan sebagai berikut :

PROGRAM contoh_1;                                                                    HEADER program utama
VAR a,b,c : integer;
            PROCEDURE maksimum;
            VAR max : integer;
            BEGIN
                IF a>b THEN max := a ELSE max := b;                                    deklarasi program
                IF c>max THEN max := c;                                                             utama
                WRITELN(max);
            END;

BEGIN
        READLN(a,b,c);
         Maksimum                                                                              statement program utama
END.


Contoh 2 :

PROGRAM CONTOH_2;
VAR p,l,t,vol,panj : real;

PROCEDURE kotak;
VAR v,pl : real;
BEGIN
            v := p * l * t ;
            pl := p + 2.0 * t;
            writeln(v,pl);
END;
BEGIN
            writeln(‘panjang’ : 10,’lebar’ : 10,’tinggi’ : 10);
            readln(p,l,t);
            kotak;
END.


JANGKAUAN  IDENTIFIER


Identifier yang dideklarasikan dalam suatu blok program hanya berlaku  pada blok dimana identifier tersebut didefinisikan.
Contoh :




1.   PROGRAM p; 
VAR   x : real;
  
   PROCEDURE pl;
   VAR y : integer;
    begin                                                               
            ………………..;                                        daerah berlakunya y         daerah
            ………………..;                                                                                 berlakunya  x
          end;
      
          begin
            ………………..;
            ………………..;
          end.

          y ® variabel  global

2.   Program P ;
Var x,y : real;                                                               y (real) berlaku disemua blok            ……………                                                     program P, kecuali di P1
 ……………                                                                 x (real) berlaku disemua
                                                                                      blok P, kecuali di P2
Procedure Pl ;
Var y : integer;                                                            hanya berlaku di P1 saja (lokal)
……………..
Begin
      ………
      ………
End;

Procedure P2;
Var x : char;                                                                hanya berlaku di P2 saja (lokal)
……………
Begin
      ………..
End;

Begin
      x := …….                                   x dan y yang dimaksud adalah x dan y real
            y := …….                                   (variabel global)
            …………
     End.
 
PROCEDURE  DENGAN  PARAMETER

Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.

Contoh :

Prosedur Tanya_hitung;
Var X,Y :real;
Begin
            Write (‘Nilai X ?’);
            Readln(X);
            Y:=X*X;
            Writeln(‘Nilai Y = ‘,Y:6:2);
End;

Begin
            Tanya_Hitung;
End.

Hasilnya :
            Nilai X ? 5
            Nilai Y = 25.00


Keterangan :
            Variabel X dan Y sifatnya adalah lokal untuk prosedur Tanya_hitung, artinya hanya dapat digunakan pada modul itu saja, Pada modul yang lain tidak dapat digunakan, contoh :


Prosedur Tanya_hitung;
Var X,Y :real;
Begin
            Write (‘Nilai X ?’);
            Readln(X);
            Y:=X*X;
End;

Begin
            Tanya_Hitung;
            Writeln(‘Nilai Y = ‘,Y:6:2);
End.

Hasilnya :
                        Error 31: Unknown identifier


Supaya nilai variabel dapat digunakan di modul lainnya, maka dapat dilakukan dengan cara :

1.   Dibuat bersifat global
Harus dideklarasikan di atas modul yang menggunakannya.



Procedure kesatu;
Begin
                  …….
            ……..
End; (*akhir dari procedure kesatu……*)

Var
                  A,B : word;

Procedure kedua;
Begin
                  ……..
            ……..
End; (*akhir dari procedure kedua*)

Procedure ketiga;
Begin
                  ……..
            ……..
End; (*akhir dari procedure ketiga*)

Begin
                  ……..
            ……..
End. (*akhir dari modul utama*)

 


Pada contoh diatas, variabel A dab B bersifat global untuk prosedur kedua, ketiga dan utama, tetapi tidak bersifat global untuk prosedur kesatu, sehingga prosedur kesatu tidak dapat menggunakan variabel-variabel tersebut.
      Var
                  A,B : real;



Procedure kesatu;
Begin
                  …….
            ……..
End; (*akhir dari procedure kesatu……*)




 


Procedure kedua;
Begin
                  ……..
            ……..
End; (*akhir dari procedure kedua*)



 


Procedure ketiga;
Begin
                  ……..
            ……..
End; (*akhir dari procedure ketiga*)

Begin
                  ……..
End. (*akhir dari modul utama*)
Pada contoh ini, variabel A dan B bersifat global untuk semua modul.

2.   Dikirimkan sebagai parameter ke modul yang membutuhkannya.
Parameter yang dikirim dari modul utama ke modul prosedur disebut actual parameter, dan parameter yang ada dan dituliskan pada judul prosedur disebut formal parameter.

2.1 Pengiriman parameter secara nilai
Parameter yang dikirimkan secara nilai, maka parameter formal yang ada di prosedur akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur.

Perhatikan procedure berikut :

            Procedure konversi;
            begin
                f := (5/9) * c + 32;                      f dan c variabel global, c sebagai input dan
                writeln(c,f);                                            f sebagai output.
            end;

Procedure di atas dapat dipanggil dengan variabel yang berbeda, tetapi penulisannya harus diubah dengan menggunakan parameter sbb:
           
Procedure konversi (var f : real; c : real);
Begin
  F := (5/9) * c + 32;                                disebut formal parameter         
  Writeln(c,f);
End;

Selanjutnya procedure di atas dapat dipanggil dengan parameter lain, misalnya :

            konversi (x,y) ;
                                            actual parameter
           
x dan y disebut sebagai actual parameter.
Pada eksekusinya x akan menggantikan c dan y akan menggantikan f.
x dan y ini dapat berupa :
-                       konstanta
-                       variabel
-                       procedure, atau
-                       fungsi

Contoh :

Procedure Hitung(A,B : integer);
Var C : integer;
Begin
            C := A + B;
            Writeln(‘Nilai C = ‘,C)
End;

Var X,Y : integer;
Begin
            Write(‘Nilai X ? ‘);
            Readln(X);
            Write(‘Nilai Y ?’);
            Readln(Y);
Hitung(X,Y);
End.

Hasilnya :
            Nilai X ? 2
            Nilai Y ? 3
            Nilai C = 5


2.2 Pengiriman parameter secara acuan
Bila pengiriman parameter secara acuan (by reference), maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai actual parameter .

Procedure hitung(Var A,B,C : integer);


 

Menunjukkan pengiriman parameter secara acuan.
Contoh :

Procedure Hitung(Var A,B,C : integer);
Begin
            C := A + B;
End;

Var  X,Y,Z : integer;
Begin
            X := 2; Y:= 3;
            Hitung(X,Y,Z);
            Writeln(‘X = ‘,X,’ Y = ‘,Y,’ Z = ‘,Z);
End.
Hasilnya :
            X = 2 Y = 3 Z = 5

Acuan Forward
            Digunakan untuk mendeklarasikan dimuka judul prosedur terpisah dari bloknya.

Contoh :
            Procedure pro1(var I : integer); Forward;
            Procedure pro2(var I : integer);
            Begin
            Writeln(‘prosedur pro’, I);
            End;

            Procedure pro1;
            Begin
                        Writeln(‘prosedur pro’,I);
            End;
           
Var I : integer;
Begin
            I := 1;  pro1(I);
            I := 2;  pro2(I);
End.
Hasilnya :
            prosedur pro1
            prosedur pro2





Prosedur Standar

Prosedur yang disediakan oleh Turbo Pascal :
1.    Prosedur standar EXIT
Digunakan untuk keluar dari suatu blok.
2.    Prosedur standar HALT
Digunakan untuk menghentikan proses program baik di program bagian maupun di program utama.
3.    Prosedur standar MOVE
Bentuk umum :  MOVE (Var source,dest; count : word);
Digunakan untuk menyalin suatu blok sebanyak count byte memori dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest.
4.    Prosedur standar FILLCHAR
Digunakan untuk mengisi sejumlah byte nilai ke dalam suatu variabel, sebagai berikut
FillChar(x;count :word;ch);
X adalah variabel yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal Ch sebanyak count byte.

0 komentar:

Posting Komentar

Please Leave Your Comment :)