Sub Program
Sub Program
Dalam bahasa pemrograman Pascal terdapat 2 macam sub program, yaitu Procedure dan Function.
Procedure
·
Suatu program terpisah dalam blok
sendiri yang berfungsi sebagai subprogram (program bagian).
·
Prosedur diawali dengan kata
PROCEDURE didalam bagian deklarasi prosedur.
·
Prosedur dipanggil dan digunakan
didalam blok program lainnya dengan menyebutkan judul prosedurnya.
·
Prosedur banyak digunakan pada
program yang terstruktur, karena :
a. Merupakan penerapan konsep program modular, yaitu memecah-mecah program
yang kompleks / rumit menjadi program-program bagian yang lebih sederhana dalam
bentuk prosedur-prosedur.
b. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan
sekali saja dalam prosedur dan dapat dipanggil sewaktu-waktu bila diperlukan.
Contoh
program :
Uses wincrt;
Procedure Garis;
Begin
Write(‘----------‘);
End;
Begin
Garis;
Writeln(‘Pascal’);
Garis;
End.
1. Deklarasi Procedure
Program nama_program_utama;
PROCEDURE Nama_Procedure;
Begin
...
...
End;
Begin
...
...
End.
2. Variabel Lokal dan Variabel
Global
Variabel
lokal :
variabel yang dideklarasikan dalam sebuah modul, artinya hanya dapat digunakan
pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada
modul atau unit program lainnya.
Variabel
global :
variabel yang dideklarasikan diatas modul yang akan menggunakannya. Agar dapat
digunakan oleh modul atau unit program lainnya.
Contoh :
Procedure KeSatu;
Var
C,
D : Real;
Begin
:
End;
Var
A,B
: Word;
Procedure KeDua;
Begin
:
End;
Procedure KeTiga;
Begin
:
End;
{Program Utama}
Begin
:
End.
Keterangan
:
Pada contoh diatas, variabel A dan B bersifat
global untuk prosedur KeDua, KeTiga, dan program utama, tetapi tidak bersifat
global untuk prosedur KeSatu, sehingga prosedur KeSatu ini tidak dapat
menggunakan variabel-variabel tersebut. Sebaliknya variabel C dan D adalah
bersifat lokal untuk prosedur KeSatu saja dan tidak dapat digunakan untuk modul
lainnya.
Contoh
program penggunaan
variabel lokal :
Uses wincrt;
Procedure Hitung;
Var
X,Y
: real;
Begin
Write(‘Nilai
X = ‘); readln(X);
Y
:= X *X;
Writeln(‘Nilai
Y = ‘, Y:6:2);
End;
{Program Utama}
Begin
Hitung;
End.
Contoh
program penggunaan variabel lokal yang salah :
Uses wincrt;
Procedure Hitung;
Var
X,Y
: real;
Begin
Write(‘Nilai
X = ‘); readln(X);
Y
:= X *X;
End;
{Program Utama}
Begin
Hitung;
Write(‘Nilai
Y = ‘, Y:6:2);
End.
4. Parameter dalam Procedure
Jika diperlukan, variabel yang ingin digunakan
dapat dikirimkan sebagai parameter ke modul yang memerlukannya.
Parameter Nyata (Actual Parameter) : parameter
yang dikirim dari program utama ke modul prosedur / subprogram.
Parameter Formal (Formal Parameter) : parameter
yang dituliskan pada judul prosedur.
Proses pengiriman data lewat parameter nyata ke
parameter formal disebut dengan Parameter Passing. Parameter nyata dan
parameter formal harus dengan tipe data yang sama. Parameter dapat dikirimkan secara :
·
Nilai (by value) : bahwa parameter tersebut
hanya mengambil nilai dari parameter nyata dan bersifat lokal di suatu modul /
prosedur. Parameter yang digunakan disebut Parameter Nilai (Value Parameter),
yang memiliki ciri : kata VAR tidak ditulis. Contoh program :
Uses wincrt;
PROCEDURE Hitung (A,B : Integer);
Var
C
: integer;
Begin
C
:= A + B;
Writeln(‘Nilai
C = ‘, C);
End;
{Program Utama}
Var
X,
Y : integer;
Begin
Write(‘Nilai
X = ‘); readln(X);
Write(‘Nilai
Y = ‘); readln(Y);
Hitung(X,
Y);
End.
Keterangan :
Nilai-nilai parameter nyata X dan Y di program
utama dikirimkan ke parameter formal A dan B di prosedur. Dengan demikian,
nilai parameter A dan B di prosedur akan berisi nilai yang sama dengan
parameter X dan Y di program utama.
Contoh 2 :
Uses wincrt;
Procedure Hitung (A, B, C : integer);
Begin
C
:= A + B;
Writeln(‘A
= ‘, A, ‘ B = ‘, B, ‘ C = ‘, C);
End;
{Program Utama }
Var
X,
Y, Z : integer;
Begin
X
:= 2; Y := 3; Z := 0;
Hitung
(X, Y, Z);
Writeln(‘X
= ‘, X, ‘ Y = ‘, Y, ‘ Z = ‘, Z);
End.
Keterangan :
Parameter formal A akan terisi nilai yang sama
dengan parameter nyata X, yaitu bernilai 2. Parameter formal B akan terisi
nilai yang sama dengan parameter nyata Y, yaitu bernilai 3. Parameter formal C
akan berisi nilai yang sama dengan parameter nyata Z, yaitu bernilai 0.
Pada modul prosedur, parameter formal C kemudian
berganti nilai sebesar nilai A ditambah nilai B, sehingga nilai parameter
formal C menjadi sebesar 2 + 3 = 5. Karena parameter formal dengan pengiriman
parameter secara nilai sifatnya lokal, maka perubahan-perubahan nilai parameter
di prosedur tidak akan mempengaruhi nilai parameter nyata di modul lain,
sehingga dengan demikian nilai parameter Z tidak terpengaruh oleh perubahan
nilai parameter C, jadi masih bernilai 0.
·
Acuan (by reference) : bahwa
perubahan-perubahan yang terjadi pada Parameter Formal di prosedur akan
mempengaruhi nilai Parameter Nyatanya. Parameter ini disebut Parameter Perubah
(Variable Parameter), dengan ciri menggunakan kata VAR pada deklarasi
prosedurnya.
Contoh
program :
Uses wincrt;
Procedure Hitung (var A, B, C : integer);
Begin
C
:= A + B;
Writeln(‘A
= ‘, A, ‘ B = ‘, B, ‘ C = ‘, C);
End;
{Program Utama }
Var
X,
Y, Z : integer;
Begin
X
:= 2; Y := 3; Z := 0;
Hitung
(X, Y, Z);
Writeln(‘X
= ‘, X, ‘ Y = ‘, Y, ‘ Z = ‘, Z);
End.
5. Prosedur Memanggil Prosedur
Yang Lain
Contoh program :
Uses wincrt;
Procedure Pro1 (X1 :
integer);
Begin
Writeln(‘Nilai X = ‘, X1, ‘ ada
di prosedur Pro1’);
End;
Procedure Pro2 (X2 :
integer);
Begin
Writeln(‘Nilai X = ‘, X2, ‘ ada
di prosedur Pro2’);
Pro1 (X2);
End;
{Program Utama}
Var
X : integer;
Begin
X := 5;
Pro2 (X);
End.
Function
Blok Function hampir sama dengan blok
Procedure, hanya Function harus dideklarasikan dengan tipe datanya.
1. Deklarasi Function
FUNCTION Nama_Fungsi
(Daftar_Parameter) : Tipe_Fungsi;
Begin
...
...
End;
{Program Utama}
Begin
...
...
End.
Contoh
program :
Uses wincrt;
Function Hitung (var A,B : integer) : integer;
Begin
Hitung
:= A + B;
End;
{Program Utama}
Var
X,
Y : integer;
Begin
Write(‘Nilai
X = ‘); readln(X);
Write(‘Nilai
Y = ‘); readln(Y);
Writeln(X,
‘ + ‘, Y, ‘ = ‘, Hitung (X,Y));
End.
Keterangan
:
Perbedaan Function dengan Procedure adalah :
a. Pada Function, nilai yang dikirimkan balik terdapat pada nama Function
nya. Pada contoh, nama Function tersebut adalah Hitung dan nilai yang dikirim
balik berada pada nama Function tersebut. Sehingga nama Function ini harus
digunakan untuk menampung hasil yang akan dikirimkan dari Function.
b. Karena nilai balik berada di nama Function tersebut, maka Function
tersebut dapat langsung digunakan untuk dicetak hasilnya, sebagai berikut :
Writeln(X, ‘ + ‘, Y, ‘ = ‘, Hitung (X,Y));
Atau nilai Function tersebut dapat juga langsung
dipindahkan ke variabel yang lainnya, sebagai berikut :
Hasil := Hitung (X, Y);
Writeln(X, ‘ + ‘, Y, ‘ = ‘, Hasil);
Contoh :
Uses wincrt;
Function Hitung (var A,B : integer) : integer;
Begin
Hitung
:= A + B;
End;
{Program Utama}
Var
X,
Y, Hasil : integer;
Begin
Write(‘Nilai
X = ‘); readln(X);
Write(‘Nilai
Y = ‘); readln(Y);
Hasil
:= Hitung (X, Y);
Writeln(X,
‘ + ‘, Y, ‘ = ‘, Hasil);
End.
2.
Parameter dalam Function
Sama dengan
Procedure, parameter dalam Function dapat dikirimkan secara nilai (by value)
atau secara acuan (by reference).
·
Parameter Nilai, yaitu parameter
dalam fungsi yang dikirim secara nilai. Contoh penulisan : FUNCTION Hitung (A, B : integer) : integer;
Contoh program :
Uses wincrt;
Function Terbesar
(X, Y : Real ) : Real;
Begin
If X > Y then Terbesar := X
else Terbesar := Y;
End;
{Program Utama}
Var
Nilai1, Nilai2 : Real;
Begin
Write(‘Nilai pertama : ‘);
readln(Nilai1);
Write(‘Nilai kedua : ‘); readln(Nilai2);
Write(‘Nilai terbesar adalah :
‘, Terbesar (Nilai1, Nilai2):6:2);
End.
·
Parameter Acuan , pengiriman
parameter secara acuan maka akan mengakibatkan perubahan nilai parameter di
Function, juga mengubah nilai parameter di modul yang mengirimkannya. Bentuk
penulisan : dengan menambahkan kata Var sebagai berikut :
FUNCTION Hitung (var
A, B : integer) : integer;
Contoh program :
Uses wincrt;
Function Hitung (var
A, B, C : integer) : integer;
Begin
Hitung := A + B;
C := A * B;
End;
{Program Utama}
Var
X, Y, Z : integer;
Begin
Write(‘Nilai X : ‘); readln(X);
Write(‘Nilai Y : ‘); readln(Y);
Writeln(X, ‘ + ‘, Y, ‘ = ‘,
Hitung (X,Y, Z));
Writeln(X, ‘ * ‘, Y, ‘ = ‘, Z);
End.