Lợi ích của việc sử dụng chương trình con không báo gồm diều nào sau đây

– Biến toàn cục là biến được khai báo trong chương trình chính. Các biến này co thẻ được dùng ở mọi nơi trong chương trình và tồn tại trong suốt thời gian làm việc của chương trình.

– Biến cục bộ [biến địa phương] là các biến được khai báo trong CTC. Các biến này chỉ được sử dụng trong phạm vi ctc mà nó được khai báo. Sau khi kết thức ctc các biến này sẽ không còn tồn tại.

Ví dụ:

 

PROGRAM vidu;
Var a,b,c:integer; {3 biến toàn cục}
PROCEDURE thutuc[n:integer];{n là biến cục bộ}
var i:integer; {i là biến cục bộ}
begin
    for i:=1 to 10 do writeln[i];
end;
BEGIN
    a:=5;b:=6;c:=8;
    thutuc[ a];
    thutuc[ b];
    thutuc[ c];
    readln;
END.

 

– Trong trường họp biến cục bộ trùng tên với biến toàn cục thì máy không bị nhầm lẫn mà sẽ thực hiện trên biến cục bộ. Biến toàn cục không bị ảnh hưởng.

4. Cách truyền tham số trong chương trình con

– CTC không cần có tham số [sau tên ctc] nếu không dùng đến chúng hoặc dùng trực tiếp biến toàn cục
– Khi truyền tham số các tham số trong lời gọi ctc phải đúng thứ tự và kiểu tương ứng với khi khai báo ctc.
Ví dụ:

 

FUNCTION [Danh sách ác tham số]:;
[Khai báo Const, Type, Var]
BEGIN
    ;
    :=;
END;
0

 

Khi gọi:

FUNCTION [Danh sách ác tham số]:;
[Khai báo Const, Type, Var]
BEGIN
    ;
    :=;
END;
2 {lời gọi đúng}
FUNCTION [Danh sách ác tham số]:;
[Khai báo Const, Type, Var]
BEGIN
    ;
    :=;
END;
3 {loi goi sai}
FUNCTION [Danh sách ác tham số]:;
[Khai báo Const, Type, Var]
BEGIN
    ;
    :=;
END;
4{lời gọi sai}

– Tham số hình thức [đối] là các tham số sau tên hàm và thủ tục trong khai báo.
– Tham số thực sự là các tham số sau tên hàm và thủ tục trong lời gọi.
– Tham biến: là các tham số được khai báo sau từ khóa var. Các tham số thực phải là các biến chứ không được là giá trị. Tham biến có thể được thay đổi trong CTC và sau khi ra khỏi CTC nó vẫn giữ giá trị thay đổi đó.
– Tham trị: là các tham số được khia báo mà không đứng sau từ khóa var. Các tham số thực có thể là các giá trị, hằng, biến. Tham trị có thể thay đổi trong ctc nhưng sau khi kết thúc ctc giá trị của nó trở về như ban đầu.
– Các tham số trong hàm luôn là các tham trị, các tham số trong thủ tục có thể là tham trị hoặc tham biến.

5. Phân biệt cách sử dụng hàm và thủ tục

Hàm khác thủ tục ở chỗ hàm trả về một giá trị cho lệnh gọi thông qua tên hàm còn thủ tục thì không.

*Dùng hàm
– 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 CTC cần nằm trong các biểu thức tính toán.

*Dùng thủ tục
– 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 CTC không nằm trong các biểu thức tính toán.

Chú ý: Nếu một công việc có thể làm bằng hàm thì chắc chắn sẽ làm được bằng thủ tục {tuy nhiên sẽ phức tạp hơn khi dùng hàm} nhưng một chương trình làm bằng thủ tục thì chưa chắc ta đã làm được bằng hàm.

Đối với Borland Pascal 7.0 ta có thể gọi hàm như gọi một thủ tục. Không nhất thiết phải lấy giá trị trả về. Để thực hiện được điều này trong menu

FUNCTION [Danh sách ác tham số]:;
[Khai báo Const, Type, Var]
BEGIN
    ;
    :=;
END;
5 cần khai báo cú pháp mở rộng [Extended syntax], hoặc trong chương trình cần có dẫn hướng biên dịch {$ X+}. Nếu không, khi biên dịch [gõ F9] Pascal sẽ thông báo lỗi "Error 122: Invalid variable reference".

Giải Bài Tập Tin Học 11 – Bài 18: Ví dụ về cách viết và sử dụng chương trình con giúp HS giải bài tập, giúp cho các em hình thành và phát triển năng lực sử dụng công nghệ thông tin và truyền thông:

Xem thêm các sách tham khảo liên quan:

  • Sách Giáo Viên Tin Học Lớp 11

1. Cách viết và sử dụng thủ tục

a] Cấu trúc của thủ tục

procedure  [[danh sách tham số]];
[]
Begin
	[]
End;

Phần đầu thủ tục: Gồm tên dành riêng procedure, tiếp theo là tên thủ tục. Danh sách tham số có thể có hoặc không có.

Phần khai báo : Dùng để xác định các hằng, kiểu, biến và cũng có thể xác định các chương trình con khác được sử dụng trong thủ tục.

Dãy câu lệnh : Đực viết giữa cặp tên dành riêng begin và end tạo thành thân của thủ tục.

b] Ví dụ về thủ tục

