Đề tài này được viết dựa trên kinh nghiệm thực tiễn giảng dạy của bản thân, và tôi xây dựng thành: “Hướng dẫn học sinh phân biệt và sử dụng tham biến và tham trị trong lập trình có cấu t
Trang 1MỤC LỤC
1 MỞ ĐẦU 2
2 NỘI DUNG SÁNG KIẾN KINH NGHIỆM 3
2.1 Cơ sở lí luận của sáng kiến kinh nghiệm 3
2.3 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm 5
2.3 Các biện pháp tiến hành để giải quyết 6
2.3.1 Sự khác nhau cơ bản của tham trị và tham biến 6
2.3.2 Chương trình con có tham số sử dụng tham biến và tham trị như thế nào? 8
2.3.3 Một số bài tập đơn giản để rèn luyện kĩ năng cho học sinh trong việc sử dụng tham trị và tham biến khi lập trình có cấu trúc 10
2.3.4 Một số bài tập luyện tập thêm 15
2.4 Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản thân, đồng nghiệp và nhà trường 16
3 KẾT LUẬN 17
TÀI LIỆU THAM KHẢO 19
Trang 21 MỞ ĐẦU
- Lý do chọn đề tài:
Mỗi môn học đều có đặc thù riêng, môn Tin học cũng vậy Đối với mônTin học, các tiết bài tập và bài tập thực hành chiếm thời lượng giảng dạy khánhiều Kết quả học lý thuyết thể hiện ở năng lực giải quyết bài tập và bài tậpthực hành của các em Tuy nhiên, đối với học sinh khối 11, việc làm quen vớilập trình dù chỉ là các bài toán đơn giản cũng còn nhiều lạ lẫm và khó khăn Đó
là những kiến thức mới, cách tiếp cận cũng như thực hành không như nhữngmôn học các em đã được làm quen lâu nay Để làm được bài tập phải vận dụngnhiều kỹ năng như: Tư duy toán học, tư duy logic Mà không phải tất cả họcsinh đều có tư chất và say mê đối với môn học để tìm tòi và đáp ứng được
Đặc biệt khi giảng dạy nội dung bài 18 - chương VI: “Ví dụ về cách viết
và sử dụng chương trình con” – Tin học 11 tôi nhận thấy đa số học sinh đều gặp
khó khăn khi tìm hiểu các khái niệm trừu tượng như: Danh sách tham số, tham
số giá trị(tham trị), tham số biến(tham biến) Thông qua các ví dụ minh họa
trong sách giáo khoa hầu hết các em chưa nắm bắt được các khái niệm một cách
hiệu quả nhất, và dễ bị nhầm lẫn các khái niệm: Tham biến, tham trị.
Đề tài này được viết dựa trên kinh nghiệm thực tiễn giảng dạy của bản
thân, và tôi xây dựng thành: “Hướng dẫn học sinh phân biệt và sử dụng tham
biến và tham trị trong lập trình có cấu trúc thông qua nội dung bài 18 – chương VI – Tin học 11: Ví dụ về cách viết và sử dụng chương trình con”.
- Mục đích nghiên cứu
Giúp học sinh phân biệt và sử dụng tham trị, tham biến trong quá trình lậptrình Từ đó, các em có thể hiểu vận dụng vào viết các chương trình con hỗ trợphục vụ cho quá trình lập trình giải quyết các bài toán từ đơn giản đến phức tạp
- Đối tượng nghiên cứu
Học sinh khối 11 trường THPT Triệu Sơn 1
- Phương pháp nghiên cứu
Trong phạm vi đề tài này tôi lựa chọn phương pháp nghiên cứu xây dựng
cơ sở lí thuyết
Trang 32 NỘI DUNG SÁNG KIẾN KINH NGHIỆM
2.1 Cơ sở lí luận của sáng kiến kinh nghiệm
Cũng như những môn học khác, việc dạy Tin học cần được thực hiệntrong hoạt động và bằng hoạt động tự giác, tích cực, chủ động và sáng tạocủa người học Khi cần dạy một nội dung Tin học cho học sinh, người giáoviên phải biết phân tích nội dung đó xem nó liên quan đến những hoạt độngnào và một số hoạt động trong đó lại được phân tích thành những hoạt độngthành phần, rồi căn cứ vào mục tiêu tiết học, trình độ học sinh, trang thiết bịhiện có mà lựa chọn cho học sinh tập luyện và thực hiện một số trong nhữnghoạt động tiềm tàng trong nội dung cần dạy Để học sinh có ý thức về ý nghĩacủa những hoạt động, cần tạo động cơ học tập cho học sinh, để học sinh họcbằng sự hứng thú thực sự được nảy sinh từ việc ý thức sâu sắc ý nghĩa củanội dung bài học
Bên cạnh đó cần phải tập luyện cho học sinh những hoạt động ăn khớpvới những tri thức phương pháp Phải phân bậc hoạt động để tuần tự nêu caoyêu cầu khi tình huống dạy học cho phép hoặc hạ thấp yêu cầu khi học sinhgặp khó khăn Hệ thống bài tập được phân bậc để học sinh luyện tập tại lớphoặc làm ở nhà
Quan điểm hoạt động trong phương pháp dạy học có thể được thể hiện ởcác tư tưởng chủ đạo sau:
* Cho học sinh thực hiện và tập luyện những hoạt động và hoạt độngthành phần tương thích với nội dung và mục tiêu dạy học;
* Gợi động cơ cho các hoạt động học tập;
* Dẫn dắt học sinh kiến tạo tri thức, đặc biệt là tri thức phương pháp nhưphương tiện và kết quả của hoạt động;
* Phân bậc hoạt động làm căn cứ điều khiển quá trình dạy học
Trong các tư tưởng chủ đạo đó, tôi lựa chọn tư tưởng: " Cho học sinh thực hiện và tập luyện những hoạt động và hoạt động thành phần tương thích với nội dung và mục tiêu dạy học" làm cơ sở lý luận cho SKKN này Có thể
cụ thể hóa tư tưởng như sau:
*Phát hiện những hoạt động tương thích với nội dung:
Việc phát hiện những hoạt động tương thích với nội dung căn cứ mộtphần quan trọng vào sự hiểu biết về những hoạt động nhằm lĩnh hội những
Trang 4Ví dụ: Khi giới thiệu về danh sách tham số sử dụng trong phần đầu của
chương trình con ta có thể giải quyết như sau:
Nếu một chương trình con có danh sách tham số thì các tham số phải
được khai báo ở phần đầu chương trình con, cụ thể đối với thủ tục và hàm cócấu trúc để khai báo:
Thủ tục: Procedure <Tên thủ tục>[(<Danh sách tham số>)];
Hàm: Function <Tên hàm>[(<Danh sách tham số>)]: <Kiểu dữ liệu>;
Trong đó: [(<Danh sách tham số>)] là tên của một hoặc nhiều biến đơn,
và phải khai báo kiểu dữ liệu của các biến đơn trong danh sách tham số Thành
phần danh sách tham số có thể có hoặc không trong khai báo
Ví dụ: 1.Procedure Ve_HCN;
2.Procedure Ve_HCN(chdai,chrong:integer);
Dựa vào khái niệm đưa ra và các ví dụ điển hình trong SGK học sinh dễ
dàng chỉ ra được thành phần danh sách tham số Trong ví dụ 1 là một trường
hợp của bài toán đơn giản không cần sử dụng danh sách tham số còn ví dụ 2 làmột trường hợp có sử dụng danh sách tham số và cách khai báo các tham số sử
dụng trong chương trình đó là chdai, chrong có kiểu dữ liệu là integer
*Phân tách hoạt động thành các hoạt động thành phần
Trong quá trình hoạt động, nhiều khi một hoạt động này có thể xuất hiệnnhư một thành phần của một hoạt động khác Phân tách được một hoạt độngthành những hoạt động thành phần là biết được cách tiến hành hoạt động toàn
bộ, nhờ đó có thể vừa quan tâm rèn luyện cho học sinh hoạt động toàn bộ vừachú ý cho học sinh luyện tập tách riêng những hoạt động thành phần khó hoặcquan trọng khi cần thiết
Ví dụ: Khi giới thiệu về khái niệm tham trị và tham biến ta có thể giải
quyết như sau:
Theo SGK Tin học 11, tham biến và tham trị được định nghĩa như sau:
* Tham trị: Trong lệnh gọi chương trình con, các tham số hình thức được
thay bằng các tham số thực sự tương ứng là các giá trị cụ thể được gọi là các
tham số giá trị (tham trị).
* Tham biến: Trong lệnh gọi chương trình con, các tham số hình thức được
thay bằng các tham số thực sự tương ứng là tên các biến chứa dữ liệu ra được
gọi là các tham số biến (tham biến).
* Để phân biệt tham trị và tham biến, ngôn ngữ lập trình Pascal sử dụng từ
khóa Var để khai báo những tham số biến.
Trang 5Hoạt động 1: Nhận biết tham trị và tham biến thông qua phần đầu chương
trình con:
Ví dụ 1: a Procedure Hoan_doi(a,b:integer);
b Procedure Hoan_doi(x:integer; Var y:integer);
Học sinh dễ dàng nhận biết:
Ví dụ 1.a: a,b là tham trị;
Ví dụ 1.b: x là tham trị và b là tham biến.
Hoạt động 2: Nhận biết tham trị và tham biến thông qua lệnh gọi chương
Dựa vào khái niệm tham trị và tham biến học sinh chỉ ra được:
Ví dụ 2.a: a và b đóng vai trò là tham biến;
Ví dụ 2.b: 5 và 7 đóng vai trò làm tham trị;
2.3 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm
Trong các chương học trước các em đã làm quen khá nhiều với các dạngbài tập lập trình, và các phương pháp lập trình Tuy nhiên trong chương VI này,các em được làm quen với phương pháp lập trình có cấu trúc do đó còn nhiều bỡngỡ và chưa thành thạo Mặc dù các ví dụ của sách giáo khoa là các chươngtrình cụ thể để giải quyết bài toán tuy nhiên học sinh sẽ gặp rất nhiều khó khăn.Chính vì vậy, đối với những học sinh khá và giỏi việc vận dụng lý thuyết để làmcác bài tập đã khó; đối với học sinh trung bình và yếu càng khó hơn
Thực tế giảng dạy đặt ra vấn đề: làm thế nào để học sinh hiểu bài, có khảnăng tư duy vận dụng để giải quyết các bài tập, từ đó khơi dậy tính tích cực, chủđộng, sáng tạo và say mê tìm tòi dẫn đến yêu thích môn học là điều quan trọngđối với mỗi giáo viên
Bên cạnh đó, nếu sau một thời gian học sinh không biết cách vận dụng lýthuyết vào để làm các bài tập và cảm thấy khó khăn khi giải quyết vấn đề sẽ dẫnđến tình trạng các em thụ động trong việc tiếp thu bài giảng, không còn hứngthú với môn học Để giải quyết vấn đề này là không phải là đơn giản
Trang 6Do đó khi giảng dạy nội dung bài 18 chương VI- Tin học 11 tôi đã ápdụng SKKN của mình với hi vọng có thể giúp học sinh vận dụng để giải quyếtđược các bài tập lập trình có sử dụng chương trình con.
Thuận lợi:
- Có nhiều tài liệu viết về chương trình con
- Thời lượng cho các tiết bài tập và thực hành Tin học khối 11 nhiềuthuận lợi cho việc áp dụng các bài tập trong sáng kiến vào bài dạy
- Các phòng học đều có máy chiếu, có phòng máy đáp ứng được cácyêu cầu giảng dạy của bộ môn
- Sự quan tâm và chỉ đạo kịp thời của Ban giám hiệu nhà trường
Khó khăn:
- Chương trình con là một phần mới và khó đối với học sinh
- Môn tin là môn học không không được học sinh đầu tư nhiều thờigian như các môn học khác
- Để học tốt chương trình tin học 11 học sinh phải có nền tảng tư duytoán học
2.3 Các biện pháp tiến hành để giải quyết
Sự khác nhau cơ bản của tham trị và tham biến
Ngoài sự khác nhau trong cách khai báo, trong lệnh gọi chương trình con
mà học sinh dễ dàng nhận biết thì sự khác nhau về bản chất của tham trị và thambiến lại thực sự là một vấn đề khá phức tạp và dễ nhầm lẫn trong quá trình viếtchương trình giải quyết các bài toán Vậy làm thế nào để học sinh nhận biếtđược sự khác nhau cơ bản giữa tham trị và tham biến?
Giá trị của tham biến thay đổi còn giá trị của tham trị không thay đổi sau khi thực hiện lời gọi chương trình con.
Bài toán 1: Quan sát kết quả thực hiện chương trình và cho biết:
a Tham biến và tham trị sử dụng trong chương trình?
b Đưa ra nhận xét về sự thay đổi giá trị của tham biến và tham trị sau khi lệnh gọi thủ tục được thực hiện?
Program ThamSo;
Var x,y:integer;
Procedure Gia_tri(Var a:integer; b:integer);
Begin
Trang 7Hoạt động 1: Phát hiện nội dung tương thích
Bài toán 1a học sinh nhận biết tham trị và tham biến thông qua phần đầu
chương trình con có sử dụng từ khóa Var trong danh sách tham số hay không?
Do đó học sinh chỉ ra trong danh sách tham số a là tham biến còn b là tham trị
Và trong lệnh gọi thủ tục tương ứng thì x là tham biến, y là tham trị
Hoạt động 2: Phân tách hoạt động thành các hoạt động thành phần Bài toán 1b, đầu tiên x và y được truyền giá trị là x:=10; y:=10;
Khi lệnh gọi thủ tục Thamso(x,y) được thực hiện, do tham biến là biếnchứa dữ liệu ra nên giá trị của tham biến x sẽ bị tác động bởi câu lệnh trong thủtục a:=5 (Tương ứng là x:=5)
Bên cạnh đó, khi lệnh gọi thủ tục Thamso(x,y) được thực hiện, do tham trị
là các giá trị cụ thể nên lệnh gọi lúc này có thể hiểu là Thamso(x,10) Chính vì
Trang 8vậy giá trị của y không bị thay đổi bởi lệnh b:=5 trong thủ tục và giá trị của yvẫn là 10
Kết luận: Sau khi thực hiện lệnh gọi chương trình con, giá trị của tham biến thay đổi còn giá trị của tham trị không thay đổi.
3 Chương trình con có tham số sử dụng tham biến và tham trị như thế nào?
Bài toán 2: Quan sát chương trình và cho biết kết quả của chương trình sau khi thực hiện? Và cho biết để nhận được kết quả phù hợp cần sử dụng tham biến hoặc tham trị như thế nào?
Hoạt động 1: Phát hiện nội dung tương thích:
Thuật toán sử dụng trong chương trình con là thuật toán tráo đổi giá trị củahai số x,y cho thông qua biến trung gian tg mà các em đã được học trong bàitoán sắp xếp mảng một chiều Do đó học sinh sẽ phát hiện được chương trìnhcon là thủ tục thực hiện công việc tráo đổi giá trị của hai số nguyên x,y
Hoạt động 2: Phân tách hoạt động thành các hoạt động thành phần
Hoạt động 2.1: Danh sách tham số sử dụng trong chương trình là tham
biến hay tham trị?
Trang 9Thông qua việc khai báo danh sách tham số các em nhận biết được x và y
là tham trị; còn trong lệnh gọi thủ tục Hoandoi(a,b) hai tham số a,b là tương ứngvới x,y nên a và b là tham trị
Hoạt động 2.2: Tìm hiểu hoạt động của chương trình thông qua hoạt động
của các câu lệnh và đưa ra kết quả sau khi thực hiện chương trình.
Thủ tục Hoandoi(x,y) trong ví dụ này dùng để đổi giá trị giữa 2 biếnnguyên x và y Tuy nhiên khi chạy chương trình, điều này không xảy ra Giá trịcủa 2 biến nguyên a và b trước khi gọi thủ tục a có giá trị bằng 5, b có giá trịbằng 10 và sau khi gọi thủ tục Hoandoi(a,b) giá trị của a, b có giá trị vẫn khôngđổi: a=5, b=10 Việc phát hiện giá trị của a,b không thay đổi sau khi thực hiện
lệnh gọi thủ tục là do “Giá trị của tham trị không thay đổi” (Kết luận của Bài
toán 1) và kết quả trên màn hình là:
Hoạt động 2.3: Chỉnh sửa lại chương trình cho phù hợp.
Rõ ràng lỗi xảy ra do thủ tục Hoandoi(x,y) sử dụng tham trị nên các giá trịcủa các biến a và b không bị ảnh hưởng bởi các lệnh tráo đổi giá trị trong thủtục Nếu muốn nhận được giá trị của a=10 và b=5 thì trong danh sách tham sốcủa chương trình con cần phải khai báo các tham số x, y là tham biến:
Procedure Hoandoi(Var x,y:integer);
Khi đó chương trình sẽ cho kết quả như mong muốn: a=10, b=5 Và trênmàn hình kết quả sẽ là:
Trang 10Đây là một ví dụ điển hình để chỉ ra cho học sinh thấy khi nào cần sử dụngtham trị và tham biến trong chương trình con.
Kết luận: Việc sử dụng tham trị hay tham biến cho một tham số là không thể tuỳ tiện vì nó có thể dẫn đến những kết quả sai với yêu cầu của bài toán Bài toán trên đã minh hoạ các tình huống có thể xảy ra Chương trình cho kết quả sai khi sử dụng tham trị, nếu sửa lại việc khai báo các tham số trong thủ tục Hoandoi là tham biến thì chương trình sẽ cho kết quả đúng với yêu cầu của bài toán.
4 Một số bài tập đơn giản để rèn luyện kĩ năng cho học sinh trong việc sử dụng tham trị và tham biến khi lập trình có cấu trúc
Bài toán 3: Sử dụng chương trình con để lập trình tính chu vi và diện tích hình chữ nhật có độ dài các cạnh là a, b Với a, b nguyên dương nhập vào từ bàn phím.
Hướng dẫn:
Hoạt động 1: Phát hiện nội dung tương thích:
* Câu lệnh gán để tính chu vi và diện tích hình chữ nhật;
* Lựa chọn chương trình con phù hợp;
* Danh sách tham số cần sử dụng;
Hoạt động 2: Phân tách hoạt động thành các hoạt động thành phần:
Hoạt động 2.1: Xây dựng các câu lệnh gán để tính chu vi và diện tích hình
chữ nhật có kích thước a,b:
CV:=(a+b)*2;
DT:=a*b;
Trang 11Hoạt động 2.2: Khi lựa chọn chương trình con cần sử dụng trong chương
trình thì học sinh xác định cần phải dùng thủ tục vì trong trường hợp này nếu dùng Hàm thì cần phải viết 2 Hàm: một hàm tính chu vi và một hàm tính diện
tích vì vậy chương trình sẽ dài hơn và mất thời gian
Hoạt động 2.3: Viết chương trình con dạng thủ tục tính chu vi và diện tích
hình chữ nhật có kích thước a,b
Để viết chương trình con, học sinh cần xác định xem danh sách tham sốcần sử dụng là những tham số nào? Và trong đó những tham số nào khai báo làtham trị và tham biến?
Trong bài toán này, các cạnh của hình chữ nhật sẽ có giá trị không thay đổinên cần khai báo là tham trị; còn chu vi và diện tích cần phải tính trong thủ tụcnên khai báo là tham biến Do đó danh sách tham số gồm bốn tham số, trong đó
x, y là tham trị với mục đích lưu trữ độ dài các cạnh của hình chữ nhật và CV,
DT là tham biến với mục đích lưu trữ giá trị CV, DT sau khi tính
Thủ tục được học sinh viết như sau:
Procedure Tinh(x,y:word; Var CV,DT:word);
Begin
CV:=(x+y)*2;
DT:=x*y;
end;
Hoạt động 2.4: Hoàn thiện chương trình
Dựa vào các hoạt động trên, học sinh sẽ tiến hành viết chương trình hoànchỉnh để giải quyết bài toán ban đầu: