Tải bản đầy đủ (.pdf) (28 trang)

Giáo án tin học 9 - CHƯƠNG TRÌNH CON (Sub program docx

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 (239.76 KB, 28 trang )

Giáo án tin học 9


BÀI
CHƯƠNG TRÌNH CON (Sub program)

KIẾN THỨC YÊU CẦU:
 Biết khi nào cần sử dụng đến chương trình con,
tầm vực hoạt động của nó.
 Biết cách khai báo và sử dụng.
 Biết nắm vững vị trí khai báo biến.

KIẾN THỨC ĐẠT ĐƯỢC
 Biết các khái niệm về chương trình con.
 Biết cách khai báo và sử dụng chương trình con
trong chương trình chính.
8

 Biết hai dạng của chương trình con là thủ tục
(Procedure) và hàm (Function), các bước cơ bản để
viết một chương trình con.
 Biết nắm vững biến toàn cục và biến địa phương,
đặc biệt là tầm vực hoạt động của các biến loại này.
 Biết nắm vững cách truyền tham số cho chương
trình con dưới dạng tham trị và tham biến.
 Biết viết chương trình con dưới hai dạng thủ tục
và hàm.
 Biết khái niệm về đệ quy và tính đệ quy của
chương trình con

I/ Khái niệm về chương trình con


1. Khái niệm
Chương trình con là một đoạn chương trình,
các câu lệnh của chúng được bao giữa cặp từ khoá
Begin … End; Chúng ta có thể gọi một hoặc nhiều
lần trong chương trình qua tên của chương trình con
đó. Nơi gọi có thể cung cấp những thông số cho
chương trình con và chương trình con có thể làm thay
đổi giá trị của một vài thông số đó.
Chúng ta dùng các chương trình con khi:
 Có một công việc được thực hiện ở nhiều nơi
(mỗi nơi có thông số riêng) nhưng quá trình
thực hiện công việc thì không có gì thay đổi).
 Khi cần phân đoạn chương trình để chương
trình được trong sáng và dễ hiểu.
2. Phân loại chương trình con
Có hai loại chương trình con đó là thủ tục
(Procedure) và hàm (Function). Hàm thì có sự trả
về. Như đã giới thiệu ở các bài trước, thủ tục và hàm
sẽ được đặt trước thân của chương trình chính. Khi
gọi chương trình con tại vị trí nào đó trong chương
trình chính, máy sẽ nhảy đến địa chỉ của đoạn mã
chương trình con (đã được dịch sang chương trình
máy khi Compiler) để thực hiện, sau khi thực hiện
xong sẽ quay về câu lệnh sau lệnh gọi chương trình
con để thực hiện tiếp.
3. Các bước cơ bản để viết chương trình con
Phải biết cấu trúc của một chương trình con, nên
dùng thủ tục hay hàm trong yêu cầu của đầu bài, biết
sử dụng các thông số …
Ghi chú: Khi cần tính ra chỉ một giá trị, nên dùng

Function, không nên dùng Procedure

II/ Chương trình con
Chương trình con được bắt đầu bằng từ dành riêng,
đó là Procedure hoặc Function, tiếp theo là tên của
chương trình con, sau đó là các tham số được bao
bằng hai dấu ngoặc đơn (có thể có hoặc không, nếu
có nhiều thì được cách nhau bằng dấu chấm phẩy
“;”). Những tham số hình thức không đứng sau từ
khoá Var được gọi là tham số hình thức trị, nếu có
Var được gọi là tham số biến.
1. Dạng Procedure
PROCEDURE Tên (Thamsố1 : Kiểu;
…,ThamsốN: kiểu);

Const
…….
Type
…….
Var
…….
Begin
…….
…….
End;
Ghi chú: Thủ tục thì không có kiểu trả về, sau End là
dấu chấm phẩy.
Ví dụ:
Procedure Giaithua(m:integer; var gt:Real);
Var

