Báo cáo dạy học giải quyết vấn đề trong giảng dạy phương pháp giải một bài toán trên máy tính điện tử nguyễn tân ân - Pdf 26

JOURNAL OF SCIENCE OF HNUE
Education Science, 2013, Vol. 58, No. 4, pp. 21-33
This paper is available online at http://stdb.hnue.edu.vn
DẠY HỌC GIẢI QU Y ẾT VẤN ĐỀ TRONG GIẢNG DẠY
PHƯƠNG PHÁP GIẢI MỘT BÀI TOÁN TRÊN MÁY TÍNH ĐIỆN TỬ
Nguyễn Tân Ân
Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Hà Nội
Tóm tắt. Bài báo trình bày tóm lược về phương pháp dạy học giải quyết vấn đề, sự
phù hợp của phương pháp này trong đào tạo nguồn nhân lực Công nghệ Thông tin
và Truyền thông nói chung và trong giảng dạy nội dung giải một bài toán trên máy
tính điện tử nói riêng. Bài báo cũng đưa ra kịch bản phác thảo để dạy giải bài toán
“Tám Quân Hậu” theo phương pháp này. Các kết quả thử nghiệm đều khẳng định
phương pháp dạy học giải quyết vấn đề là phương pháp huy động được tính tích
cực của sinh viên, phù hợp với mục tiêu đổi mới phương pháp dạy học hiện nay và
rất thích hợp khi giảng dạy nội dung giải một bài toán trên máy tính điện tử.
Từ khóa: Dạy học giải quyết vấn đề, đổi m ới phương pháp dạy học, dạy học Tin
học, bài toán Tám Quân Hậu.
1. Mở đầu
Để đổi mới phương pháp giảng dạy, các nhà sư phạm đ ã đưa ra rất nhiều quan điểm
khác nhau, nhưng gần như tất cả các quan điểm đó đều thống nhất rằng trong quá trình
dạy học phải làm sao tích cực hóa hoạt động nhận thức của sinh viên (SV), biến quá t rình
nhận thức thụ động của SV thành quá trình SV chủ động xây dựng tri thức cho bản thân,
biến quá t rình đào tạo SV thành quá trình SV tự đào tạo dưới sự hướng dẫn của giảng viên
(GV). Lấy người họ c làm trung tâm là một thuật ng ữ được nhiều người dùng kh i nói về
đổi mới ph ươ n g pháp dạy học.
Kiến thức t huộc lĩnh vực Công nghệ Thông tin và Truyền thô n g (CNTT&TT) được
đưa vào giảng dạy rộng rãi trong nhà trường muộn hơn rất nhiều so với các nội dung khoa
học khác. Phương pháp giảng dạy các m ôn thuộc lĩnh vực CNTT&TT cũng có nhiều điểm
không giống với phương pháp giảng dạy các môn thuộc các lĩnh vực khoa học khác. Trong
CNTT&TT, có những nội dung chỉ thích hợp với những cách dạy t heo kiểu “dắt tay chỉ
việc”. Ví dụ, giảng dạy sử dụng phần mềm, thật khó ki ến tạo hay nêu vấn đề khi GV

