Trong chương trình SGK Tin học 11 có đề cập đến 2 câu lệnh lặp For – Do và While – Do, bước đầu khi tiếp thu kiến thức các em còn khó hình dung được hoạt động của 2 câu lệnh lặp này, nhi
Trang 1MỤC LỤC
Trang
I MỞ ĐẦU
1 Lí do chọn đề tài 2
2 Mục đích nghiên cứu 2
3 Đối tượng nghiên cứu 2
4 Phương pháp nghiên cứu 2
II NỘI DUNG 1 Cơ sở lí luận 3
2 Thực trạng vấn đề 5
3 Giải pháp 5
3.1 Xây dựng tư liệu dạy học 5
3.2 Sử dụng tình huống nêu vấn đề 6
4 Hiệu quả của sáng kiến kinh nghiệm 15
5 Kiến nghị, đề xuất 15
5.1 Kết luận 15
5.2 Đề xuất, kiến nghị 16
Trang 2I MỞ ĐẦU
1 Lí do chọn đề tài.
Chương trình Tin học 11 THPT hiện nay chủ yếu trang bị kiến thức và kĩ năng về lập trình cho học sinh Đây là một nội dung tương đối khó với đa số học sinh, đòi hỏi các em phải tư duy suy luận nhiều hơn so với chương trình Tin học lớp 10 và lớp 12 Bên cạnh đó, Tin học là môn không được chọn để xét tuyển tốt nghiệp, cao đẳng, đại học nên phần lớn các em ít quan tâm, ít đầu tư về thời gian cũng như công sức Tuy nhiên đây là môn học có nội dung rất bổ ích và thiết thực với các em, không những rèn luyện tư duy logic mà còn mang tính sáng tạo Vì vậy đòi hỏi người dạy không những có kiến thức vững vàng mà cần có cách dạy sáng tạo, phù hợp để kích thích thích thái độ học tập của học sinh và giúp các em tiếp thu kiến thức một cách dễ dàng và tốt nhất, vận dụng linh hoạt để giải quyết các vấn đề mà thực tiễn đặt ra
Với các câu lệnh cơ bản trong chương trình Tin học 11, câu lệnh lặp được xem là những đơn vị kiến thức tương đối phức tạp với đa số các em học sinh
Trong chương trình SGK Tin học 11 có đề cập đến 2 câu lệnh lặp For – Do và While – Do, bước đầu khi tiếp thu kiến thức các em còn khó hình dung được hoạt động của 2 câu lệnh lặp này, nhiều em còn lúng túng, ngại dùng câu lệnh
While-Do, nên đứng trước các bài toán liên quan đến lặp với số lần chưa biết trước các
em đều khó giải quyết
Phương pháp dạy học như lâu nay: giáo viên tổ chức tiết học một cách cứng nhắc, bài dạy chỉ áp dụng các ví dụ trong sách giáo khoa, dẫn đến học sinh ỉ lại, không chịu hoạt động, tiết học nhàm chán, có những đơn vị kiến thức giáo viên phải giải thích đi giải thích lại nhiều lần làm giảm tiến độ tiết học
Qua thực tế giảng dạy, nhận biết được khó khăn đó nên tôi đã đúc rút được
“Một số kinh nghiệm dạy câu lệnh lặp trong chương trình Tin học 11” để phần nào
giúp các em học tốt hơn câu lệnh lặp cũng như môn Tin học lớp 11
2 Mục đích nghiên cứu
Thông qua việc nghiên cứu đề tài nhằm giúp học sinh nắm vững cấu trúc và hoạt động của câu lệnh lặp trong pascal, góp phần phát triển tư duy cho học sinh để
từ đó học tốt hơn bộ môn Tin học Đồng thời chia sẻ kinh nghiệm với các đồng nghiệp nhằm nâng cao hiệu quả giảng dạy bộ môn Tin học ở trường THPT hiện nay
3 Đối tượng nghiên cứu.
- Nghiên cứu dạy học lập trình trong chương trình Tin học phổ thông
- Nghiên cứu SGK và SGV Tin học 10, 11, 12
- Nghiên cứu hoạt động dạy và học của giáo viên và học sinh ở trường THPT
4 Phương pháp nghiên cứu.
- Tổng hợp, nghiên cứu các tài liệu, đặc biệt là những tài liệu có liên quan trực tiếp tới chương trình Tin học 11 và ngôn ngữ lập trình Pascal
Trang 3- Phân tích tầm quan trọng của việc dạy học các câu lệnh nói riêng và lập trình nói chung trong việc giảng dạy môn Tin học ở trường THPT nhằm nâng cao khả năng
tư duy của học sinh
- Đề xuất một số ý kiến về dạy Tin học (nhất là dạy học Tin học lập trình)
- Trao đổi, tìm hiểu kinh nghiệm của giáo viên phổ thông Tiếp cận tìm hiểu học sinh, tiến hành thực nghiệm sư phạm ở 2 lớp 11C1, 11C2, sau đó so sánh, đối chiếu kết quả với 2 lớp 11C3, 11C4
II NỘI DUNG:
1 Cơ sở lí luận
a) Cấu trúc lặp:
Ý nghĩa của cấu trúc lặp: Cấu trúc lặp là điều khiển thực hiện công việc lặp
đi lặp lại khi chưa đủ số lần lặp hoặc khi một điều kiện nào đó còn đúng
Chẳng hạn, chương trình tính điểm cho học sinh một lớp (giả sử lớp có 50 học sinh) sẽ phải lặp lại một số thao tác như sau với mỗi học sinh:
+ Nhập họ tên học sinh (hoặc số báo danh);
+ Nhập điểm (các môn);
+ Tính điểm trung bình
Nếu chương trình viết đi viết lại các câu lệnh thực hiện những thao tác trên thì rõ ràng là không thuận tiện dễ dẫn tới nhàm chán Vì thế ngôn ngữ lập trình đưa ra cấu trúc điều khiển lặp, chỉ cần viết các câu lệnh thực hiện các thao tác cho một học sinh sau đó cho phép chương trình tự thực hiện lặp lại các thao tác đó với các học sinh khác Quá trình trình lặp sẽ dừng khi đã lặp đủ một số lần nào đó (trong ví
dụ lặp đủ 50 lần- nhập đủ điểm cho 50 học sinh) hoặc khi gặp một điều kiện nào
đó Trong ngôn ngữ lập trình Turbo Pascal có hai loại lặp tương tự như vậy: Lặp
với số lần biết trước (câu lệnh lặp For ) và lặp với số lần chưa biết trước (Câu lệnh lặp While – do và Repeat Until).
Quá trình lặp không thể dừng được gọi là quá trình lặp vô hạn Điều này xảy
ra khi điều kiện để dừng lặp không còn bị biến đổi giá trị sau mỗi lần lặp Khi đó,
để thoát lặp vô hạn, cần có các câu lệnh cho phép thoát ngay khỏi lặp
- Lặp với số lần biết trước
Dạng lặp với số lần biết trước dùng để thực hiện câu lệnh một số lần xác định Dạng này dùng một biến điều khiển để điều khiển vòng lặp Trong Pascal mỗi lần thực hiện câu lệnh thì biến điều khiển được tự động tăng hoặc giảm Đến khi biến điều khiển đạt giá trị xác định thì vòng lặp kết thúc.
- Lặp với số lần chưa biết trước
Có 2 dạng:
Dạng 1: Trong khi <điều kiện> còn đúng thì còn thực hiện <công việc>;
Dạng 2: Thực hiện <công việc> trong khi <điều kiện> đúng
Trong dạng 1, đầu tiên kiểm tra và tính giá trị của điều kiện, nếu điều kiện nhận giá trị true thì thực hiện công việc (một lần) Mỗi lần thực hiện công việc có thể làm thay đổi giá trị của điều kiện nên đến một lúc nào đó điều kiện lặp không còn đúng nữa và cấu trúc lặp sẽ kết thúc Ngược lại, nếu khi thực hiện công việc
Trang 4không làm thay đổi giá trị của điều kiện thì cấu trúc lặp kéo dài mãi (gọi là vòng lặp vô hạn) Để thoát khỏi vòng lặp vô hạn, trong công việc cần có câu lệnh rẽ
nhánh thoát khỏi vòng lặp vô hạn khi thõa mãn điều kiện rẽ nhánh
Trong dạng 2, đầu tiên công việc được thực hiện, sau đó điều kiện được kiểm tra, nếu điều kiện nhận giá trị sai thì tiếp tục thực hiện công việc, ngược lại việc thực hiện lặp kết thúc Trong công việc cần có câu lệnh làm thay đổi điều kiện hoặc
câu lệnh thoát khỏi vòng lặp
b) Phương pháp dạy học nêu vấn đề.
*Bản chất:
Dạy học phát hiện và giải quyết vấn đề là phương pháp dạy học trong đó giáo viên tạo ra những tình huống có vấn đề, điều khiển học sinh phát hiện vấn đề, hoạt động tự giác, tích cực, chủ động, sáng tạo để giải quyết vấn đề và thông qua
đó chiếm lĩnh tri thức, rèn luyện kĩ năng và đạt được những mục đích học tập khác Đặc trưng cơ bản của dạy học phát hiện và giải quyết vấn đề là "tình huống gợi vấn đề" vì "Tư duy chỉ bắt đầu khi xuất hiện tình huống có vấn đề" (Rubinstein)
Tình huống có vấn đề (tình huống gợi vấn đề) là một tình huống gợi ra cho
học sinh những khó khăn về lí luận hay thực hành mà họ thấy cần có khả năng vượt qua, nhưng không phải ngay tức khắc bằng một thuật giải, mà phải trải qua quá trình tích cực suy nghĩ, hoạt động để biến đổi đối tượng hoạt động hoặc điều chỉnh kiến thức sẵn có
* Quy trình thực hiện
Bước 1 Phát hiện hoặc thâm nhập vấn đề
- Phát hiện vấn đề từ một tình huống gợi vấn đề
- Giải thích và chính xác hóa tình huống (khi cần thiết) để hiểu đúng vấn đề được đặt ra
- Phát biểu vấn đề và đặt mục tiêu giải quyết vấn đề đó
Bước 2: Tìm giải pháp
Tìm cách giải quyết vấn đề
Bước 3 Trình bày giải pháp
HS trình bày lại toàn bộ từ việc phát biểu vấn đề tới giải pháp Nếu vấn đề là một
đề bài cho sẵn thì có thể không cần phát biểu lại vấn đề
Bước 4 Nghiên cứu sâu giải pháp
- Tìm hiểu những khả năng ứng dụng kết quả
- Đề xuất những vấn đề mới có liên quan nhờ xét tương tự, khái quát hóa, lật ngược vấn đề, và giải quyết nếu có thể
Trang 5* Ưu điểm
- Phương pháp này góp phần tích cực vào việc rèn luyện tư duy, sáng tạo cho học sinh Trên cơ sở sử dụng vốn kiến thức và kinh nghiệm đã có học sinh sẽ xem xét, đánh giá, thấy được vấn đề cần giải quyết
- Đây là phương pháp phát triển được khả năng tìm tòi, xem xét dưới nhiều góc độ khác nhau Trong khi phát hiện và giải quyết vấn đề, học sinh sẽ huy động được tri thức và khả năng cá nhân, khả năng hợp tác, trao đổi, thảo luận với bạn bè để tìm
ra cách giải quyết vấn đề tốt nhất
- Thông qua việc giải quyết vấn đề, học sinh được lĩnh hội tri thức, kĩ năng và phương pháp nhận thực ("giải quyết vấn đề" không còn chỉ thuộc phạm trù phương pháp mà đã trở thành một mục đích dạy học, được cụ thể hóa thành một mục tiêu
là phát triển năng lực giải quyết vấn đề, một năng lực có vị trí hàng đầu để con người thích ứng được với sự phát triển của xã hội)
* Hạn chế:
- Phương pháp này đòi hỏi giáo viên phải đầu tư nhiều thời gian và công sức, phải
có năng lực sư phạm tốt mới suy nghĩ để tạo ra được nhiều tình huống gợi vấn đề
và hướng dẫn tìm tòi để phát hiện và giải quyết vấn đề
- Học sinh cần có thói quen và khả năng học tập tự giác tích cực thì mới đạt hiệu quả cao
2 Thực trạng vấn đề:
Trong quá trình giảng dạy, khi đưa ra ví dụ áp dụng cho các câu lệnh For-do, While-do, tương ứng với các ví dụ trong sách giáo khoa đã giới thiệu, tôi nhận thấy
học sinh không hình dung được hoạt động của câu lệnh, đa phần các em đều thấy khó
Khi viết chương trình các em còn lúng túng khi sử dụng các câu lệnh lặp, có
em khi viết câu lệnh For-do còn sử dụng câu lệnh tác động lên biến điều khiển, có
em khi sử dụng vòng lặp While-do còn gặp khó khăn trong việc xác định biểu thức
điều kiện, không sử dụng Begin end khi có câu lệnh ghép sau từ khóa do, v.v
3 Giải pháp:
3.1 Xây dựng tư liệu dạy học:
Với đối tượng học sinh có học lực trung bình khá, nếu áp dụng các ví dụ mà sách giáo khoa đưa ra nhiều học sinh thấy khó hiểu (chẳng hạn, trong phân phối
chương trình tin học 11 có một số ví dụ ở tiết 13, tiết 14 như Tong_1a, Tong_1b, Tong_2) dẫn đến các em không hứng thú với tiết học, khó lĩnh hội được kiến thức,
tiến trình tiết dạy bị chậm lại, vì vậy tôi thường lấy những ví dụ liên quan đến bài học ngoài sách giáo khoa, những ví dụ này thường là ví dụ đơn giản Tôi chuẩn bị
Trang 6sẵn chương trình viết bằng Pascal và sơ đồ khối của thuật toán trên giấy khổ lớn để minh họa, giúp các em hiểu rõ được vấn đề
Với những tư liệu dạy học xây dựng được, giáo viên sẽ vận dụng vào bài dạy trong từng tình huống nêu vấn đề cho học sinh
3.2 Sử dụng tình huống nêu vấn đề.
Để thực hiện dạy học phát hiện và giải quyết vấn đề cho giờ học hay cho một đơn
vị kiến thức nào đó của giờ học, cần tạo ra tình huống gợi vấn đề Sau đây là một
số tình huống mà tôi sử dụng trong quá trình dạy cấu trúc lặp
a) Câu lệnh lặp với số lần biết trước FOR – DO
Tình huống 1: “Em hãy viết chương trình in ra màn hình các số nguyên dương từ
1 đến 10, các số nằm trên cùng một hàng và cách nhau một dấu cách trống?”
Với kiến thức đã được học các em sẽ viết chương trình này như sau:
Program Vi_du;
Begin
Write(1,’ ’);
Write(2,’ ’);
Write(3,’ ’);
Write(4,’ ’);
Write(5,’ ’);
Write(6,’ ’);
Write(7,’ ’);
Write(8,’ ’);
Write(9,’ ’);
Write(10);
Readln;
End.
Tình huống 2: “Em hãy viết chương trình in ra màn hình các số nguyên dương từ
1 đến 100, các số nằm trên cùng một hàng và cách nhau một dấu cách trống?”
- Khi gặp tình huống 2, học sinh sẽ thấy ngay được khó khăn đó là chương trình
phải sử dụng tới 100 câu lệnh write.
- Qua đây giáo viên sẽ giúp các em nhận thấy nếu chương trình được viết đi viết lại
các câu lệnh write như trên sẽ dễ dẫn tới nhàm chán Để khắc phục điều này, thay
vì phải viết 100 câu lệnh write() ta sử dụng cấu trúc điều khiển lặp trong pascal để thực hiện tuần tự câu lệnh write(i) 100 lần, với i (là biến đếm) nhận giá trị liên tiếp tăng từ 1 (giá trị đầu) đến 100 (giá trị cuối)
- Giáo viên giới thiệu cấu trúc lặp với số lần biết trước:
For <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
Trang 7- Sau khi học sinh đã nắm được cấu trúc và hoạt động của câu lệnh FOR-DO, giáo viên yêu cầu học sinh viết câu lệnh FOR để giải quyết tình huống như đã nêu ở trên:
For i:= 1 To 100 Do write(i,’ ’);
- Giáo viên trình chiếu chương trình viết bằng ngôn ngữ lập trình pascal để minh họa:
- Tiếp theo sẽ là một tình huống nêu vấn đề: Nếu sử dụng vòng lặp FOR – DO để viết chương in ra màn hình các số lẻ nhỏ hơn 100 có được không?
- Thực tế qua nhiều năm giảng dạy, có rất nhiều học sinh viết như sau:
For i:=1 to 100 do
Begin
Write(i:3);
i:=i+1;
End;
- Các em lí giải rằng: do hoạt động của vòng lặp For –do, biến i sẽ tự động tăng lên
1 sau đó nếu ta có câu lệnh tác động lên biến i (i:=i+1) thì sẽ được kết quả như đề bài yêu cầu
- Từ đó lưu ý cho các em: Với câu lệnh For –do thì câu lệnh viết sau do không
được thay đổi giá trị của biến đếm Đồng thời gợi mở vấn đề, để hướng học sinh
tới một câu lệnh sẽ được học ở tiết học sau
(Khi học sinh đã nắm vững cấu trúc và hoạt động của câu lệnh For –do dạng tiến thì việc tiếp thu câu lệnh For – do dạng lùi sẽ rất dễ dàng)
b) Câu lệnh lặp với số lần chưa biết trước While – do
Để dạy câu lệnh này ngoài các ví dụ có tính chất nêu vấn đề thì tôi chuẩn bị
sơ đồ hoạt động của câu lệnh, các sơ đồ thuật toán trên giấy khổ lớn và một số chương trình viết sẵn bằng ngôn ngữ lập trình pascal
Trang 8Dẫn dắt vấn đề: Giả sử trong tài khoản sim điện thoại của một người còn
100.000đ, người này sẽ thực hiện các cuộc gọi, chúng ta chưa biết trước người đó
sẽ gọi bao nhiêu cuộc điện thoại nhưng hoạt động gọi điện sẽ dừng lại khi tài khoản không còn đủ tiền Vậy trong ngôn ngữ lập trình pascal có một câu lệnh tương tự như việc này, một công việc sẽ thực hiện lặp đi lặp lại khi một điều kiện
nào đó còn đúng Đó là câu lệnh lặp với số lần chưa biết trước While – do.
Cấu trúc:
While <điều kiện> do <câu lệnh>;
Sơ đồ hoạt động: (chuẩn bị trước trên giấy khổ lớn)
Ý nghĩa: Gặp lệnh này máy thực hiện như sau:
- Kiểm tra <điều kiện>
- Nếu <điều kiện> có giá trị đúng thì thực hiện <câu lệnh>, sau đó quay lại kiểm tra <điều kiện> Quá trình này lặp đi lặp lại cho đến khi <điều kiện> có giá trị sai
thì kết thúc vòng lặp
Sau đây là các tình huống mà tôi đã sử dụng khi dạy câu lệnh while (đó là các
chương trình viết trên ngôn ngữ lập trình pascal và sơ đồ khối trên giấy khổ lớn)
Ví dụ 1:
Program chuong_trinh1;
Var i:integer;
Begin i:= 1;
while i<10 do Begin write(i:3);
i:=i+1;
end;
readln End.
Sai
Đúng
Điều kiện
Câu lệnh
Trang 9Ví dụ 2:
Program chuong_trinh2;
Var i, j:integer;
Begin i:= 10; j:=5;
while i<j do write(i:5);
readln End.
Sai
Đúng i<10
Write(i:3);
i:=i+1;
i:=1;
Sai
Đúng i<j
Write(i:5);
i:=10; j:=5
Trang 10Ví dụ 3
Program chuong_trinh3;
Var i:integer;
Begin i:= 1;
while i<5 do write(i:5);
readln End.
* Phương pháp thực hiện:
- Giáo viên sẽ lần lượt đưa ra các ví dụ, yêu cầu học sinh quan sát và cho biết kết quả của các chương trình đó khi chạy chương trình?
- Sau khi học sinh đưa ý kiến, giáo viên sẽ củng cố lại kiến thức, chạy các chương trình để các em thấy kết quả
* Mục đích
Việc tôi đưa ra 3 ví dụ trên khi dạy câu lệnh while – do nhằm củng cố cho
học sinh các kiến thức sau đây:
- Ví dụ 1: ngoài việc giúp học sinh hiểu thêm hoạt động của câu lệnh thì giáo viên
đưa ra cho học sinh một lưu ý: Câu lệnh sau từ khóa do nếu là câu lệnh ghép thì phải đặt giữa Begin và end.
Sai
Đúng i<5
Write(i:5);
i:=1;