i : integer;
Begin
gt:= 1;
For i:=1 to m do
gt:= gt * i;
End;
2. Dạng Function.
FUNCTiON Tên (Thamsố1 : Kiểu;
…,ThamsốN: kiểu) : Kiểu;

Const
…….
Type
…….
Var
…….
Begin
…….
…….
Tên := giá trị trả về
End;
Ghi chú: Hàm thì có sự trả về, sau End là dấu chấm
phẩy.
Ví dụ:
Function Giaithua(m:integer) : Real;
Var
i : integer;
gt : Real;
Begin
gt:= 1;

For i:=1 to m do
gt:= gt * i;
giaithua:= gt; (* Gán trị kết quả cho tên
hàm*)
End;
III/ Một số đặc tính của chương trình con
1. Biến toàn cục và biến địa phương
 Giả sử có một chương trình chính trong đó có
một chương trình con, những biến nằm trong phần
khai báo của chương trình chính được gọi là những
biến toàn cục (global variable).
 Những biến thuộc phần khai báo Var của
chương trình con được gọi là những biến cục bộ
(local variable) hay còn được gọi là biến địa phương
của chương trình con đó.
Ví dụ:
Program TínhGiaithua;
Var
n : integer;
Function giaithua(m : integer) : Real;
Var
i : integer;
gt : real;
Begin
gt := 1;
For i:=1 to m do
gt := gt * i;
giaithua := gt;
End;
Begin

…….
…….
End.
 n là biến toàn cục, nó sẽ biết đến trong toàn bộ
chương trình.
 i, gt là các biến địa phương của chương trình
con, các biến này không có ý nghĩa gì trong thân
chương trình chính, tức là không hề được biết đến.
Ví dụ:
Trong thân chương trình chính của ví dụ trên, nếu
bạn viết câu lệnh Write(‘Ket qua’, gt); thì khi
compiler sẽ bị báo lỗi, vì biến gt chưa được khai báo
trong chương trình chính.
Ghi chú:
Tầm vực của một biến là phạm vi của khối
(chương trình con hay chương trình khai báo nó).
2. Chuyển tham số cho chương trình con.
Tham trị - tham biến
Các tham số trong sự gọi chương trình con
được gọi là các tham số thực (actual parameter). Khi
gọi thì các tham số thực sẽ chuyển cho chương trình
con tương ứng với các tham số hình thức theo thứ tự
xuất hiện của chúng trong danh sách tham số.
Ví dụ:
Program Tinh;
Var
a,b : integer;
Function Cong(x:integer; y:integer):integer;
Var
……….

Begin
……….
……….
End;
Begin
Write(‘Ban nhap so a = ‘);
Readln(a);
Write(‘Ban nhap so b = ‘);
Readln(b);
Writeln( a, ‘+’, b, ‘= ‘, Cong(a,b));
Readln;
End.
Nhìn vào chương trình trên, bạn thấy chương trình
con là hàm có tên Cong, với hai tham số hình thức
theo thứ tự là x, y có kiểu nguyên. Trong thân
chương trình chính, bạn sẽ thấy các tham số thực sẽ
là a, b sẽ được truyền tương ứng cho hàm khi gọi
Cong(a,b). a tương ứng với x, b tương ứng với y. Bạn
thử thay lại lời gọi hàm là Cong(b,b) thì kết quả sẽ là
b+b, số a nhập vào không tham gia gì trong việc gọi
hàm.
Tham trị (value parameter):
 Không đi sau từ khoá Var trong danh sách các
tham số hình thức.
 Được cấp ô nhớ riêng khi chương trình con
được gọi và bị xoá bỏ khi chương trình con thực
hiện xong.
 Tham số thực tương ứng là một biểu thức.
 Tham trị thực chất là một biến cục bộ, khi
chương trình con được gọi, tham trị sẽ nhận trị là

trị của tham số thực, trước khi chương trình con
bắt đầu thực hiện.
 Những thay đổi của tham trị không ảnh hưởng
