Tham số hình thức dùng khi khai báo, tham số thực sự dùng khi gọi thủ tục... Cấu trúc hàm: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON - Phần đầu: gồm Function, tên hàm, các tham số h
Trang 1Câu 1: Phát biểu nào sau đây sai:
A Danh sách tham số hình thức có thể có hoặc không
B Kết thúc thủ tục là END;
C Thủ tục được viết trong thân chương trình
D Tham số hình thức dùng khi khai báo, tham số thực sự dùng khi gọi thủ tục
Câu 2 : Giả sử ta có dòng đầu thủ tục là
procedure P (Var A, B: Integer; C:integer);
Thì các tham số hình thức được hiểu như sau:
A A, B, C đều là các tham biến
B A, B là tham biến, C là tham trị
C A, B, C đều là tham trị
Trang 2Câu 3: Phần khai báo đầu thủ tục nào sau đây là đúng:
A Type mang=array[1 10] of Byte;
Procedure nhap(var a: mang;);
B Type mang: array[1 10] of Byte;
Procedure nhap(var a: mang);
C Type mang=array[1 10] of Byte;
Procedure nhap(var a: mang);
D Procedure nhap(var a: array[1 10] of Byte);
Câu 4: Cho a: real; b: byte; và dòng đầu thủ tục
Procedure tong(n:byte; y: real);
Lời gọi nào sau đây đúng:
A tong(a); B tong(b,a); C tong(a,b); D tong(b;a);
Trang 3Câu 5: Cho các biến A,B: byte; C:real;
Trong đó: A là tham trị, B và C là tham biến.
Khai báo dòng đầu thủ tục nào sau đây đúng:
A Procedure Thamso(Var A:byte; B:Byte; C:real);
B Procedure Thamso(A:byte; Var B:Byte; C:real);
C Procedure Thamso(A:byte; Var B:Byte; Var C:real);
D Procedure Thamso(A,B:Byte; Var C:real);
Câu 6: Cho các biến x,z: byte; y:real;
Dòng đầu thủ tục như sau:
Procedure tang(a:byte; var b:byte;);
Lời gọi thủ tục nào sau đây sai?
A tang(5,x); C tang(1,y);
Trang 4Câu 7: Cho ch ơng trình sau:
Var x,y:byte;
Procedure Hdoi(a:byte;var b:byte);
Var tg:byte;
Begin
Tg:=a; a:=b; b:=tg;
End;
Begin
x:=1; y:=2; Hdoi(x,y);
Writeln(‘hoan doi la: ’,x:2,y);
Readln;
End
A hoan doi la: 1 2
B hoan doi la: 1 1
C hoan doi la: 2 2
D hoan doi la: 2 1
Kết quả xuất hiện trên màn hình là:
Lời gọi thủ tục nào sau đây là đúng:
A Hoandoi(x,y);
B Hdoi(x);
C Hdoi(x,5);
D Hdoi(5,y);
Trang 5BÀ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 9FUNCTION <tên_hàm>[<DS các tham số hình thức>]:<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
a Cấu trúc hàm:
VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
- Phần đầu: gồm Function, tên hàm, các tham số hình thức
và kiểu dữ liệu (integer, real, char, boolean, string)
- Phần khai báo: các hằng, kiểu, biến và cũng có thể các chương trình con.
- Phần thân: dãy các lệnh viết giữa Begin và end;
Trang 10VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
b Sử dụng hàm:
- Lời gọi hàm:
<TÊN_HÀM>[(Danh sách tham số thực sự)]
Từ chương trình trên, hãy xác định
vị trí của hàm và lời gọi hàm trong
chương trình chính?
- Hàm được khai báo ở <phần khai báo> của chương trình chính, sau khai báo biến (với từ khóa Var)
- Lời gọi hàm được thực hiện trong <phần thân> của chương
trình chính
- Lời gọi hàm có thể tham gia vào biểu thức như một toán hạng hoặc là tham số của lời gọi hàm/thủ tục khác
Trang 11VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
c Tham số hình thức (tương tự thủ tục)
* Ví dụ:
Tham 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ể
Trang 12VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
Var a,b,c:integer;
Function Tim_Max(x,y:integer):integer;
Begin
If x>y then Tim_Max:=x else Tim_Max:=y;
End;
BEGIN
Write('nhap a,b,c: '); Readln(a,b,c);
Write('so lon nhat la:', Tim_Max(Tim_Max(a,b),c));
Readln;
END
VD1: Hãy xây dựng hàm tìm số lớn nhất của 2 số rồi viết chương trình tìm số lớn nhất trong 3 số a, b, c và ghi kết quả ra màn hình
d Các ví dụ
Trang 13VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
d Các ví dụ
VD2: Hãy xây dựng hàm tính tổng hai số rồi viết chương trình tính tổng của ba số và ghi kết quả ra màn hình
Var x,y,z:integer;
Function Tong2so(a,b:real):real;
Begin
Tong2so:=a+b;
End;
BEGIN
Write('nhap x,y,z: '); Readln(x,y,z);
Write(‘Tong 3 so la: ', Tong2so(Tong2so(x,y),z));
Readln;
END
Trang 14CỦNG CỐ
FUNCTION <tên_hàm>[<DS các tham số hình thức>]:<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>[<DS
các tham số hình thức>];
[<Phần khai báo>]
BEGIN
[<dãy các lệnh >]
END;
- Sử dụng khi cần thực hiện một
một công việc cụ thể.
- Sử dụng khi cần thực hiện một số
trị kết quả cụ thể.
- Muốn lưu kết quả phải dùng
tham biến.
một câu lệnh trong chương trình
chính
là biến) để lưu kết quả.
thức , trong lời gọi hàm/thủ tục khác
Trang 15Chuẩn bị bài thực hành 6 Tiết sau thực hành
- Tìm hiểu thủ tục CatDan(s1, s2) và thủ tục CanGiua(s)
Xác định tham số hình thức? là tham biến hay tham trị? Giải thích?
- Tìm hiểu chương trình có sử dụng hai thủ tục trên và xác định: tham số thực sự, biến toàn cục, biến cục bộ?
BÀI TẬP VỀ NHÀ
Trang 16VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON