Salam...,
Kali
ini kita akan membahas tentang Units.
Units adalah suatu Perintah dalam
pemograman Pascal seperti Crt yang
paling sering digunakan . Apa yang berbeda dengan Units? Units memiliki
struktur seperti ini:
unit what;
interface
uses ....
var
... { Visible global variables }
{ Procedures & functions definitions }
procedure myproc;
function myfunc: word;
:
:
implementation
var
... { Invisible global variables }
procedure myproc;
begin
: { the routines }
:
end;
function myfunc:word;
begin
: { the routines }
:
end;
:
: { other procedure's /
function's routines }
:
begin
: { Initialization code }
:
end.
Itu
adalah struktur, Bagian antarmuka berisi definisi prosedur atau fungsi dan
variabel. Semua definisi (prosedur, fungsi, dan variabel) di bagian ini
terlihat dengan pengguna Units, Ini berarti bahwa pengguna yang menempatkan Units dalam Clause mereka dapat
memanggil prosedur / fungsi dan dapat dengan mudah mengubah variabel.
Bagian
Pelaksanaan berisi isi dari semua prosedur dan variabel terlihat atau tidak.
Deklarasi variabel di bagian ini tidak terlihat. Berarti bahwa pengguna tidak
dapat memodifikasi, Hanya prosedur atau fungsi di dalam Units saja yang bisa diganti.
Perhatiankan:
Nama Satuan harus mematuhi nama file.
Lihat
contoh ini:
unit myunit;
interface
uses crt;
var
x : byte;
y,z : integer;
procedure a;
procedure b;
function c:byte;
implementation
var
p,q,r : shortint;
procedure a;
begin
:
:
end;
procedure d;
begin
:
:
end;
procedure b;
begin
:
:
end;
function c: byte;
begin
:
:
end;
procedure e;
begin
:
:
end;
begin
: { Initialization code }
:
end.
Misalkan
saya membuat program dengan menggunakan perintah Units di atas:
uses myunit;
var
n : byte;
begin
a; { legal }
b; { legal }
n:=c; { legal }
x:=1; { legal }
y:=-1; { legal }
z:=14; { legal }
d;
{ illegal, because it is invisible }
e; { illegal, because it is invisible }
p:=-1; { illegal, because it is invisible }
end.
Perintah
ini bisa memanggil prosedur a, b, c dan fungsi, tapi tidak prosedur d, dan e.
Akses ke variabel x, y, dan z adalah legal, tetapi tidak untuk p, q, dan r.
Prosedur
d dan e yang hanya dapat dipanggil INSIDE Units
, misalnya prosedur b memanggil prosedur d . sama seperti program, i.e. d
dapat memanggil a, tapi a tidak bisa memanggil
d.
Jika
Anda memiliki prosedur atau fungsi yang dibuat dan Anda berpikir bahwa Anda
akan menggunakannya di masa depan, Anda tempatkan dalam satu Units sehingga Anda dapat menggunakannya
kembali. Mulai memikirkan prosedur atau fungsi yang akan sering Anda gunakan,
kemudian tempatkan dalam sebuah Units.
Ini adalah contoh Units yang
sederhana, tetapi bekerja!
unit myunit;
interface
uses crt;
procedure clearbkgr(color : byte);
procedure makewindow(x1, y1, x2, y2, color : byte);
procedure writexy(x, y : byte ; mess : string);
function
ucase(st:string):string;
implementation
procedure clearbkgr(color : byte);
begin
textbackground(color);
clrscr;
end;
{ Invisible to unit user, this is internal function }
function fill(s : string; count : byte; what: char):string;
begin
fillchar(s,count+1,what);
s[0]:=chr(count);
fill:=s;
end;
procedure makewindow(x1, y1, x2, y2, color : byte);
var
s : string;
i : byte;
begin
textattr:=color;
s:=fill(s,x2-x1-1,#205);
gotoxy(x1,y1);
write(#201+s+#187);
gotoxy(x1,y2);
write(#200+s+#188);
s:=fill(s,x2-x1-1,' ');
s:=#186+s+#186;
for i:=1 to y2-y1-1 do
begin
gotoxy(x1,y1+i); write(s);
end;
end;
procedure writexy(x, y : byte; mess : string);
begin
gotoxy(x,y); write(mess);
end;
function ucase(st:string):string;
var
i : byte;
begin
for i:=1 to length(st) do
st[i]:=upcase(st[i]);
ucase:=st;
end;
begin
{ Leave this empty if you
don't have any initialization code }
end.
Initialization
codes. Jika Anda berpikir melakukan Units ini untuk sering digunakan, Anda
dapat melakukannya di block begin...end. Ini mirip dengan kode persiapan, yaitu
mengatur Units. Sebagai contoh: Anda merasa bahwa beberapa variabel perlu
diatur, lakukan di bagian tersebut. Jika Anda memerlukan beberapa kebutuhan
kode setup yang akan didirikan, melakukannya juga dengan cara yang sama. Kode
inisialisasi dilakukan sebelum blok begin...end program utama yang digunakan Units.
Misalkan
program seperti ini:
:
:
uses unit_a, unit_b, unit_c;
:
:
:
begin
:
:
end.
Kode
inisialisasi di unit_a dilakukan terlebih dahulu, kemudian unit_b, kemudian
unit_c, kemudian begin...end.
53
2 ------ 1 (53 mod 2 = 1)
26 (53 div 2 = 26)
2 ------ 0 (26 mod 2 = 0)
13 (26 div 2 = 13)
2 ------ 1 (13 mod 2 = 1)
6 (13 div 2 = 6)
2 ------ 0 ( 6 mod 2 = 0)
3 ( 6 div 2 = 1)
2 ------ 1 ( 3 mod 2 = 1)
1
( 3 div 2 = 1)
Berhenti
di sini, sejak 1 kurang dari 2. Jadi bentuk biner dari 53 adalah 110101.
Lihatlah contoh ini:
100 /|\
41 37
2 ------ 0 | 2 ---- 1 2 ---- 1
50 |
20 18
2 ------ 0 | 2 ---- 0 2 ---- 0
25 |
10 9
2 ------ 1 | 2 ---- 0 2 ---- 1
12 |
5 4
2 ------ 0 | 2 ---- 1 2 ---- 0
6 |
2 2
2 ------ 0 | 2 ---- 0 2 ---- 0
3 |
1 1
2 ------ 1 |
1
| Direction to read
Jadi,
100 adalah 110.100 dalam biner, 41 adalah 101001, dan 37 adalah 100101.
Sekarang, bagaimana mengkonversi biner digit (bit) ke desimal? Misalkan kita
memiliki:
1010010
= 1 x 26 + 1 x 24 + 1 x 21 = 64+16+2 = 82
0100001
= 1 x 25 + 1 x 20 = 32+1 = 33
0111100
= 1 x 25 + 1 x 24 + 1 x 23 + 1 x 22 = 32+16+8+4 = 60
Lebih
pendek:
1001
= 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = 8+0+0+1 = 9
1011
= 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 = 8+0+2+1 = 11
Jika
Anda ingin mengkonversi nomor ke heksadesimal, itu hanya mirip, tapi mengubah
pembagi 2 menjadi 16, seperti ini:
100 41 53 37
47
16 ----- 4 16 ---- 9 16 ------ 5 16 ---- 5
16 ---- 15
6 2 3 2 2
Berarti
100 = 64 hex, 41 = 29 hex, 53 = 35 hex, 37 = 25 hex, 47 = 2F hex Setiap angka
melebihi 9 diterjemahkan seperti ini:
10
into A
11 into B
61 44 58
12 into C
16 ------ 13 16 ------ 12 16 ------ 10
13 into D
3 2 3
14 into E
61 = 3D hex 44 = 2C hex 58 =
3A hex
15 into F
Konversi
kembali ke desimal adalah sama:
- 3D Hex
= 3 x 161 + 13 x 160 = 48 + 13 = 61
- 67 Hex
= 6 x 161 + 7 x 160 = 96 + 7 = 103
- 103 Hex = 1 x 162 + 0 x 161 + 3 x 160 = 256 + 0 + 3 = 259
Demikian sedikit penjelasan tentang pemakaian perintah Units dalam pemograman Pascal, silahkan anda kembangkan lagi.
Salam...,
No comments:
Post a Comment