Tải bản đầy đủ (.doc) (6 trang)

chương trình con

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (90.27 KB, 6 trang )

Chương VI: CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CÓ CẤU TRÚC
ξ 17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
1. Khái niệm chương trình con (SGK)
Khi lập trình, chúng ta thường có những đoạn chương trình hay phép tính giống nhau và lặp lại
nhiều lần.Nếu mỗi lần lặp lại, ta phải viết những đoạn lệnh như nhau thì chương trình ta trở nên dài dòng,
rối rắm và mất thời gian vô ích. Để giải quyết vấn đề trên, các NNLT cho phép chúng ta tạo các khối nhỏ,
mỗi khối là một đoạn chương trình nhỏ đgl chương trình con. chương trình con dùng để giải quyết một công
việc nào đó. Mỗi chương trình con sẽ có tên khác nhau để làm việc. Sau cùng thì chương trình chính sẽ
được xây dựng từ các chương trình con này.
-Cách lập trình như vậy gọi là lập trình có cấu trúc.
VD: xét bài toán tính tổng của bốn luỹ thừa sau:
S = a
m
+ b
n
+ c
p
+ d
q
Xem: S = S1 + S2 +S3 +S4
-Thông thường để tính được tổng S thì ta phải tính: S1, S2, S3, S4
-Trong đó cách tính S1, S2, S3, S4 tương tự nhau.
-Chẳng hạn ta tính S1 = a
n
như sau:
Ta thấy: S1 = a
m
= axaxax……….xa
m lần số a
Giả sử: S1 = 2
4


=2x2x2x2=16
*Sau đây là các câu lệnh chính để tính S1
---------------------------------------------------------------------------
Writeln( ‘ nhập hệ số a và luỹ thừa m =? ’ ); Readln( a, m );
S1:=1;
For i:=1 to m do s1:=s1 *a
---------------------------------------------------------------------------
*Và đây là chương trình dùng để tính tổng S
----------------------------------------------------------------------------
Program tong_luy_thua;
Var a, b, c : real;
m, n, p, q : byte;
S, S1, S2, S3, S4 : Real;
BEGIN
Writeln( ‘ nhap vao cac he so: a, b, c, d =?); Readln( a, b, c, d );
Writeln( ‘ nhap vao cac luy thua: m, n, p, q =? ); Readln( m, n, p, q );
{……………………Tinh S1……………………………………….}
S1:=1;
For i:=1 to m do S1:=S1 *a
{………………………….Tinh S2………………………………..}
S2:=1;
For i:=1 to n do S2:=S2 *a
{…………………………..Tinh S3……………………………….}
Trang: 1
S3:=1;
For i:=1 to p do S3:=S3 *a
{…………………………Tinh S4………………………………. }
S4:=1;
For i:=1 to q do S4:=S4 *a
{………………………….Tinh S………………………………….}

S:= S1 +S2 + S3 +S4 ;
Writeln( ‘ tong luy thua S:=’ , S : 4 :2 );
Readln
END.
………………………………………………………………………..
-Trong chương trình trên có 4 đoạn lệnh tương tự nhau, việc lặp lại những đoạn lệnh như
nhau làm cho chương trình dài, khó theo dõi. Ta sẽ xây dựng một chương trình con tổng
quát có tên là: LuyThua. Chương trình con này dùng để tính X
k
Trong đó hệ số X là biến số thực, luỹ thừa K là biến số nguyên
Nội dung của chương trình con này như sau:
--------------------------------------------------------------------------------
Function LuyThua( x : real ; k : integer ): real;
Var tich : real;
J : byte;
Begin
Tich:=1;
For j:=1 to k do Tich:=tich * x ;
LuyThua := tich;
End;
------------------------------------------------------------------------------
-Sau này khi nào cần tính: a
m
thì ta chỉ việc viết: LuyThua( a, m );
-Tương tự cho các luỹ thừa: b
n
, c
p
, d
q

-Vậy ta có tổng luỹ thừa
S:=LuyThua( a, n ) + LuyThua( b, n ) + LuyThua( c, p ) + LuyThua( d, q );
*Lợi ích của việc sử dụng chương trình con:
-Tiết kiệm bộ nhớ.
-Không mất thời gian, tránh rối rắm, dễ theo dõi chương trình.
-Dễ dàng kiểm tra được tính đúng đắng của các chương trình con, dễ dàng sửa lỗi
nếu có sai xót xảy ra.
2. Phân loại và cấu trúc của chương trình con
a) Phân loại
Trong các NNLT, chương trình con thường gồm 2 loại:
-Hàm (Function): là chương trình con sau khi thực hiện xong thì nó cho ra một kết quả
thông qua tên của hàm.
VD: Các hàm toán học: Sin(x), cos(x), …., sqr( x )
vd: sin( 30
0
)=1/2
-Hàm sử lí chuỗi: Length( st );
Trang: 2
*Hàm có thể tham gia vào các biểu thức tính toán.
VD: x*Abs(-2)
-Thủ tục (Procedure): là chương trình con dùng để thực hiện các công việc nào đó và khi
thực hiện xong thì thủ tục không cho ra kết quả thông qua tên của thủ tục (điểm khác cơ
bản với hàm).
VD : Các thủ tục: Writeln(……), Readln(……)
Thủ tục xử lí chuỗi: Delete, Insert,………
b. Cấu trúc của chương trình con
1. Phần đầu
2. Phần khai báo
3. Phần thân
*Trong đó:

-Phần đầu của chương trình con chứa: tên chương trình con, các biến số cung cấp dữ liệu
vào để chương trình con thực hiện.
-Phần khai báo chương trình con: khai báo các biến, hằng mà chương trình con cần dùng.
-Phần thân chương trình con: là một loạt các câu lệnh được đặt trong cặp từ khoá:
BEGIN
……các lệnh………..;
END;
VD: chẳng hạn ta xét hàm dùng để tính luỹ thừa :
Trang: 3
Function LuyThua( x : real ; k : integer ): real; Phần đầu
Var tich : real;
J : byte;
Phần khai báo
Begin
Tich:=1;
For j:=1 to k do Tich:=tich * x ;
Luythua := tich;
End;
Phần thân
*Chú ý:
-Các biến nào được viết trong phần đầu của ctc đgl tham số hình thức (x và k).
-Các biến được viết trong phần khai báo của ctc đgl biến cục bộ (tich, j).
-Chương trình chính không thể sử dụng các biến cục bộ của ctc, nhưng ctc thì được quyền
sử dụng các biến cuả chương trình chính !
-Các biến được khai báo trong chương trình chính đgl biến toàn cục.
-Một ctc có thể có hoặc không có tham số hình thức, biến cục bộ, (còn tuỳ thuộc vào từng
chương trình cụ thể).
c) Thực hiện chương trình con
-Để thực hiện ctc, ta cần phải có lệnh gọi nó (tương tự như lệnh gọi các hàm hay thủ tục
chuẩn mà ta vẫn hay dùng trước đây).

VD: để thực hiện hàm chuẩn toán học: Sqr(x);
Thì ta có thể gọi nó như sau:
Sqr(4)
Hoặc: Sqr( I ) với I:=4;
Hoặc: Sqr(4*I)
-Lúc này tại vị trí các tham số hình thức ta sẽ thay bởi các hằng, biến, biểu thức chứa dữ
liệu vào cụ thể và các hằng và biến này đgl Tham số thực sự.
-Các tham số thực sự phải phù hợp kiểu dữ liệu với tham số hình thức.
-Tóm lại: lời gọi chương trình con gồm có:
-Chương trình con sẽ được thực hiện khi trong chương trình chính có lệnh gọi đến nó.
-Khi thực hiện ctc xong thì chương trình chính sẽ thực hiện tiếp lệnh theo sau lệnh gọi
chưong trình con.
---------------------------------------------------------------------------------------
18. CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
1. Cách viết và sử dụng thủ tục
Trang: 4
Tên chương trình con ( Hằng hoặc biến hoặc biểu thức )
A. Cấu trúc của một thủ tục
-Nếu có nhiều tham số hình thức cùng kiểu thì ta dùng dấu phẩy để ngăn cách. --Nếu
chúng khác kiểu nhau thì ngăn cách bởi dấu chấm phẩy
VD: Procedure tong ( x, y : byte ; s, t: char ; k : real );
-Một chương trình chính có sử dụng chương trình con thì có dạng như sau:
-Phần dành cho chương trình con được đặt ngay sau khai báo biến ( VAR) của chương
trình chính.
VD1: Cách viết và sử dụng thủ tục không tham số hình thức:
VD2: Cách viết và sử dụng thủ tục có tham số hình thức:
*Nhận xét: Khi có lệnh gọi ctc thì các tham số thực sẽ truyền dl vào cho các tham số hình
thức, còn các tham số hình thức sẽ nhận lấy giá trị trên và đưa vào ctc để tính toán. Khi ctc
thực hiện xong thì ta có 2 sự chọn lựa:
1. Nếu muốn cho các lệnh của ctc tác động ngược trở lại và làm thay đổi giá trị của

tham số hình thức. Còn tham số hình thức sẽ nhận lấy giá trị mới này và gửi ngược
trở ra cho các tham số thực. Cuối cùng các tham số thực sẽ bỏ đi giá trị củ và đón
nhận giá trị mới này. Để làm được đều đó thì các tham số hình thức đgl các tham số
biến (Tham biến). Khi đó trong phần đầu của ctc cần phải có từ khoá VAR trước các
tham số biến trên.
Trang: 5
Phần
đầu
PROCEDURE Tên thủ tục (Danh sách các tham số hình thức : kiểu dữ liệu của chúng) ;
Phần
khai
báo
VAR Các khai báo hằng, biến cục bộ
Phần
thân
BEGIN
……………các câu lệnh của thủ tục ;
END ;
1
Phần khai báo của chương trình chính;
2
Phần dành cho chương trình con;
3
Phần thân chương trình chính;

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×