nối t iếp nhau, ph ươ n g pháp này luôn kích hoạt tính tích cực học tập của SV, do vậy khi sử
dụng phương pháp này một cách phù hợp sẽ cuốn hút được SV vào bài giảng và gây hiệu
quả nhận thức cao.
Phương pháp n ày đặc biệt thí ch hợ p với giảng dạy đại học hay giảng dạy ở các
trường chuyên nghiệp, bởi khả năng giúp SV rèn luyện phong cách làm việc tích cực, sáng
tạo, sớm hình thành thói quen tìm tòi, nghiên cứu.
2.1.2. Những chú ý khi áp dụng phương pháp dạy học giải quyết vấn đề
- Vấn đề đưa ra phải phù hợp với thờ i điểm, hoàn cảnh và đặc biệt phải phù hợp với
đối tượng s inh viên, đảm bảo đưa SV vào tính huống có vấn đề. Đặt vấn đề quá khó hay
quá dễ đều k h ông thể đưa SV vào tình huống có vấn đề. Mức độ thành công của phương
pháp này phụ th u ộc rất nhiều vào nghệ thuật đặt vấn đề và dẫn dắt giải quyết vấn đề của
GV. Muốn thành côn g, GV phải nắm chắc k iến thức, phải hiểu SV. Vì thế, cùng một giáo
án, khi dạy ở các lớ p khác nhau sẽ được nêu vấn đề theo những cách thức và mức độ
22
Dạy học giải quyết vấn đề trong giảng dạy phương pháp giải một bài toán trên máy tính
khác nhau.
- Sau khi đặt vấn đề, việc hướng dẫn SV trong quá trình giải quyết vấn đề phải rất
linh hoạt. Kịp thời khuyến khích những hướng đi đúng và khuyến k h ích những giải pháp
tốt đồng thời uốn nắn những giải pháp không h ợp lí hoặc không sát với mục đích mà GV
đang hướng quá trình nhận thức của SV đạt tới. Phần tóm tắt, hệ t hống hóa kiến thức từng
phần hay toàn bài phải cô đọng, ngắn gọn, nêu được giải pháp giải quyết vấn đề đang
cần tìm.
- Chú ý quản lí thời gian và tiến trình giờ giảng cho tốt. Trong khuôn khổ thời gian
của một b ài dạy, nếu cách nêu vấn đề không được chuẩn bị kĩ, nếu hướng dẫn thảo luận
hoặc nhận xét những giải pháp mà SV đưa ra còn lan man, việc tổng kết không trọng tâm
trọng điểm, dễ làm cho bài g iảng thiếu thời gian, không đạt kết quả mong mu ốn.
- Nên phối hợp phương ph áp này với các phương pháp giảng dạy khác. Không nên
áp dụng đơ n điệu một phương pháp. Trong mỗi bài dạy nên có một phương pháp chủ đạo
và nhiều p hương pháp khác bổ trợ.
2.2. Dạy học giải quyết vấn đề rất thích hợp khi giảng dạy cách giải một

Để “giao” cho máy tính giải bài toán và h oàn thiện phần mềm giải bài toán, nói
chung cần thực hi ện 5 bước sau:
Bước 1. Xác định bài toán: Xác định bài toán ở đây chính là vi ệc xác định rõ Cái
vào, Cái ra.
Bước 2. Lựa chọn hoặc thiết kế giải thuật: Thường khi thiết kế hoặc chọn giải thuật,
người giải đồng thời phải ngh ĩ ngay đến việc tổ chức dữ liệu.
Bước 3. Viết chương trình: Bước n ày chính là b ướ c người giải cài đặt giải thuật cùn g
cấu trúc dữ liệu xác định ở bước trên. Đó chính là việc viết chương trình sao cho có thể
“giao” cho máy thực hiện việc giải bài toán.
Bước 4. Kiểm thử và hiệu chỉnh chương trì nh: Đây là bước kiểm thử. Nếu chương
tr ình còn lỗi, phải sửa hết lỗi.
Bước 5. Viết tài liệu: Tài liệu phải mô tả chi tiết bài toán, thuật toán, chương trình,
hướng dẫn sử dụng Tài li ệu rất có ích và cần thiết cho người sử dụng chương trình và
những người quan tâm nhằm hiểu, khai thác tốt và bảo trì, nâng cấp chương trình .
Các bước trên có thể lặp đi lặp lại nhiều lần cho đến khi tạm đạt yêu cầu. Vì thế, ta
thấy, với mỗi chương trình thường có các phiên bản khác nh au. Phiên bản sau là cải tiến
của phiên bản trước.
Trong 5 bước kể trên, hai bước: Bước 2. Tìm kiếm hoặc thiết kế giải thuật và Bước
3. Viết chương trình là hai bước khó nhất và cũng quan trọng nhất. Tất nhiên, để thực hiện
được hai bước này, SV phải qua được Bước 1. Tìm hiểu/xác định bài toán.
Trong khuôn khổ của bài báo, chúng ta chỉ bàn đến giảng dạy ba bước này.
2.2.3. Phương pháp DH G QVĐ rất thích hợp khi giảng dạy giải một bài toán trên
máy tính
Giảng dạy Bước 1, tìm hiểu/xác định bài toán, thông thường GV dùng phương pháp
thuyết trình, giảng giải cặn kẽ, thống nhất những khái niệm, những thuật ng ữ ghi trong
đầu bài, giúp SV hiểu rõ Cái vào, Cái ra. Còn những thao tác được áp dụng, mặc n hiên
đó là những thao tác mà SV ở trình độ hiện tại đã biết, không cần nhắc lại nữa.
Giảng dạy Bước 2, GV dẫn dắt SV tìm kiếm/lựa chọn giải t h uật. Dễ thấy rằng quá
tr ình tìm kiếm giải th uật chính là quá t rình tìm cách giải quyết bài toán. Dẫn dắt SV thực
hiện bước này, n ếu cứ theo đúng logic của nội dung, với cách nêu vấn đề phù hợp, tự nhiên

GV (Dùng phương pháp thuyết trình):
Cái vào: Bàn cờ Vua và 8 quân hậu. (GV giải thích thế nào là bàn cờ (bàn cờ Vua),
thế nào là quân hậu và khả năng đi, khả năng ăn của quân hậu (theo luật cờ Vua)).
Cái ra: Một cách đặt 8 quân hậu vào các ô trên bàn cờ sao cho không quân nào ăn
được quân nào.
Bước 2. Lựa chọn ho ặc thiết kế giải thuật:
GV (Nêu câu hỏi đưa SV vào tình huống có vấn đề):
Làm thế nào để đặt 8 quân hậu lên bàn cờ sao cho không quân nào ăn được
quân nào?
(Yêu cầu trả lời bằng ngôn ngữ tiếng Việt, chưa vận dụng kiến thức Tin, kiến thức
Toán đ ặc biệt nào vào đây).
Có thể có nhiều câu trả lời. Trường h ợp gặp SV đã học đâu đó một cách giải và họ
tr ình bày cách giải đó, GV (có thể) hỏi t hêm: Tính đệ qui trong cách giải của anh/ chị thể
hiện ở chỗ nào? (ta đang học giải thuật đệ qui), và khả năng cài đặt cách làm đó lên máy
tính? Có bao nhiêu cách làm (có bao nhiêu nghiệm)? Nếu SV trả lời được, thì đây là SV
25
Nguyễn Tân Ân
đã học trước và đã h iểu rõ vấn đề, ta yêu cầu SV này ngồi nghe và theo dõi cách giải quyết
của các bạn, sau đó s ẽ được gọi để nh ận xét. Ta sẽ sử dụng SV này để cùn g dẫn dắt quá
tr ình n hận thức của các SV khác theo mục đích bài giảng. Đại đ a số các sinh viên chưa
học hoặc đã học nh ưn g khôn g nắm chắc vấn đề do đó trả lời không rõ ràng, không đầy đủ.
Thường gặp câu trả lời:
SV: Em đổ 8 quân hậu lên bàn cờ rồi mò ra một cách đặt.
GV: Các bạn hãy nhận xét cách làm trên.
SV: (Thảo luận).
GV (Tổng kết lại): Cách làm đ ó cũng có thể tìm ra được ít nhất một cách đặt. Tuy
nhiên theo cách làm đó không dễ biết sẽ có bao nhiêu cách đặt bởi sau mỗi cách tìm được,
khó biết có còn cách nào nữa hay khôn g? Đồ n g thời, lưu ý rằng, cách l àm đó khôn g theo
một chiến lược rõ ràng nào cả nên rất khó cài đặt trên máy tính. Ai có cách làm khác?
SV (Trình bày cách khác): Em đặt quân hậu thứ nhất lên một ô bất kì trên bàn cờ và

tổng quát, mỗi “giá trị” x
j
có thể là một bộ số mới có thể lưu được vị trí của quân hậu.
Nếu thế, đi tìm nghiệm của bài toán tức là đi tìm từng tọa độ của vectơ X. Có thể tìm
vectơ X bằng giải thuật đệ qui được không ?
SV (Đã có kiến thức về đệ qui): Có thể! Ta tìm lần lượt t ừn g tọa độ của vectơ X:
Đầu tiên tìm x
1
, sau đó tìm x
2
, Giả sử ta đã tìm được x
j
, thế thì việc tìm x
j+1
giống hệt
26
Dạy học giải quyết vấn đề trong giảng dạy phương pháp giải một bài toán trên máy tính
cách tìm x
j
nhưng kích thước bàn cờ bây giờ nhỏ hơn do trừ đi những ô đã bị đánh dấu
bỏ trước đó và bây giờ phải trừ tiếp đi những ô do đặt quân hâu j. Trường hợp su y biến là
trường hợp tìm x
8
.
GV: Rất tốt. Tuy nhiên khi thử đ ặt quân hậu j, làm thế nào để biết kết quả của việc
thử như t hế là ĐƯỢC hay KHÔNG ĐƯỢC để còn thử đặt tiếp quân hậu j+1 hay quay lui?
SV (Nhớ l ại nội dung đã thảo luận ở trên): Việc đặt quân hậu j là ĐƯỢC khi và chỉ
khi tất cả các quân hậu tiếp theo đều có chỗ (chứ không phải ĐƯỢC có nghĩa là hiện tại
ô mà ta đặt quân hậu j là ô tự do, không quan tâm đến các quân tiếp sau).
Thế thì việc kiểm tra xem đặt quân hậu thứ j vào một ô tự d o nào đó có ĐƯỢC hay

