Cách viết và sử dụng thủ tục Lệnh gọi thủ tục: []; - Phần đầu gồm procedure , tên thủ tục và danh sách tham số có thể có hoặc không.. - Phần khai báo các hằng, kiểu, biến và các CT con
Trang 1BÀI CŨ
Trong ngôn ngữ lập trình Pascal, chương trình con gồm mấy loại ? Có tên gọi là gì ? Hãy nêu cấu trúc của chương trình con?
Câu 1
Trả lời:
Chương trình con gồm có hai loại:
Hàm (Function) và Thủ tục (Procedure)
Cấu trúc của chương trình con gồm:
<Phần đầu>
[<Phần khai báo]>
<Phần thân>
Trang 2BÀI CŨ
Hãy cho biết chương trình sau
sử dụng chương trình con là thủ tục hay hàm? Đó là đoạn nào? Đâu là phần đầu, phần
khai báo, phần thân?
Trang 3Program Tim_Max;
Var a,b,c,d,e,ln1,ln2,ln3,ln4:integer;
Procedure sln(m,n:integer;var max:integer); Begin
If m>n then max:=m else max:=n;
End;
BEGIN
Write('nhap a,b,c,d,e:'); Readln(a,b,c,d,e); sln(a,b,ln1);
sln(ln1,c,ln2);
sln(ln2,d,ln3);
sln(ln3,e,ln4);
Write('so lon nhat la:',ln4);
Readln;
END
Trang 4Bài 18
Trang 5Ví dụ này ta sử dụng bao nhiêu câu lệnh để vẽ hình chữ nhật?
Tìm hiểu ví dụ sau:
Trang 6Procedure <tên thủ tục>[(<danh sách tham số>)] ;
[<phần khai báo>]
begin
[<dãy các lệnh>]
end;
Trong đó:
1 Cách viết và sử dụng thủ tục
Lệnh gọi thủ tục:
<tên thủ tục>[(<danh sách tham số thực>)];
- Phần đầu gồm procedure , tên thủ tục và danh sách tham số (có thể có hoặc không).
- Dãy các lệnh được viết giữa begin và end; tạo thành thân của thủ tục.
- Phần khai báo các hằng, kiểu, biến và các CT con
khác được sử dụng trong thủ tục.
a/ Cấu trúc của thủ tục
Trang 9Trong ví dụ này ta vẽ được bao nhiêu
hình chữ nhật?
Vẽ được 6 hình chữ nhật
Trang 10Tham số hình thức là các
biến được khai báo cho dữ liệu vào/ra (các biến chưa có giá trị cụ thể).
Tham số thực sự là các hằng
biến chứa dữ liệu vào/ra ( các hằng, biến có giá trị cụ thể, xác định).
Em nào hãy nhắc lại khái niệm về
tham số hình thức và tham số thực?
Trang 11Tham số biến
Khai báo:
VAR
<DS tham số hình thức>:<kiểu dữ liệu>
• Trong lệnh gọi thủ tục: các tham
số thực sự là tên các biến chứa dữ
liệu ra.
• Giá trị có thể bị thay đổi sau khi thực hiện xong thủ tục
Tham số giá trị
• Khai báo:
<DS tham số hình thức>: <kiểu dữ
liệu>
• Giá trị không thay đổi khi
thực hiện xong thủ tục
• Trong lệnh gọi thủ tục: các
tham số thực sự là các giá trị
cụ thể.
c/ Tham số giá trị và tham số biến
Trang 12Program VD;
Uses crt;
var a,b: integer;
Procedure Hoan_doi (Var x,y:integer);
Var TG: integer;
Begin
TG:= x;
x:= y;
y:=TG;
end;
BEGIN
CLRSCR;
a:= 5 ; b:= 10;
Hoan_doi(5,10);
Writeln( a:6 , b:6);
Hoan_doi(a,b);
Writeln( a:6 , b:6);
readln;
END.
Biến cục bộ
Tham số biến (tham biến)
Tham số biến (tham biến) Biến toàn cục
Tham số giá trị (tham trị)
Trang 13Var a,b,c,d,e,ln1,ln2,ln3,ln4:integer;
Procedure sln(a,b:integer; var max:integer);
Begin
If a>b then max:=a else max:=b;
End;
BEGIN
Write('nhap a,b,c,d,e:'); Readln(a,b,c,d,e);
sln(a,b,ln1);
sln(ln1,c,ln2);
sln(ln2,d,ln3);
sln(ln3,e,ln4);
Write('so lon nhat la:',ln4);
Readln;
END
VD2: Hãy xây dựng thủ tục tìm SLN của 2 số rồi viết chương trình tìm số lớn nhất trong 5 số a, b, c, d, e
Trang 142 Cách viết và sử dụng hàm
a/ Cấu trúc của hàm
Function <tên hàm>[(<danh sách tham số>)]: <kiểu dữ liệu>;
[<khai báo các biến>]
Begin
<dãy các lệnh>
end;
Trong đó:
Kiểu dữ liệu là kiểu dữ liệu của giá trị trả mà hàm trả về: integer, real, char, boolean, string
Trang 15** Chú ý:
Khác với thủ tục, trong thân hàm cần có lệnh gán giá trị cho tên hàm
Trang 16- Lệnh gọi hàm:
b/ Sử dụng hàm
-Lệnh gọi hàm có thể tham gia vào biểu thức như một toán hạng
Ví dụ:
A:= 6*UCLN( Tuso, Mauso)+1;
Trang 17Phân biệt hàm và thủ tục
- Trong thân hàm phải có lệnh gán giá trị cho tên hàm.
* Giống nhau:
- Đều là chương trình con có cấu trúc giống chương trình chính.
- Đều có thể chứa các tham số, cùng tuân theo qui định khai báo.
** Khác nhau
- Tên hàm phải có kiểu dữ liệu.