Ví dụ 1: Viết thủ tục vẽ hình chữ nhật có dạng như sau

	*******
	*	*
	*******

Chiều dài là 7 chiều rộng là 3.

Procedure Ve_Hcn;
	Begin
	Writeln[‘*******’];
	Writeln[‘*             *’];
Writeln[‘*******’];
	End;

Để sử dụng thủ tục này ta gọi Ve_Hcn;

Ví dụ 2: Viết thủ tục vẻ hình chữ nhật với chiều dài và chiều rộng được tùy chỉnh.

Procedure Ve_Hcn[chdai,chrong:integer];
Var I,j:integer;
Begin
	For i:=1 to chdai do write[‘*’];
	Writeln;
	For j:=1 to chrong-2 do
	Begin
		Write[‘*’];
		For i:=1 to chdai-2 do write[‘ ’];
		Writeln[‘*’];
	End;
	For i:=1 to chdai do write[‘*’];
End;

Để sử dụng thủ tục này ta gọi Ve_Hcn[a,b];

Khi gọi thủ tục, các tham số hình thức được thay bằng các tham số thực sự tương ứng là các giá trị cụ thể gọi là các tham số giá trị [tham trị] [Ví dụ: chdai,chrong được gọi là tham trị].

Khi gọi thủ tục Ve_Hcn[a,b] tham số chdai được thay bằng giá trị hiện thời của biến a,tham số chrong được thay bởi giá trị hiện thời của biến b. Trong lệnh gọi thủ tục, các tham số hình thức được thay bằng các tham số thực sự tương ứng là tên biến chứa dữ liệu ra được gọi là tham số biến [hay tham biến].

Để phân biệt tham biến và tham trị, Pascal sử dụng từ khóa var để khai báo những tham biến.

Ví dụ :

Nếu không sử dụng tham biến:

program dientro;
uses crt;
var 
	a,b:integer;
procedure hoandoi[x,y:integer];
	var TG:integer;
begin
	TG:=x;
	x:=y;
	y:=TG;
end;
begin
	clrscr;
	a:=5;
	b:=10;
	writeln[a:6,b:6];
	hoandoi[a,b];
	writeln[a:6,b:6];
	readkey;
end.

Kết quả:

Hai số không hề hoán đổi cho nhau

Sử dụng tham biến :

program dientro;
uses crt;
var 
	a,b:integer;
procedure hoandoi[var x,y:integer];
	var TG:integer;
begin
	TG:=x;
	x:=y;
	y:=TG;
end;
begin
	clrscr;
	a:=5;
	b:=10;
	writeln[a:6,b:6];
	hoandoi[a,b];
	writeln[a:6,b:6];
	readkey;
end.

Kết quả:

Khi nào dùng tham biến: Khi ta muốn thay đổi giá trị các tham số truyền vào thì tra sẽ sử dụng tham biến.

2. Cách viết và sử dụng hàm

Điểm khác nhau cơ bản giữa thủ tục và hàm là việc thực hiện luôn trả về giá trị kết quả thuộc kiểu xác định và giá trị đó được gán cho tên hàm.

Hàm có cấu trúc tương tự như thủ tục, tuy nhiên chỉ khác nhau phần đầu.

Function []:;

Trong đó kiểu dữ liệu chỉ có thể là integer, real, char, Boolean, string.

Khác với thủ tục, trong thân hàm phải có lệnh gán giá trị cho tên hàm:

:=;

Ví dụ 1:

Viết chưng tình thực hiện việc rút gọn một phân số , trong đó có sử dụng hàm tính ước chung lớn nhất của hai số nguyên.

program rutgon;
uses crt;
var 
	TuSo,MauSo,a:integer;
function UCLN[x,y:integer]:integer;
	var sodu:integer;
begin
	while y0 do
	begin
		sodu:=x mod y;
		x:=y;
		y:=sodu;
	end;
	UCLN:=x;
end;
begin
	clrscr;
	write['Nhap vao tu so va mau so '];
	readln[TuSo,MauSo];
	a:=UCLN[TuSo,MauSo];
	if a>1 then
	begin
		TuSo:=TuSo div a;
		MauSo:=MauSo div a;
	end;
	writeln[TuSo:5,MauSo:5];
	readkey;
end.

Kết quả:

Trong chương trình này, các biến TuSo, MauSo và a là các biến toàn cục, còn biến sodu là biến cục bộ.

Sử dụng hàm

Việc sử dụng hàm tương tự với việc sử dụng các hàm chuẩn, khi viết lệnh gọi gồm tên hàm và tham số thực sự tương ứng với các tham số hình thức.

Lệnh gọi hàm có thể tham gia vào biểu thức như một toán hạng và thậm chí là tham số của lời gọi hàm, thủ tục khác.

Ví dụ:

A:=6*UCLN[TuSo,MauSo]+1;

Ví dụ 2. Viết chương trình tìm giá trị nhỏ nhất trong ba số có sử dụng hàm tìm số nhỏ nhất trong hai số.

Phân tích:

Do chỉ được sử dụng hàm tìm giá trị nhỏ nhất trong hai số. Nên ta sẽ làm như sau:

Đầu tiên sẽ tìm giá trị nhỏ nhất trong 2 số, Sau đó dùng kết quả này làm tham số cho hàm tìm giá trị nhỏ nhất với giá trị này và số còn lại.

Chủ Đề