Sinh viên thực hiện : Nguyễn Thị Huệ
Lớp: K57A
Khoa: CNTT
Giáo án điện tử Tin học lớp 11
Kiểm tra bài cũ

Câu 1. Khái niệm chương trình con trong Pascal? Lợi ích của việc sử dụng chương trình con?
Câu 2. Phân loại chương trình con? Sự khác nhau giữa chúng? Cấu trúc chung của 1 chương trình con?
Đáp án
Câu 1:
Khái niệm chương trình con: Chương trình con là một dãy các lệnh mô tả một số thao tác nhất định và có thể được thực hiện từ nhiều vị trí trong chương trình.
Lợi ích của việc sử dụng chương trình con:
Tránh được việc phải viết lặp đi lặp lại một dãy lệnh nào đó.
Hỗ trợ việc thực hiện các chương trình lớn.
Phục vụ cho quá trình trừu tượng hóa.
Thuận tiện cho phát triển, nâng cấp chương trình.


Đáp án
Câu 2:
- Phân loại:
Chương trình con
Đáp án
Câu 2.
Sự khác nhau giữa chương trình con và thủ tục: Hàm (Function) – trả về một giá trị qua tên của nó; Thủ tục (Procedure) – không trả về giá trị nào qua tên của nó.
Cấu trúc của chung một chương trình con:

[]

Nội dung chính
Cách viết hàm và thủ tục.
Cách sử dụng thủ tục (Procedure)
Cách sử dụng hàm (Function).
Biến toàn cục, biến cục bộ.
Một số ví dụ.
Ví dụ về sử dụng Hàm (Function).
Ví dụ về sử dụng Thủ tục (Procedure).
Ghi nhớ và củng cố bài học.
Bài tập về nhà.


Cách viết hàm và thủ tục
Mỗi ngôn ngữ lập trình đều có các quy tắc viết và sử dụng chương trình con riêng.
Function [(ds tham số)]:
;
[];
Begin
[];

End;
Procedure [(ds tham số];

[];
Begin
[];
End;
Hàm (Function)

Thủ tục (Procedure)

:=giá trị;
Vậy cách viết hàm và thủ tục trong Pascal như thế nào nhỉ?
Đây rồi!
à
Từ khóa: Function bắt buộc có khi khai báo hàm.
Từ khóa: Procedure là bắt buộc khi khai báo thủ tục
: bắt buộc. Có kiểu trả về .
giống như . Không có kiểu trả về.
có thể
có hoặc không. Các biến được
khai báo ở đây gọi là biến
cục bộ
Trong hàm phải có lệnh gán
bằng một giá trị cụ thể nào đó: :=giá trị;
của hàm và thủ tục.
Các tham số được khai báo ở đây
được gọi là tham số hình thức.
Cả hàm, thủ tục có thể có hoặc
không có .

Thân chương trình. Bắt đầu bằng
Từ khóa Begin và kết thúc bằng
End;
Main content
Bài toán được đặt ra ở ví dụ trang 96 – SGK khi vẽ nhiều
HCN cùng kích thước là nếu như ta không sử dụng chương
trình con thì sẽ mất rất nhiều lần phải viết các lệnh Writeln
trong chương trình chính để vẽ các HCN, vì vậy
ta đưa các lệnh Writeln cần thiết vào 1 chương trình con
để vẽ HCN và sau đó khi vào chương trình chính nếu ta
muốn vẽ HCN thì ta chỉ cần gọi thủ tục: Ve_HCN.
Sau đây là chương trình ví dụ.
Cách sử dụng thủ tục (Procedure)
- Ta tìm hiểu về cách sử dụng thủ tục thông qua ví dụ:
Program VD_thutuc1;
{Khai báo biến sau từ khóa Var nếu có.}
Procedure Ve_HCN;
Begin
Writeln(‘* * * * * * *’);
Writeln(‘* *’);
Writeln(‘* * * * * * *’);
End;
BEGIN
Ve_HCN;
Writeln; Writeln;
Ve_HCN;
Writeln; Writeln;
Ve_HCN;
END.

Thủ tục Ve_HCN được khai báo không có tham số. Thủ tục này được khai báo sau khi khai báo biến (Var) và trước khi bắt đầu (Begin) chương trình chính. Thân thủ tục có các lệnh.
Chú ý: Khi kết thúc chương trình “End.”
(kết thúc bởi dấu “.”) còn khi kết thúc
thủ tục là “End;” (Thủ tục
kết thúc bởi từ khóa End và dấu “;”
Lệnh gọi thủ tục trong chương
trình chính, gọi thông qua tên
thủ tục.
Main content
Cách sử dụng hàm (Function)
- Việc sử dụng hàm hoàn toàn tương tự với việc sử dụng các hàm chuẩn (sin, sqrt,…); khi viết lệnh gọi gồm tên hàm và tham số thực sự thay tương ứng cho 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. Do tên hàm trả về giá trị.
- Ví dụ: A:= 6*UCLN(a,b)+1;
Main content
Biến toàn cục và biến cục bộ
Program vidu;
Uses crt;
Var a, b: integer;
Procedure hoan_doi(x: integer; Var y: integer);
Var tg: integer;
Begin
tg:= x; x:= y; y:=tg;
End;
BEGIN
clrscr;
a:=5; b:=10;
Writeln(a: 2,’ ‘, b: 2);
hoan_doi(a,b); {a là tham trị nên sau khi ra khỏi thủ tục nó vẫn có giá trị bằng 5}
Writeln(a: 2,’ ‘, b: 2); {hoan_doi(a,5);}
hoan_doi(4,b); writeln(b); {b=4}
Readln;
END.
Biến được khai báo trong chương trình chính gọi là biến toàn cục. Biến toàn cục có phạm vi ảnh hưởng trong toàn bộ chương trình.
Biến được khai báo trong chương trình con gọi là biến địa phương (hay biến cục bộ). Biến địa phương có ảnh hưởng trong chương trình con.
In ra
5 10
In ra
5 5
Biến toàn cục
Biến địa phương (Biến cục bộ)
Kết quả khi chạy lệnh writeln thứ nhất và thứ hai?
Kết quả:
5 10
5 5
Do a là tham trị…
Kết quả khi chạy chương trình như thế nào? Vì sao lại có kết quả đó?
Ta có thể gọi thủ tục hoan_doi(a,5) trong chương trình chính được không? Vì sao?
Không. Do b là tham biến
không thể đặt giá trị cụ thể
trong khi gọi thủ tục
vào vị trí của b.
Pascal (bien.pas)
Main content
Một số ví dụ
Ví dụ 1: Ví dụ về sử dụng hàm
Viết chương trình thực hiện tối giản một phân số, trong đó sử dụng hàm để tính ước chung lớn nhất (UCLN) của hai số nguyên.
- Ví dụ: Nhập vào 5/10  kết quả: ½
- Xác định dữ liệu vào – ra:
* Input: Nhập phân số: a/b.
* Output: Đưa ra phân số tối giản: c/d. + c = a/ UCLN(a,b);
+ d = b/ UCLN(a,b);
Ví dụ về sử dụng hàm
Main content
Viết chương trình cho ví dụ 1
Program toi_gian;
Uses crt;
Var a, b, c, d: integer;
Function UCLN(x, y: integer): integer;
Begin
while x<>y do
if x else x:= x - y;
UCLN:= x;
End;
BEGIN
clrscr;
Write(‘Nhap tu so a=’); Readln(a);
Write(‘Nhap tu so b=’); Readln(b);
c:= a div UCLN(a,b); d:= b div UCLN(a,b);
Writeln(‘Phan so toi gian c/d=‘,c,’/’,d);
Readln;
END.

Hàm tính ước chung lớn nhất của hai số. Hàm được viết trước khi bắt đầu chương trình chính.
Tên hàm
Tham số kiểu integer.
Kiểu trả về
Hàm trả về giá trị ước chung lớn nhất của 2 số nguyên. Lệnh gán tên hàm bằng giá trị x.
Hàm được gọi trong chương trình chính thông
qua tên của nó. Ở đây do tên hàm trả về giá
trị cụ thể kiểu Integer nên có thể sử dụng nó như
một toán hạng trong biểu thức.
Pascal (toigian.pas)
Main content
Ví dụ về sử dụng hàm (tiếp)
Ví dụ 2:
Viết chương trình có sử dụng 2 hàm tính giá trị min, max của 3 số được nhập vào từ bàn phím.
- Input: Nhập vào từ bàn phím 3 số a, b, c.
- Output: Đưa ra max, min của 3 số a, b, c.
Ví dụ: Nhập vào 3 số 5, 6, 7 thì: max=7; min=5;

Main content
Viết chương trình cho ví dụ 2
Program max_min;
Uses crt;
Var a, b, c: integer;
Function max(x, y: integer): integer;
Begin
if x>y then max:= x else max:=y;
End;
Function min(x, y: integer): integer;
Begin
if x>y then min:= y else min:=x;
End;
BEGIN
clrscr;
Write(`Nhap so nguyen a = `); Readln(a);
Write(`Nhap so nguyen b = `); Readln(b);
Write(`Nhap so nguyen c = `); Readln(c); Writeln;
Writeln(`max(`,a,`,`,b,`,`,c,`)=`,max(max(a,b),c));
Writeln(`min(`,a,`,`,b,`,`,c,`)=`,min(min(a,b),c));
Readln;
END.
Sử dụng 2 hàm tính max và tính min.
Gọi hàm tính max và tính min theo cách đệ quy: max(max(a,b),c);
Pascal (max_min.pas)
Main content
Ví dụ về sử dụng thủ tục

Ví dụ 3: Viết chương trình có sử dụng 1 thủ tục tìm min, max của 3 số a, b, c được nhập vào từ bàn phím.
- Input: Nhập vào từ bàn phím 3 số a, b, c.
- Output: Đưa ra max, min của 3 số a, b, c.
Ví dụ: Nhập vào 3 số 5, 6, 7 thì: max=7; min=5;
Main content
Viết chương trình cho ví dụ 3
Program maxmin; Uses crt;
Var x, y, z: real;
Procedure max_min(a, b, c: real);
Begin
if (a>=b)and(a>=c) then Writeln(`max=`,a:0:2)
else
if (b>=a)and(b>=c) then Writeln(`max=`,b:0:2)
else Writeln(`max=`,c:0:2); Writeln;
if (a<=b)and(b<=c) then Writeln(`min=`,a:0:2)
else
if (b<=a)and(b<=c) then Writeln(`min=`,b:0:2)
else Writeln(`min=`,c:0:2);
End;
BEGIN
clrscr;
Write(`Nhap so thuc x= `); Readln(x); Write(`Nhap so thuc y= `); Readln(y);
Write(`Nhap so thuc z= `); Readln(z); Writeln; max_min(x,y,z);
Readln;
END.

Sử dụng thủ tục max_min để tính max, min của 3 số.
Gọi thủ tục
Pascal (p_maxmin.pas)
Main content
Ví dụ về sử dụng thủ tục (tiếp)
Ví dụ 4.
- Vẽ các hình chữ nhật với các kích cỡ khác nhau, sử dụng thủ tục Ve_HCN với các tham số cd (chiều dài) và cr (chiều rộng).
- Trong chương trình chỉ ra đâu là biến toàn cục, đâu là biến cục bộ.

Main content
Viết chương trình cho ví dụ 4
Program HCN_procedure;
Uses crt;
Var a, b, i: integer;
Procedure Ve_HCN(cd, cr: integer);
Var i, j: integer;
Begin
for i:= 1 to cd do Write(`*`);
Writeln;
for j:=1 to cr -2 do
begin
Write(`*`);
for i:=1 to cd-2 do write(` `);
Writeln(`*`);
end;
for i:=1 to cd do write(`*`);
writeln;
End;
BEGIN
clrscr;
Ve_HCN(5,4); {Ve HCN
kich thuoc 4x5}
Writeln; Writeln;
Ve_HCN(5,10); {Ve HCN
kich thuoc 5x10}
Writeln; Writeln;
Readln; clrscr;
a:=4; b:=2;
{Ve 5 HCN: hinh dau kich thuoc 4x2,
hinh sau gap doi hinh truoc}
for i:=1 to 5 do
begin
Ve_HCN(a,b);
readln; clrscr; {lenh cho xem
ket qua sau moi lan ve}
a:= a*2; b:= b*2;
end;
Readln;
END.
Sử dụng hai tham số: cd, cr để vẽ HCN.
Biến toàn cục. Sử dụng được cả trong chương trình con và chương trình chính.
Biến cục bộ. Chỉ sử dụng được trong chương trình con.
Pascal (HCN.pas)
Main content
Ghi nhớ và củng cố bài học
Biết cách phân loại hàm và thủ tục. Chú ý: chương trình con chỉ được thực hiện khi có lời gọi nó.
Biết được cấu trúc chung và vị trí của hàm, thủ tục trong chương trình.
Cách viết và sử dụng thủ tục, hàm trong mỗi bài toán, mỗi chương trình cụ thể.
Phân biệt được tham biến và tham trị.
Nắm được khái niệm về biến toàn cục và biến cục bộ.


Main content
Bài tập về nhà
Đọc trước Bài tập và thực hành 6+7 (Trang 103, 105 – SGK). Bài đọc thêm 3 (Trang 109 – SGK). Chuyển bị cho bài thực hành.
Làm bài tập 4 (Trang 117 – SGK).
Bài tập làm thêm: Viết chương trình có sử dụng chương trình con (thủ tục hoặc hàm) để thực hiện tính chu vi và diện tích hình chữ nhật. Yêu cầu nhập chiều dài và chiều rộng trong chương trình chính rồi gọi chương trình con để tính diện tích và chu vi.
Đọc trước Bài 19 (Trang 110 – SGK).
Main content
nhuevp@gmail.com
nguon VI OLET