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 ().
• Deklarasi 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:
Posting Komentar