Theo thói quen của nhiều em học sinh, học môn tin là học những thao tác sử dụng như cách sử dụng internet, sử dụng hệ điều hành window, chương trình soạn thảo văn bản Microsoft Word, chương trình soạn thảo trình diễn Microsoft PowerPoint … Đây là những phần học không cần đòi hỏi tư duy, mà chỉ cần học kĩ và nhớ thao tác, thực hành nhiều lần thì sẽ thành thạo. Nhưng khi học bộ môn lập trình Passal chương trình lớp 11 Trung học phổ thông thì hầu như các em bị “choáng” vì bộ môn rất “mới”, và cách học cũng “mới”. Học những thao tác và thực hành nhiều không còn tác dụng, học thuộc bài cũng không còn ổn nữa. Lúc này các em cần phải học cách tư duy logic, tìm thuật toán, và viết những dòng lệnh máy tính chính xác đến từng dấu chấm, dấu phẩy. Chính vì vậy mà học sinh dễ mắc sai lầm khi lập trình giải quyết các bài toán.
Trang 1MỤC LỤC
MỤC LỤC 1
A PHẦN I: ĐẶT VẤN ĐỀ 3
1 Lý do chọn đề tài 3
2 Mục đích nghiên cứu 4
3 Đối tượng nghiên cứu 4
4 Phạm vi nghiên cứu 5
5 Phương pháp nghiên cứu 5
B PHẦN II: NỘI DUNG 6
CHƯƠNG I : TỔNG QUAN 6
1 Cơ sở lý luận .6
2 Cơ sở thực tiễn .7
CHƯƠNG II : NỘI DUNG SÁNG KIẾN KINH NGHIỆM 8
I Một số lỗi sai thường gặp của học sinh khi lập trình Pascal và biện pháp sửa lỗi… 8
1) Những lỗi sai cơ bản thường gặp trong chương II: Chương trình con đơn giản 8
a) Các lỗi thường gặp 8
b) Biện pháp sửa lỗi 9
2) Những lỗi sai cơ bản thường gặp trong chương III:
Trang 2Cấu trúc rẽ nhánh và lặp 10
a) Các lỗi thường gặp 10
b) Biện pháp sửa lỗi 10
3) Những lỗi sai cơ bản thường gặp trong chương IV: Kiểu dữ liệu có cấu trúc 12
a) Các lỗi thường gặp 12
b) Biện pháp sửa lỗi 13
4) Những lỗi sai cơ bản thường gặp trong chương V: Tệp và thao tác với tệp 15
a) Các lỗi thường gặp 15
b) Biện pháp sửa lỗi 15
5) Những lỗi sai cơ bản thường gặp trong chương VI: Chương trình con và lập trình có cấu trúc 17
a) Các lỗi thường gặp 17
b) Biện pháp sửa lỗi 17
II Một số giải pháp giúp học sinh học tốt lập trình Pascal… 19
1) Tạo tâm lí thoải mái cho học sinh 19
2) Tăng cường sử dụng phương tiện dạy học, thực hành 20
3) Sử dụng bài giảng điện tử, minh hoạ từ thực tế 21
4) Chú trọng dạy tư duy thuật toán cho học sinh 23
5) Tích cực hoá hoạt động nhóm 26
Trang 36) Hình thành kỹ năng lập trình 27
III Kết quả đạt được 28
C PHẦN III: PHẦN KẾT THÚC 32
TÀI LIỆU THAM KHẢO 33
Trang 4A PHẦN I: ĐẶT VẤN ĐỀ
1) Lý do chọn đề tài :
Trong thời đại Công nghệ thông tin bùng nổ ngày nay, nhiều quốc gia trênthế giới ý thức được rất rõ tầm quan trọng của tin học và có những đầu tư lớncho lĩnh vực này, đặc biệt trong giáo dục nâng cao dân trí về tin học và đàotạo nguồn nhân lực có chất lượng cao Người Việt Nam có nhiều tố chất thíchhợp với ngành khoa học này, vì thế chúng ta hi vọng có thể sớm hoà nhập vớikhu vực và trên thế giới
Trong Tin học, việc lập được các chương trình tự hoạt động cho máy tính,máy gia dụng là cần thiết Và để làm được việc đó cần có một quá trìnhnghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó nhà lập trình có thểchọn một ngôn ngữ lập trình thích hợp
Theo thói quen của nhiều em học sinh, học môn tin là học những thao tác
sử dụng như cách sử dụng internet, sử dụng hệ điều hành window, chươngtrình soạn thảo văn bản Microsoft Word, chương trình soạn thảo trình diễnMicrosoft PowerPoint … Đây là những phần học không cần đòi hỏi tư duy,
mà chỉ cần học kĩ và nhớ thao tác, thực hành nhiều lần thì sẽ thành thạo.Nhưng khi học bộ môn lập trình Passal chương trình lớp 11 Trung học phổthông thì hầu như các em bị “choáng” vì bộ môn rất “mới”, và cách học cũng
“mới” Học những thao tác và thực hành nhiều không còn tác dụng, học thuộcbài cũng không còn ổn nữa Lúc này các em cần phải học cách tư duy logic,tìm thuật toán, và viết những dòng lệnh máy tính chính xác đến từng dấuchấm, dấu phẩy Chính vì vậy mà học sinh dễ mắc sai lầm khi lập trình giảiquyết các bài toán Nguyên nhân dẫn đến những khó khăn mà học sinhthường gặp là rất phong phú nhưng có thể thấy một số nguyên nhân chính sauđây:
Trang 5- Học sinh thường gặp khó khăn khi xác định bài toán.
- Khó liên hệ phương pháp giải một bài toán trong toán học với thuật toántrong tin học
Tuy nhiên mọi thứ điều có điểm khởi đầu của nó, với học sinh việc họcngôn ngữ lập trình Turbo Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lậptrình bậc cao Qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạtđộng cũng như ích lợi của các chương trình hoạt động trong máy tính, cácmáy tự động… Từ đó giúp các em có thêm một định hướng, một niềm đam
mê về tin học, về nghề nghiệp mà các em lựa chọn sau này
Xuất phát từ cơ sở trên, tôi đã chọn đề tài “Một số giải pháp giúp học sinh
học tốt lập trình Pascal môn Tin học 11”.
2) Mục đích nghiên cứu:
Khi lập trình giải các bài toán học sinh thường mắc rất nhiều lỗi, thậm chí
có những lỗi các em mắc phải nhiều lần do không hiểu nguyên nhân xuất hiệnlỗi Vì vậy trong nội dung đề tài này tôi nêu ra một số lỗi sai phổ biến các emthường mắc phải và biện pháp sửa các lỗi này
Tuy vậy, đối với đối tượng học sinh khá giỏi, đa phần các em rất hào hứngvới việc học lập trình, cụ thể là ngôn ngữ lập trình Turbo Pascal Do đó, trong
đề tài này tôi sẽ trình bày một số giải pháp dạy lập trình Pascal để giúp họcsinh có thể hiểu bài một cách nhanh chóng, nắm chắc kiến thức và kĩ năng lậptrình Pascal
3) Đối tượng nghiên cứu:
- Học sinh lớp 11 trường THPT Cao Bá Quát năm học 2017 - 2018
- Sử dụng một số ví dụ và các bài học
Trang 64) Phạm vi nghiên cứu:
Các chú ý khi dạy ngôn ngữ lập trình nói chung, ngôn ngữ lập trình TurboPascal nói riêng là rất nhiều, rất phong phú Tuy nhiên trong phạm vi sáng kiếnkinh nghiệm này tôi chỉ trình bày một số giải pháp, kinh nghiệm của cá nhântôi qua các nội dung cụ thể sau:
- Một số lỗi sai thường gặp của học sinh khi học lập trình Pascal và biệnpháp sửa lỗi
- Một số giải pháp dạy lập trình Pascal môn Tin học 11
5) Phương pháp nghiên cứu:
- Kết hợp thực tiễn giáo dục ở trường THPT Cao Bá Quát
- Đọc kỹ sách giáo khoa, sách giáo viên Tin học 11, tài liệu về sáng kiếnkinh nghiệm và một số tài liệu tham khảo khác
- Tích lũy các kiến thức từ nhiều năm giảng dạy
- Điều tra thực tế, đánh giá kết quả của học sinh trước và sau khi thực hiện
đề tài, phân tích tìm nguyên nhân rồi từ đó đưa ra giải pháp
Trang 7B PHẦN II: NỘI DUNG
CHƯƠNG I TỔNG QUAN
1 Cơ sở lí luận:
Pascal là một ngôn ngữ lập trình cấp cao do Niklaus Wirth, giáo sư
điện toán trường đại học Kỹ thuật Zurich (Thụy sĩ) thiết kế và công bố vào
năm 1971 và đặt tên là Pascal để tưởng niệm nhà Toán học và Triết họcnổi tiếng Blaise Pascal Đây là một ngôn ngữ lập trình có cấu trúc đơngiản, rõ ràng, cấu trúc chặt chẽ, dễ viết, dễ hiểu cũng như dễ sửa chữa, cảitiến Do đó Pascal được nhiều quốc gia trong đó có Việt Nam đưa vàochương trình giảng dạy tin học ở các trường phổ thông và đại học như mộtmôn học cơ sở, đại cương
Ở trường phổ thông chúng ta không chú trọng học chuyên sâu vềngôn ngữ lập trình để tạo ra các phần mềm máy tính mà tập trung rènluyện kĩ năng tư duy logic, tư duy hệ thống và sáng tạo không chỉ để giảiquyết những vấn đề trong tin học mà đây còn là những kĩ năng vô cùngquan trọng để giải quyết nhiều vấn đề trong cuộc sống
Học Pascal giúp cho ta hiểu được cách làm việc của máy tính, cáchgiao tiếp để ra lệnh cho máy tính làm việc theo sự điều khiển của conngười thông qua ngôn ngữ lập trình Các em có thể tạo ra các chương trìnhthú vị bằng cách sử dụng các câu lệnh Pascal Cũng giống như những mônhọc khác như toán học, vật lý, hóa học … khi các em đã thực sự hiểu vàyêu thích bộ môn tin học các em sẽ tìm thấy nhiều niềm vui, sự đam mêkhi tìm hiểu và khám phá những điều mới mẻ nhưng đầy hấp dẫn trong bộmôn tưởng chừng như khô khan này
Trang 82 Cơ sở thực tiễn:
Qua một thời gian giảng dạy ở trường, tôi nhận thấy khi học Pascalhọc sinh thường không thích thú với môn học này vì nhiều lý do như khóhiểu, tiếp thu chậm, đòi hỏi tư duy nhiều, … nên việc viết được mộtchương trình chạy được trên máy tính đối với các em rất khó khăn Do đó
để học tốt đòi hỏi học sinh phải có hứng thú Cốt lõi của việc đổi mớiphương pháp dạy học là giúp học sinh yêu thích, hứng thú với môn học,hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động Đểtạo cho các em một niềm hứng khởi với môn học tôi đưa ra một số giảipháp giúp học sinh học tốt lập trình pascal_môn Tin học 11
Trang 9CHƯƠNG II
NỘI DUNG SÁNG KIẾN KINH NGHIỆM
I Một số lỗi sai thường gặp của học sinh khi lập trình và biện pháp sửa lỗi 1) Những lỗi sai cơ bản thường gặp trong chương II:
“ Chương trình đơn giản”.
Khi kết thúc câu lệnh không có dấu chấm phẩy
Khi viết từ khóa thường viết sai lỗi chính tả
Ví dụ: Const thì viết là Cont, end thì viết là and, real thì viết là read,…
Viết sai câu lệnh gán
thuộc kiểu nguyên nên không thể lưu trữ được giá trị thực)
b) Biện pháp sửa lỗi.
Tiết 7 bài 7: Các thủ tục chuẩn vào/ ra đơn giản
Ví dụ: Hãy viết chương trình đưa ra màn hình dòng thông báo:
‘Xin chao cac ban hoc sinh lop 11A1 truong THPT Cao Ba Quat’
Các bước thực hiện như sau:
- Bước 1: Giáo viên chiếu chương trình đã viết sẵn cho học sinh quan sát
Trang 10Program Viet thong bao;
- Bước 3 Đại diện các nhóm lên bảng trình bày kết quả
- Bước 4 Giáo viên thực hiện biên dịch chương trình để học sinh thấyđược các lỗi sai và phân tích để học sinh hiểu được nguyên nhân vì sao sai.Các lỗi sai trong chương trình trên đó là:
+ Từ khóa Progam sai, đúng là: Program (mã lỗi: 36)
+ Tên chương trình Viet thong bao là sai, vì không đúng theo quy tắc đặt tên của NNLT Pascal (tên không được chứa dấu cách) (mã lỗi: 85)
+ Câu lệnh Begin ; là sai vì sau từ khóa Begin không có dấu ; (mã lỗi: 85) + Câu lệnh Writeln(‘Xin chao cac ban hoc sinh lop 11A1 truong THPT Cao Ba Quat) có 2 lỗi sai, vì thiếu dấu đóng nháy ở hằng xâu kí tự (mã lỗi:8) và kết thúc câu lệnh không có dấu ; (mã lỗi: 85)
+ Thủ tục Realn sai, phải là Readln (mã lỗi: 3)
- Bước 5 Chạy thử chương trình cho học sinh quan sát
- Bước 6 Giáo viên đánh giá kết quả và cho điểm các nhóm
Qua ví dụ trên học sinh sẽ thấy rằng có 3 lỗi sai có cùng mã lỗi là 85, tuy nhiên mỗi lỗi lại sai ở một tình huống khác nhau Do đó nếu học sinh chỉ thụ động tra cứu bảng thông báo lỗi ở SGK thì khó có thể tự mình sửa được lỗi Cũng qua ví dụ trên học sinh đã được phân tích nguyên nhân vì sao có các lỗi sai và cách sửa lỗi Do đó sau này học sinh sẽ không còn mắc phải các lỗi cơ bản đã nêu
2) Những lỗi sai cơ bản thường gặp trong chương III:
Trang 11“ Cấu trúc rẽ nhánh và lặp”.
a) Các lỗi thường gặp:
Viết thiếu các từ khóa như: then, do, downto, to…
Điều kiện trong câu lệnh rẽ nhánh hay câu lệnh lặp không phải là biểu thức logic
Câu lệnh trước từ khóa else có dấu chấm phẩy
Trong câu lệnh For…to …do thì giá trị đầu lại lớn hơn giá trị cuối hay trong câu lệnh For… downto … do thì giá trị đầu lại nhỏ hơn giá trị cuối
Trong câu lệnh lặp While … do không có câu lệnh làm thay đổi điều kiện lặp Do đó vòng lặp không thể dừng lại được
b) Biện pháp sửa lỗi:
Tiết 11 – Bài ‘‘Cấu trúc rẽ nhánh’’
Ví dụ: Viết chương trình tìm nghiệm thực của phương trình bậc hai :
Trang 12- Bước 2 Chia lớp thành 4 nhóm Yêu cầu mỗi nhóm tìm lỗi sai có
trong chương trình ở trên
- Bước 3 Đại diện các nhóm lên bảng trình bày kết quả
- Bước 4 Giáo viên thực hiện biên dịch chương trình để học sinh thấy
được các lỗi sai và phân tích để học sinh hiểu được nguyên nhân vì sao sai
Các lỗi sai trong chương trình trên là :
Câu lệnh writeln(‘Phuong trinh vo nghiem’); sai (mã lỗi: 113), vì câu lệnh này đứng trước từ khóa else nên không có dấu chấm phẩy
Câu lệnh writeln(‘Phuong trinh co hai nghiem, ’x1,x2); sai (mã lỗi: 89) Danh sách kết quả ra ngoài màn hình trong câu lệnh này gồm có 1 hằng xâu kí tự và 2 biến Các kết quả ra phải được ngăn cách nhau bởi 1 dấu phẩy, hằng xâu kí tự phải được đặt trong cặp dấu nháy đơn
Sửa lại là: writeln(‘Phuong trinh co hai nghiem ’,x1:6:2,x2:6:2);
Câu lệnh writeln(‘Phuong trinh co nghiem kep,’-b/2a); sai
Câu lệnh này có 2 lỗi sai: Thứ nhất, sai cách viết danh sách kết quả ra
ngoài màn hình (mã lỗi 26) Thứ hai, viết biểu thức chưa đúng với quy định của Pascal (mã lỗi: 89)
Trang 13Sửa lại là: writeln(‘Phuong trinh co nghiem kep’,-b/(2*a));
Giáo viên chỉnh sửa lại chương trình trên thành chương trình hoàn chỉnh:
- Bước 5 Giáo viên chạy thử chương trình cho học sinh quan sát
- Bước 6 Giáo viên đánh giá kết quả và cho điểm các nhóm
3) Những lỗi sai cơ bản thường gặp trong chương IV:
‘‘Kiểu dữ liệu có cấu trúc’’.
a) Các lỗi thường gặp:
Khi khai báo biến mảng thì thường viết sai từ khóa
Trong khai báo mảng thì chỉ số đầu và chỉ số cuối chưa được xác định
Khi tham chiếu đến một phần tử của mảng một chiều thì thường viết sai Ví dụ để tham chiếu đến phần tử thứ 1 của mảng a thì học sinh viết a1 hoặc a(1)
Đối với bài ‘‘Kiểu xâu’’ học sinh thường nhầm lẫn giữa hàm và thủ tục
b) Biện pháp sửa lỗi:
Tiết 20 – Bài “Kiểu mảng”
Ví dụ: Cho dãy A gồm n số nguyên dương A1, A2, …, An Tìm phần tử lớn nhất của dãy cùng với chỉ số của nó
- Bước 1 Sau khi học sinh nêu lại được thuật toán tìm giá trị lớn nhất
(đã học ở lớp 10) Giáo viên chiếu chương trình đã chuẩn bị sẵn cho cả
Trang 14- Bước 3 Đại diện các nhóm lên bảng trình bày kết quả
- Bước 4 Giáo viên thực hiện biên dịch chương trình để học sinh thấy được các lỗi sai và phân tích để học sinh hiểu được nguyên nhân vì sao sai
Các lỗi sai trong chương trình trên là :
Trong khai báo biến mảng: Var A: aray[1 Nmax] of integer; có tới
2 lỗi sai Một là, sai từ khóa Array chứ không phải là Aray (mã lỗi:3)
Hai là, chỉ số cuối Nmax chưa được xác định (mã lỗi:3) Lỗi này nhiều học sinh vẫn không hiểu vì sao sai Vì các em thấy trong SGK cũng
viết như vậy Do đó giáo viên cần làm rõ để học sinh hiểu, Nmax trong
Trang 15SGK đã có giá trị xác định là 250 nhờ đã khai báo hằng trước đó:
Const Nmax=250;
Câu lệnh nhập Readln(a(i)); sai (mã lỗi: 64) Sửa lại là: Readln(a[i]);
- Bước 5 Chạy thử chương trình cho cả lớp quan sát, để các em được khắc sâu
thêm nội dung bài học
- Bước 6 Giáo viên đánh giá kết quả và cho điểm các nhóm
4) Những lỗi sai cơ bản thường gặp trong chương V:
“Tệp và thao tác với tệp”
a) Các lỗi thường gặp:
Quên không khai báo biến tệp
Quên không gắn tên tệp
Đường dẫn đến tệp sai
Không mở tệp để đọc hay ghi nhưng vẫn thao tác đọc/ghi tệp
Mở quá nhiều tệp
Thao tác trên tệp xong thì không thực hiện đóng tệp
b) Biện pháp sửa lỗi:
Tiết 38 – Ví dụ làm việc với tệp
Ví dụ: Cho tệp SO.INP chứa các số nguyên, các số cách nhau bởi dấu cách Hãy viết chương trình tính tổng các số nguyên dương có trong tệp ở trên, kết quả ghi lên tệp SO.OUT
- Bước 1 Chia lớp thành 4 nhóm Nhiệm vụ của mỗi nhóm là giải quyết bài toán ở trên
- Bước 2 Giáo viên thu kết quả của các nhóm Soạn thảo và chiếu kết quả của một nhóm bất kì cho cả lớp cùng quan sát
Đây là chương trình của nhóm đó:
Program Vi_du;
Var
Trang 16Các lỗi sai có trong chương trình trên là:
Câu lệnh asign(f, ‘SO.INP’) ; sai (mã lỗi: 3), vì viết sai chính tả từ
Thiếu câu lệnh đóng tệp Trong trường hợp này, khi thực hiện biên
dịch thì máy tính không báo lỗi (không sai về mặt cú pháp) Tuy nhiên sau khi thực hiện chương trình, mở tệp SO.OUT để xem kết quả thì kết quả không có trong tệp Nguyên nhân là do chưa thực hiện đóng tệp
nên việc ghi tệp chưa được hoàn tất
Trang 17Giáo viên thực hiện chỉnh sửa chương trình trên thành chương trình hoàn chỉnh.
Giáo viên chạy thử chương trình cho học sinh quan sát
- Bước 4 Từ chương trình hoàn chỉnh ở trên, các nhóm tự đối chiếu với câu trả lời của nhóm mình để hoàn chỉnh chương trình của nhóm
5) Những lỗi sai cơ bản thường gặp trong chương VI:
“Chương trình con và lập trình có cấu trúc”
a) Các lỗi thường gặp:
Không phân biệt được hàm và thủ tục
Viết sai từ khoá hàm và thủ tục
Trong hàm không có lệnh trả về giá trị cho hàm
Gán giá trị của biến cho thủ tục
Quên khai báo kiểu dữ liệu cho tên hàm
b) Biện pháp sửa lỗi:
Tiết 44 – Ví dụ về cách viết và sử dụng chương trình con
Ví dụ: Viết chương trình thực hiện rút gọn phân số, trong đó có sử dụng hàm tính ước chung lớn nhất của hai số nguyên
- Bước 1 Giáo viên chiếu chương trình đã viết sẵn cho học sinh quan sát: program Rut_gon;
var tuso, mauso, a: integer;