quân hậu.
GV (Hoàn chỉnh gi ải thuật): Ai có thể diễn đạt cách làm trên một cách chặt chẽ để
có giải thuật: Thử đặt quân hậu j lên lần lượt các hàng, bắt đầu từ h àng 1, trong cột của
nó (cột j) cho đến khi ĐƯỢC hoặc hết các hàng (đến hàng 8) mà vẫn KHÔNG ĐƯỢC thì
27
Nguyễn Tân Ân
cũng thôi?
SV: (Trìn h bày).
GV (Chốt lại): Giải thuật thử đặt quân hậu j như sau:
Thử (j, q); // Thử đặt quân hậu j, q là biến Boolean để lưu kết quả
1.
i := 0; //Ban đầu gán chỉ số hàng bằng 0
2.
Lặp:
3. i := i+1; //Tăng chỉ số hàng lên 1
4. q:= False; // Trước khi thử, gán q := False
5. Nếu ô (i,j) TỰ DO thì
6. begin
7.
ĐẶT quân hậu j vào ô (i, j);
8. Nếu quân hậu j chưa phải là quân cuối thì Thử (j + 1, q);
9.
Nếu KHÔNG ĐƯỢC thì CẤT QUÂN HẬU j đi, ngược lại q :=
T rue;
10. end;
11.
Cho đến khi:
ĐƯỢC hoặc đã thử đến hàng cuối m à vẫn chưa ĐƯỢC thì cũn g
thôi;
12. Return;

GV: Khi nào ô (i, j) tự do đối với quân hậu j?
SV: Ô (i, j) là TỰ DO đối với quân hậu j khi và chỉ khi hàng i TỰ DO, đường chéo
đi lên qua ô (i, j) TỰ DO, đườn g chéo đ i xuống qua ô (i, j) TỰ DO. (Cột j đươn g nhiên
là tự do đối với quân hậu j, nên không cần kiểm tra nữa).
GV: Để kí h iệu (để mã) sự kiện hàng i tự do hay không ta làm thế nào?
SV: (Thảo luận).
GV: Ta dùng mảng a[i] có các phần tử kiểu Bool ean để lưu trữ kết quả tự do hay
không của các hàng. Ý nghĩa các giá trị của mảng này như sau: Nếu a[i] = T rue thì h àng
i tự d o, ngược lại thì không. Ví dụ a[3] = T rue có n g hĩa là hàng 3 tự do. Bàn cờ có 8
hàng nên i có 8 giá trị có nghĩa. Nên cho i chạy từ 1 tới 8.
GV: Làm thế nào để kí hiệu (đ ể mã) sự k iện đường chéo đi lên qua ô (i, j) có tự do
hay không? Ai có nhận xét về các ô mà đường chéo đi lên qua ô (i, j) đi qua?
SV: Đường chéo đi lên qua ô (i, j) là đường chéo đi qua các ô có chỉ số hàng cộng
chỉ số cột bằng nhau và bằng chính (i + j). Mỗi giá trị của tổng (i + j) tương ứng với một
đường chéo đi lên.
GV: Ai có thể mã hóa sự kiện đường chéo đi lên qua ô (i, j) tự do/không tự do?
SV: Dễ thấy rằng:
(i + j) nhỏ nhất kh i i nhỏ nhất (bằng 1) và j nhỏ nhất (bằng 1), t ức là bằng 2.
(i + j) lớn nhất khi i lớn nhất (bằng 8) và j lớn nhất (bằng 8), tức là bằng 16.
(i + j) chạy t ừ 2 tới 16 có 15 giá trị tức l à b àn cờ có 15 đường chéo đi lên (đếm trên
hình vẽ ta cũng thấy bàn cờ có 15 đường chéo đi lên).
Ta dùng mảng b[i + j], (i + j) chạy từ 2 tới 16, để mã sự tự do hay khôn g của
các đường chéo đi lên qua ô (i, j)). Ý nghĩa các giá trị của mảng này như sau: Nếu
b[i + j] = T rue thì đường chéo đi lên qua ô (i, j) tự do, ngược lại thì không.
Hoàn toàn tương tự như trên GV s ẽ h ỏi và SV sẽ đưa ra cách mã hóa đường chéo đi
xuống qua ô (i, j) có tự do hay không như sau:
GV: Làm thế nào để kí hiệu (mã) đường chéo đi xuống qua ô (i, j) có tự do hay
không? Ai có nhận xét về các ô mà đường chéo đi xuống qua ô (i, j) đi qua?
SV: Đường chéo đi xuống qua ô (i, j) là đường chéo đi qua các ô có chỉ số hàng trừ
chỉ số cột bằng nhau và bằng chính (i −j). Mỗi giá trị của hiệu (i −j) tương ứng với một

