THAM SỐ TRỊ VÀ THAM SỐ BIẾN
lượt xem 15
download
THAM SỐ TRỊ VÀ THAM SỐ BIẾN Trong khai báo ở đầu của chương trình con, các tham số hình thức có từ khóa Var đứng trước gọi là tham số biến, ngược lại, nếu không có từ khóa Var đi trước thì gọi là tham số trị. Ví dụ, trong khai báo hàm tính lũy thừa zk, ta viết : Function Lt(z : Real ; k: Byte) : Real; thì z và k đều là các tham số trị hình thức . Còn theo khai báo của thủ tục Doicho : Procedure Doicho(Var u, v : Real) ; thì...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: THAM SỐ TRỊ VÀ THAM SỐ BIẾN
- THAM SỐ TRỊ VÀ THAM SỐ BIẾN Trong khai báo ở đầu của chương trình con, các tham số hình thức có từ khóa Var đứng trước gọi là tham số biến, ngược lại, nếu không có từ khóa Var đi trước thì gọi là tham số trị. Ví dụ, trong khai báo hàm tính lũy thừa zk, ta viết : Function Lt(z : Real ; k: Byte) : Real; thì z và k đều là các tham số trị hình thức . Còn theo khai báo của thủ tục Doicho : Procedure Doicho(Var u, v : Real) ; thì u và v đều là các tham số biến hình thức. 13.1.1. Tham số trị : 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ó được coi như một biến địa phương, nhận gía trị ban đầu là tham số thực sự được chuyển đến từ chương trình chính qua lời gọi chương trình con. Sau đó chương trình con có
- thể thay đổi giá trị của tham số trị hình thức ở bên trong chương trình con, song điều đó không làm thay đổi gía trị của tham số thực sự. Trong lời gọi chương trình con các tham số trị thực sự có thể là biến, hằ?g hay biểu thức. Ví dụ, muốn tính S= 43, ta viết : S:= Lt(4, 3); hoặc : x:=4; S:= Lt(x, 2+1); trong đó x là biến kiểu thực . Cách thức hoạt động của lệnh S:= Lt(x, 2+1); là như sau: Ðầu tiên các tham số hình thức z và k sẽ được khởi tạo giá trị ban đầu z:=x; và k:=2+1; kết qủa là z=4 và k=3. Kế đó các lệnh trong hàm Lt sẽ tính toán zk và gán kết qủa cho tên hàm, nên Lt=43. Gía trị này được gán tiếp cho S.
- Trước và sau khi thực hiện chương trình con, gía trị của tham số thực sự x không hề bị thay đổi, x vẫn có gía trị là 4. Vậy, các biến được truyền vào chương trình con dưới dạng tham số trị thì không bị thay đổi. Nói cách khác, mọi sự thay đổi của tham số trị hình thức trong chương trình con không làm thay đổi gía trị của tham số thực sự tương ứng được truyền vào từ chương trình chính. 13.1.2. Tham số biến : Trong lời gọi chương trình con các tham số biến thực sự chỉ có the?là biến, không the?là hằ?g hay biểu thức. Ví dụ, các lệnh sau đây là sai : Doicho(3, 4); { Sai vì 3 và 4 là các hằng} Doicho(a+1, b); { Sai vì a+1 là một biểu thức} Giả sử trong chương trình chính có hai biến thực a, b có gía trị a=4 và b=3. Ðể hoán đổi gía trị của a và b ta dùng lệnh: Doicho(a, b);
- Vì u và v là các tham số biến hình thức nên chương trình con sẽ đồng nhất u với a và đồng nhất v với b. Mọi thay đổi của tham số u trong chương trình con đều là thay đổi của chính biến a, tương tự, mọi thay đổi của tham số v đều là thay đổi của chính biến b. Kết qủa là trước khi gọi thủ tục Doicho(a,b) thì a=3, b=4, sau khi thực hiện thủ tục xong thì a=4, b=3. Vậy, các biến được truyền vào chương trình con dưới dạng tham số biến thì sẽ thay đổi theo tham số biến hình thức tương ứng trong chương trình con. Thông thường, ta dùng tham số biến khi muốn nhận lại một gía trị mới sau khi thực hiện chương trình con. Bây giờ ta hiểu tại sao trong thủ tục Saptang thì N là tham số trị còn X là tha m số biến: Procedure SapTang( Var X : Kmang ; N: Integer); N là số phần tử của mảng X thì không cần thay đổi, còn mảng X thì lại cần thay đổi để trở thành một dãy tăng. Nếu ta bỏ từ khóa Var trước X đi, tức là: Procedure SapTang( X : Kmang ; N: Integer);
- thì lệnh : Saptang(A, N); sẽ không làm thay đổi dãy A. Thực chất của sự truyền tham số đối với các tham số biến là sự truyền địa chỉ. Chương trình con sẽ dùng các ô nhớ của chính các biến đượ? truyền vào dưới dạng tham số biến. Ví dụ 13.1: Trong chương trình dưới đây, thủ tục 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 gía trị của hai biến x, y của chương trình chính 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; Writeln(‘a= ’, a); Writeln(‘b= ’, b); End; BEGIN x:=4; y:=7; TT(x,y); {14} Writeln(‘x= ’, x); {15} Writeln(‘y= ’, y); {16} Readln; END. Chạy Chép tập tin nguồn
- Trước khi gọi thủ tục TT thì x=4, y=7. Khi gọi thủ tục TT(x, y); thì các tham số hình thức a, b được gán a:=x; b:=y; nên a=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ệnh: Writeln(‘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 trở lại chương trình chính làm tiếp các lệnh {15} và {16} : Writeln(‘x= ’, x); sẽ in ra x = 4 Writeln(‘y= ’, y); sẽ in ra y =15 Như vậy, x được truyền vào chương trình con thông qua tham số trị a nên mọi sự thay đổi của a trong chương trình con đều không ảnh hưởng gì đến x. Ngược lại, biến y được truyền vào chương trình con thông qua tham số biến b nên mọi sự thay đổi của b trong thủ tục TT đều kéo biến y thay đổi theo. Tính chất trên đây của tham số biến cho phép khai thác thêm các khả năng của thủ tục và hàm. Ta biết thủ tục không trả về gía trị nào thông qua tên nó, còn hàm thì trả về một gía trị duy nhất qua tên hàm. Song một chương trình
- con hoàn toàn có thể trả về hai hay nhiều gía trị thông qua các tham số biến, như ví dụ 13.2. Ví dụ 13.2: Chương trình sau nhập vào hai cạnh a, b của hình chữ nhật và sử dụng một thủ tục để tính cả diện tích và chu vi. PROGRAM VIDU13_2; { Tính diện tích S và chu vi L của HCN theo 2 cạnh a, b} Var a,b, S, L: Real; Procedure TINH( c1, c2 : Real ; Var DT, CV : Real); { Tính diện tích DT và chu vi CV theo hai cạnh c1 và c2} Begin DT:=c1*c2; CV:=2*(c1+ c2); End; BEGIN
- Write(‘ Nhập hai cạnh a, b: ‘); Readln(a,b); TINH(a, b, S, L); {12} Writeln(‘Dien tích= ’, S:4:1); Writeln(‘Chu vi = ’, L:4:1); Readln; END. Chạy Chép tập tin nguồn Vì thủ tục TINH cần phải trả về hai gía 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 chính, ta khai báo hai biến tương ứng là S và L. Sau khi nhập hai cạnh a, b và gọi thủ tục : TINH(a, b, S, L); {12} thì c1:=a; c2:=b; biến S đồng nhất với DT, biến L đồng nhất với CV. Thành ra, khi tính diện tích DT và chu vi CV thì S và L cũng được tính ( S=DT,
- L=CV ). Khi thực hiện xong thủ tục TINH, các tham số c1, c2, DT, CV không tồn tại trong bộ nhớ nữa, song hai biến S và L vẫn còn tồn tại cho đến khi kết thúc chương trình. Vì thế, trong chương trình chính, ta in S và L, chứ không in DT và CV.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình Các hệ cơ sở tri thức: Phần 1
93 p | 249 | 88
-
Bài giảng Các hệ cơ sở tri thức (KBS: Knowledge Based Systems) - Trần Nguyên Hương
105 p | 253 | 47
-
Bài 11 THỦ TỤC VÀ HÀM
53 p | 228 | 43
-
Lập trình hướng đối tượng C++ - Chương 4
8 p | 135 | 42
-
Bài giảng Xử lý thống kê với phần mềm SPSS - Bài 2: Ước lượng và kiểm định giá trị trung bình của một biến chuẩn
12 p | 172 | 27
-
Biên dịch nhân Linux part 4
5 p | 92 | 22
-
Tài liệu trình biên dịch C (ĐH Cần Thơ) part 22
8 p | 107 | 18
-
Bài giảng Phân tích và thiết kế giải thuật: Chương 4 - PGS.TS. Dương Tuấn Anh
36 p | 94 | 12
-
Quản trị dữ liệu lớn trong hệ thống IoT với công nghệ điện toán đám mây, sương mù, biên
14 p | 25 | 10
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 3 - ĐH Công nghiệp Thực phẩm
218 p | 69 | 7
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Lập trình trên SQL Server - TS. Lại Hiền Phương (Phần 2)
49 p | 55 | 6
-
Giáo trình Hệ quản trị cơ sở dữ liệu: Phần 2
115 p | 9 | 6
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 5 - Nguyễn Trường Sơn
72 p | 26 | 4
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 4 - Phạm Nguyên Thảo
67 p | 36 | 3
-
Bài giảng Kỹ thuật lập trình: Bài 2 - TS. Ngô Hữu Dũng
30 p | 51 | 3
-
Bài giảng Hệ quản trị cơ sở dữ liệu MSSQL 2005: Chương 4 - Hồ Thị Anh Đào
42 p | 51 | 2
-
Một phương pháp giải bài toán phát hiện trong mạng radar nhiều vị trí khi tín hiệu từ các đài radar thành phần không độc lập thống kê
7 p | 39 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn