Chương trình con - Thủ tục và hàm - Pdf 63

Trường ðại học Nông nghiệp 1 - Giáo trình Lập trình nâng cao ..............................................................-
3
Chương I

Chương trình con - Thủ tục và hàm Khái niệm chương trình con ñã ñược trình bày trong môn học Tin học ñại cương, do vậy
trong chương này chúng ta nhắc lại sơ qua một số khái niệm cũ và dành thời gian cho việc tìm
hiểu sâu về tham số (tham biến và tham trị), lời gọi chương trình con, cách thức bố trí
chương trình con trong thân chương trình mẹ. Sau khi học chương này bạn ñọc cần nắm ñược
các nội dung chủ yếu sau:
 Thế nào là biến toàn cục, biến ñịa phương
 Các biến toàn cục và biến ñịa phương ñược bố trí ở ñâu
 Tầm tác dụng của từng loại biến
 Thứ tự xây dựng các chương trình con có ảnh hưởng thế nào ñến toàn bộ chương
trình
 Thế nào là tính ñệ quy của chương trình con
 Lời gọi chương trình con thế nào là ñược phép
 Cách khai báo trước ñể gọi chương trình con không theo thứ tự thiết kế
CONST (*Khai báo hằng*)
TYPE (*ñịnh nghĩa kiểu dữ liệu mới*)
VAR (*khai báo biến*)

PROCEDURE Tên_CTC1 (danh sách tham số hình thức);
Begin
............ (*thân thủ tục thứ nhất*).
End;

PROCEDURE Tên_CTC2 (danh sách tham số hình thức);
Begin
................... (*thân thủ tục thứ hai*)
End; Trường ðại học Nông nghiệp 1 - Giáo trình Lập trình nâng cao ..............................................................-
5

FUNCTION Tên_HAM1(danh sách tham số hình thức):kiểu hàm;
Begin
............... (*thân hàm thứ nhất*)
End;
...........

BEGIN (*bắt ñầu chương trình mẹ*)
..........
END.

Ghi chú:
1. Các chương trình con về nguyên tắc cũng bao gồm các phần khai báo báo như ñối

Trường ðại học Nông nghiệp 1 - Giáo trình Lập trình nâng cao ..............................................................-
6

PROCEDURE VIDU(x,y,z: integer; lam:boolean; var qq: char);
Câu lệnh khai báo chương trình con trên ñây ñồng thời khai báo các tham số hình thức
trong ñó x, y,z, lam là các tham trị, với x, y,z có kiểu integer, lam có kiểu boolean, qq là tham
biến vì nó ñược viết sau từ khoá VAR.

Ví dụ 1.1: Lập chương trình tìm số lớn nhất trong n số nguyên ñược nhập từ bàn
phím.

Program Tim_cuc_dai;
Uses Crt;
TYPE dayso = array[1..100] of integer;
(* ðịnh nghĩa kiểu dữ liệu dayso là kiểu mảng
g
ồm nhiều nhất là 100 phần tử*).

VAR a: dayso
(*khai báo biến của chương trình mẹ*)
n: integer;
PROCEDURE nhapso(m:integer; var x:dayso);
(* Nhập dãy số cần tìm cực ñại vào mảng một chiều x[i]*)

Var i : integer;
(*khai báo biến cục bộ của chương trình con*)

Begin
writeln('Nhap day so kieu integer);
For i:=1 to m Do

END.
Trường ðại học Nông nghiệp 1 - Giáo trình Lập trình nâng cao ..............................................................-
7

Ví dụ1.1 là một chương trình bao gồm hai chương trình con, chương trình con thứ
nhất là một thủ tục (Procedure), chương trình con thứ hai là một hàm (Function).
Chương trình mẹ có lệnh ñọc số phần tử n của mảng dayso (tức là số lượng con số sẽ
nhập vào). Vì mảng Dayso ñược khai báo có 100 phần tử nên không thể ñọc vào nhiều quá
100 con số.
Sau ñó là lệnh gọi chương trình con NHAPSO với 2 tham số thực là n, a, ở ñây a là
tham biến nghĩa là giá trị của mảng a sẽ ñược thay ñổi trong chương trình con bởi tham số
hình thức x[i]. Chương trình con nhập vào tham biến x[i] kiểu mảng n con số thông qua tham
trị m (m=n).
Lệnh viết giá trị lớn nhất của dãy số có kèm lời gọi hàm MAX vì hàm MAX thực chất
trong trường hợp này chỉ là một con số.
Hàm MAX dùng ñể tìm số lớn nhất trong các số ñã nhập, lời gọi hàm trong chương
trình mẹ kèm theo việc truyền hai tham số thực là n và a thay thế cho hai tham số hình thức là
m và b. Tên hàm ñược dùng như là một biến trong bản thân hàm khi ta dùng phép gán giá trị
MAX:=t;

Chú ý:
1. Kiểu dữ liệu trong khai báo tham số hình thức chỉ có thể là: số nguyên, số thực, ký
tự, hoặc Boolean. Nếu muốn ñưa các kiểu dữ liệu có cấu trúc vào trong khai báo tham số thì
phải ñịnh nghĩa trước kiểu dữ liệu này ở phần khai báo kiểu sau từ khoá Type (xem ví dụ 1.1).
2. Với kiểu dữ liệu chuỗi, nếu chúng ta khai báo tham số thực trong chương trình mẹ
và tham biến trong chương trình con ñều là STRING (không quy ñịnh ñộ dài tối ña của chuỗi)
thì không cần phải ñịnh nghĩa trước kiểu dữ liệu ở phần TYPE. ðể thấy rõ vấn ñề chúng ta
xét ví dụ sau ñây:

Ví dụ: 1.2

Var s:s1; m:byte
Procedure Chuong_trinh_con( Var a:s1; n:byte);

3. Truyền tham số cho chương trình conTrở lại ví dụ 1.1 ta thấy trong mỗi chương trình con có những tham số riêng của mình.
Chương trình con nhập số ñã sử dụng hai tham số hình thức là m và x. Hai tham số này ñược
chuẩn bị ñể nhận các giá trị mà chương trình mẹ truyền cho thông qua lời gọi chương trình
con với các tham số thực là n và b. Vì m ñược khai báo kiểu không có từ khoá Var nên nó là
tham trị, nghĩa là khi chương trình con kết thúc thì giá trị của tham số thực n vẫn không thay
ñổi, tham số x là tham biến vì nó ñược khai báo sau từ khoá Var.
Khi tham số hình thức trong chương trình con 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 số thực truyền cho tham biến thì giá trị của nó có thể thay ñổi trong chương
trình con, khi ra khỏi chương trình con nó vẫn giữ nguyên các giá trị ñã thay ñổi ñó. Trong ví
dụ 1.1 tham số thực a là một mảng của n phần tử và tất cả các phần tử ñều còn rỗng, khi
truyền a vào tham biến x thì ở thời ñiểm ban ñầu các phần tử của x cũng rỗng. Phép gán trong
chương trình con NHAPSO sẽ làm thay ñổi giá trị các phần tử của x, sau khỏi ra chương trình
con nó giữ nguyên các giá trị ñã gán tức là các giá trị ta nhập từ bàn phím vào các phần tử của
mảng.
Khi tham số hình thức là tham trị thì tham số thực phải là một giá trị. Chương trình
con nhận giá trị này như là giá trị ban ñầu và có thể thực hiện các phép tính làm biến ñổi giá
trị ñó, quá trình này chỉ tác ñộng trong nội bộ chương trình con, khi ra khỏi chương trình con
giá trị của tham số thực không biến ñổi. Cụ thể trong ví dụ trên biến n nhận giá trị ñọc từ bàn
phím trong chương trình mẹ và ñược truyền cho tham số m trong cả hai chương trình con. Sau
lời gọi chương trình con NHAPSO giá trị này có thể bị thay ñổi nhưng khi rời NHAPSO ñến
lời gọi hàm MAX thì n lại vẫn giữ giá trị ban ñầu.
Như vậy nếu muốn bảo vệ giá trị một tham số nào ñó khi truyền chúng cho chương


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status