๐ Daftar Isi
Lingkup Identifier
Lingkup identifier meliputi bagian-bagian program dimana sebuah identifier masih bisa diakses.
Lingkup idenfier meliputi:
- Lokal
- Global
Lokal Identifier
Identifier lokal adalah identifier yang dideklarasikan di dalam fungsi/prosedur, termasuk parameter. Lokal identifer ini hanya berlaku di dalam fungsi/prosedur tersebut.
Global Identifier
Identifier global adalah identifier yang dideklarasikan di luar fungsi/prosedur. Ruang lingkupnya meliputi seluruh program setelah dideklarasikan. Disarankan tidak banyak menggunakan identifier global karena:
- Jika program semakin besar, kecenderungan error semakin besar
- Sulit melacak bila terjadi kesalahan
- Setiap fungsi dapat mengubah nilai variabel tersebut sehingga sulit terjaga nilainya.
Contoh Jangkauan
program jangkauan;
var x,y:integer;
function fungsi1(x:real):real;
var y:real;
begin
...
end;
procedure pro;
var x,y,z:integer;
begin
...
end;
var a,b:integer;
begin
...
end.
Dari contoh di atas, terdapat beberapa identifier, berikut penjelasannya:
- Identifier x,y setelah judul program memiliki jangkauan sampai akhir program. Artinya, identifier ini berlaku di dalam subprogram juga. (identifier global)
- Identifier a,b sebelum blok begin dan end di program utama memiliki jangkauan mulai awal identifier ini dideklarasikan hingga berakhirnya program. (identifier global)
- Identifier y pada fungsi fungsi1 memiliki jangkauan hanya dalam fungsi tersebut saja (identifier lokal)
- Identifier x,y,z pada prosedur pro memiliki jangkauan hanya dalam prosedur tersebut saja (identifier lokal)
Parameter
Jenis Parameter
- Formal : parameter dimana fungsi/prosedur dideklarasikan
- Aktual : parameter dimana fungsi/prosedur digunakan
Transfer Parameter
- By-Value : yang dikirim ke modul lain atau ke program utama adalah nilai datanya
- By Location/By Reference : yang di transfer ke modul lain atau program utama adalah alamat memorinya.
Contoh Transfer Parameter
program transfer1;
uses crt;
procedure tukar(x,y:integer);
var z:integer;
begin
z:=x; x:=y; y:=z;
end;
var a,b:integer;
begin
clrscr;
a:=2; b:=9;
tukar(a,b);
writeln('a = ',a,' b = ',b);
readln;
end.
Pada contoh di atas output yang dihasilkan tidak merubah nilai a dan b. Karena transfer parameter yang digunakan adalah by value bukan by reference. Sehingga nilai yang dikirim ke program utama akan sama.
program transfer2;
uses crt;
procedure tukar(var x,y:integer);
var z:integer;
begin
z:=x; x:=y; y:=z;
end;
var a,b:integer;
begin
clrscr;
a:=2; b:=9;
tukar(a,b);
writeln('a = ',a,' b = ',b);
readln;
end.
Berbeda dengan contoh sebelumnya, program ini menggunakan transfer parameter by reference sehingga nilai a dan b akan bertukar, a = 9 dan b = 2. Proses pertukaran ini terjadi di subprogram prosedur dengan menggunakan variabel tambahan “z” untuk menyimpan nilai sementara.
Materi Lengkap
Silakan baca juga beberapa artikel menarik kami tentang Subprogram, daftar lengkapnya adalah sebagai berikut.