Biến toàn cục, biến cục bộ và việc truyền dữ liệu – 123docz.net

Biến toàn cục là biến khai báo ở đầu chương trình chính, tồn tại trong suốt thời
gian làm việc của chương trình. Ta có thể sử dụng và làm thay đổi giá trị của biến
toàn cục nhờ các câu lệnh trong chương trình chính cũng như trong tất cả các
chương trình con.

Biến cục bộ là biến là biến khai báo ở đầu chương trình con. Chúng được cấp
phát bộ nhớ khi chương trình con đươc gọi đến và bị xoá khi máy thoát khỏi chương
trình con đó. Biến cục bộ có giá trị trong chương trình con và tất cả các chương
trình con khác nằm trong chương trình con này.

Nếu tên biến cục bộ của một chương trình con trùng với một tên biến toàn cục
thì máy không bị nhầm lẫn, máy sẽ dùng hai ô nhớ khác nhau để lưu trữ hai biến,
khi ra khỏi chương trình con, biến cục bộ tự động được xoá.

Khi gặp một lời gọi đến chương trình con, máy sẽ thực hiện các bước sau:
– Cấp phát bộ nhớ cho các đối, các biến cục bộ.

– Truyền giá trị của các tham số thực sự cho các tham số giá trị tương ứng, truyền
địa chỉ các tham số thực sự ứng với tham số biến cho các tham số biến của thủ tục.

– Thực hiện các lệnh trong chương trình con, trong khi thực hiện chương trình
con, các biến cục bộ và các tham số giá trị có thể bị biến đổi nhưng không ảnh
hưởng đến các biến bên ngoài. Trái lại, mọi thay đổi của tham số biến trong chương
trình con sẽ kéo theo sự thay đổi của tham số thực sự tương ứng (vì có sự truyền
theo địa chỉ). Do đó, khi thoát khỏi chương trình con, các tham số thực sự ứng với
tham số biến vâùn giữ được giá trị mới nhất do chương trình con tạo ra.

– Thực hiện xong các lệnh của chương trình con, máy xoá tất cả các đối và các
biến cục bộ và trở về lệnh kế sau nơi gọi nó.

Trang 46

Việc lấy kết quả thực hiện chương trình con như sau: nếu là hàm thì lấy kết quả

thông qua tên hàm, nếu là thủ tục thì kết quả ở tham số thực sự ứng với tham số
biến. Khi cần lấy duy nhất một giá trị từ chương trình con thì ta lập một

FUNCTION, khi cần lấy từ hai giá trị trở lên từ chương trình con hoặc không lấy
giá trị nào thì ta phải lập PROCEDURE.

4 Ví dụ 1: Lập hàm tính diện tích hình thang. Nhập dữ liệu của hai thửa ruộng

hình thang và tính tổng diện tích hai thửa ruộng.
Var a1, b1, h1, a2, b2 , h2, s : Real;

(************* Bat dau Function **************)
Function DTHinhThang(a, b, h) : Real;

Begin

DTHinhThang := (a + b) * h / 2;
End;

(********* Bat dau chuong trinh chinh **********)
Begin

Write( ‘ Canh dai, ngan va cao cua thua ruong thu nhat: ‘ );
Readln(a1, b1, h1);

Write( ‘ Canh dai, ngan va cao cua thua ruong thu hai: ‘ );
Readln(a2, b2, h2);

s := DTHinhThang(a1, b1, h1) + DTHinhThang(a2, b2, h2);
Writeln( ‘ Tong dien tich hai thua ruong = ‘, s : 0 : 3);

Readln;
End.

4 Ví dụ 2: Lập hàm tính ước số chung lớn nhất (USCLN). Sau đó, dùng hàm này

để tính USCLN và bội số chung nhỏ nhất (BSCNN) của hai số được nhập từ bàn
phím.

Var m, n, usc, bsc: Integer;

(************ Function USCLN *************)
Function USCLN(a, b : Integer): Integer;

Var r : Integer;
Begin

While b < > 0 do
Begin

Trang 47
a := b;

b := r;

End; { a hien tai la USCLN cua a va b ban dau }
USCLN := a;

End;

(********* bat dau chuong trinh chinh *********)
Begin

Write( ‘ Nhap so thu nhat : ‘ );
Readln(m);

Write( ‘ Nhap so thu hai: ‘ );
Readln(n);

usc := USCLN(m, n);

bsc := m * n div USCLN(m, n);

Writeln( ‘ Uoc so chung lon nhat cua ‘, m, ‘ va ‘, n, ‘ la : ‘, usc);
Writeln( ‘ Boi so chung nho nhat cua ‘, m, ‘ va ‘, n, ‘ la :’, bsc);
Readln;

End.

4 Ví dụ 3: Lập một thủ tục để tính đồng thời diện tích và thể tích hình cầu.

Var r, s, v : Real;
Reply : Char;

(************** Function ***************)
Procedure SVHinhCau( r : Real; Var s, v :Real);
Begin

s := 4 * pi * r * r;

v := 4 * pi * r * r * r / 3;
End;

(******** bat dau chuong trinh chinh ********)
Begin

Repeat

Write( ‘ Nhap ban kinh hinh cau : ‘ );
Readln(r);

SVHinhCau(r, s, v);

Writeln( ‘ Dien tich = ‘, s : 0 : 4, ‘. The tich = ‘, v : 0 :4 );
Write( ‘ Ban co tiep tuc khong ?(C/K) ‘ );

Trang 48
Until Upcase(Reply) = ‘K’;

End.