Tham Bien Tham Tri

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 11

THAM SỎ TRỊ VÀ THAM SỎ BIÉN

Trong khai báo ờ dầu cUa chương trình con,các tham số hlnh thửc có tà•

khóa Var đứng tniớc gọi là tham sổ biến, ngược lại, nếu không có ưr khoa

Var đi tru٠ớc thi gọi là tham số trị.

Vi dụ,trong khai báo hàm tinh lũy thửa zk,ta viết:

Fwction Lt(z ‫ ذ‬Real; k: Byte) ‫ ؛‬Real; thl

z và k đều là các tham số trị hình thức .

Còn theo khai bao của thủ tục Doicho :

Procedure Doicho(Var u, V : Real);

thl u và V đều là các tham số biến hình thức.

.13.1.1• Tham số tri:


٠

Tham số trị hình thức được cấp một ô nhớ riêng khi chương trình con được

gọi và bị xóa bỏ khi chương trình con chạy xong. Nỏ dược coi như một biến địa

phương, nhận gia trị ban đầu là tham số thực sự được chuyền đến tà٠ chương

trình chinh qua lời gọi chương trình con. Sau đó chương trinh con cỏ
thể thay dổi giá 仕 ‫ ؛‬của tham số trị hlnh thức ở bên trong chương trình con ,

song điều dó không làm thay đối gia trị cUa tham số thực sự.

Trong lơi gọi chương trinh con các tham so trị thực sự có thê là bien, hầ?g

hay bíểu tiĩưc.

Vi dụ, muốn tinh s= 4١, ta viết: տ:=և(4, 3);


hoặc :

x:jị;

s:= U(x, 2+1);

trong đó X là bien kieu thực .

each thức hoạt động của lệnh s:= Lt(x,2+1); là như sau:

Đầu tiên các tham số hlnh thửc z và k sẽ dược khơi tạo giá trị ban dầu
r
z:=x; và k:=2+l; kêt qủa là z^ị và k=3.

ke dó các lệnh trong hàm Lt sẽ tinh toán và gán kết qUa cho tên ham,
Ղ Ị

nên Lt=4 . Gia trị này dược gán tỉêp cho s.


Trước và sau khi thụ.c hỉện chương trình con,gia trị cUa tham số thực sự X

không hề bị tky đổi, X vẫn có gia tri là 4.

Vậy, các biến được truyền vào chương trinh con dưới dạng tham số trị thi

khống bị thay đổi. Nói cách khác, mọi ՏԱ thay đổi của tham so trị hình thức

trong chương trình con không làm thay dôi gia trị của xơ 认和 tương
١

ứng được truyen vào từ chương trinh chinh.

• 13.1.2. Tham số biến :

f ,

Trong lơi gọi chương trinh con các tham so men thực sự chi có the?là biến,

không էե?1ձ hà?g hay bìểu thức.

Yí dụ,các lệnh sau đây là saỉ :

Doìcho(3, 4); { Sai vi 3 và 4 là các hằng)

Doicho(a+l, b); { Sai vi a+1 ỉà một biểu thức}

Giả sử trong chương trình chinh co haỉ bien thực a,b cỏ gia trị a=4 và
Դ Դ
b=3. Đê hoán aoi gia trị của a và b ta dùng lệnh:

Doicho(a, b);

Vi u và V là các tham số biến hình thức nên chương trinh con sẽ đồng Ểất u

với a và dồng nhất V với b. Mọi thay dổi cúa tham số u trong chương trình con
đều là thay đồi của chinh biến a, tuơng tụ٠, mọi thay đổi của tham số V đều là

thay đổi của chíỂ biến b. Ket qua là trước khi gọi thủ tục Doicho(a,b) thi a=3,

b=4, sau khi thực hiện thủ tục xong thl a b=3.

Vậy, các bien được truyền vào chương trinh con dưới dạng tham sổ bìến

con.

Thông thường,ta dùng tham số biến khi muốn nhận lại một gia trị mới sau khi

thực hiện chương trình con.

Bây giờ ta hieu tại sao trong thủ tục Saptang thl N là tham số trị còn X là

tham só bien:

Procedure SapTang( Var X ‫ ذ‬Kmang ; N: Integer);


thi lệỂ :

Saptang(A,N);

sẽ không làm thay dổi dãy A.

Thực chất của sự truyền tham số đốì với các tham số biến là sự truyền địa じ

みム Chương trình con sẽ dùng các ô nhớ cUa chinh các biến dượ? truyền vào

