MỤC LỤC
I. PHẦN MỞ ĐẦU: ................................................................................................................................... 1
I.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
Phát triển tư duy thuật toán cho học sinh THPT trên con đường từ ý tưởng đến mô tả thuật toán
I. PHẦN MỞ ĐẦU:
I.1. Lý do chọn đề tài :
Mụ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.
GV : Nguyễn Thu Huyền – Trường THPT Buôn Ma Thuột
2
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
GV : Nguyễn Thu Huyền – Trường THPT Buôn Ma Thuột
4
Phát triển tư duy thuật toán cho học sinh THPT trên con đường từ ý tưởng đến mô tả thuật toán
thuậ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,
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
GV : Nguyễn Thu Huyền – Trường THPT Buôn Ma Thuột
6
Phát triển tư duy thuật toán cho học sinh THPT trên con đường từ ý tưởng đến mô tả thuật toán
thô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
<tên biến> ←− <biểu thức>;
Thao tác chuyển: chuyển đến một bước nào đó phía trước hoặc phía sau bướ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 :
Phương pháp dạy của giáo viên chủ yếu vẫn là phương pháp truyền thụ
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 để.
Giáo viên ít gọi học sinh phát biểu để hiểu hơn về tư duy thuật toán của
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.
GV : Nguyễn Thu Huyền – Trường THPT Buôn Ma Thuột
9
Phát triển tư duy thuật toán cho học sinh THPT trên con đường từ ý tưởng đến mô tả thuật toán
đầ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:
Các thao tác cơ sở chung; Các thao tác cơ
3
Bài toán sắp xếp bằng tráo đổi bản (tráo đổi hai số, đưa phần tử “nặng” nhất
4
Bài toán tìm kiếm tuần tự
về vị trí cuối dãy xác định bởi M).
Các thao tác cơ sở chung.
5
Bài toán tìm kiếm nhị phân
Các thao tác cơ sở chung.
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
Xét ví dụ bài toán sau :
Bài toán tìm kiếm tuần tự
Cách trình bày thuật toán giải quyết bài toán này, cũng giống như cách
trình bày thuật toán trong hầu hết các tài liệu khác về thuật toán, kể cả trong sách
giáo khoa Tin học lớp 10 [1], gồm 3 phần sau đây:
Xác định bài toán :
- Input : Dãy A gồm N các số nguyên khác nhau a1,…,aN và số nguyên k
- Output: Chỉ số I mà ai = k hoặc thông báo không có số hạng nào của dãy A
có giá trị bằng k.
Bước 1: Nhập N, các số hạng a1, a2,…,aN;
Bước 2: i1 ;
Bước 3 : So sánh ai = k ?
- Nếu ai = k thì thông báo i rồi kết thúc
- Nếu ai khác k chuyển sang thao tác 3
Thao tác 3 :
Bước 1: Nhập N, các số hạng a1, a2,…,aN;
Bước 2: i1 ;
Bước 3 : So sánh ai = k ?
Nếu ai = k thì thông báo i rồi kết thúc.
Bước 4: i i+1;
GV : Nguyễn Thu Huyền – Trường THPT Buôn Ma Thuột
12
Phát triển tư duy thuật toán cho học sinh THPT trên con đường từ ý tưởng đến mô tả thuật toán
Bước 5: Nếu i> N thì thông báo dãy A không có số hạng nào có giá trị bằng
k, rồi kết thúc;
Bước 6 : Quay lại bước 3.
II.4.3. Phân tích các thao tác để đưa ra thuật toán:
Từ thao tác 1 chuyển sang thao tác 2 : Gợi cho học sinh thấy nhu cầu
cần làm rõ cấu trúc, khi so sánh thì sẽ có những trường hợp nào và cách giải
quyết các trường hợp đó. Giáo viên có thể đưa ra ví dụ để dẫn dắt học sinh
chuyển sang thao tác tiếp theo.
Từ thao tác 2 chuyển sang thao tác 3 : gợi cho học sinh làm rõ các
trường hợp còn lại, dừng thuật toán cho đến khi hết các phần tử của dãy.
Ta có thể chia nhỏ các thao tác ra để làm rõ thuật toán giúp học sinh
phát triển tư duy năng lực phân tích nhóm, năng lực xác định chính xác bào
pháp Tỷ lệ tăng,
phát triển tư Giảm
duy
Số
học Tỉ lệ
sinh
Số học Tỉ lệ
sinh
Giỏi
10
22.2% 20
44.4% Tăng 22.2%
Khá
12
26.7% 16
35.6% Tăng 8.7%
khó hơn như các bài toán biến đổi trạng thái, câu đố, trò chơi thì ý tưởng thuật
toán thường hình thành cùng với việc xây dựng các loại thao tác.
Đề tài đã tập trung vào việc rèn luyện năng lực tìm ra các loại thao tác
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 đã tìm ra, và 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. Hướng nghiên cứu tiếp theo của đề tài là năng lực nâng cao hiệu quả của
một thuật toán. Ngoài ra, phần thực nghiệm sẽ được triển khai để vận dụng
kết quả nghiên cứu, từ đó đánh giá và điều chỉnh nếu cần thiết.
Trong quá trình thực hiện tôi đã bám sát 3 luận điểm chính nhằm hình
thành tư duy thuật toán cho học sinh đó là: Xác định bài toán, gợi ý cho học
sinh đưa ra ý tưởng, phân tích dẫn dắt để học sinh đưa ra thuật toán dựa vào
các thao tác, tiếp cận đánh giá thuật toán. Trong đó các luận điểm luôn gắn bó
chặt chẽ với nhau. Có như thế mới phát huy thực sự tính tích cực, chủ động và
sáng tạo của học sinh.
Trong thời gian tương đối ngắn, tôi chỉ áp dụng được một ví dụ nhỏ,
một vài hoạt động, chưa thể làm nổi bật lên phương pháp, cách thức truyền đạt
kiến thức một cách toàn diện. Vì vậy, với mong muốn sẽ đưa phương pháp
trên vào áp dụng rộng rãi trong bộ môn tin học nhằm nâng cao chất lương
GV : Nguyễn Thu Huyền – Trường THPT Buôn Ma Thuột
15
Phát triển tư duy thuật toán cho học sinh THPT trên con đường từ ý tưởng đến mô tả thuật toán
giảng dạy, giúp học sinh lĩnh hội tri thức và hơn hết là nâng cao năng lực bản
thân.
Qua thực tế áp dụng, tôi thấy học sinh rất có hứng thú khi học tập bộ