gì đến chương trình chính, nghĩa là không kéo
theo sự thay đổi của tham số thực tương ứng.
Tham biến (variable parameter):
 Đi sau tứ khoá Var trong danh sách các tham
số.
 Tham số thực tương ứng phải là một biến.
 Những thay đổi trên tham biến thực chất là
được thực hiện trên tham số thực tương ứng.
 Thực chất của sự truyền tham số đối với tham
biến là sự truyền địa chỉ.
3. Viết chương trình con
Như chúng ta đã biết, chương trình con có hai
dạng, đó là Procedure hoặc Function.
a. Dạng Procedure
Ví dụ:
Viết chương trình tính 4 phép toán cơ bản
dùng chương trình con là thủ tục.
Program Thutuc;
Var
a,b,c : real;
Procedure Cong(x:real; y:real; z:real;);
Begin
z := x + y;
End;
Procedure Tru(x:real; y:real; z:real;);
Begin
z := x - y;

End;
Procedure Nhan(x:real; y:real; z:real;);
Begin
z := x * y;
End;
Procedure Chia(x:real; y:real; z:real;);
Begin
z := x / y;
End;
Begin (*Chương trình chính*)
Write(‘Ban nhap vao so a = ‘);
Readln(a);
Write(‘Ban nhap vao so b = ‘);
Readln(b);
Cong(a,b,c);
Writeln(a, ‘+’, b, ‘= ‘, c);
Tru(a,b,c);
Writeln(a, ‘-’, b, ‘= ‘, c);
Nhan(a,b,c);
Writeln(a, ‘*’, b, ‘= ‘, c);
Chia(a,b,c);
Writeln(a, ‘/’, b, ‘= ‘, c);
Readln;
End.
b. Dạng Function
Ví dụ:
Viết chương trình tính 4 phép toán cơ bản dùng
chương trình con là hàm.
Program Ham;
Var

a,b : real;
Function Cong(x:real; y:real) : real;
Var
z : real;
Begin
z := x + y;
Cong:=z;
End;
Function Tru(x:real; y:real) : real;
Var
z : real;
Begin
z := x - y;
Tru:=z;
End;
Function Nhan(x:real; y:real) : real;
Var
z : real;
Begin
z := x * y;
Nhan:=z;
End;
Function Chia(x:real; y:real) : real;
Var
z : real;
Begin
z := x / y;
Chia:=z;
End;


Begin (*Chương trình chính*)
Write(‘Ban nhap vao so a = ‘);
Readln(a);
Write(‘Ban nhap vao so b = ‘);
Readln(b);
Writeln(a, ‘+’, b, ‘= ‘, Cong(a,b));
Writeln(a, ‘-’, b, ‘= ‘, Tru(a,b));
Writeln(a, ‘*’, b, ‘= ‘, Nhan(a,b));
Writeln(a, ‘/’, b, ‘= ‘, Chia(a,b));
Readln;
End.
 Qua hai ví dụ viết chương trình con dạng thủ tục