c[i − j] := F alse;
GV: Thao tác cất quân h ậu khỏi ô (i, j) được viết thế nào?
SV: Ta chỉ cần đổi trạng thái TỰ DO của ô (i, j) thành trạng thái KHÔNG TỰ DO :
a[i] := T rue;
b[i + j] := T rue;
c[i − j] := T rue;
Không cần quan tâm đến giá trị của x[j] nữa. Coi x[j] là biến tự do (biến chưa được
gán trị).
GV: Các bạn SV hãy viết l ại giải thuật trên bằng cách thay các câu trừu tượng bằng
đoạn mã của nó.
SV (Tự viết).
GV (Chốt lại): Thủ tục như sau:
30
Dạy học giải quyết vấn đề trong giảng dạy phương pháp giải một bài toán trên máy tính
procedure Try(j: integer; var q: boolean);;
(*Thử đ ặt quân hậu j, q là biến Boolean để lưu kết quả*)
1. var i: integer;
2. Begin
3.
i := 0; (*Ban đầu gán chỉ số hàng bằng 0*)
4. Repeat
5. i := i + 1; (*Tăng chỉ số hàng lên 1*)
6.
q:= False; (*Trước khi thử, gá n biến q bằng False*)
4. if (a[i] and b[i+j] and c[i-j]) (*Nếu ô (i,j) tự do*) then
5.
begin (*Đặt quân hậu j vào hàn g i trong cột của nó và ghi lại tình
trạng ô (i, j) không còn tự do nữa*)
6. x[j] := i;
7. a[i] := F alse;

31
Nguyễn Tân Ân
tr ình có sẵn ra chạy, hiệu quả kém hơn nhiều.
Tác giả bài báo này đ ã thử nghiệm giả ng dạy cho các lớp cử nhân Sư phạm Tin, các
lớp cử nhân Công nghệ Thông tin ở cả hệ chính qui, hệ vừa l àm vừa học và nhận thấy:
Nhìn chung SV hứng thú học tập và rất hiểu bài.
GV (Ra bài tập. Tùy theo trình độ của SV, có thể có các mức bài tập sau):
1). Viết (hoặc viết lại nếu GV đã đánh máy chương trình hoàn chỉnh và cho chạy)
chương trình hoàn chỉnh gồm chương t rình chính kết hợp với thủ tục trên để máy tính đưa
ra một phươ ng án đặt 8 quân hậu và kiểm thử.
2). Cải tiến giải thuật trên để viết chương trình cho máy tính in ra tất cả các phương
án đặt 8 quân hậu.
3). Từ tính đối xứng của bàn cờ hãy cho biết trong tất cả các phương án tìm được
bởi chương trình trên có bao nhiêu phương án thực sự khác nhau?
4). Đối với những SV có k hả năng, giao nhiệm vụ hãy trình bày lời giải trong chế
độ đồ họa (Vẽ bàn cờ và vẽ các quân hậu trên màn hình).
5). Có th ể giao bài tập lớn: Viết chương trình trong chế độ đồ họa, mô phỏng hoạt
động của giải thuật trên.
6). Cũng có thể nêu các vấn đề khác như: Chứng minh tính đúng đắn của giải thuật
trên bằng Toán học? Xác định độ phức tạp thờ i gian của giải thuật trên? Hãy suy nghĩ về
kích th ướ c của bài toán: "Hãy đặt k quân hậu lên bàn cờ kích thước k × k sao cho không
quân nào ăn được quân nào?", k tối thiểu là bao nhiêu để bài toán có ngh iệm? Các khả
năng mở rộng kích thước của bàn cờ: Tăng số hàng, tăng số cột, tăng đều số hàng, số cột
và số quân hậu. Khi tăng như vậy độ ph ức tạp thời gian của g iải thuật thay đổi thế nào?
Hãy viết giải thuật không đệ qui để tìm một nghiệm, tìm t ất cả các nghiệm của bài toán
Tám Quân Hậu?
3. Kết luận
DH GQVĐ là phương pháp thích hợp với các bài giảng về cách giải một bài toán
trên m áy tính. Đây là ph ương pháp dễ áp dụn g và dễ đạt hi ệu quả cao khi dạy nội dung
này. Áp dụng phương pháp DH GQVĐ sẽ kích hoạt tính tích cực của SV, tạo điều kiện

ing problem solving is positively mobili ze students, consistent with the goal of renewing
the current teaching methods and is well suited to teaching content solve a problem with
computer.
33


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status