Tin học đại cương - Phần 2 Ngôn ngữ lập trình TURBO PASCAL - Chương 5 doc - Pdf 19

Trư
ờng ðại học Nô
ng nghi
ệp 1
-
Giáo trình
Tin h
ọc

ñ
ại
c
ươ
ng

156156

CHƯƠNG V
CHƯƠNG TRÌNH CON: HÀM VÀ THỦ TỤC

1 - Cấu trúc của hàm và thủ tục


• Lời gọi hàm
Trong thân chương trình chính sử dụng hàm phải có lời gọi hàm.
Lời gọi hàm ñược viết như sau:
Tên_hàm( danh sách các tham số thực sự)
Các tham số thực sự tương ứng cả về số lượng và cả về kiểu dữ liệu với các tham số hình
thức khai báo trong hàm.
Lời gọi hàm ñược coi như 1 biến, có thể tham gia vào biểu thức, tham gia vào các thủ tục
vào/ ra.

Ví dụ1: Chương trình có xây dựng Function
Bài toán : Tính diện tích của tam giác biết 3 cạnh a,b,c.
Trư
ờng ðại học Nô
ng nghi
ệp 1
-
Giáo trình
Tin h
ọc

ñ
ại
c
ươ
ng

157

- Ơ ví dụ 1 ta khai báo hàm có tên là DT có kiểu real, các tham số hình thức của hàm là:
x,y,z. Trong thân chương trình có 2 lời gọi hàm, chúng ñều nằm trong lệnh Writeln. Trong
lời gọi hàm thứ nhất, 3 tham số thực sự là a=2, b=3, c=2. Trong lời gọi hàm thứ hai, 3 tham số
thực sự là a,b,c có giá trị ñược nhập vào từ bàn phím.
b - Cấu trúc của thủ tục (Procedure) và lời gọi thủ tục
• Thủ tục có cấu trúc ñầy ñủ như sau:
Procedure Tên_thủ_tục(Tham_số1 : kiểu; Tham_số2: kiểu; Var tham_số3: kiểu;. . .);
Label {Khai báo các nhãn }
Const { Khai báo các hằng }
Type { ðịnh nghĩa các kiểu dữ liệu của người sử dụng }
Var { Khai báo các biến cục bộ}
Begin
. . . { thân chương trình con }
End;
Các phần nếu có thì theo ñúng thứ tự ñã nêu.
Kiểu của tham số là các kiểu cơ bản, kiểu có cấu trúc như kiểu xâu kí tự và kiểu mang,
nếu là kiểu mảng thì phải khai báo bằng ñịnh nghĩa kiểu ở phần ñịnh nghĩa khiểu ở ñầu
chương trình chính, không ñược khai báo trực tiếp.
Trong chương trình chính thủ tục ñứng trước thân chương trình chính, sau khai báo biến.
Các tham số khai báo trong hàm ñược gọi là tham số hình thức.
• Lời gọi thủ tục
Trong thân chương trình chính sử dụng thủ tục phải có lời gọi thủ tục
Lời gọi thủ tục ñược viết như sau:
Tên_thủ_tục( danh sách các tham số thực sự);
Trư
ờng ðại học Nô
ng nghi
ệp 1
-
Giáo trình

n
.
Chương trình
Program Tinh_tong_tb;
uses crt;
type mang= array[ 1 50 ] of real ;
var i,n: integer; a: mang; tg,tb: real;
Procedure tong(m: integer; x: mang; var s, p : real);
Var j: integer ; t: real;
begin
t:=0;
For j:=1 to m do t:=t + x[j] ;
s:= t;
p:=t/m;
end;
begin { than chuong trinh chinh }
clrscr;
write(' nhap so phan tu cua day n ');
readln(n);
for i:= 1 to n do
begin
write(a[', i, ']=' ); readln(a[i]);
end;
tong(n,a,tg,tb);
writeln(' tong= ', tg: 8: 2, 'trung binh = ', tb: 8: 2 );
readln;
end.
1.2 - Sự khác nhau giữa hàm và thủ tục
- Hàm cho 1 giá trị thông qua tên hàm. Tên hàm trong lời gọi hàm ñược coi như một biến
có thể tham gia vào biểu thức, các thủ tục vào ra. Cuối thân hàm phải có lệnh gán giá trị cho


159159

- Như vậy nếu ñể lấy 1 kết quả ta có thể tổ chức hàm hoặc thủ tục. Nếu muốn lấy nhiều hơn
1 kết quả thì phải tổ chức chương trình con dạng thủ tục.

2 - Biến toàn cục, biến cục bộ và truyền dữ liệu
2.1 - Biến toàn cục
Biến toàn cục là biến khai báo ở ñầu chương trình chính.
Biến toàn cục tồn tại suốt thời gian làm việc của chương trình .
Biến toàn cục có thể sử dụng cả trong chương trình chính và chương trình con.
Ví dụ 1 mục 1 (tính diện tích tam giac) có a,b,c là biến toàn cục.
Ví dụ 2 mục 1 ( tính tổng và trung bình) có i, n, a, tg, tb là biến toàn cục.
2.2 - Biến cục bộ
Biến cục bộ là các biến ñược khai báo ở ñầu chương trình con.
Biến cục bộ ñược cấp phát bộ nhớ khi chương trình con ñược gọi tới và bị xoá khi ra khỏi
chương trình con.
Biến cục bộ chỉ ñược dùng trong chương trình con.
Biến toàn cục và biến cục bộ có thể trùng tên nhau nhưng chương trình vẫn phân biệt 2 biến
khác nhau.
Trong ví dụ 1 mục 1 (tính diện tích tam giác) có s, p là biến cục bộ.
Trong ví dụ 2 muc 2 ( tính tổng và trung bình) có j, t là biến cục bộ.
2.3 - Truyền dữ liệu
Khi gặp lời gọi chương trình con máy sẽ thực hiện các bước sau:


ñ
ại
c
ươ
ng

160160

if n=0 then Giaithua:= 1
else Giaithua:= Giaithua(n-1) * n ;
end;

* Muốn xây dựng ñược chương trình con ñệ qui ta phải xác ñịnh ñược 2 trường hợp:
- Trường hợp suy biến , ñó là trường hợp ñặc biệt mà xác ñịnh ñược giá trị của hàm.
- Trường hợp tổng quát lần thứ n ñược tính dựa vào lần thứ (n-1).

Ví dụ 2: Tìm ước số chung lớn nhất của 2 số x và y có thể ñược ñịnh nghĩa như sau (x>y):
USCLN(x,y)= x nếu y=0 ( ñây là trường hợp suy biến)
USCLN(x,y)= USCLN( y, phần dư của x/y) nếu y<>0 ( ñây là trường hợp tổng quát).
Trong hàm xây dưng với x>y, nếu y>x thì chương trình tráo ñổi giá trị giữ x và y.

gọi thủ tục NormVideo (Normal Video).
* Procedure Delay(Time);
Tạo ra thời gian trễ Time (khoảng ms). Time là một số nguyên. Delay thường ñược
dùng ñể làm chậm chương trình lại cho ta quan sát, khảo sát
* Procedure Sound(F) và NoSound;
Trư
ờng ðại học Nô
ng nghi
ệp 1
-
Giáo trình
Tin h
ọc

ñ
ại
c
ươ
ng

161161

. Viết chương trình tính tổng, trung bình cộng các phần tử của
dãy số ñó. Chương trình viết có chương trình con.
4. Lập chương trình tính diện tích và chu vi của các hình: Tam giác biết 3 cạnh a,b,c, hình
chữ nhật biết hai cạnh a,b, hình tròn biết bán kính. Chọn hình ñể tính thông qua câu hỏi ' Ban
tính cho hình gì TG=1, CN=2, TR =3 '. Chương trình viết có sử dụng chương trình con.
5. Cho hai số nguyên x1 và x2, lập chương trình nhập x1 và x2 từ bàn phím, sử dụng
tính ñệ quy của chương trình con ñể tìm ước số chung lớn nhất của x1 và x2.


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