Ngày soạn: 25/03/2019
Ngày dạy: 30/03/2019
Lớp 11A1, Tiết 4
Tuần: 29
Tiết KHDH: 48
BÀI 18. VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (tt)
CÁCH VIẾT VÀ SỬ DỤNG HÀM (Tiết 1)
I. MỤC TIÊU
1. Về kiến thức
- Biết cấu trúc của hàm, cách sử dụng hàm.
- Phân biệt được giữa hai loại chương trình con (thủ tục và hàm).
2. Về kĩ năng
- Nhận biết từng thành phần của hàm.
- Biết chức năng của hàm và thủ tục để viết chương trình con cho phù hợp.
3. Về thái độ
- Có thái độ nghiêm túc trong học tập.
4. Năng lực hướng tới
- Giải quyết vấn đề, thảo luận nhóm, suy luận.
II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH
1. Chuẩn bị của giáo viên: Giáo án, SGK, SGV, máy tính, máy chiếu, phơng chiếu,…
2. Chuẩn bị của học sinh: Sách giáo khoa, tập, viết,…
III. TỔ CHỨC CÁC HOẠT ĐỘNG HỌC TẬP
1. Ổn định lớp, kiểm tra sĩ số
2. Kiểm tra bài cũ:
Câu 1: Nêu cấu trúc của thủ tục?
Trả lời:
Procedure <Tên thủ tục> [(<danh sách tham số>)];
[< phần khai báo>]
Begin
[<Dãy các lệnh>]
End;
Câu 2: Cho phần đầu của thủ tục như sau, giả sử các biến đã được khai báo:
Procedure Tong(x, y: Integer; Var T: Integer);
Trong lời gọi thủ tục ở chương trình chính, ta gọi Tong(a,b,S);
a. Hãy xác định tham số hình thức, tham số thực sự?
b. Xác định tham số giá trị, tham số biến?
Trả lời:
a. Tham số hình thức là các biến: x, y, T. Tham số thực sự là: a, b, S.
b. Tham số giá trị là: x, y. Tham số biến là: T.
3. Nội dung bài mới:
HOẠT ĐỘNG 1: Hoạt động khởi động
(1) Mục tiêu: Tạo động cơ để HS muốn tìm hiểu một số ví dụ làm việc với hàm.
(2) Phương pháp/kĩ thuật dạy học: Thuyết trình, đặt vấn đề.
(3) Hình thức tổ chức hoạt động: Làm việc cá nhân.
(4) Phương tiện dạy học: SGK, Projector, máy tính.
(5) Sản phẩm: HS có nhu cầu mong muốn tìm hiểu một số ví dụ làm việc với hàm.
Nội dung hoạt động
Hoạt động của giáo viên
Hoạt động của học sinh
- Trong tiết học trước các em đã được làm quen với - Lắng nghe.
thủ tục. Để hiểu rõ hơn cách sử dụng hàm chúng ta
sẽ đi xét một ví dụ cụ thể như sau:
Bài tốn: Lập trình tính tổng bốn lũy thừa sau:
S = an + bm + cp + dq. Viết chương trình con dạng
tổng quát Luythua = xk. Khi tính lũy thừa của các
số hạng trong tổng trên ta chỉ cần gọi tên chương
trình con Luythua và thay thế (x,k) bằng các giá trị
tương ứng. Chẳng hạn để tính a n, bm, cp, dq ta viết
Luythua(a,n),
Luythua(b,m),
Luythua(c,p),
Luythua(d,q).
HOẠT ĐỘNG 2: Hình thành kiến thức
(1) Mục tiêu: Giúp học sinh biết được một số ví dụ bài tập về hàm
(2) Phương pháp/kĩ thuật dạy học: Vấn đáp, thuyết trình, đặt vấn đề, phân tích.
(3) Hình thức tổ chức hoạt động: Làm việc cá nhân, nhóm.
(4) Phương tiện dạy học: SGK, Projector, máy tính.
(5) Kết quả: Học sinh nắm được một số ví dụ bài tập về hàm.
Nội dung hoạt động
Hoạt động giáo viên
Hoạt động học sinh
Nội dung trình bày
- Chương trình con gồm 2 loại: - Ghi mục bài.
2. Cách viết và sử dụng hàm
là thủ tục và hàm, ta sẽ tìm
hiểu hàm được viết và sử dụng
a. Cấu trúc của hàm:
như thế nào. Chúng ta cùng tìm - Ghi bài.
Function <tên hàm>[(
hiểu cấu trúc của hàm.
- Trả lời: integer, real, tham số>)]: <kiểu dữ liệu>;
- Điểm khác nhau cơ bản giữa boolean, char, string.
[
];
hàm và thủ tục là hàm luôn trả - Trả lời: Giống nhau:
Begin
về giá trị thuộc một kiểu xác + Đều là chương trình
[<dãy các lệnh>]
định.
con có cấu trúc giống một
<tên hàm>:= <biểu thức>;
(?) Kiểu dữ liệu trả về của hàm chương trình.
End;
có thể gồm những kiểu nào?
+ Đều có thể có tham số - <Kiểu dữ liệu>: Kiểu dữ liệu trả
(?) So sánh sự giống và khác (tham biến hoặc tham trị), về của hàm chỉ có thể là các kiểu
nhau về cấu trúc của hàm và cùng tuân theo quy định integer, real, boolean, char, string.
thủ tục?
về khai báo và sử dụng Vd: Function tong(x, y: integer):
của các tham số này.
integer;
Khác nhau:
Chú ý: Trong thân hàm phải có ít
+ Hàm ln trả về giá trị nhất một lệnh gán giá trị cho tên
GV trình chiếu
thuộc kiểu xác định qua hàm.
tên hàm.
<tên hàm>:= <biểu thức>;
+ Trong thân hàm thường
có câu lệnh gán giá trị
cho tên hàm.
Bài tốn: Lập trình tính tổng + Lời gọi của hàm cần
bốn lũy thừa sau:
nằm trong các biểu thức b. Ví dụ về hàm:
S = an + bm + cp + dq.
tính tốn.
Ví dụ 1. Viết chương trình tính
GV cho HS làm việc nhóm viết - Ghi ví dụ.
tổng bốn lũy thừa
chương trình con sử dụng hàm HS làm việc theo nhóm, S = an + bm + cp + dq, trong đó sử
Luythua(x, k).
sau đó gọi đại diện HS dụng hàm Luythua(x, k).
- Yêu cầu HS xác định x, k là trình bày sản phẩm của Program Tong_luy_thua;
gì?
nhóm.
Var a, b, c, d, S: Real;
- Ở ví dụ 1 ta cần viết hàm có - HS: x, k là tham số hình
n, m, p, q: Integer;
tên là Luythua(x, k) có hai thức.
Function Luythua(x: real; k:
tham số hình thức là x và k.
integer): real;
xk = x*x*…*x
Var i : integer; Lt: real;
- Vậy để được phép nhân k lần - Trả lời: dùng vòng lặp
Begin
ta cần thực hiện thông qua lệnh for, với giá trị ban đầu
Lt:= 1;
nào? Giá trị ban đầu của tích bằng 1.
For i:=1 to k do Lt:= Lt*x;
này là bao nhiêu?
Luythua:= Lt;
- Nhận xét và hướng dẫn học - Quan sát và ghi bài.
End;
sinh cách viết chương trình.
BEGIN
(?) Hàm được sử dụng như thế - Trả lời: + Việc sử dụng Write(‘Nhap co so a, b, c, d = ’);
nào trong chương trình?
hàm tương tự như các Readln(a, b, c, d);
hàm chuẩn.
Write(‘Nhap so mu n, m, p, q = ’);
+ Vì kết quả trả về đã gán Readln(n, m, p, q);
cho tên hàm nên thông S:= Luythua(a,n) + Luythua(b,m)
thường các tham số trong + Luythua(c,p) + Luythua(d,q);
hàm là các tham số giá Writeln(‘Tong luy thua S =
trị.
’,S:8:2);
+ Lệnh gọi hàm có thể Readln;
tham gia vào biểu thức END.
như một tốn hạng hoặc
- Các em theo dõi ví dụ 2 làm tham số cho chương
SGK/T102.
trình con khác.
GV trình chiếu ví dụ 2
- Xem sách giáo khoa.
Ví dụ 2. SGK trang 102.
HOẠT ĐỘNG 3: Hoạt động luyện tập, vận dụng
(1) Mục tiêu: Học sinh thực hiện được thao tác chương trình con.
(2) Phương pháp/kĩ thuật dạy học: Vấn đáp, thuyết trình, đặt vấn đề, phân tích, so sánh,...
(3) Hình thức tổ chức hoạt động: Cá nhân.
(4) Phương tiện dạy học: Giáo án, SGK, bảng.
(5) Sản phẩm: Học sinh biết vận dụng kiến thức đã học vào giải quyết tình huống thực tiễn cụ thể.
Nội dung hoạt động
Hoạt động giáo viên
Hoạt động học sinh
Nội dung trình bày
Ví dụ 3. Viết chương
(?) Nên sử dụng hàm hay thủ tục?
Sử dụng thủ tục
trình con tính tổng của
Sử dụng hàm
Procedure
Tong(x,y:integer;
var
hai số nguyên nhập vào
Function Tong(x,y:integer): integer;
T:
integer);
từ bàn phím.
Begin
Begin
Tong:= x+y;
T:= x+y;
End;
End;
Nên sử dụng hàm.
Ví dụ 4. Viết chương
(?) Nên sử dụng thủ tục hay hàm?
Sử dụng hàm
trình con kiểm tra số
Sử dụng thủ tục
Function
nguyên a là số chẵn hay
Procedure KT(a:integer);
KT(a:integer):boolean;
số lẻ.
Begin
Begin
Sử dụng hàm
If a mod 2 = 0 then Write(a,‘la so
If a mod 2 = 0 then
Khi cần thực hiện một
chan’) else Write(a,‘la so le’);
KT:= true else KT:= false;
cơng việc nào đó ta
End;
End;
dùng thủ tục, cịn khi
Nên sử dụng thủ tục.
cần tính một giá trị nào
(?) Khi nào thì sử dụng hàm, khi nào
đó ta dùng hàm.
thì sử dụng thủ tục?
HOẠT ĐỘNG 4: Hoạt động tìm tịi, mở rộng
(1) Mục tiêu: Giúp học sinh có nhu cầu mở rộng thêm kiến thức của mình.
(2) Phương pháp/kĩ thuật dạy học: Làm việc cá nhân, nhóm.
(3) Hình thức tổ chức hoạt động: Ngồi lớp học.
(4) Phương tiện dạy học: SGK, Projector, máy tính.
(5) Sản phẩm: Học sinh biết cách mở rộng các kiến thức của mình thơng qua bài tập cụ thể.
Nội dung hoạt động
Hoạt động của giáo viên
Hoạt động của học sinh
GV giao bài tập
- HS ghi bài tập về nhà tìm hiểu.
1. Viết chương trình thực hiện lần lượt các cơng việc
sau:
a. Lập thủ tục nhập ba số nguyên dương a, b, c từ bàn
phím.
b. Lập thủ tục kiểm tra xem ba số trên có lập thành ba
cạnh của tam giác khơng.
c. Viết hàm tính diện tích của tam giác.
d. Viết hồn thiện chương trình chính.
k
2. Viết chương trình tính Cn , có sử dụng hàm.
4. Củng cố kiến thức
Câu 1: Kiểu dữ liệu của hàm chỉ có thể là:
A. Record, byte
B. Integer, real, char, boolean, string
C. Boolean, word
D. Integer, real, char, array, string
Câu 2: Kết thúc hàm bằng từ khóa nào?
A. End.
B. End
C. End;
D. Readln;
Câu 3: Phần đầu của hàm nào sau đây là đúng?
A. Function <tên hàm>;
B. Function <tên hàm>: <Kiểu dữ liệu>:
C. Function <tên hàm>: <Kiểu dữ liệu> D. Function <tên hàm>[(<danh sách tham số>)]: <kiểu dữ liệu>;
Câu 4: Cho khai báo đầu của một hàm như sau:
Function F(k: integer): String;
Begin
If k mod 2 = 0 then F:= ‘chan’ else F:= ‘le’ ;
End;
Muốn in Write(F(y)); thì biến y phải khai báo kiểu gì?
A. Var y: Integer;
B. Var y: String;
C. Var y: Char;
D. Var y: Real;
5. Rút kinh nghiệm
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................