và hàm, các bạn cần lưu ý cách gọi, các bước thực
hiện, phân biệt sự khác nhau để nắm vững và tránh
sai sót khi viết các chương trình sau này.
Ghi chú:
Tầm vực của một chương trình con là toàn bộ cha
của nó (tại một vị trí bất kỳ của cha thì có thể gọi các
chương trình con của nó).
4. Tính đệ quy của chương trình con
Đệ quy là một khái niệm cơ bản trong toán học
và khoa học máy tính. Định nghĩa đơn giản của một
chương trình đệ quy là chương trình mà gọi đến
chính nó (và một hàm đệ quy là một hàm được định
nghĩa dựa trên chính nó). Một chương trình đệ quy
thì không thể gọi đến chính nó mãi mãi (và một hàm
đệ quy không thể lúc nào cũng định nghĩa dựa vào
chính nó trừ khi định nghĩa bị xoay vòng). Một điều
kiện cần thiết là phải có điều kiện kết thúc khi
chương trình không gọi đến chính nó nữa (và khi

hàm không được định nghĩa dựa trên chính nó). Tất
cả các tính toán trong thực tế đều có thể diễn đạt bằng
khuôn mẫu đệ quy.
Ví dụ 1:
Bạn xem hàm giai thừa, nó được định nghĩa bởi
công thức:
N! = N * (N-1)! với N>=1 và 0! = 1.
Hàm này tương ứng với chương trình đệ quy như
sau:
FuncTion Giaithua(N : integer) : integer;
Begin
if N = 0 then Giaithua:= 1
else
Giaithua := N * Giaithua(N - 1);
End;
 Nó gọi đến chính nó (với một giá trị đối số nhỏ
hơn) và nó có điều kiện kết thúc khi tính kết quả trực
tiếp của nó.
Ví dụ 2:
Tính dãy Fibonacci:
Fn = Fn-1 + Fn-2 với n = 2 và F0 = F1 = 1
Quan hệ này định nghĩa dãy
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,

Số sau bằng hai số trước cộng lại.
Chúng ta có chương trình đệ quy
Function Fibonacci(n: integer) : integer;
Begin
if n<=1 then
Fibonacci := 1

else
Fibonacci := Fibonacci(n – 1) +
Fibonacci(n – 2);
End;

TÓM LƯỢC

 Chương trình con là một đoạn chương trình, các
câu lệnh của chúng được bao giữa cặp từ khoá
Begin … End; Chúng ta có thể gọi một hoặc nhiều
lần trong chương trình qua tên của chương trình con
đó.
 Chương trình con có hai dạng, đó là Procedure
hoặc Function.
 Các khai báo trong chương trình con cũng khá
giống như chương trình chính, trong chương trình
con phải có dạng Procedure hoặc Function, sau đó
là đến tên của chương trình con, tiếp theo là các
tham số được bao trong dấu ngoặc đơn, các tham số
có thể có hoặc không và được cách nhau bởi dấu
chấm phẩy.
 Hàm thì có sự trả về.
 Cần xác định nên dùng chương trình con là thủ tục
hay hàm.
 Cần chú ý đến cách gọi hàm và thủ tục trong
chương trình chính.
 Các biến được khai báo sau từ khoá Var của
chương trình chính được gọi là biến toàn cục, nó
được biết trong toàn bộ chương trình, biến khai báo
sau từ khoá Var của chương trình con gọi là biến

địa phương nó không hề được biết đến trong
chương trình chính.
 Khi gọi thì các tham số thực sẽ chuyển cho
chương trình con tương ứng với các tham số hình
thức theo thứ tự xuất hiện của chúng trong danh
sách tham số.
 Tham trị Không đi sau từ khoá Var trong danh
sách các tham số hình thức. Được cấp ô nhớ riêng
khi chương trình con được gọi và bị xoá bỏ khi
chương trình con thực hiện xong. Tham số thực
tương ứng là một biểu thức. Tham trị thực chất là
một biến cục bộ, khi chương trình con được gọi,
tham trị sẽ nhận trị là trị của tham số thực, trước khi
chương trình con bắt đầu thực hiện. Những thay đổi
của tham trị không ảnh hưởng gì đến chương trình
chính, nghĩa là không kéo theo sự thay đổi của tham
số thực tương ứng.
 Tham biến đi sau tứ khoá Var trong danh sách các
tham số.Tham số thực tương ứng phải là một
biến.Những thay đổi trên tham biến thực chất là
được thực hiện trên tham số thực tương ứng. Thực
chất của sự truyền tham số đối với tham biến là sự
truyền địa chỉ.
 Đệ quy là một khái niệm cơ bản trong toán học và
khoa học máy tính. Định nghĩa đơn giản của một
chương trình đệ quy là chương trình mà gọi đến
chính nó (và một hàm đệ quy là một hàm được định
nghĩa dựa trên chính nó).

×