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 [r]
Trang 1Ngày soạn: 25/03/2019
Ngày dạy: 30/03/2019
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
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 toá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ị
- Lắng nghe
Trang 2tương ứng Chẳng hạn để tính an, 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:
là thủ tục và hàm, ta sẽ tìm
hiểu hàm được viết và sử dụng
như thế nào Chúng ta cùng tìm
hiểu cấu trúc của hàm
- Điểm khác nhau cơ bản giữa
hàm và thủ tục là hàm luôn trả
về giá trị thuộc một kiểu xác
định
(?) Kiểu dữ liệu trả về của hàm
có thể gồm những kiểu nào?
(?) So sánh sự giống và khác
nhau về cấu trúc của hàm và
thủ tục?
GV trình chiếu
Bài toán: Lập trình tính tổng
bốn lũy thừa sau:
S = an + bm + cp + dq
GV cho HS làm việc nhóm viết
chương trình con sử dụng hàm
Luythua(x, k)
- Yêu cầu HS xác định x, k là
gì?
- Ở ví dụ 1 ta cần viết hàm có
tên là Luythua(x, k) có hai
tham số hình thức là x và k
xk = x*x*…*x
- Vậy để được phép nhân k lần
ta cần thực hiện thông qua lệnh
nào? Giá trị ban đầu của tích
này là bao nhiêu?
- Nhận xét và hướng dẫn học
sinh cách viết chương trình
(?) Hàm được sử dụng như thế
nào trong chương trình?
- Ghi mục bài
- Ghi bài
- Trả lời: integer, real, boolean, char, string
- Trả lời: Giống nhau:
+ Đều là chương trình con có cấu trúc giống một chương trình.
+ Đều có thể có tham số (tham biến hoặc tham trị), cùng tuân theo quy định
về khai báo và sử dụng của các tham số này.
Khác nhau:
+ Hàm luôn trả về giá trị thuộc kiểu xác định qua tên hàm.
+ Trong thân hàm thường
có câu lệnh gán giá trị cho tên hàm.
+ Lời gọi của hàm cần nằm trong các biểu thức tính toán.
- Ghi ví dụ
HS làm việc theo nhóm, sau đó gọi đại diện HS trình bày sản phẩm của nhóm
- HS: x, k là tham số hình thức
- Trả lời: dùng vòng lặp for, với giá trị ban đầu bằng 1
- Quan sát và ghi bài
- Trả lời: + Việc sử dụng hàm tương tự như các hàm chuẩn.
+ Vì kết quả trả về đã gán
2 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>;
[<phần khai báo>];
Begin
[<dãy các lệnh>]
<tên hàm>:= <biểu thức>;
End;
- <Kiểu dữ liệu>: Kiểu dữ liệu trả
về của hàm chỉ có thể là các kiểu integer, real, boolean, char, string Vd: Function tong(x, y: integer): integer;
Chú ý: Trong thân hàm phải có ít nhất một lệnh gán giá trị cho tên hàm
<tên hàm>:= <biểu thức>;
b Ví dụ về hàm:
Ví dụ 1 Viết chương trình tính
tổng bốn lũy thừa
S = an + bm + cp + dq, trong đó sử dụng hàm Luythua(x, k)
Program Tong_luy_thua;
Var a, b, c, d, S: Real;
n, m, p, q: Integer;
Function Luythua(x: real; k:
integer): real;
Var i : integer; Lt: real;
Begin
Lt:= 1;
For i:=1 to k do Lt:= Lt*x; Luythua:= Lt;
End;
BEGIN
Write(‘Nhap co so a, b, c, d = ’); Readln(a, b, c, d);
Write(‘Nhap so mu n, m, p, q = ’); Readln(n, m, p, q);
Trang 3- Các em theo dõi ví dụ 2
SGK/T102
GV trình chiếu ví dụ 2
cho tên hàm nên thông thường các tham số trong hàm là các tham số giá trị.
+ Lệnh gọi hàm có thể tham gia vào biểu thức như một toán hạng hoặc làm tham số cho chương trình con khác.
- Xem sách giáo khoa
S:= Luythua(a,n) + Luythua(b,m) + Luythua(c,p) + Luythua(d,q);
Writeln(‘Tong luy thua S =
’,S:8:2);
Readln;
END.
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
(?) Nên sử dụng hàm hay thủ tục?
Sử dụng hàm
Function Tong(x,y:integer): integer;
Begin
Tong:= x+y;
End;
Nên sử dụng hàm
(?) Nên sử dụng thủ tục hay hàm?
Sử dụng thủ tục
Procedure KT(a:integer);
Begin
If a mod 2 = 0 then Write(a,‘la so
chan’) else Write(a,‘la so le’);
End;
Nên sử dụng thủ tục
(?) Khi nào thì sử dụng hàm, khi nào
thì sử dụng thủ tục?
Sử dụng thủ tục Procedure Tong(x,y:integer; var
T: integer);
Begin
T:= x+y;
End;
Sử dụng hàm Function
KT(a:integer):boolean;
Begin
If a mod 2 = 0 then KT:= true else KT:= false;
End;
Ví dụ 3 Viết chương
trình con tính tổng của hai số nguyên nhập vào
từ bàn phím
Ví dụ 4 Viết chương
trình con kiểm tra số nguyên a là số chẵn hay
số lẻ
Sử dụng hàm
Khi cần thực hiện một công việc nào đó ta dùng thủ tục, còn khi cần tính một giá trị nào
đó ta dùng hàm.
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: Ngoà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
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 hoàn thiện chương trình chính
- HS ghi bài tập về nhà tìm hiểu
Trang 42 Viết chương trình tính C n k , 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à:
Câu 2: Kết thúc hàm bằng từ khóa nào?
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