Fungsi Program, Sub propram dengan Function pada Pascal



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.

Perulangan Pada Turbo pascal



Struktur Perulangan Yang Diketahui

Perulangan Yang Diketahui :
Digunakan untuk pengulangan proses yang sudah pasti jumlah pengulangan prosesnya. 

·         Struktur Perulangan FOR..TO..DO (Positif)
Perulangan dengan penghitung dari kecil ke besar.

FOR var cacah := Awal To Akhir DO

Contoh program :
Uses wincrt;
Var
                i : integer;
Begin
                For i := 1 to 5 do
                                Writeln(‘STMIK Wicida’);
End.

·         Struktur Perulangan FOR..DOWNTO..DO
Perulangan dengan penghitung dari besar ke kecil.
FOR var cacah := Awal DownTo Akhir DO

Contoh program :
Uses wincrt;
Var
                i : integer;
Begin
                For i := 5 DownTo 1 Do
                                Write(i:3);
End.

·         Struktur Perulangan FOR..TO..DO tersarang
Perulangan tersarang adalah perulangan yang berada didalam perulangan yang lainnya. Pada perulangan ini perulangan yang lebih dalam akan diproses terlebih dahulu sampai selesai, lalu dilanjutkan dengan perulangan yang lebih luar.

Contoh program :
Uses wincrt;
Var
                i, j : integer;
Begin
                For i := 1 to 3 do
                Begin
                                For j := 1 to 2 do
                                                Writeln(i:4, j:2)
                End;
End.


Struktur Perulangan Dengan Kondisi 

Perulangan Dengan Kondisi :
·         WHILE <kondisi> DO
Salah satu perintah untuk mengulang proses (perintah) yang sama, dengan didahului oleh suatu persyaratan. Pengulangan proses akan dikerjakan jika persayaratan yang diberikan kondisinya terpenuhi.
Contoh program :
Uses wincrt;
Var
                i : integer;
Begin
                i := 1;
                While i <= 10 do
                Begin
                                Writeln(‘STMIK Wicida’);
                                i := i + 1;
                End;
End.

·         WHILE <kondisi> DO tersarang
Contoh program :
Uses wincrt;
Var
a,b : integer;
Begin
     a := 1;
     While a < 4 do
     Begin
                b := 1;
while b < 3 do
          begin
               Writeln(a:3, b:2);
               b := b + 1;
          end;
          a:= a+ 1
     end;
End.

·         REPEAT..UNTIL
Digunakan untuk mengulang statement-statement atau blok statement sampai (until) kondisi yang diseleksi di-until tidak terpenuhi.
Contoh program :
Uses wincrt;
Var
                i : integer;
Begin
                i := 0;
                Repeat
                                i := i + 1;
                                Writeln(i);
                Until  i = 5
End.

·         REPEAT..UNTIL tersarang
Contoh program :
Uses wincrt;
Var
                a,b,c : real;
Begin
                Writeln(‘Sisi A      Sisi B        Sisi C’);
                a := 1;
                Repeat
                                b := 0;
                                Repeat
                                                c := sqrt(a*a + b*b);
                                                Writeln(a:6:2, b:9:2, c:9:2);
                                                b := b + 5;
                                Until b > 25;
                                a := a + 1;
                Until a > 3;
End.