Thực tiễn dạy học cho thấy phương pháp dạy học hiện nay tuy đã nhiều đổi mới nhưng cũng chưa đáp ứng được mục tiêu đề ra, ở trường phổ thông các thầy cô quan tâm đến nội dung và phương p
Trang 1I.1 Lý do chọn đề tài : 1
I.2 Mục tiêu, nhiệm vụ của đề tài: 2
I.2.1 Mục tiêu : 2
I.2.2 Nhiệm vụ : 2
I 3 Đối tượng nghiên cứu: 3
I 4 Giới hạn phạm vi nghiên cứu: 3
I 5 Phương pháp nghiên cứu: 3
II NỘI DUNG 4
II.1.Cơ sở lý luận: 4
II.1.1 Khái niệm thuật toán 4
II.1.2 Dạy cho học sinh cảm nhận được cách “tư duy” của máy tính 6
II.1.3 Dạy cho học sinh biết sử dụng các “thao tác cơ sở” để mô tả thuật toán 7
II.2 Thực trang dạy và học môn Tin học tại các trường phổ thông 8
II.2.1 Thực trang phương pháp dạy : 8
II.2.2 Thực trang phương pháp học: 9
II.3.Phân tích nguyên nhân của thực trạng 9
II.4 Giải pháp, biện pháp: 9
II.4.1 Định hướng vận dụng 9
II.4.2 Phát triển tư duy thuật toán của học sinh thông qua ví dụ trong bài “ Bài toán và thuật toán” sách giáo khoa Tin học 10 11
II.5 Kết quả đạt được sau khi sử dụng phát triển tư duy thuật toán cho học sinh 13
III PHẦN KẾT LUẬN, KIẾN NGHỊ 155
TÀI LIỆU THAM KHẢO 177
Trang 2I PHẦN MỞ ĐẦU:
I.1 Lý do chọn đề tài :
Mục tiêu của giáo dục phổ thông là “Giúp học sinh phát triển toàn diện về đạo đức, trí tuệ, thể chất, thẩm mĩ và các kĩ năng cơ bản, phát triển năng lực cá nhân, tính năng động và sáng tạo, hình thành nhân cách con người Việt Nam xã hội chủ nghĩa, xây dựng tư cách và trách nhiệm công dân, chuẩn bị cho học sinh tiếp tục học lên hoặc đi vào cuộc sống lao động, tham gia xây dựng và bảo vệ Tổ quốc”
Phương pháp dạy học là khâu rất quan trọng bởi lẽ phương pháp dạy học có hợp lý thì hiệu quả của việc dạy học mới cao, phương pháp dạy học phù hợp thì mới có thể phát huy được khả năng tư duy, sáng tạo của người học Bởi vậy, việc đổi mới giáo dục trước hết là việc đổi mới phương pháp dạy học theo hướng chủ động, tích cực, “lấy người học làm trung tâm”
Thực tiễn dạy học cho thấy phương pháp dạy học hiện nay tuy đã nhiều đổi mới nhưng cũng chưa đáp ứng được mục tiêu đề ra, ở trường phổ thông các thầy
cô quan tâm đến nội dung và phương pháp học tập đáp ứng tốt cho các kì thi nhưng chưa chú trọng thích đáng vào rèn luyện phát triển trí tuệ, rèn luyện kĩ năng vận dụng kiến thực vào thực tiễn, đặc biệt là phát triển tư duy thuật toán Tư duy thuật toán là loại hình rất cần thiết trong dạy học và làm việc sau này của học sinh Chính vì vậy, người thầy không chỉ cung cấp kiến thức mà còn dạy cách học, phát huy khả năng tư duy, phân tích, tổng hợp, nhận xét, đánh giá, phát hiện vấn đề làm cho học sinh chủ động trong học tập, say mê nghiên cứu, gạt bỏ tư tưởng ngại
và sợ thuật toán làm cho thuật toán trong tin học trở nên gần gũi và thiết thực đối với học sinh
Trang 3Mục tiêu của môn Tin học, bậc phổ thông là “nhằm cung cấp cho học sinh
những kiến thức phổ thông về ngành khoa học tin học, hình thành và phát triển khả năng tư duy thuật toán, năng lực sử dụng các thành tựu của ngành khoa học này trong học tập và trong các lĩnh vực hoạt động của mình sau này." Trên thực tế
có rất ít giáo viên quan tâm nghiên cứu các câu hỏi “Tư duy thuật toán là gì?” và
“Cần phải dạy học như thế nào để có thể rèn luyện và phát triển tư duy thuật toán cho học sinh?” Đề tài này đã thảo luận những vấn đề đặt ra trong các câu hỏi trên và trình bày một quan điểm dạy cho học sinh phương cách tư duy để chuyển hóa được ý tưởng thuật toán thành mô tả thuật toán giải bài toán
Trong chương trình Tin học 10 học sinh mới tiếp xúc với thuật toán trong tin học nên có một khoảng trống về mặt thể hiện tri thức, ngầm diễn ra trong tư duy, giữa phần nêu ý tưởng thuật toán và phần mô tả thuật toán Vì các lý do nêu trên, tôi chọn đề tài viết sáng kiến kinh nghiệm là: “Phát triển tư duy thuật toán cho học sinh THPT thông qua “ Bài toán và thuật toán” Tin học 10 ”, nhằm giúp cho học sinh có cái nhìn khái quát hơn về thuật toán từ đó phát triển tư duy tốt là nên tảng cho việc lập trình sau này
I.2 Mục tiêu, nhiệm vụ của đề tài:
I.2.1 Mục tiêu :
Hình thành và phát triển khả năng tư duy thuật toán là một trong các mục
tiêu của môn Tin học ở phổ thông
I.2.2 Nhiệm vụ :
Đề tài đề xuất một phương pháp tiếp cận mô tả thuật toán mà dựa vào đó, giáo viên có thể dẫn dắt học sinh phân tích, tìm tòi các thao tác quan trọng để hiểu
và mô tả được thuật toán
Trang 4I 3 Đối tượng nghiên cứu:
Phát triển tư duy thuật toán cho học sinh lớp 10
I 4 Giới hạn phạm vi nghiên cứu:
Trong đề tài đề cập đến phương pháp giúp học sinh phát triển tư duy thuật toán, cụ thể là sẽ phân tích một số ví dụ trong bài “ Bài toán và thuật toán”, qua
đó giúp học sinh có cái nhìn khái quát về thuật toán để phát triển tư duy là nền tảng cho việc học lập trình sau này
I 5 Phương pháp nghiên cứu:
- Phương pháp tìm tài liệu : Phân tích, tổng hợp, phân loại, hệ thống hóa các nguồn tài liệu có liên quan đến đề tài
- Phương pháp nghiên cứu thực tiễn: Tư duy, logic, tìm hiểu, trao đổi, đàm thoại các bài toán liên quan đến đề tài
Trang 5II NỘI DUNG
II.1.Cơ sở lý luận:
II.1.1 Khái niệm thuật toán :
Việc cho một bài toán là mô tả rõ Input cho trước và Output cần tìm Vấn đề là: Làm thế nào để tìm ra output?
Việc chỉ ra tường minh một cách tìm Output của bài toán được gọi là một thuật toán (algorithm) giải bài toán đó Có nhiều định nghĩa khác nhau
về thuật toán, dưới đây là một định nghĩa thường dùng
Thuật toán để giải một bài toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác
ấy, từ Input của bài toán, ta nhận được Output cần tìm [1]
Input : Các thông tin đã có;
Output : Thông tin cần tìm từ Input;
Thuật toán: Các thao tác cơ sở để tìm Output từ Input
Rõ ràng ý tưởng thuật toán là dễ hiểu, nhưng mô tả thuật toán thường làm học sinh khó hiểu với những câu hỏi như: Tại sao lại có thể gán được i bằng i + 1?
Những thắc mắc của học sinh khi cố gắng hiểu một mô tả thuật toán
đã cho thấy có một khoảng trống khá lớn về mặt thể hiện tri thức, ngầm diễn ra trong tư duy, khi chuyển từ phần nêu ý tưởng thuật toán sang phần
mô tả thuật toán Khoảng trống này cần được lấp đầy bằng tư duy thuật toán
ở góc độ tin học Với nhiệm vụ biến tri thức giáo khoa thành tri thức dạy học, người thầy phải dạy cho học sinh một con đường tư duy để từ ý tưởng
Trang 6thuật toán, học sinh có thể hiểu và xây dựng được mô tả thuật toán giải bài toán đã cho
Nguyễn Bá Kim khi bàn về “Dạy học qui tắc, phương pháp” đã chỉ
ra 5 dạng hoạt động để phát triển tư duy cho học sinh, nhưng không đề cập đến việc vận dụng 5 dạng hoạt động này để hướng dẫn học sinh cách
tư duy trong “khoảng trống” nói trên [2] Lê Khắc Thành đã chú ý đến việc rèn luyện cho học sinh các hoạt động trí tuệ, nhưng chưa chỉ rõ một phương cách cụ thể để rèn luyện cho học sinh tư duy thuật toán [3] Knuth, D.đã so sánh mối quan hệ giữa tư duy thuật toán và tư duy toán học, nhưng không đề cập đến việc hướng dẫn người học tư duy như thế nào khi xây dựng thuật toán
Theo Gerald Futschek , tư duy thuật toán là sự kết nối các năng lực của tư duy theo cách nào đó để hiểu và xây dựng được thuật toán, bao gồm:
• Năng lực phân tích bài toán đã cho;
• Năng lực xác định chính xác bài toán;
• Năng lực tìm ra các thao tác cơ bản tương ứng với bài toán đã cho;
• Năng lực xây dựng một thuật toán chính xác để giải bài toán đã cho bằng cách sử dụng các thao tác cơ bản;
• Năng lực tư duy về tất cả các trường hợp bình thường và đặc biệt có thể xảy ra của một bài toán;
• Năng lực nâng cao hiệu quả của một thuật toán
Hai năng lực đầu tiên giúp học sinh thực hiện tốt nhiệm vụ “Xác định bài toán” Các năng lực còn lại giúp học sinh hiểu và làm tốt nhiệm
vụ “Mô tả thuật toán” Trong đó, năng lực 5 và 6 được xem là những năng lực tư duy giúp học sinh xây dựng được một thuật toán đảm bảo tính đúng đắn và tính hiệu quả; năng lực 3 và 4 được xem là những năng lực tìm ra
Trang 7các thao tác cơ bản để mô tả thuật toán giải bài toán Gerald đề nghị nên dùng các bài toán khó nhưng phát biểu bài toán là dễ hiểu để rèn luyện tư duy thuật toán cho người học, và chọn bài toán “Tìm đường trong mê cung” để phân tích quá trình tìm ra thuật toán đúng đắn thông qua quá trình tối ưu hóa “cách đi” (thao tác cơ bản) để thoát khỏi mê cung Bài báo tập trung vào các năng lực 3 và 4 và đề nghị một hướng khác: Thứ nhất là xem xét được tất cả các bài toán từ dễ đến khó để phù hợp cho tất cả các trình độ của người học; Thứ hai là không chọn cách tối ưu dần các thao tác
cơ bản mà đề xuất một số thao tác cố định mới (khái niệm mới) và tìm cách dùng chúng để mô tả thuật toán dựa trên ý tưởng thuật toán Hướng tiếp cận này sẽ hình thành một con đường cho học sinh tư duy để hiểu và xây dựng được thuật toán, nhằm lấp đầy khoảng trống giữa phần nêu ý tưởng thuật toán và phần mô tả thuật toán
II.1.2 Dạy cho học sinh cảm nhận được cách “tư duy” của máy tính
Không thể dạy cho học sinh phổ thông kiến thức Kiến trúc tập lệnh
(Instruction set architecture), là hình ảnh trừu tượng của một hệ thống tính toán được nhìn từ góc độ của một lập trình viên sử dụng ngôn ngữ máy (hay hợp ngữ) [2] Nhưng nếu hiểu được những vấn đề này thì mới có thể hiểu rõ cách mà máy tính “tư duy” để thực hiện thuật toán giải một bài toán, và do đó biết cách diễn tả đúng thuật toán Mâu thuẫn này dẫn đến sự khó hiểu về cách viết các thao tác trong một mô tả thuật toán và nó dường như bị áp đặt lên học sinh Bởi vậy, trong những cơ hội có thể được, giáo viên cần dạy cho học sinh cảm nhận được cách tư duy của máy tính Cơ hội đầu tiên là trả lời các câu hỏi dạng “Tại sao có thể gán được x bằng x + 1?” Thao tác gán là một thao tác đặc trưng, gặp thường xuyên trong các thuật toán của tin học, và nó không thể giải thích dựa vào các phép toán
Trang 8thông thường của toán học Học sinh phải hiểu rằng thao tác gán x ←− x + 1 được thực hiện theo thứ tự: giá trị của biểu thức ở bên phải phép gán được tính toán trước, rồi sau đó giá trị này mới được gán cho biến ở bên trái phép gán Như vậy giá trị của x ở vế phải khác với giá trị của x ở vế trái (các giá trị này tương ứng là giá trị của x trước và sau khi thực hiện thao tác gán) Trong ngôn ngữ lập trình Pascal, kí hiệu ←− được thay bằng
kí pháp :=, và máy tính thực hiện thao tác gán x := x + 1 theo thuật toán sau:
Bước 1 Tìm địa chỉ biến x ở biểu thức bên phải và lấy giá trị của x;
Bước 2 Tính giá trị của biểu thức ở bên phải;
Bước 3 Tìm lại địa chỉ của biến x ở bên trái để lưu kết quả vừa tính
Ta gọi các thao tác ở 3 bước trên đây là các thao tác nguyên tố, nghĩa là các thao tác nhỏ nhất (không thể phân chia thành các thao tác khác) mà các phần
tử vật lí thực hiện chức năng tính toán trong máy tính có thể “hiểu” và thực hiện được Phép gán x ←− x + 1 trong ngôn ngữ C/C++ được viết là x++ và máy tính thực hiện thao tác gán này thông qua các thao tác nguyên tố sau đây:
Bước 1 Tìm địa chỉ của biến duy nhất trong phép gán để lấy giá trị;
Bước 2 Tăng giá trị đó lên 1 đơn vị;
Bước 3 Đặt giá trị mới vào địa chỉ đã biết
II.1.3 Dạy cho học sinh biết sử dụng các “thao tác cơ sở” để mô tả thuật toán
Để ý thấy các thuật toán giải một bài toán đều xuất hiện một số thao tác sau đây:
Trang 9 Thao tác gán: gán giá trị của biểu thức cho một biến, có dạng:
<tên biến> ←− <biểu thức>;
hiện tại
Thao tác kiểm tra: thực hiện một thao tác dạng "Nếu P thì Q"; trong đó P
là một mệnh đề có một và chỉ một trong hai giá trị đúng hoặc sai, Q là một trong các thao tác đã chỉ ra (có thể là một thao tác kiểm tra khác)
Ta gọi 5 thao tác trên đây là các thao tác cơ sở chung Ngoài các thao tác
cơ sở chung, mỗi bài toán còn có thao tác cơ sở của riêng nó, ta gọi chúng là các
thao tác cơ sở riêng Cả hai loại thao tác này được gọi chung là các thao tác cơ
sở, và được định nghĩa như sau:
“ Thao tác cơ sở là thao tác nhỏ nhất, được dùng để diễn tả từng bước của thuật toán và biểu thị một khả năng hiểu và thực hiện được bởi một tác nhân tương ứng.”
II.2 Thực trang dạy và học môn Tin học tại các trường phổ thông
II.2.1 Thực trang phương pháp dạy :
một chiều, thuyết trình, giảng giải Việc đổi mới phương pháp dạy và học chưa đi vào thực chất, có nhiều sâu, thiếu triệt để, chỉ mới dừng lại
ở việc cải tiến phương pháp dạy học truyền thống bằng cách tăng cường các câu hỏi tái hiện; việc sử dụng các phương tiện hiện đại thường chỉ diễn ra vào các buổi hội giảng, không được áp dụng triệt để
học sinh, chưa phân bậc hoạt động nên khả năng tư duy của các em nói chung là chưa được phát triển
Trang 10II.2.2 Thực trang phương pháp học:
trong việc tiếp thu kiến thức, chủ yếu phụ thuộc vào giáo viên
Cách kiểm tra, đánh giá theo hình thức thi thế nào thì học thế ấy Việc kiểm tra đánh giá học sinh chỉ nhằm kiểm tra sự ghi nhớ, thuộc bài mà không chú trọng đến khả năng sáng tạo, ý thức tự giác trong học tập, năng lực tự học, tự nghiên cứu, phát triển tư suy sáng tạo, rèn luyện
kỹ năng tư duy thuật toán Học sinh có thể nêu ra được ý tưởng nhưng còn lúng túng trong quá trình đưa ra thuật toán
II.3.Phân tích nguyên nhân của thực trạng
Qua tìm hiểu và khảo sát thực tế có thể rút ra một số khó khăn, sai lầm sau:
Giáo viên chưa làm cho học sinh thực sự hiểu ý nghĩa của môn Tin học trong nhà trường nên thái độ học tập của học sinh chưa tích cực
phân biệt được bài toán đã gặp và bài toán trong Tin học, giữa tư duy lôgic
và tư duy thuật toán
máy móc các kiến thức cũ vào việc xây dựng thuật toán
móc, do đó khi gặp bài toán mới học sinh lúng túng trong việc xây dựng thuật toán
II.4 Giải pháp, biện pháp:
II.4.1 Định hướng vận dụng
Đối với các bài toán chỉ cần mô tả thuật toán bằng các thao tác cơ sở, lần
Trang 11đầu tiên giáo viên cung cấp cho học sinh khái niệm về các thao tác cơ sở và yêu cầu các em hoạt động tùy theo các mức độ từ cao xuống thấp
Khi đã thành thạo việc phán đoán, suy luận để mô tả thuật toán chỉ bằng các thao tác cơ sở, học sinh có thể biết cách xây dựng những thao tác cơ bản (mới) để mô tả thuật toán gọn gàng, trong sáng hơn Giáo viên cần tạo ra các tình huống thuật toán mà ở đó các thao tác cơ bản được nảy sinh một cách tự nhiên, điển hình là tình huống xuất hiện nhiều đoạn mô tả thuật toán giống nhau Để rèn luyện cho học sinh biết xây dựng các thao tác cơ bản và dùng chúng mô tả thuật toán, giáo viên có thể thiết kế một kiểu dạy học chương trình hóa theo đường thẳng để từng bước dẫn dắt học sinh tiếp cận thuật toán đích cần xây dựng Mỗi “liều” của chương trình đề cập đến một thao tác cơ bản (nếu có) và “liều” cuối cùng là thuật toán chính giải bài toán
Chỉ nên cho học sinh có trình độ từ mức khá trở lên tiếp cận với các thao tác tổng hợp Bài tập loại này nên được phân hóa thành các yêu cầu mà theo thứ tự đó các thao tác tổng hợp được hình thành một cách tự nhiên Giáo viên
có thể thiết kế phương pháp dạy học chương trình hóa kiểu phân nhánh, trong
đó các nhánh được sử dụng để đưa ra các gợi ý dưới dạng các bài toán con Các bài toán con này giúp học sinh dễ suy ra các thao tác tổng hợp ít phức tạp, dùng để xây dựng thao tác tổng hợp phức tạp hơn, nhưng lại gần với ý tưởng thuật toán hơn Các phương pháp dạy học tích cực như “khám phá có hướng dẫn”, “dạy học dựa trên truy vấn”, “phát hiện và giải quyết vấn đề”, cũng có thể áp dụng để rèn luyện cho học sinh dạng bài tập này
Các bài toán trong sách giáo khoa Tin học 10, THPT đều là các bài toán
có thể mô tả thuật toán dựa trên các loại thao tác như bảng sau đây:
Bảng các loại thao tác cho các thuật toán trong SGK Tin học 10
Stt Bài toán, thuật toán Loại thao tác cần sử dụng