- Các thủ tục này, nếu có thì được khai báo và mô tả trong phần khai báo của chương trình chính, ngay sau phần khai báo các biến... Tham trị•Các tham số thực sự tương ứng là các giá trị
Trang 1Kiểm tra bài củ
Trình bày cấu trúc chung của thủ tục? Các thủ
tục này, nếu có, thì được khai báo ở đâu?
procedure <tên thủ tục> [(<danh sách tham số>)];
[< Phần khai báo >]
begin
[<Dãy các lệnh>]
end;
- Phần đầu thủ tục: Tên dành riêng procedure, tên thủ tục và danh sách
tham số (có thể có hoặc không)
- Phần khai báo: Dữ liệu vào ra của chương trình con (có thể có hoặc
không)
- Phần thân thủ tục: Dãy câu lệnh đặt giữa cặp từ khóa begin và end.
- Các thủ tục này, nếu có thì được khai báo và mô tả trong phần khai báo của chương trình chính, ngay sau phần khai báo các biến
Trang 2Nêu sự khác nhau giữa tham số giá trị và tham
số biến? Hãy chỉ ra tham biến và tham trị trong ví
dụ sau?
procedure CatDan(s1: str79; var s2: str79);
begin
s2 := copy(s1,2, length(s1)-1) + s1[1];
end;
Trang 3Tham trị
•Các tham số thực sự tương ứng
là các giá trị cụ thể thay thế các
tham số hình thức trong lời gọi thủ
tục được gọi là các tham trị
•Không có từ khóa var đứng trước
Tham biến
•Các tham số thực sự tương
ứng là tên các biến chứa dữ
liệu ra thay thế các tham số
hình thức trong lời gọi thủ tục
đươc gọi là các tham biến
•Có từ khóa var đứng trước
Tham trị trong thủ tục: s1
Tham biến trong thủ tục: s2
procedure CatDan(s1: str79; var s2: str79);
Trang 4Ví dụ về tham biến, tham trị
procedure
Hoan_doi(var x, y: integer);
var TG: integer;
begin
TG:=x;
x:=y;
y:=TG;
end;
begin
clrscr;
a:=5; b:= 15;
writeln(a: 6,b:6);
Hoan_doi(a, b);
writeln(a: 6,b:6);
readln;
end.
procedure
Hoan_doi(var x:integer; y: integer); var TG: integer;
begin
TG:=x;
x:=y;
y:=TG;
end;
begin clrscr;
a:=5; b:= 15;
writeln(a: 6,b:6);
Hoan_doi(a, b);
writeln(a: 6,b:6);
readln;
end.
5 15
15 5
5 15
15 15
Trang 5Bài 18:
VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG
CHƯƠNG TRÌNH CON
(Tiết 2)
VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG
CHƯƠNG TRÌNH CON
(Tiết 2)
Ngày 28 tháng 02 năm 2011
GVHD: Nguyễn Duy Tất SVTT: Lê Văn Bách
Sở Giáo Dục Và Đào Tạo Kiên Giang Trường THPT Thạnh Đông, H.Tân Hiệp
Trang 6Nội Dung
Cấu trúc của hàm
1
So sánh thủ tục và hàm
2
Ví dụ về hàm
3
Sử dụng hàm
4
Ví dụ về sử dụng hàm
5
Trang 7a) Cấu trúc hàm
Function <tên hàm>[(<danh sách tham số>)]: <kiểu dữ liệu>;
[< Phần khai báo >]
Begin
[<Dãy các lệnh>]
<tên hàm> : = <biểu thức>;
End;
2 Cách viết và sử dụng hàm
- Phần đầu của hàm: Tên dành riêng function, tên hàm, kiểu dữ
liệu trả về của hàm
- Phần khai báo: Xác định các hằng, kiểu, biến.
- Dãy câu lệnh: được viết trong cặp tên dành riêng begin và end
tạo thành thân của hàm, 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 8So sánh thủ tục và hàm
Đều là chương trình con, nói chung có cấu trúc giống một chương trình.
Đều có thể chứa các tham số (tham trị và tham biến), cùng tuân theo các qui định về khai báo
và sử dụng các loại tham số này.
Giống nhau:
Trang 9Khác nhau:
Function <tên hàm>[(<danh sách tham
số>)]: <kiểu dữ liệu>;
[< Phần khai báo >]
Begin
[<Dãy các lệnh>]
<tên hàm> : = <biểu thức>;
End;
procedure <tên thủ tục> [(<danh sách
tham số>)];
[< Phần khai báo >]
begin
[<Dãy các lệnh>]
end;
+ Phần đầu có thêm kiểu dữ liệu của giá trị mà hàm
trả về.
Từ khóa
+ Trong thân hàm thường có câu lệnh gán giá trị cho
tên hàm.
Trang 10Ví dụ về hàm
uses crt;
var TuSo, MauSo, a: integer;
function UCLN(x, y: integer): integer;
var sodu:integer;
begin
while y<>0 do
begin
sodu := x mod y;
x := y;
y := sodu;
end;
UCLN :=x;
end;
begin
clrscr;
write(‘Nhap tu so:);readln(TuSo);
write(‘Nhap mau so:’); readln(MauSo);
a := UCLN(TuSo, MauSo);
if a>1 then
begin
TuSo := TuSo div a;
MauSo := MauSo div a;
end;
writeln(TuSo,’/’, MauSo);
end.
Sử dụng hàm với từ
khoá function Trả về giá trị kiểu integer
Gán giá trị thông qua tên hàm
Trang 11Lưu ý:
Kết quả trả về qua tên hàm chỉ có thể thuộc các kiểu dữ liệu chuẩn (integer, real, boolean, char, string).
Vì kết quả trả về đã gán cho tên hàm nên thông thường các tham số dùng trong hàm là tham số giá trị.
Trang 12b) Sử dụng hàm
Việc sử dụng hàm tương tự như sử dụng các
hàm chuẩn.
Lệnh gọi hàm:
<tên hàm>[(<các tham số thực sự>)];
Lệnh gọi hàm có thể tham gia vào biểu thức như một toán hạng.
Trang 13Ví dụ sử dụng hàm
var a, b, c: real;
function Min(a, b: real): real;
begin
if a<b then Min:=a
else Min:=b;
end;
begin
write(‘Nhap vao ba so: ’);
readln(a, b, c);
writeln(‘So nho nhat trong ba so la: ’,Min(Min(a, b), c) ); readln;
end.
Min(Min(a, b), c) Min( a , c) real
Trang 14Củng cố
kiểu dữ liệu:
a) Integer, string, char, real.
b) Integer, boolean, char.
c) Integer, real, char, boolean, string.
d) Integer, real, char, boolean, byte.
Integer, real, char, boolean, string.
Trang 15Củng cố
2 Trong thân hàm cần có lệnh gán giá trị cho tên
hàm <tên hàm> := <biểu thức> Vì:
a) Hàm trả về một giá trị thông qua tên hàm.
b) Hàm có cấu trúc giống thủ tục.
c) Giá trị của các biến thay đổi nên phải lưu vào tên
hàm.
d) a, b, c đều đúng.
Hàm trả về một giá trị thông qua tên hàm.
Trang 16Củng cố
3 Các tham số trong hàm bắt buộc
phải là các tham số giá trị.
b) Sai Sai.
Trang 17Dặn dò
giáo khoa.
• Thủ tục, hàm.
• Tham số hình thức, tham số thực sự.
• Biến toàn cục, biến cục bộ.
• Tham trị, tham biến.
Trang 18LOGO