Senin, 21 Oktober 2013

procedure

Prosedur adalah suatu program terpisah dalam blok tersendiri yang berfungsi sebagai sub program (program bagian) dan diawali dengan kata cadangan Procedure.
Bentuk Umum Prosedur :

PROCEDURE nama_prosedur (Daftar_Parameter);
Bagian deklarasi;
Bagian pernyataan;


Parameter pada Prosedur
Terdapat 2 (dua) parameter pada prosedur, yaitu :
Parameter Lokal (Local Parameter)
Parameter Lokal adalah nilai paramter yang terdapat didalam suatu modul program hanya dapat digunakan pada modul atau unit program yang bersangkutan saja sehingga tidak dapat digunakan pada modul atau unit program lain.
01.Procedure Kali;
02.Var
03.A, B : Byte;
04.Begin
05.Write ('Isi nilainya : '); Readln (A);
06.B := A * A;
07.End;
08.{Program Utama}
09.Begin
10.Kali;
11.Writeln ('Nilai B = ', B);
12.End.
Pada saat anda kompile program diatas, maka akan menampilkan pesan kesalahan : Error 3: Unknown Identifier, yang artinya bahwa variabel B tidak dikenali di program utama, akan tetapi hanya dikenal pada prosedur Kali saja.
Parameter Global (Global Parameter)
Paramater Global adalah kebalikan dari Paramter Lokal. Agar nilainya dapat digunakan untuk beberapa atau semua modul/unit program maka nilai tersebut harus dideklarasikan diatas modul yang akan menggunakannya.
01.Var
02.A, B : Byte;
03.Procedure Kali;
04.Begin
05.Write ('Isi nilainya : '); Readln (A);
06.B := A * A;
07.End;
08.{Program Utama}
09.Begin
10.Kali;
11.Writeln ('Nilai B = ', B);
12.End.
Istilah Penting Parameter
  1. Actual parameter (parameter nyata) yaitu parameter yang dikirimkan dari modul utama ke modul prosedur.
  2. Formal Parameter (parameter formal) yaitu parameter yang ada dan dituliskan pada judul prosedur.
  3. Parameter Passing yaitu proses Pemanggilan data lewat parameter nyata ke parameter formal.
  4. By Value yaitu Pemanggilan parameter secara nilai.
  5. By Reference yaitu Pemanggilan parameter secara acuan
  6. Value Parameter yaitu parameter-parameter yang digunakan dalam Pemanggilan secara nilai
Pemanggilan Parameter pada Prosedur
Terdapat 3 (tiga) cara Pemanggilan Parameter pada Prosedur :
1. Pemanggilan Secara Nilai (Call by Value)
Pemanggilan parameter secara nilai bersifat searah yaitu dari parameter nyata ke parameter formal. Bila nilai parameter formal berubah, maka nilai parameter nyata tidak berubah.

Prosedure dan Funtion



Pemrograman PASCAL : Procedure & Function
PROCEDURE DAN FUNCTION
Procedure dan Function 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 :
Halaman : 1

Pemrograman PASCAL : Procedure & Function
PROGRAM contoh_1;
VAR a,b,c : integer;
      PROCEDURE maksimum;
      VAR max : integer;
      BEGIN
         IF a>b THEN max := a ELSE max := b;
         IF c>max THEN max := c;
         WRITELN(max);
      END;
BEGIN
   READLN(a,b,c);
    Maksimum
END.
HEADER program utama
deklarasi program
utama
statement program utama
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
identifier tersebut didefinisikan.
pada blok dimana
Halaman : 2

Pemrograman PASCAL : Procedure & Function
Contoh :
1. PROGRAM p;
   VAR x : real;
PROCEDURE pl;
VAR y : integer;
begin
  ………………..;
  ………………..;
end;
begin
  ………………..;
  ………………..;
end.
y variabel global
2. Program P ;
   Var x,y : real;
   ……………
   ……………
Procedure Pl ;
Var y : integer;
……………..
Begin
      ………
      ………
End;
Procedure P2;
Var x : char;
……………
Begin
      ………..
      ………..
End;
 Begin
     ………….
     x := …….
    y := …….
     …………
End.
daerah berlakunya y
   daerah
berlakunya x
y (real) berlaku disemua blok
program P, kecuali di P1
x (real) berlaku disemua
blok P, kecuali di P2
hanya berlaku di P1 saja (lokal)
hanya berlaku di P2 saja (lokal)
x dan y yang dimaksud adalah x dan y real
(variabel global)
Halaman : 3

Pemrograman PASCAL : Procedure & Function
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
Halaman : 4

Pemrograman PASCAL : Procedure & Function
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.
Halaman : 5

Pemrograman PASCAL : Procedure & Function
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
Halaman : 6

Pemrograman PASCAL : Procedure & Function
  writeln(c,f);
end;
f sebagai output.
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;
 Writeln(c,f);
End;
disebut formal parameter
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
Halaman : 7

Pemrograman PASCAL : Procedure & Function
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=2Y=3Z=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 :
Halaman : 8

Pemrograman PASCAL : Procedure & Function
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.
FUNCTION
Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan
tipenya atau jenis hasilnya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi.
Pada bahasa Pascal dikenal beberapa fungsi, misalkan : abs, pred, sqrt, sqr, succ dan sebagainya.
Fungsi-fungsi tersebut biasanya dikenal dengan Built in Function. Sedangkan function yang akan
bicarakan disini adalah fungsi yang kita buat sendiri.
Berbeda dengan procedure, function merupakan modul program yang menghasilkan suatu
kuantitas.
Hal ini dapat dilihat dari bentuk header-nya yang menyebutkan jenis data dari kuantitas yang
dihasilkan.
Secara umum bentuk header suatu function adalah :
FUNCTION nama : jenis hasil;
FUNCTION nama (formal parameter : jenis ) : jenis_hasil;
Atau
Contoh :
1. Akan dibuat suatu fungsi dengan nama MAX yang dapat menentukan integer terbesar di
   antara dua integer.
Function MAX (x,y : integer) : integer;
Begin
   If x < y then MAX := y ;
Halaman : 9

Pemrograman PASCAL : Procedure & Function
Else MAX := x;
End;
Selanjutnya kita dapat menggunakan fungsi di atas dalam suatu program, misalnya dengan
menyatakan sebagai berikut :
    P := MAX(a,b);
    Z := MAX(a+b,a*b);
    Q := MAX(MAX(a,b),c);
    …………………………
    dsb.
2. Function LOG (x : real) : real;
   Begin
      LOG := ln (x) / ln (10.0);
   End;
3. Function POWER (x,y : real) : real;
   Begin
      POWER := exp (y * ln (X))
   End;
ab = POWER (a,b)
ba = POWER (b,a)
(p + q)r/s = POWER (p + q, r/s)
………………………………..
dll
Contoh :
Function Hitung(Var A,B : integer): integer;
Begin
       Hitung := A + B;
End;
VarX,Y : integer;
Begin
      Write(‘Nilai X ? ‘);
      Readln(X);
      Write(‘Nilai Y ? ‘);
      Readln(Y);
      Writeln;
      Writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y));
End.
Hasilnya :
       Nilai X ? 2
       Nilai Y ? 3
1+3=5
Halaman : 10

Pemrograman PASCAL : Procedure & Function
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 hasilnya, 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 mengandung nilai balik.
REKURSIF
Suatu fungsi atau prosedur dalam bahasa Pascal dapat bersifat rekursif. Artinya, fungsi
atau prosedur tersebut dapat memanggil dirinya sendiri. Berikut ini sebuah contoh fungsi
dan prosedur yang rekursif.
1. function faktorial (nilai : integer) : integer;
   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.
faktorial (4) = 4 * faktorial (3)
                   3 * faktorial (2)
                       2 * faktorial (1)
Halaman : 11

Pemrograman PASCAL : Procedure & Function
      1 * faktorial (0)
               1
=4*3*2*1*1
= 24
2. Bilangan Fibonanci:
       F (0) = 0
       F (1) = 1
       F (n) = F ( n-1 ) + F (n-2); untuk n >1
   Function fibonacci ( n : integer ) : integer;
   Begin
       If n = 0 then fibonacci := 0
                 Else
                       If n := 1 then fibonacci := 1
                                 Else fibonacci := fibonacci (n-1) + fibonacci (n-2);
   End;
3. Procedure reverse ( num : integer );
   Begin
      If num < 10 then write(num)
                   Else begin
                             Write(num mod 10);
                             Reverse(num div 10);
                         End;
   End;
Fungsi Standar
1. Fungsi standar arutmatika
   Fungsi standar ABS
      Bentuk umum : ABS(x);
      Digunakan untuk memutlakkan suatu nilai yang ditunjukkan oleh argumen x.
      Contoh :
Begin
X:=-2.3;
Write(‘Nilai X = ‘,X,’ Nilai mutlaknya = ‘,Abs(X):3:1);
End.
   Fungsi standar EXP
Bentuk Umum : EXP(x:):real;
Digunakan untuk menghitung nilai pangkat dari bilangan e yaitu sebesar ex.
Hasilnya berupa nilai real.
Halaman : 12

Pemrograman PASCAL : Procedure & Function
   Fungsi standar LN
Bentuk umum : LN(x):real;
Digunakan untuk menghitung nilai logaritma alam (natural logarithm) dari nilai x.
Hasilnya berupa nilai real.
    Fungsi standar INT
Bentuk umum : INT(x:real):real;
Digunakan untuk menghasilkan nilai integer dari x. hasil dari fungsi adalah tipe
real dengan nilai yang berupa pembulatan ke bawah (nilai pecahan dibuang) dari
nilai x.
Contoh :
Begin
         X:=9.99;
         Write(‘Nilai yang akan dibulatkan = ‘,X);
         Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2);
End.
Hasil :
         Nilai yang akan dibulatkan = 9.99
         Nilai pembulatannya = 9.00
   Fungsi standar FRAC
Bentuk umum : FRAC(x:):real;
Digunakan untuk mendapatkan nilai pecahan dari argumen x. Argumen x dapat
bernilai real maupun integer dan hasil dari fungsi adalah real.
Contoh :
Begin
        X:=9.99;
        Write(‘Nilai X = ‘,X,’ Nilai pecahannya = ‘,Frac(X):4:3);
End.
Hasilnya :
Nilai X = 9.99 Nilai pecahannya = 0.990
   Fungsi standar SQR
Bentuk umum : SQR(x);
Digunakan untuk menghitung nilai pangkat kuadrat dari argumen x.
Contoh :
Begin
      X :=2;
      Write(‘Nilai X = ‘,X,’ Nilai kuadratnya = ‘,sqr(x));
End.
Hasilnya : Nilai X = 2 Nilai kuadratnya = 4
   Fungsi standar SQRT
Bentuk umum : SQRT(x) : real;
Digunakan untuk menghitung nilai akar dari argumen x, hasilnya berupa real.
Halaman : 13

Pemrograman PASCAL : Procedure & Function
Fungsi standar PI, SIN, COS, ARCTAN
1. Fungsi Standar Transfer
   Digunakan untuk merubah suatu nilai ke bentuk nilai lain.
   Fungsi standar CHR
      Bentuk umum : CHR(x:byte):char;
      Digunakan untuk merubah nilai dari byte x ke bentuk karakter yang sesuai dengan
      kode ASCII.
      Contoh :
             X := 66;
             Write(‘Nilai X = ‘,x,’ Nilai karakternya = ‘,CHR(X));
Hasilnya : Nilai X = 66 Nilai karakternya = B
   Fungsi standar ORD
Bentuk umum : ORD(x):longint;
Digunakan untuk merubah nilai x ke bentuk nilai longint yang sesuai dengan kode
ASCII, merupakan kebalikan dari fungsi CHR.
    Fungsi standar ROUND
Bentuk umum : ROUND(x:real):longint;
Digunakan untuk membulatkan nilai dari real x ke nilai longint yang terdekat.
Bila nilai pecahan sama dengan atau lebih besar dari 0.5 akan dibulatkan ke atas,
sedang kalau lebih kecil dari 0.5 akan dibulatkan ke bawah.
Contoh :
        Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Round(10/3));
        Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Round(20/3);
Hasilnya :
        10 dibagi 3 hasil pembulatan terdekat adalah 3
        20 dibagi 3 hasil pembulatan terdekat adalah 7
   Fungsi standar TRUNC
Bentuk umum : TRUNC(x:real):longint;
Digunakan untuk membulatkan nilai dari real x ke nilai longint terkecil. Atau
dengan kata lain membulatkan ke bawah.
Contoh :
       Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Trunc(10/3));
       Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Trunc(20/3);
Hasilnya :
       10 dibagi 3 hasil pembulatan terdekat adalah 3
       20 dibagi 3 hasil pembulatan terdekat adalah 6
Halaman : 14

Pemrograman PASCAL : Procedure & Function
1. Fungsi Standar Lainnya
   Fungsi standar yang tidak termasuk dalam kelompok pembagian di atas :
   Fungsi standar Hi, Lo, Swap
   Fungsi standar Random
      Bentuk umum : Random [(range :word)];
      Digunakan untuk menghasilkan angka random berkisar dari nilai lebih besar atau
      sama dengan nol dan lebih kecil dari satu. Bila range tidak disebutkan, hasil dari
      fungsi ini adalah real, bila range disebutkan, hasilnya adalah word.
   Fungsi standar SizeOf
      Bentuk umum : SizeOf(x):word;
      Digunakan untuk menunjukkan besarnya byte yang digunakan oleh suatu variabel
      x, hasilnya berupa nilai word.
   Fungsi standar UPCASE
      Bentuk umum : UpCase(Ch:char):char;
      Digunakan untuk merubah argumen suatu karakter yang ditunjukkan oleh Ch
      menjadi bentuk karakter huruf besar (upper case).
Halaman : 15