chương trình con
CHƯƠNG TRÌNH CON- THỦ TỤC VÀ HÀM Khái niệm về : Chương trình con là một chương trình nằm bên trong một chương trình khác. Chương trình con có 2 loại: Thủ tục (Procedure) và hàm (Function): Thủ tục (PROCEDURE): Dùng để thực hiện một hay ...
CHƯƠNG TRÌNH CON- THỦ TỤC VÀ HÀM
- Khái niệm về :
Chương trình con là một chương trình nằm bên trong một chương trình khác. Chương trình con có 2 loại: Thủ tục (Procedure) và hàm (Function):
- Thủ tục (PROCEDURE): Dùng để thực hiện một hay nhiều nhiệm vụ nào đó.
- Hàm (FUNCTION): Trả về một giá trị nào đó (có kiểu vô hướng, kiểu string hoặc kiểu con trỏ). Hàm có thể sử dụng trong các biểu thức.
Chương trình con được dùng rộng rãi khi xây dựng các chương trình lớn nhằm làm cho chương trình dễ theo dõi, dễ sửa chữa, có thể phân mảnh chương trình cho nhiều người làm. Một đặc điểm nổi bật của là nó có tính đệ quy nhờ thế mà nhiều bài toán được giải quyết dễ dàng.
CẤU TRÚC CHUNG CỦA MỘT CHƯƠNG TRÌNH CÓ SỬ DỤNG CHƯƠNG TRÌNH CON:
PROGRAM Tên_chương_trình;
USES CRT;
CONST ............;
TYPE ............;
VAR ............;
PROCEDURE THUTUC[(Các tham số)];
[Khai báo Const, Type, Var]
BEGIN
..............
END;
FUNCTION HAM[(Các tham số)]:<Kiểu dữ liệu>;
[Khai báo Const, Type, Var]
BEGIN
..............
HAM:=<Giá trị>;
END;
BEGIN {Chương trình chính}
...................
THUTUC[(...)];
...................
A:= HAM[(...)];
...................
END.
Chú ý: Trong quá trình xây dựng CHƯƠNG TRÌNH CON, khi nào thì nên dùng thủ tục/hàm?
Dùng hàm | Dùng thủ tục |
- Kết quả của bài toán trả về 1 giá trị duy nhất (kiểu vô hướng, kiểu string hoặc kiểu con trỏ).- Lời gọi CHƯƠNG TRÌNH CON cần nằm trong các biểu thức tính toán. | - Kết quả của bài toán không trả về giá trị nào hoặc trả về nhiều giá trị hoặc trả về kiểu dữ liệu có cấu trúc (Array, Record, File).- Lời gọi CHƯƠNG TRÌNH CON không nằm trong các biểu thức tính toán. |
( ví dụ n!, tìm điểm đối xứng)
Ví dụ 1.1: Viết CHƯƠNG TRÌNH CON để tính n! = 1.2...n.
Function GiaiThua(n:integer):integer;
Var P, i:integer;
Begin
P:=1;
For i:=1 To n Do P:=P*i;
GiaiThua:=P;
End;
Ví dụ 1.2: Viết để tìm điểm đối xứng của điểm (x,y) qua gốc tọa độ.
Procedure DoiXung(x,y:Integer; Var xx,yy:Integer);
Begin
xx:=-x;
yy:=-y;
End;
CHÚ Ý: Trong 2 ví dụ trên:
n, x, y được gọi là tham trị (không có từ khóa var đứng trước) vì sau khi ra khỏi giá trị của nó không bị thay đổi.
xx, yy được gọi là tham biến (có từ khóa var đứng trước) vì sau khi ra khỏi giá trị của nó bị thay đổi.
- Tham số trong :
Các có thể không cần tham số mà chỉ có các biến riêng (biến cục bộ). Trong trường hợp cần nhận các giá trị mà chương trình mẹ truyền cho thì cần phải có các tham số.
Tham số thực là những giá trị lưu trữ trong các biến toàn cục của chương trình mẹ, được truyền cho các thủ tục hoặc hàm thông qua lời gọi tên của chúng.
Tham số được khai báo ngay sau tên được gọi là tham số hình thức. Tham số hình thức gồm:
- Tham biến:
Tham biến là những giá trị mà nhận từ chương trình mẹ, các giá trị này có thể biến đổi trong và khi kết thúc các giá trị này được trả về cho tham số thực.
Cách khai báo tham biến:
Tên (Var tên tham biến: kiểu dữ liệu);
- Tham trị:
Tham trị là những tham số truyền vào cho xử lý nhưng khi quay về chương trình mẹ vẫn phải giữ nguyên giá trị ban đầu.
Tên (tên tham trị: kiểu dữ liệu);
- Truyền tham số cho :
Khi tham số hình thức trong là tham biến thì tham số thực trong chương trình mẹ phải là biến chứ không thể là hằng. Trong mọi trường hợp cả hai tham số thực và tham số hình thức đều phải cùng kiểu dữ liệu…(các tham biến khi ra khỏi giá trị thay đổi).
Khi tham số hình thức là tham trị thì tham số thực phải là một giá trị.
- Biến toàn cục và biến địa phương:
- Biến toàn cục: là các biến được khai báo trong chương trình chính. Các biến này có tác dụng ở mọi nơi trong toàn bộ chương trình.
- Biến địa phương: là các biến được khai báo trong các . Các biến này chỉ có tác dụng trong phạm vi đó mà thôi.
Chú ý: Trong một , nếu biến toàn cục trùng tên với biến địa phương thì biến địa phương được ưu tiên hơn.
Ví dụ 1.3:
Program KhaoSatBien;
Var a,b: Integer; {biến toàn cục}
Procedure ThuBien;
Var a: Integer; {biến địa phương}
Begin
a:=10;
Writeln(‘A=’,a,’B=’,b);
End;
Begin
a:=50;
b:=200;
ThuBien; {A=10 B=200}
Writeln(‘A=’,a,’B=’,b); {A=50 B=200}
End.
- Tính đệ quy của :
Thông thường lời gọi một chỉ được thực hiện khi đó đã được thiết kế hoàn chỉnh. Tuy nhiên, Pascal còn cho phép một ngay khi trong quá trình xây dựng lại có thể gọi tới chính nó, tính chất này được gọi là “Đệ quy của ”.
- Lời gọi :
Một chương trình mẹ có nhiều trực thuộc, bên trong mỗi lại có thể có các riêng. Khi thiết kế, mỗi phải là một khối riêng biệt hoặc có thể có các lệnh nhảy Goto từ này tới khác.
- Gọi từ trong chương trình mẹ:
Lời gọi có thể đặt bất kỳ chỗ nào trong chương trình mẹ. Nếu là một thủ tục thì lời gọi có thể tạo nên một câu lệnh, ví dụ:
Readln;
Nếu là hàm thì tên hàm không thể tạo nên một câu lệnh, vì vậy tên hàm phải nằm trong một biểu thức hay trong một thủ tục nào đó. Ví dụ, ta không thể viết:
Sqrt(9);
gọi hàm như sau là hợp lệ: a:=sqrt(9)+5;
- Gọi từ