dưới dạng tham số biến.


«Vi dụ 13.1: Trong chương trình dươi dây,thủ TT cỏ hai tham số a và b : a là

tham số trị còn b là tham số biến. Hãy xem sự thay đổi gia trị của hai bien X, y

cua chương trinh chinh trước và sau khi gọi thủ tục TT: PROGRAM VIDU13.1;

Var

X, y‫ ؛‬Integer;

PROCEDURE TT( a : integer ‫ ؤ‬Var b : integer);

Begin

a:=a+6;
b:=b+8;

Writel٠(،a= % a);

Writel٠(،b= % b);

End;

BEGIN

x:=4;
y:=7;

TT(x,y); {14}

Wrìteln(‘x= ’,X); {15}

Writeln(،y: % y); {16}

Readin;

END.

Chép tap tin nguon <VD13 l.PAS>

Chav<VD13 l.EXE>
Tru٠ớc khi gọi thủ tục TT thi x=4, y=7.

Khi gọi thú tục TT(x١ y); thi các tham số hình thức a, b dược gán շլ :պ;

b:=y; nên ẵ=4) và b=7. Các lệnh trong thú tục a:=a+6; và b:=b + 8; sẽ làm

thay đối các tham số a và b : a=10, b=15, và do đó hai lệỂ:

Wr٤teln(،a= % a); sẽ in ra a = 10 Writeln(‘b= ’,b); sẽ in ra b = 15

Thực hiện xong thủ thục TT,máy trO lại chương trình chinh làm tiếp các lệnh

{15} và {16}:

Wr٤teln(‘x= ١,X); sẽ in ra X = 4 Wrỉteln(،y= % y); sẽ in ra y =15


١ Հ

Như vậy, X dược truyên vào chương trinh con thong qua tham sô trị a nên mọi

sụ٠ thay dổi của a trong chương trình con dều không ảnh hưởng gi dến X. Ngugc

lại, biến y được truyền vào chương trinh con thong qua tham số biến b nên mọi

sự thay dổi của b trong thủ tục TT đều kéo biến y thay dối theo. Tinh chất trên

đây cUa tham số biến cho phép khai thác thêm các kha năng
f X
của thii và hàm. Ta biêt thủ tục không trả vê gia trị nào thông qua tên nó,
X ք
còn hàm thi trả vê môt gia tri duy nhat qua tên hàm. Song môt chươnR trinh con
hoàn toàn có thề trả về hai hay nhiều gia trị thông qua các tham số biến, như
vi dụ 13.2.
٠VÍ dụ 13.2: Chương trinh sau nhập vào hai cạnh a,b cUa հ、ւոհ chữ nhật
và sử dụng một thú tục để tíỂ cả diện tích và chu vi.

PROGRAM VIDƯ13_2;

{ Tinh dỉện tích s và chu vi L cUa HCN theo 2 cạnh a, b}

Var

a,b, s, L: Real;

Procedure TINH( cl, c2 ‫ ؛‬Real; Var DT, cv : Real);

{ Tinh dỉện tích DT và chu vỉ cv theo hai cạnh cl và c2}

Begin

DT:=cl*c2;

CV:=2*(cl+c2);

End;
BEGIN
Wrỉte(، Nhập hai cạnh a, b:،);

Readỉn(a,b);
TINH(a,b,S,L); {12)

Writeln(،Dien tích= % S:4:l);

Writeln(،Chu vi = % L:4:l);

Readỉn;

END•

Chạy <|3]‫>ا‬

Chép tập tin nguồn <VD13 2.PAS>


١ X

w thủ TINH cân phải trả vê hai gia trị diện tích và chu vi nên ta khai

báo hai tham số biến là DT và cv. Trong chương trình chinh,ta khai báo hai
r

bien tu٠ơng ứng là s và L. Sau khi nnạp hai cạnh a, b và gọi tnu tục :

TINH(a,b,S,L); {12}

thi cl :=a; c2:=b; bien s aong nhất với DT, biến L aong nhất với cv. Thành

ra,khi tinh dỉện tich DT và chu vi cv thi s và L cũng dược tinh ( S=DT,

L^cv )_ Khi thực hiện xong thủ ^ic TINH,các tham số cl,c2, DT, cv không
tồn tại trong bộ nhớ nữa,song hai biến s và し vẫn còn tồn tại cho áến khi kết
thúc chương trình. W thế, trong chương trình chinh,ta in s và L,chử

khônginDTvàCV.

You might also like