Translate to your languages

Selamat Datang . Suatu kehormatan bagi saya atas kunjungan ini. Saya sangat berharap kunjungan berikutnya.

24 Desember 2007

SUB PROGRAM PASCAL 2

2. Jangkauan Variabel
a. Variabel Global

Variabel global adalah variabel yang didefinisikan/terletak pada program utama, dimana semua sub-program bisa mengakses, mempergunakan dan memodifikasinya.

b. Variabel Lokal

Suatu procedure dapat mendeklarasikan variabelnya sendiri. Variabel-variabel itu hanya bekerja pada procedure dimana mereka dideklarasikan. Variabel-variabel tersebut dinamakan variabel local (local variable)

Keterangan :

Semua bisa mengakses variabel global A, F, G.

Pada procedure alfa definisi global variabel A diganti dengan variabel lokal.
beta_1 dan beta_2 dapat mengakses betamax dan betako.

beta_1 tidak dapat mengakses variabel boboho, dan beta_2 tidak dapat mengakses bobo.
Tdak ada subprogram, kecuali alfa dapat mengakses B dan C.

Procedure beta dapat mengakses alfa dan beta.

Contoh:

program LOKAL_VARIABEL;
uses wincrt;
var nomor1, nomor2 : integer;
{ini bisa dipanggil dari mana-mana GLOBAL VAR}
procedure tambah;
var hasil:integer;{hasil merupakan milik procedure tambah LOCAL VAR}
begin
hasil := nomor1 + nomor2;
writeln(‘hasil adalah', hasil)
end;
begin {program utama}
writeln(‘Masukkan dua angka bulat dengan spasi’);
readln(nomor1, nomor2);
tambah

end.

c. Penggunaan Forward

Dari hal di atas kita tahu bahwa suatu subprogram dapat diakses oleh subprogram apabila sudah didefinisikan terlebih dahulu.

Ada pengecualian, untuk mengatasi masalah chicken-and-the-egg, bila kita memiliki dua/lebih subprogram masing- masing bisa memanggil yang lain dengan referensi forward.

Hal ini berlaku juga untuk FUNCTION (fungsi).

3. Procedure Yang Menggunakan Argumen
Procedure juga bisa memakai variabel (data) untuk bekerja ketika dipanggil.
a. Mendeklarasikan variabel di dalam procedure
• Variabel yang diterima oleh procedure diapit dengan tanda kurung ().
• Dekla
rasi dari variabel terletak diantara nama procedure dan semi-colon.
b. Memanggil procedure and menyampaikan variabel (atau nilai) ke procedure
• Ketika procedure dipanggil, nama procedure diikuti oleh sepasang ().
• Variabel yang dipanggil diletakkan didalam tanda kurung tersebut.
• Variabel ditulis dalam tingkat yang sama seperti dalam prosedur terkait.

Contoh.
Perhatikan contoh program berikut,

program JUMLAH;
uses wincrt;
var nomor1, nomor2 : integer;
procedure CALC_ANSWER ( kesatu, kedua : integer );
var hasil : integer;
begin
hasil := kesatu + kedua;
writeln('hasil adalah ', hasil )
end;
begin
writeln('masukkan dua angka dalam spasi');
readln( nomor1, nomor2 );
CALC_ANSWER( nomor1, nomor2)
end.

4. Procedure Yang Memakai Parameter

program TestNilai;
uses wincrt;
var x, y : integer;

procedure NoEffect ( x, y : integer );
begin
x := y; y := 0;
writeln( x, y )
end;
begin
x := 1; y := 2;
writeln( x, y );
NoEffect( x, y );
writeln( x, y )
end.

Output dari Testnilai adalah:

1 2
2 0
1 2


a. Parameter Nilai (pass by value)

Dalam program di atas, ketika variabel disampaikan ke procedure, procedure bekerja dengan copy dari variabel asli. Nilai dari variabel asli yang disampaikan ke procedure tidak diubah. Procedure hanya menggantikan variabel asli dengan variabel yang ada di procedure , tetapi tidak menggantikan nilai dari variabel asli. Ketika procedure bekerja dengan copy dari variabel, maka dikenal dengan parameter nilai (pass by value).
Perhatikan contoh berikut:

program Parameter_Nilai;
uses wincrt;
var x : byte;
procedure foo(a : byte);
begin
writeln(a); {15}
a:=10;
writeln(a); {10}
end;
begin
x:=15;
writeln(x); {15}
foo(x);
writeln(x); {tetap 10}
end.

Outputnya :

15
15
10
15

b. Parameter Variabel (pass by reference)

Procedure bisa juga dipakai untuk mengubah nilai dari variabel asli yang dipanggil oleh procedure. Untuk menggambarkannya, kita bisa lihat pada contoh program modifikasi program sebelumnya. Procedure ini menerima dua nilai integer dan menggantikan nilai aslinya. Untuk membuat procedure menggunakan parameter variabel (pass by reference) dengan menggunakan kata kunci var.

program Parameter_Variabel;
uses wincrt;
var x : byte;
procedure foo(var a : byte);
begin
writeln(a); {15}
a:=10;
writeln(a); {10}
end;
begin
x:=15;
writeln(x); {15}
foo(x);
writeln(x); {berubah 15}
end.

Outputnya:
Ketika program dijalankan, akan tercetak di layar

15
15
10
10




5. Function – Suatu Procedure Khusus Yang Menghasilkan Nilai
Procedure memakai data atau variabel ketika dieksekusi. Function (fungsi) juga memakai data, tetapi mempunyai kemampuan untuk menghasilkan nilai pada procedure atau program yang memanggilnya. Function digunakan untuk melakukan operasi matematika seperti perhitungan faktorial.
Suatu function :
Dimulai dengan kata kunci function
Strukturnya sama dengan sebuah procedure
Didalam fungsi, suatu nilai dihasilkan dengan nama function
Suatu function dipakai pada sisi sebelah kanan pada suatu ekspresi

Hanya menghasilkan tipe data sederhana


SYNTAX

function Nama (deklarasi variabel):tipe_data_hasil;
begin
:
pernyataan
:
end;

contoh :

function ADD_TWO ( nilai1, nilai2 : integer ) : integer;
begin
ADD_TWO := nilai1 + nilai2
end;

contoh berikut menggambarkan bagaimana memanggil function,

result := ADD_TWO( 10, 20 );

maka, ketika ADD_TWO dieksekusi, dia menghitung nilai yang terdapat di dalamnya (dalam hal ini 30), yaitu hasil akhirnya.

Contoh

program CONTOH_FUNGSI;
uses wincrt;
var angka, jawaban : integer;
function KUBIK( x : integer ) : integer;
begin
KUBIK := x * x * x
end;
begin
writeln('Masukkan angka.');
readln(angka);
jawaban := KUBIK ( number );
writeln('Hasil pangkat tiga dari ',number,' adalah ', answer)
end.

6. Rekursi dan Iterasi

Subprogram bisa memanggil dirinya (Recursive Call) dengan catatan bahwa memiliki syarat penghentian operasi (iterasi), sehingga perlu dilakukan kehati-hatian dalam penulisannya. Lihat contoh tentang faktorial suatu bilangan di bawah ini.

Contoh.

Program faktorial;
Uses wincrt;
Var x : integer;
function factorial (n:integer):integer;
begin
if n<2>

Penjelasan

Jika x= 5,maka Pemanggilan
Ke-1, n=5.
Factorial:=5*factorial(4); => Perlu Pemanggilan Ke-2
Ke-2 , n=4. Factorial:=4*factorial(3); => Perlu Pemanggilan Ke-3
Ke-3 , n=3. Factorial:=3*factorial(2); => Perlu Pemanggilan Ke-4
Ke-4, n=2. Factorial:=2*factorial(1); => Perlu Pemanggilan Ke-5
Ke-5, n=1. Factorial:=1;
Ke-4 menjadi : Factorial:=2*1; (=2)
Ke-3 menjadi: Factorial:=3*2; (=6)
Ke-2 menjadi: Factorial:=4*6; (=24)
Ke-1 menjadi: Factorial:=5*24; (=120)

Tidak ada komentar: