SỜ GIÁO DỤC VÀ ĐÀO TẠO HÀ NỘI TRƯỜNG THPT Lưu HOÀNG SÁNG KIÉN KINH NGHIỆM TÊN ĐẺ TÀI “RÈN KỸ NÀNG VIÉT CHƯONG TRÌNH CON THÔNG QUA CÁC TIÉT BÀI TẬP VÀ THựC HÀNH” Lĩnh Vực/Môn Tin Học Cấp học THPT Tác G[.]
Trang 1SỜ GIÁO DỤC VÀ ĐÀO TẠO HÀ NỘI TRƯỜNG THPT Lưu HOÀNG
SÁNG KIÉN KINH NGHIỆM
TÊN ĐẺ TÀI
“RÈN KỸ NÀNG VIÉT CHƯONG TRÌNH CON THÔNG QUA CÁC TIÉT BÀI TẬP VÀ THựC HÀNH”
Lĩnh Vực/Môn : Tin Học
Cấp học : THPT
Tác Giả : Nguyễn Thị Mỹ Hạnh
Đơn vị công tác : Trường THPT Lưu Hoàng-ửng Hòa-Hà Nội Chức vụ : Tô trưởng chuyên môn
NÁM HỌC 2020-2021 MỤC LỤC
PHẦN I : ĐẠT VÁN ĐÈ 1 1.1 LÝ DO CHỌN ĐÈ TÀI 1
Trang 21.2 MỤC ĐÍCH NGHIÊN cứu 1
Tên đề tài : “ RÈN LUYỆN KỲ NẢNG VIẾT CHƯƠNG TRÌNH CON THÔNG QUA CÁC TIÉT BÀI TẬP VÀ THỰC HÀNH ” 1
1.3 ĐỐI TƯỢNG PHẠM VI NGHIÊN cứu VÀ THỜI GIAN THỰC HIỆN ĐÈ TÀI 1
1.4 QUÁ TRÌNH THỰC HIỆN ĐỀ TÀI 2
1.4.1 Tình hình thực tế trước khi thực hiện đề tài 2
1.4.2 Số liệu điều tra trước khi thực hiện đề tài 2
PHÀN 2: GIAI QUYÉT VÁN ĐÈ 3
11.1 HỆ THỐNG KIẾN THỨC VÈ CHƯƠNG TRÌNH CON 3
11.2 CÁC LỎI CỦA HQC SINH THƯỜNG MÁC VÀ CÁCH KHÁC PHỤC4 11.3 KHAI THÁC MỘT SỔ THUẬT TOÁN sử DỤNG CHƯƠNG TRÌNH CON 9
11.2.1 Hàm tìm ước số chung lớn nhất của hai sổ nguyên dương M và N 9
11.2.2 H àm tìm giá tri nhỏ nhất của hai số nguyên a và b 13
II 3 KÉT QUẨ ÁP DỤNG ĐÈ TÀI 14
PHÀN III: KÉT LUẬN VÀ KIẾN NGHỊ 15
III 1 KÉT LUẬN 15
III 2
KIẾN NGHỊ 15
Trang 3PHẦN I : ĐẬT VẤN ĐÈ 1.1 LÝ DO CHỌN ĐÈ TÀI
Thực hiện công văn số 3147/SGDĐT về việc hướng dẫn nhiệm vụ năm học
2020-2021 và hướng dần hoạt động chuyên môn bộ môn Tin học cap THPT cùa Sờ Giáo dục - Đào tạo Hà Nội Thực hiện hiệu quả chương trình giáo dục phô thông hiện hành theo định hướng phát triền phẩm chất năng lực cho học sinh
Với tình hình thực tế giảng dạy bộ môn Tin ô trường THPT Lim Hoàng, kế hoạch giảng dạy của bộ môn xây dựng giành cho các tiết bài tập và thực hành tương đối nhiều.Việc củng co kiến thức thông thông qua hệ thống các tiết bài tập một cách hiệu quà là rat cần thiết
Nội dung về cách viết và sừ dụng chương trình con vần còn là bài học khá khó đối với nhiều em học sinh khối 11 do nhiều học sinh còn yếu kiến thức về mặt Toán học và không hứng thú với việc học bộ môn Tin Tôi tìm giải pháp khác phục, giúp cho học sinh tiếp thu được kiến thức thông qua giãi quyết nhiệm vụ học tập đặt ra trong bài học, khai thác các ví dụ trong bài học nhằm củng cố kiến thức cho các em thông qua các tiết bài tập và thực hành
Việc chuyên giao nhiệm vụ cho học sinh nhằm mục đích phát huy sự chủ động và sáng tạo cùa học sinh, tăng cường tính giao lưu, họp tác thúc đây học sinh hứng thú học tập, đó là lí do tôi chọn đề tài này
1.2 MỤC ĐÍCH NGHIÊN cửu
Tên đề tài : “ RÈN LUYỆN KỸ NĂNG VIÉT CHƯƠNG TRÌNH CON THÔNG QUA CÁC TIÉT BÀI TẬP VÀ THựC HÀNH ”
Đê tài này chủ yêu tập trung vào nghiên cứu khăc phục những sai lâm mà học sinh thường mắc phải Khai thác các ví dụ trong sách giáo khoa nham khắc sâu kiến thức về chương trình con cũng như vai trò ý nghĩa của chương trình con
Phát triển tư duy lập trình cho học sinh, giải quyết các van đề trong khoa học cũng như trong cuộc sống, thông qua tiết bài tập và thực hành tạo sự hứng thú học tập cho các em học sinh
1.3 ĐÓI TƯỢNG, PHẠM VI NGHIÊN cứu VÀ THỜI GIAN THựC HIỆN
ĐÈ TÀI
1.3.1 Đoi tượng nghiên cứu
- Những lồi mà học sinh lóp 11 thường mac kill trình bày chương trình con
1.3.2 Phạm vi nghiên cứu
-Các thuật toán đơn giản
1.3.3 Thòi gian thực hiện đề tài
- Đe tài được viết và áp dụng trong Năm học 2020-2021
1.4 QUÁ TRÌNH THỰC HIỆN ĐÈ TÀI
Trang 41.4.1 Tình hình thực tế trước khi thực hiện đề tài
- Sau khi giảng dạy xong bài 18 “ Ví dụ về cách viết và sử dụng chương trình
con”, tôi đà cho khảo sát lóp 11A1, 11A2.
*Ket quả tồn tại:
+Nhiều học sinh chưa phân biệt rõ được vấn đề khi nào viết chương trình con là hàm và khi nào nên viết chương trình con dưới dạng thủ tục
+Học sinh còn lúng túng trong việc trình bày chương trình con, khai báo biến, tham số
+Học sinh không nhớ được kiến thức cũ đê áp dụng giãi bài tập
-Các yếu tố này làm ảnh hưởng den chat lượng, hiệu quả của bài học
1.4.2 Số liệu điều tra trước khi thực hiện đề tài
Lớp Sĩ số
Giỏi Khá
Trung Bình Yếu Kém
11 AI (Thực
nghiệm)
42 6 13 11 12 0
11A2 (Đối chứng) 42 5 12 13 12 0
Trang 5PHẦN 2: GIẢI QUYẾT VẤN ĐỀ
Tên đề tài sáng kiến kinh nghiệm:
‘ RÈN KỸ NÃNG VIÉT CHƯƠNG TRÌNH CON TRONG CÁC TIÉT BÀI
TẬP VÀ THỰC HÀNH”
Sáng kiến gồm các nội dung chính :
+Hệ thống kiến thức về chương trình con
+ Phân biệt hàm và thủ ựic
+ Các lỗi học sinh thường mac
+ Đe xuất giãi pháp khắc phục
H-Khai thác một số ví dụ về chương trình con để giải quyết các bài tập
+Thử nghiệm sư phạm
II.l HỆ THÓNG KIÉN THỨC VÈ CHƯƠNG TRÌNH CON
II 1.1 Chương trình con và lợi ích của việc sử dụng chương trình con
a) Khái niệm
- Chương trình con là một dày lệnh mô tả một số thao tác nhất đinh và có thê được thực hiện ở nhiều vị trí trong chương trình
b) Lợi ích của việc sừ dụng chương trình con:
- Tránh việc phải viết lặp lại một nhóm lệnh khi nhóm lệnh này được thực hiện nhiều lần khác nhau trong chương trình
- HỒ trợ cho các chương trình lớn
- Có thể giao cho nhiều người cùng viết một chương trình
- Thuận tiện cho việc phát triển, nâng cap chương trình
c) Phân loại
- Chương trình con gồm hai loại : Hàm và thù tục
d) Cấu trúc chương trình con
- Chương trình con có cấu trúc tương tự chương trình, nhưng nhất thiết phải có tên và phần đầu dùng đê khai báo tên, nếu là hàm phâi khai báo kiêu dữ liệu cho giá tri trâ về của hàm
II.1.2 Thủ tục
- Là chương trình con thực hiện các thao tác nhất đinh nhưng không trâ về giá tri qua tên của nó
- Cấu trúc tlìủ tục
Procedure <tên_thủ_tục>[<(DS các tham số)>];
[<Phần khai báo>]
Begin
[<dày các lệnh >]
End;
Trang 6+Phần đầu: gồm Procedure, tên thủ tục và các tham số hình thức.
+Phần khai báo: các hang, 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;
II.1.3 Hàm
- Là chương trình con thực hiện một số thao tác nào đó và trả về giá tri qua tên của nó
- Cấu trúc hàm
Function <tên hàm>[(<danh sách các 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;
Chủ ý:
+Kiểu dữ liệu là kiêu dừ liệu của giá tiạ mà hàm trả về và chi có thê là
các kiêu: integer, real, char, boolean, string
+Trong thân hàm can phải có câu lệnh gán giá tri cho tên hàm
II 1.4 So sánh hàm và thủ tục
* Giống nhau: Đeu là chương trình con có cấu tróc tương tự nhau
* Khác nhau: Điêm khác nhau cơ bân giữa thù ựic và hàm là việc thực hiện hàm
luôn trả về giá trị kết quả thuộc kiêu xác định và giá tiạ đó được gán cho tên hàm
- 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>;
II.2 CÁC LÒI CỦA HỌC SINH THƯỜNG MÁC VÀ CÁCH KHÁC PHỤC
II.2.1 Học sinh còn lúng túng trong việc viết chương trình con
- Đây là lỗi hầu hết các học sinh đều mắc phải, các em chưa phân biệt rõ sự khác nhau cơ bân giữa hàm và thủ tục Các em rat lúng túng trong việc xác đinh những bài toán như the nào nên chọn thủ tục hay những bài toán nào cần sử dụng hàm
- Khi biết chương trình con học sinh nhầm lẫn việc khai báo các biến
Cách khắc phục: Giáo viên phân biệt cho học sinh thấy rõ khi nào các em nên
chọn hàm và khi nào nên chọn thủ tục bang cách đưa ra hệ thống các bài tập từ dề đen khó
-Khi cần thực hiện một công việc nào đó người ta dùng thù tục, còn khi cần tính một giá tri nào đó người ta dùng hàm
- Rèn luyện khả năng sử dụng chương trình Đó là con đường có hiệu quà để phát tnên ờ học sinh năng lực xây dựng chương trình đơn giàn từ đó phát tnên tư duy lập trình có cấu trúc
Trang 7- Đối VỚI mồi bài tập giáo viên lặp đi lặp lại một cách có dụng ý những câu hỏi sau:
1) Bài toán đã cho có thê chia thành những bài toán nhỏ hơn như thế nào ? 2) Những biến nào cần dùng trong toàn bộ chương trình ?
3) Những biến nào chỉ cần cho một chương trình con cụ thê ?
4) Chương trình con nào cần viết dưới dạng hàm ?
5) Có thê cấu trúc chirơng trình như thế nào?
- Qua việc rèn luyện lập trình giãi các bài tập, học sinh sè dan dần lĩnh hội và vận dụng chúng như một chiến lược xây dựng và sứ dụng chương trình con, một yếu
tố quan trọng cùa lập trình có cấu trúc
VÍ DỤ
Bài toán 1: Viết chương trình thực hiện nhập vào hai số thực a,b là độ dài hai
cạnh hình chừ nhật Tính diện tích hình chừ nhật (có sử dụng chương trình con) Với các câu hỏi như lặp lại phần trên, ta chờ đợi học sinh những câu trả lời :
+ Bài toán trên có thê chia nhỏ thành những bài toán sau:
- Nhập hai số thực hr bàn phím
- Tính diện tích hình chừ nhật chính là tích a*b
- Biến a,b,s : thực là biến dùng cho câ chương trình
-Bài toán này có thực hiện công việc tính toán diện tích hình chữ nhật học sinh có thê lựa chọn chương trình con là thù tục hoặc hàm
Từ đó học sinh có thê viết được chương trình có sứ dụng các chương trình con là thủ tục như sau:
Program DTICH-HCN;
Var a,b , S: real;
Procedure Nhap;
Begin
WritefNhap a,b’); Readln(a,b);
End;
Procedure DTICHHCN;
Begin
S:=a*b;
Wnte(‘Dien tich hen = ’,S:2:1);
End;
Trang 8Nhap;
DTICHHCN;
END.
Bài toán 2: Lập chương trình thực hiện tính diện tích của hình tứ giác khi biết
số đo 4 cạnh và một đường chéo nhập vào từ bàn phím
Dần dắt học sinh :
Câu hỏi 1: Có thế chia nhô bài toán như thế nào?
- Nhập các số từ bàn phím
- Tính diện tích vả đưa kết quả ra màn hình
Dần dắt: Bài toán tính diện tích tam giác khi biết độ dài 3
cạnh a,b,c rất quen thuộc VỚI các em, công thức Hê-Rông
■S’ = ự/?(p-a)(p-b)(p-c) vói p= a+^ + C
- Tìm các đưa bài toán này về bài toán quen thuộc, đê tính diện tích tứ giác này cần chia tứ giác này thành hai tam giác, khi đó diện tích tứ giác sẽ được tính bằng tổng diện tích hai tam giác đã chia
Câu hỏi 2: Chương trình con cần viết dưới dạng hàm hay thú tục ?
- Do cần lấy giá tri của chương trình con là kết quâ diện tích tam giác Học sinh
dề dàng nhận ra việc sữ dụng chương trình con trong bài toán này là hàm
Câu hỏi 3: Những biến nào cần dùng trong toàn bộ chương trình ?
- Cần 5 biến a,b,c,d, e đê lưu trừ độ dài 4 cạnh và đường chéo của tứ giác
Câu hỏi 4: Những biến nào chỉ cần cho hàm tính diện tích?
- Cần biến tính chu vi, diện tích: s, p
Câu hỏi 5: Có thê cấu trúc chương trình như the nào ?
Ket quả mong đợi
Program Tugiac;
Var a,b,c ,d,e: real;
Function Dientich(x,y,z: real): real;
Var
s, p: real;
Begin
p:=(x+y+z)/2;
S:= SQRT(p*(p-x)*(p-y)*(p-z));
Dientich:=S;
End;
Trang 9Write(‘nhap a,b,c,d,e =’);
Readln(a,b,c,d,e);
Wnte(‘dien tích cua tu giac la Dientich(a,b,c)+ Dientich(d,e,c):5:2);
END.
Bài toán 3: Viết chương trình nhập vào ba sổ thực, kiêm tra xem ba số đó có là số
đo ba cạnh của tam giác không ? Neu ba số đó là sổ đo ba cạnh tam giác thì tam giác đó là tam giác gì ? (tam giác có ba góc nhọn, tam giác vuông, cân hay tam giác tù)
Với các câu hỏi như lặp lại phần trên, ta chờ đợi học sinh những câu trả lời:
+ Bài toán trên có thê chia nhỏ thành những bài toán sau:
- Nhập ba số thực a,b,c từ bàn phím Đưa giá tri lớn nhất trong ba số về c Kiêm tra xem c có nhò hơn tông a+b hay không (học sinh có thê kiêm tra trực tiếp các điêu kiện tông hai so bat kỳ trong ba số lớn hơn số còn lại hoặc hiệu hai số bất kỳ nhỏ hơn số còn lại)
- Nhận dạng tam giác theo ba cạnh, suy ra từ việc so sánh tông bình phương cạnh lớn nhất với tông bình phương hai cạnh còn lại
+ Biến a.b.c : Thực là biên dùng cho cả chương trình Trong chương trình đưa số lớn nhất về c cần biến trung gian là tg: thực là biến chỉ dùng trong chương trình con để tráo đổi a cho b
+ Chương trình nhận vào ba số, đưa số lớn nhất về c rồi kiếm tra xem c<a+b là đúng hay sai học sinh quen thuộc có thê viết được
Từ đó học sinh có thê viết được chương trình như sau:
Program TamGiac;
Uses crt;
Var a,b,c : real;
Function KTra : Boolean;
Var tg: real;
Begin
Writeln(‘nhap ba so thuc a,b,c : ’) ;
Readln(a,b,c);
If c<a then
begin
Tg:=a; a:=c; c;=tg;
end;
If c< b then
begin Tg:=b; b:=c; c:=tg;
end:
Trang 10End;
Procedure NhanDang_TG;
Begin
b:=a*a+b*b; c:=c*c;
if c<b then Wnteln (‘Tam giac co ba goc deu nhon’)
If c=b then write(‘Tam giac vuong’) Else write(‘Tam giac tu’);
End;
BEGIN
clrscr;
If KTra then NhanDang_TG Else write(‘Khong la tam giác’);
END.
Mở rộng bài toán: Giao cho học sinh về nhà thực hiện
Bài tập 1: Viết chương trình con thực hiện các công việc sau
a) Tinh dien tích hình vuong
b) Tinh dien tích hĩnh tron
c) Tinh dien tich hĩnh thang
Ket quả mong đợi
uses crt;
Procedure HCN;
var a,b:real;
Begin
writef nhap a = '); readln(a); writeln('Dien tích hcn la : a*a:l:2); readln;
End;
Procedure HINHTRON;
var r : real;
Begin
writefR ='); Readln(r);
writelnfDien tích hình tron : r*r*3.14:1:2);
readln;
End;
Procedure HINHTHANG;
var a,b,h:real;
Begin
writefNhap day lon, day be, chieu cao : '); Readln(a,b,h); writeln('Dien tích hĩnh thang : ',(a+b)*h/2:l:2);
readln;
End;
Trang 11Bài tâp 2: Dùng thủ tục giải phương trình bậc hai : ax2 + bx + c = 0
+ Bài toán trên có thê chia nhỏ thành những bài toán sau:
- Nhập các hệ số a,b,c,
- Giãi phương trình ax2 + bx + c = 0
Bài tâp 3 : 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 so thực dương a , b , c từ bàn phím
b) Lập thủ ựic kiêm tra xem ba số trên có lập thành ba cạnh cùa tam giác hay không ?
c) Viết thủ tục tính diện tích của tam giác
d) Viet thủ tục tính các tiling tuyến cùa tam giác
e) Viết hoàn thiện chương trình chính
II.3 KHAI THÁC MỘT SÓ THUẬT TOÁN sử DỤNG CHƯƠNG TRÌNH CON
II.2.1 Hàm tìm ước số chung lớn nhất của hai số nguyên dương M và N
a) Mục tiêu: Nhăm vận dụng kiên thức mới mà HS đã được lĩnh hội đê giải
quyết những vấn đề mới trong học tập và thực tiễn về chương trình con là Hàm
b) Ý tưởng thuật toán: Viết hàm tìm ước số chung
- So sánh M và N
- Nếu M=N thì UCLN:=M
- Neu M> N thì UCLN:=M-N ngược lại UCLN:=N quá trình được lặp đi lặp
lại đến khi M=N
Function ƯCLN(a,b: integer):integer;
Begin While a <> b do
If a > b then a:= a - b else b := b-a;
UCLN := a;
End;
c) Vận dụng : Chuyên giao nhiệm vụ cho học sinh
Bài toán 1: Cho một dày gồm N số nguyên dương A1, A2, AN ngầu nhiên nhập
từ bàn phím Hãy tìm ước chung lớn nhất của các cặp số đứng liền nhau mà số sau lớn hơn hoặc bang số đứng trước trong dày trên và viết ra màn hình
+ Xác định bài toán
Input: cho N và dày so nguyên Al, A2, AN
Output: một dày gồm N -1 số nguyên là các ước chung lớn nhất cùa các số trong
dày số đã được sắp xếp thành dày không giâm
+ Bài toán trên có thê chia nhỏ thành những bài toán sau:
Trang 12- Nhập N và dày số nguyên dương Al, A2, AN: Sứ dụng thù tục Nhap
- Sap xếp dày Al, A2, AN thành dày không giâm: Sừ dụng thủ tục Sap_xep
- Tìm ước chung lớn nhất của dày đã sắp xếp: Sừ dụng hàm tìm ước số chung lớn nhất cùa hai so nguyên dương
Ket quả mong đợi trong chương trình chính
BEGIN
Nhap ;
Sapxep;
Writeln(‘ day cac uoc chung lon nhat:’);
For i :=1 to N-l do write (ƯCLN(A[i], A[i+1]) : 5); Readln
END.
Bài toán 2: Tìm bội số chung nhò nhất của hai số nguyên dương M và N
Ỷ tưởng : 55CW(M,N) = 7—-77^7—
6 tZSCZJV(M,N)
Dần dắt học sinh: Sử dụng hàm tìm ước sổ chung lớn nhất của hai số nguyên
dương
Ket quả mong đợi :
Program BOI_SCNN;
Var
M,N: byte;
Function UCLN(a,b: integer):integer;
Begin While a <> b do
If a > b then a:= a - b else b := b-a;
UCLN := a;
End;
BEGIN
Write(‘nhap M,N’);
Readln(M,N);
Write( ‘Bơi so chung nho nhat=’, (M*N) /USCLN(M,N));
END.
Bài toán 3: Rút phân số thành phân số tối giâm
Ỷ tường: Chia tử và mẫu cho ước số chung lớn nhất của câ tử và mẫu Sử dụng
hàm tìm ước số chưng lớn nhất của hai số nguyên dương
Program RutgonPhanso;
Uses crt;