Chuyên đề: Bài toán và thuật toán chiếm 40% số điểm trong bài thi học sinh giỏi cụm. Thiết nghĩ, việc chú trọng bồi dưỡng nội dung này sẽ giúp học sinh dễ dàng đạt kết quả khả quan hơn. Và kéo theo đó là hứng thú của học sinh sẽ phần nào được cải thiện. 1. Xây dựng chương trình bồi dưỡng Hiện nay có rất nhiều sách nâng cao và các tài liệu tham khảo, Internet,... song chương trình bồi dưỡng chưa có sách hướng dẫn chi tiết, cụ thể từng tiết, từng buổi học như trong chương trình chính khoá. Vì thế soạn thảo chương trình bồi dưỡng là một việc làm hết sức quan trọng và rất khó khăn nếu như chúng ta không có sự tham khảo, tìm tòi và chọn lọc tốt. Giáo viên cần soạn thảo nội dung bồi dưỡng dẫn dắt học sinh từ cái cơ bản của nội dung chương trình học chính khoá, tiến dần tới chương trình nâng cao (tức là trước hết phải khắc sâu kiến thức cơ bản của nội dung học chính khoá, từ đó vận dụng để mở rộng và nâng cao dần). Cần soạn thảo chương trình từ cơ bản tới nâng cao, từ đơn giản tới phức tạp. Đồng thời cũng phải có ôn tập củng cố. Một số giờ ôn tập, Giáo viên cần giúp các em tổng hợp các dạng bài, các phương pháp giải theo hệ thống. Vì hầu hết các em chưa tự mình hệ thống được mà đòi hỏi phải có sự giúp đỡ của giáo viên. Điều cần thiết, giáo viên đầu tư nhiều thời gian, tham khảo nhiều tài liệu để đúc rút, soạn thảo cô đọng nội dung chuyên đề Bài toán thuật toán trong chương trình bồi dưỡng.Giáo viên cần hướng cho học sinh làm quen cách giải một bài toán cụ thể: Phân tích kĩ bài toán để tìm INPUT và OUTPUT, tìm ý tưởng từ đó xây dựng thuật toán cho bài toánGiáo viên mô tả mẫu thuật toán đối với một bài cụ thể và chỉ rõ cho học sinh nên viết như thế nào cho đúng, đủ, đẹp để người đọc nhìn vào hiểu ngay thuật toán đó mình đang làm gì.Sau khi mô tả thuật toán bằng cách liệt kê và sơ đồ khối, giáo viên hướng dẫn học sinh mô phỏng thuật toán với ví dụ cụ thể để kiểm tra tính đúng đắn của thuật toán. Giáo viên nên sử dụng phần mềm Crocodile ICT 605 để mô phỏng thuật toán cho những bài số dữ liệu nhập vào lớn mà việc chạy thủ công rất khó để kiểm thử được chương trình.Và theo tôi nên phân tích nhiều thuật toán, học sinh tự lựa chọn thuật toán phù hợp. Cần lưu ý rằng: Tuỳ thuộc vào thời gian bồi dưỡng, khả năng tiếp thu của học sinh mà lựa chọn mức độ bài khó và từng dạng luyện tập nhiều hay ít.
Trang 1SÁNG KIẾN KINH NGHIỆM
CHUYỀN ĐỀ BÀI TOÁN VÀ THUẬT TOÁN TRONG BỒI DƯỠNG HỌC SINH GIỎI MÔN TIN HỌC LỚP 10
Lĩnh vực/ Môn: Tin học – Công nghệ
Đơn vị công tác: Trường THPT Đoàn Kết – Hai Bà Trưng
NĂM HỌC 2018 - 2019
Trang 2MỤC LỤC
A ĐẶT VẤN ĐỀ 2
I Lý do chọn đề tài: 2
II Mục đích nghiên cứu: 2
III Nhiệm vụ và phạm vi nghiên cứu: 2
1 Nhiệm vụ nghiên cứu: 2
2 Phạm vi nghiên cứu 3
B GIẢI QUYẾT VẤN ĐỀ 4
I Cơ sở lý luận 4
1 Cơ sở tâm lý học: 4
1.1 Đặc điểm nhận thức của học sinh đối với môn Tin học: 4
1.2 Tư duy của học sinh : 4
2 Cơ sở thực tiễn: 4
II Nội dung chuyên đề: Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10 trường THPT Đoàn Kết - Hai Bà Trưng 5
1 Xây dựng chương trình bồi dưỡng 5
2 Nội dung chuyên đề: Bài toán và thuật toán trong bồi dưỡng học sinh giỏi tin học lớp 10 6
2.1 Tóm tắt lý thuyết 6
2.2 Bài tập 10
C KẾT LUẬN 29
I Một số kết luận: 29
II Kiến nghị: 30
D TÀI LIỆU THAM KHẢO 31
Trang 3A ĐẶT VẤN ĐỀ
I Lý do chọn đề tài:
Như chúng ta đã biết, học sinh giỏi đạt kết quả cao trong các kỳ thi do nhiềuyếu tố: Tố chất học sinh, sự quan tâm của gia đình, ý thức học tập của học sinh,việc bồi dưỡng và không ngoại trừ yếu tố may mắn Tuy nhiên chúng ta khôngchỉ chờ đợi và cầu mong ở sự may mắn bởi vì yếu tố may mắn chỉ là một phầnrất nhỏ Phương ngôn có câu: “ Trở thành nhân tài một phần do tài năng còn 99phần là ở sự tôi luyện" Theo quan điểm của tôi, điều quan trọng hơn cả là chúng
ta phải trang bị cho các em vững vàng kiến thức trước khi đi thi Do vậy việc bồidưỡng vẫn là yếu tố quan trọng hơn cả Nhưng chúng ta cần bồi dưỡng học sinhgiỏi những nội dung gì, bồi dưỡng như thế nào cho đạt hiệu quả?
Thực hiện được điều đó, nhà trường của chúng ta đang cố gắng hướng đến
sự phát triển tối đa những năng lực tiềm tàng trong mỗi học sinh Ở các trườngTHPT hiện nay, việc nâng cao chất lượng đại trà, chăm lo bồi dưỡng học sinhgiỏi đang được nhiều cấp bộ chính quyền và nhân dân địa phương quan tâmnhưng nguyên nhân sâu xa nhất đó chính là thực hiện mục tiêu giáo dục màĐảng và Nhà nước đã đề ra
Thực tế hiện nay ở các trường THPT về công tác bồi dưỡng học sinh giỏi đãđược chú trọng song vẫn còn những bất cập nhất định như: sự say mê của họcsinh với môn Tin học chưa cao; nội dung bài 4: Bài toán và thuật toán khó, trừutượng; cách tuyển chọn; phương pháp giảng dạy và đặc biệt là môn Tin họcchưa được chú trọng Từ những bất cập trên dẫn đến hiệu quả bồi dưỡng không
đạt được như ý muốn Vì vậy tôi chọn đề tài: Chuyên đề Bài toán và thuật toán
trong bồi dưỡng học sinh giỏi khối 10 để nghiên cứu.
II Mục đích nghiên cứu:
Đề xuất một số phương pháp trong việc bồi dưỡng học sinh giỏi môn Tinhọc ở trường THPT Đoàn Kết - Hai Bà Trưng, Hà Nội
III Nhiệm vụ và phạm vi nghiên cứu:
1 Nhiệm vụ nghiên cứu:
1 - Xây dựng chuyên đề Bài toán và thuật toán
2 - Dạy như thế nào cho đạt hiệu quả?
3 - Các bước rèn luyện cho học sinh
4 - Đề xuất một số biện pháp nhằm nâng cao chất lượng bồi dưỡng họcsinh giỏi môn Tin học ở THPT Đoàn Kết - Hai Bà Trưng
Trang 42 Phạm vi nghiên cứu.
Đề tài chuyên đề Bài toán và thuật toán trong bồi duõng học sinh giỏi khối
10 được nghiên cứu trong quá trình bồi dưỡng học sinh giỏi môn Tin học, tạitrường THPT Đoàn Kết - Hai Bà Trưng qua các năm học 2016 – 2017, 2017 –
2018, 2018 – 2019
Trang 5B GIẢI QUYẾT VẤN ĐỀ
I Cơ sở lý luận
1 Cơ sở tâm lý học:
1.1 Đặc điểm nhận thức của học sinh đối với môn Tin học:
Đối với khối THPT, hiện nay học sinh coi bộ môn Tin học vẫn được xem làmôn học phụ Do vậy mà đa số học sinh vẫn không quan tâm cho lắm Có một
số ít học sinh xem môn Tin học là học cho vui Nhận thức của học sinh về mônhọc này còn hạn chế Bên cạnh đó vẫn có một số em học sinh rất yêu thích, đammê
1.2 Tư duy của học sinh :
Tư duy là quá trình các em hiểu được, phản ánh được bản chất của đốitượng của các sự vật, hiện tượng được xem xét nghiên cứu trong quá trình họctập ở học sinh
Ở các em học sinh khối THPT thì môn Tin học các em bước đã làm quennhưng không chú trọng nên khả năng tư duy vẫn còn hạn chế nên việc phân tích
để hiểu được bản chất của vấn đề là rất khó
2 Cơ sở thực tiễn:
Môn tin học nói chung và chuyên đề Bài toán và thuật toán nói riêng nhìnchung là khó hiểu, có vẻ hơi trừu tượng Chính vì vậy mà đối với các em họcsinh lớp 10 đôi lúc vẫn chưa hiểu được các hình khối và sơ đồ khối, bên cạnh đóđầu vào tuyển sinh vào 10 của nhà trường còn thấp
Trong thời gian được phân công bồi dưỡng học sinh giỏi môn Tin học lớp
10 tôi nhận thức được tầm quan trọng của công tác bồi dưỡng học sinh giỏi, tôi
đã luôn bám sát, tìm tòi và phát hiện học sinh giỏi Với nhận thức đó tôi luôn đisâu tìm hiểu cấu trúc bài thi học sinh giỏi cụm qua các năm Cấu trúc đề thi:
Bài Điểm Nội dung chương trình Mức độ
1 (Trắc nghiệm) 05 Thông tin và dữ liệu Dễ
2 (Trắc nghiệm) 02 Cấu trúc máy tính Vừa
3 (Tự luận ) 05 Thuật toán cơ bản Vừa
4 (Tự luận) 03 Thuật toán cơ bản Vừa
5 (Trắc nghiệm) 05 Liên hệ thực tế Khó
Tôi thấy nội dung bài 4: Bài toán và thuật toán, là một nội dung quan trọngchiếm 40% số điểm trong bài thi Nhưng đây là nội dung trừu trượng và khódạy, sách tham khảo thì rất ít Vì vậy tôi đã tìm tòi nghiên cứu kĩ nội dung, cáctài liệu tập huấn Qua sự đó, đối chiếu với thực tế giảng dạy cố gắng tìm nhữngbiện pháp tối ưu nhằm hỗ trợ công tác giảng dạy, bồi dưỡng đạt hiệu quả cao.Trên cơ sở nghiên cứu đó tôi nhận thấy: Mục tiêu bồi dưỡng học sinh giỏi với
Trang 6chuyên đề Bài toán và thuật toán không phải là để tạo ra các nhà lập trìnhchuyên nghiệp, mà mục tiêu chính của công tác này là: bồi dưỡng khả năng tưduy, sáng tạo và lập luận, phân tích, thiết kế của học sinh Giáo viên bồi dưỡnghọc sinh giỏi nắm khá chắc nội dung chương trình và kiến thức về thuật toán,biết vận dụng đổi mới phương pháp dạy học: lấy học sinh làm trung tâm, biếttôn trọng sự sáng tạo của học sinh Trong quá trình giảng dạy biết sử dụng nhiềucâu hỏi gợi mở để hướng học sinh phân tích, tìm ra được thuật toán.
Tóm lại: Thực trạng công tác bồi dưỡng học sinh giỏi môn Tin học nóichung và chuyên đề: Bài toán và thuật toán nói riêng hiện nay tuy có nhiềuthuận lợi nhưng cũng không ít khó khăn Tuy vậy, khó khăn nào cũng có hướnggiải quyết, thuận lợi nào đều có thể phát huy những khó khăn đó, đề tài xin đưa
ra một số biện pháp giải quyết trong mục II
II Nội dung chuyên đề: Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học 10 trường THPT Đoàn Kết - Hai Bà Trưng
Chuyên đề: Bài toán và thuật toán chiếm 40% số điểm trong bài thi họcsinh giỏi cụm Thiết nghĩ, việc chú trọng bồi dưỡng nội dung này sẽ giúp họcsinh dễ dàng đạt kết quả khả quan hơn Và kéo theo đó là hứng thú của học sinh
sẽ phần nào được cải thiện
1 Xây dựng chương trình bồi dưỡng
Hiện nay có rất nhiều sách nâng cao và các tài liệu tham khảo, Internet, song chương trình bồi dưỡng chưa có sách hướng dẫn chi tiết, cụ thể từng tiết,từng buổi học như trong chương trình chính khoá Vì thế soạn thảo chương trìnhbồi dưỡng là một việc làm hết sức quan trọng và rất khó khăn nếu như chúng takhông có sự tham khảo, tìm tòi và chọn lọc tốt Giáo viên cần soạn thảo nộidung bồi dưỡng dẫn dắt học sinh từ cái cơ bản của nội dung chương trình họcchính khoá, tiến dần tới chương trình nâng cao (tức là trước hết phải khắc sâukiến thức cơ bản của nội dung học chính khoá, từ đó vận dụng để mở rộng vànâng cao dần)
Cần soạn thảo chương trình từ cơ bản tới nâng cao, từ đơn giản tới phứctạp Đồng thời cũng phải có ôn tập củng cố
Một số giờ ôn tập, Giáo viên cần giúp các em tổng hợp các dạng bài, cácphương pháp giải theo hệ thống Vì hầu hết các em chưa tự mình hệ thống được
mà đòi hỏi phải có sự giúp đỡ của giáo viên
Điều cần thiết, giáo viên đầu tư nhiều thời gian, tham khảo nhiều tài liệu
để đúc rút, soạn thảo cô đọng nội dung chuyên đề Bài toán thuật toán trong
Trang 7Giáo viên cần hướng cho học sinh làm quen cách giải một bài toán cụ thể:Phân tích kĩ bài toán để tìm INPUT và OUTPUT, tìm ý tưởng từ đó xây dựngthuật toán cho bài toán
Giáo viên mô tả mẫu thuật toán đối với một bài cụ thể và chỉ rõ cho họcsinh nên viết như thế nào cho đúng, đủ, đẹp để người đọc nhìn vào hiểu ngaythuật toán đó mình đang làm gì
Sau khi mô tả thuật toán bằng cách liệt kê và sơ đồ khối, giáo viên hướngdẫn học sinh mô phỏng thuật toán với ví dụ cụ thể để kiểm tra tính đúng đắn của
thuật toán Giáo viên nên sử dụng phần mềm Crocodile ICT 605 để mô phỏng
thuật toán cho những bài số dữ liệu nhập vào lớn mà việc chạy thủ công rất khó
để kiểm thử được chương trình
Và theo tôi nên phân tích nhiều thuật toán, học sinh tự lựa chọn thuật toánphù hợp
Cần lưu ý rằng: Tuỳ thuộc vào thời gian bồi dưỡng, khả năng tiếp thu củahọc sinh mà lựa chọn mức độ bài khó và từng dạng luyện tập nhiều hay ít
2 Nội dung chuyên đề: Bài toán và thuật toán trong bồi dưỡng học sinh giỏi tin học lớp 10.
Trang 8- B1: Gán giá trị ban đầu cho biến đếm
- B2: Nếu biến đếm ≤ giá trị cuối thì thực hiện lệnh cần lặp, tăng biến đếm lên 1 đơn vị, quay lại B2
Lặp với số lần chưa biết trước.
*Sơ đồ khối:
* Ý nghĩa:
- B1: Tính giá trị của điều kiện
- B2: Nếu điều kiện có giá trị đúng thì thực hiện lệnh cần lặp nếu sai thì thoát ra khỏi vòng lặp
2.1.3 Rèn luyện kĩ năng xác định bài toán:
Trang 9Để mô tả thuật toán chính xác thì bước phân tích đề là rất quan trọng,bước này không thể bỏ qua và nếu bước này làm không kĩ thì có thể sai cả bàitoán.
Ví dụ : Hãy xác định Input và Output, mô tả thuật toán bằng sơ đồ khối để giải
bài toán sau: Nhập vào số N bất kỳ Kiểm tra xem đó có phải số hoàn hảokhông? Biết rằng số hoàn hảo là số có tổng các ước của nó (trừ chính nó) bằngchính số đó
VD: Số 6 có các ước là 1, 2, 3 mà 6 = 1+2+3
Số 28 có các ước 1, 2, 4, 7, 14 mà 28 = 1 + 2 + 4 + 7 +14
* Xác định bài toán
- Input: nhập N
- Output: Thông báo N có phải là số hoàn hảo hay không
*Ý tưởng: GV: Yêu cầu học sinh nêu cách tìm các ước? Cách cộng các ước lại?
Tìm các ước của N (trừ chính nó) sau đó cộng các ước lại và kiểm tra tổng cácước có bằng N không? Nếu bằng thì thông báo N là số hoàn hảo Tìm ước bằngcách lấy N chia cho i với i chạy từ 1 N/2
2.1.4 Rèn luyện kĩ năng viết thuật toán:
Ta có thể viết thuật toán theo hai cách
Bước 6: Nếu i > N/2 thì chuyển đến bước 8;
Bước 7: quay lại bước 4;
Bước 8: Nếu S = N thì N là số hoàn hảo và kết thúc
Bước 9: N không là số hoàn hảo và kết thúc
- Cách 2: Sơ đồ khối.
Nếu việc phân tích và đưa ra thuật toán khó bao nhiêu thì việc vẽ sơ đồkhối lại càng phải chính xác và khó khăn hơn Phải sử dụng đúng các hình khốicho các bước và có khả năng tư duy tốt thì mới làm được Chính vì vậy, trướckhi vẽ sơ đồ khối phải yêu cầu học sinh nắm rõ được chức năng của các hình
Các ký hiệu dùng trong sơ đồ khối
Trang 105 Quy trình thực hiện các thao tác
2.1.5 Rèn luyện kỹ năng mô phỏng thuật toán
Sau khi mô tả thuật toán để biết thuật toán đã chính xác chưa giáo viêncần hướng dẫn học sinh mô phỏng thuật toán với ví dụ cụ thể Học sinh phải xácđịnh các biến trong bài sau đó chạy chương trình với số liệu cụ thể, từng bướcmột kiểm tra sự thay đổi giá trị của các biến xem chính xác chưa Nếu thuật toán
có bước nào chưa đúng thì việc mô phỏng sẽ giúp học sinh tìm ra được nhữnglỗi sai đó và sửa lại cho đúng
Với những thuật toán đơn giản giáo viên có thể mô phỏng thủ công chohọc sinh Nhưng với những thuật toán khó, dữ liệu nhâp vào lớn thì giáo viênnên sử dụng phần mềm Crocodile ICT 605 để mô phỏng Bởi vì việc mô phỏngthuật toán với giao diện đồ họa rất trực quan, đồng thời người sử dụng có thểtương tác với hệ thống mô phỏng Mô phỏng sẽ giúp cho người học nhanhchóng hiểu được bản chất, hiểu được từng thao tác trong thuật toán hoạt độngnhư thế nào, đồng thời đánh giá được tính đúng đắn của thuật toán Còn đối vớingười dạy, mô phỏng sẽ giúp cho người dạy dễ dàng truyền đạt ý tưởng củathuật toán, giúp cho quá trình giảng dạy thuận lợi hơn, chạy được nhiều bộtest trong thời gian ngắn
Sau đây là hình ảnh mô phỏng thuật toán kiểm tra tính hoàn hảo của sốnguyên dương N khi sử dụng phần mềm Crocodile ICT 605
Trang 11Do giới hạn của sáng kiến nên tôi không trình bày tập trung vào phần mềmnày mà chỉ tập trung vào các dạng bài tập để ôn luyện cho học sinh Tôi sẽ chia
sẻ kinh nghiệm này vào một sáng kiến khác
2.2 Bài tập
2.2.1 Cấu trúc rẽ nhánh
Bài 1 Giải phương trình bậc hai: ax2 + bx + c = 0
GV: Yêu cầu học sinh nêu cách giải bài toán trong toán học từ đó đưa ra ýtưởng
- Nếu Delta = 0 phương trình có 1 nghiệm kép x1, x2 = -b/2a
- Nếu Delta > 0 phương trình có 2 nghiệm phân biệt
- x1, x2 = −b ±√b2−4 ac
2a
- Nếu Delta < 0 phương trình vô nghiệm
Sơ đồ khối :
Trang 12Bài 2 Tính tiền điện
Viết chương trình tính tiền điện sinh hoạt hàng tháng với biểu giá như sau
Nếu 100 < N < 200 thì Thành tiền = 50*1.549 + 50*16.00 + -100)*1.858
(N Nếu 50 < N <100 thì Thành tiền = 50*1.549 + (N(N 50)*1.600
- Còn lại Thành tiền = N *1.549
Sơ đồ khối:
Trang 13Bài tập tự giải
Bài 3 Mô tả thuật toán để giải các bài toán sau Giải phương trình bậc nhất:
ax + b = 0
Ý tưởng:
Bài toán có các trường hợp sau;
a= 0, b=0 Phương trình vô số nghiệm
a= 0, b <> 0 Phương trình vô nghiệm
a <> 0 Phương trình có nghiệm duy nhất là x = -b/a
Bài 4 Nhập vào 3 số a,b,c bất kỳ Hãy kiểm tra xem 3 số đó có phải là độ dài 3
cạnh của tam giác hay không? Nếu có hãy tính chu vi và diện tích theo côngthức Heron: P = (a+b+c)/2; S =√(P−a)(P−b)(P−c )
Nếu a > b tráo đổi a và b
Nếu a > c thì tráo đổi a và c
Nếu b > c thì tráo đổi b và c
In ra a, b, c
Trang 14Bài 6 Hãy nhập vào giờ, phút, giây Sau đó nhập thêm một số giây, hãy in kết
quả ra giờ, phút, giây
Gọi số giây cộng thêm là S: giây giây + S
Nếu giây ≥ 60 thì: phút phút + giây DIV 60; giây giây MOD 60
Nếu phút ≥ 60 thì: giờ giờ + phút DIV 60; phút phút MOD 60
Mô tả thuật toán:
Bài 2 Hãy mô tả thuật toán tính tổng S = 1/a + 1/(a+1) + 1/(a+2) + … + 1/(a+N)
+ … Cho đến khi 1/(a+N) < 0,01 Với a nhập từ bàn phím và a > 2
Trang 15Bài 3 Hãy mô tả thuật toán giải bài toán sau: Cho dãy A gồm N số hạng A1, A2,A3, … , AN Hãy tính tổng các số chẵn
Xác định bài toán:
- Input: Nhập N và dãy A
- Output: Đưa ra tổng số chẵn
Ý tưởng: Xét lần lượt các số hạng trong dãy A Nếu số hạng nào chia hết
cho 2 thì cộng vào tổng, số hạng nào không chia hết cho 2 thì bỏ qua.Thuật toán kết thúc khi xét xong số hạng cuối cùng của dãy và đưa ratổng
Bài 4 Hãy xác định Input và Output, mô tả thuật toán bằng sơ đồ khối để in ra
màn hình số đảo ngược của số đó
VD: input: 4879 output: 9784
Xác định bài toán :
- Input: Nhập N
- Output: Đưa ra số đảo ngược của N
phần dư là MOD, phép chia lấy phần dư là DIV Ví dụ 7 MOD 3 = 1; 7DIV 3 = 2 Sử dụng 2 hàm DIV và MOD để tách số hàng đơn vị của sốban đầu rồi chuyển dần thành số đứng đầu tiên
Sơ đồ khối:
Trang 16Bài 5 Cho số nguyên dương M Hãy xác định số nguyên dương M nhỏ nhất để
1+2
3+
3
4+ …+N +1 N > M
(Đề thi học sinh giỏi cụm HK-HBT năm 2015-2016)
Ý tưởng: Ban đầu gán N 2, xét biểu thức nếu N +1 N >M đúng thì kết thúc
và đưa ra N Nếu sai tiếp tục tính tổng theo công thức S S + N +1 N , saumỗi lần tính tổng thì tăng N lên 1 đơn vị
Sơ đồ khối: