Tải bản đầy đủ

SÁNG KIẾN KINH NGHIỆM SỬ DỤNG FLASH MÔ PHỎNG CÁC THUẬT TOÁN CƠ BẢN

SỞ GDĐT BÀ RỊA VŨNG TÀU
TRƯỜNG THCS CHU VĂN AN

SỬ DỤNG FLASH
MÔ PHỎNG MỘT
SỐ THUẬT TOÁN
CƠ BẢN
LĨNH VỰC TIN HỌC

TÁC GIẢ ……………………..
GIÁO VIÊN BỘ MƠN TIN HỌC

NĂM HỌC 20…-20…
1


MỤC LỤC
A. Phần mở đầu

Trang 3


I. Lí do chọn đề tài

Trang 3

II. Mục đích và phương pháp nghiên cứu

Trang 3

III. Giới hạn đề tài

Trang 3

IV. Các giả thiết nghiên cứu

Trang 4

V. Cơ sở lý luận, cơ sở thực tiễn

Trang 4

VI. Kế hoạch thực hiện

Trang 5

B. Phần nội dung

Trang 6

I. Thực trạng và những mâu thuẫn

Trang 6

II. Các biện pháp giải quyết vấn đề

Trang 6

III. Hiệu quả áp dụng

Trang 13

C. Phần kết luận

Trang 13

I. Ý nghĩa của đề tài với công tác

Trang 13

II. Bài học kinh nghiệm, hướng phát triển

Trang 13

III. Đề xuất kiến nghị

Trang 13

2


A. PHẦN MỞ ĐẦU
I. Lí do chọn đề tài
Những năm gần đây, ở Việt Nam môn Tin học đã được đưa vào chương trình
của học sinh trung học cơ sở và trung học phổ thông như là một môn học chính
thức. Trong đó nội dung dạy học về lập trình là rất quan trọng, nó đòi hỏi học sinh
cần nắm chắc kiến thức cơ bản về Tin học. Trong đó, việc nắm vững các thuật toán
từ cơ bản đến phức tạp là rất quan trọng tốn nhiều thời gian và công sức rất lớn.
Hiện nay, việc truyền đạt các thuật toán dù là cơ bản cho học sinh mới học còn gặp
rất nhiều khó khăn. Có nhiều rất nhiều lý do: Học sinh khó hình dung, thời gian
giảng dạy trên lớp có hạn, tài liệu tham khảo có thể tự đọc, tự học vẫn còn ít.
Vì vậy để học sinh hiểu rõ hơn một số thuật toán cơ bản tôi xây dựng đề tài
này mô phỏng hoạt động của một số thuật toán giải cơ bản để học sinh có thể dễ
dàng nắm bắt tư tưởng cũng như từng bước hoạt động cụ thể của các thuật toán, để
giáo viên có thể làm cho bài giảng về các thuật toán này trở nên dễ hiểu, dễ tiếp thu
hơn.
II. Mục đích và phương pháp nghiên cứu
1. Mục đích nghiên cứu
Đề tài được nghiên cứu nhằm mục đích giúp cho học sinh có thể nắm vững
các thuật toán cơ bản một cách trực quan, chi tiết từng bước một.
Đồng thời giúp cho giáo viên có một công cụ giảng dạy lập trình tốt hơn.
2. Phương pháp nghiên cứu
Phương pháp nghiên cứu, phân tích tổng hợp tài liệu
Phương pháp điều tra, thống kê
Phuương pháp khảo nghiệm, thử nghiệm
III. Giới hạn đề tài
Đề tài phục vụ cho việc giảng dạy phần lập trình môn tin học THCS và
THPT

3


IV. Các giả thiết nghiên cứu
Cách đây gần ba thập kỉ (khoảng những năm 80 của thế kỉ XX), ở nhiều
nước trên thế giới mô phỏng thuật toán đã được sử dụng trong việc giảng dạy các
môn Khoa học máy tính như một công cụ hữu hiệu để mô tả thuật toán một cách
trực quan, khoa học. Không những vậy nó còn cho người học biết chi tiết từng
bước hoạt động của thuật toán cùng với cấu trúc dữ liệu đi kèm thông qua việc mô
tả bằng đồ họa.
Trong quá trình tìm hiểu một thuật toán, học sinh sẽ hiểu sâu hơn và dễ dàng
nắm bắt hơn nếu được quan sát các bước của thuật toán một cách trực quan. Điều
này sẽ gây hứng thú và kích thích khả năng tu duy của các em hơn.
V. Cơ sở lý luận, cơ sở thực tiễn
1. Cơ sở lí luận
Một chương trình lập trình trên máy tính sẽ chứa các cấu trúc dữ liệu của
thuật toán mà nó sẽ thực hiện. Trong khi thực hiện chương trình đó, giá trị thực của
cấu trúc dữ liệu thay đổi dựa trên từng bước hoạt động của thuật toán. Mô phỏng
thuật toán sử dụng đồ hoạ để biểu diễn sự thay đổi trạng thái của cấu trúc dữ liệu
cho từng bước hoạt động của nó một cách trực quan, khoa học. Trong suốt quá
trình biểu diễn, người dùng có thể quan sát việc thực thi thuật toán theo từng bước
để có thể biết chi tiết về thuật toán cũng như hiểu một cách tường tận về thuật toán
đó.
Trên thế giới, hệ thống mô phỏng đã được sử dụng rộng rãi trong việc dạy
học ngành khoa học máy tính. Đã có một số lượng các học sinh, sinh viên được đào
tạo bằng các chương trình mô phỏng để thấy được hiệu quả của nó trong giảng dạy
với kết quả rất khả quan.
2. Cơ sở thực tiễn
Khi giảng dạy thực tế ở trường tôi thấy học sinh khi học phần thuật toán hay
gặp khó khăn khi tiếp cận một thuật toán mới do khả năng tư duy, hình dung của
các em còn hạn chế.
4


Trong khi đó nếu muốn các em hiểu được giáo viên phải thêm bước mô tả
một ví dụ thực tế của thuật toán bằng tay ( viết lên bảng với các số liệu đầu vào này
thì thuật toán sẽ chạy các bước như sau...). Trong khi đó với trình độ của giáo viên
và các công cụ hỗ trợ thì hoàn toàn có thể làm các chương trình mô phỏng thuật
toán cho học sinh có thể tìm hiểu một các trực quan hơn.
VI. Kế hoạch thực hiện
Đề tài được thực hiện qua các bước :
1. Nghiên cứu và phân tích giải thuật
Bước đầu tiên trong quá trình giải một bài toán Tin học là xác định bài toán.
Ở bước này, dựa trên phát biểu của bài toán ta phải xác định rõ Input (dữ liệu đầu
vào) và Output (kết quả) của bài toán là gì và mối quan hệ giữa chúng. Thông tin
đó cần được nghiên cứu một cách cẩn thận để có thể lựa chọn thuật toán, cách thể
hiện các đại lượng đã cho, các đại lượng phát sinh trong quá trình giải toán và lựa
chọn ngôn ngữ lập trình thích hợp.
2. Đề xuất lựa chọn công cụ để phát triển chương trình mô phỏng thuật toán
Trong mục này, chúng ta sẽ phân tích các cách tiếp cận để xây dựng hệ
thống mô phỏng và tính khả thi của chúng. Ta sẽ xem xét một vài công cụ mô
phỏng thuật toán để xây dựng hệ thống mô phỏng phù hợp. Có nhiều công cụ để
mô phỏng thuật toán như : C#, Java, Flash...... trong khuôn khổ đề tài này tôi chọn
công cụ Flash để thực hiện đây là một công cụ rất mạnh về thiết kế đồ họa và có
ngôn ngữ kịch bản AS 3.0 hỗ trợ lập trình.
3. Thực hiện viết chương trình mô phỏng và đưa vào sử dụng giảng dạy
Phần này đòi hỏi giáo viên phải nắm vững được các công cụ để mô phỏng
và đầu tư thời gian, công sức để viết chương trình mô phỏng sau đó kiểm tra tính
đúng đắn và đưa vào sử dụng

5


B. PHẦN NỘI DUNG
I. Thực trạng và những mâu thuẫn
Khi giảng dạy thực tế ở trường tôi thấy học sinh khi học phần thuật toán hay
gặp khó khăn khi tiếp cận một thuật toán mới do khả năng tư duy, hình dung của
các em còn hạn chế. Trong khi đó với trình độ của giáo viên và các công cụ hỗ trợ
thì hoàn toàn có thể làm các chương trình mô phỏng thuật toán cho học sinh có thể
tìm hiểu một các trực quan hơn.
II. Các biện pháp giải quyết vấn đề
Sau đây tôi xin trình bày cách viết chương trình mô phỏng 4 thuật toán cơ
bản : sắp xếp đổi chỗ trực tiếp, tìm giá trị lớn nhất, tìm kiếm nhị phân, tìm kiếm
tuần tự. Trong đó thuật toán sắp xếp đổi chỗ trực tiếp được minh họa chi tiết, các
thuật toán còn lại cách làm tương tự (Ngoài ra còn một số chương trình mô phỏng
các thuật toán khác tất cả có file mã nguồn trong CD)
1. Mô phỏng thuật toán sắp xếp đổi chỗ trực tiếp
a. Thuật toán :
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
tmp:=a [i]; a[i] :=a [j] ; a[j]: =tmp ;
end;
b. Thiết kế chương trình mô phỏng
Giao diện :

6


Đầu vào :
Nhấn nút

để chọn file input.txt

Nhấn nút

để load giá trị từ file vào chương trình

Thiết kế chương trình
Đầu tiên tạo các layer và các frame như hình dưới. Sau đó thiết kế như giao diện ở
trên. Trong đó các node chứa số và mũi tên là MovieClip

Tại layer action gồm hàm khoitao(e:MouseEvent) được gọi khi nhấn nút cập
nhật, hàm này sẽ đọc giá trị từ file input và hiển thị node thông tin trên màn hình.
Hàm set_muiten(i,j) để thiết lập mũi tên theo các node. Hàm hoandoi(i,j) để hoán
đổi giá trị 2 node. Hàm pressNext01(e:MouseEvent) được gọi khi nhấn nút Play để
chạy tự động. Hàm pressNext(e:MouseEvent) được gọi khi nhấn nút Next để chạy
từng bước.
Tại frame 1(b1) : ta thiết kế phần nhập số liệu. Sau đó nhảy đến frame 10(b2)
bằng câu lệnh gotoAndStop(“b2”)
Tại frame 10 (b2) : ta kiểm tra xem có cấn đổi giá trị hay không :
if (A[di]>A[dj])
{
txt_tt.text="A[i] > A[j] đổi chỗ";
}else
{
txt_tt.text="A[i] < A[j] không đổi chỗ";
}
7


Sau đó nhảy đến frame 20(b3) bằng câu lệnh gotoAndStop(“b3”)
Tại frame 20 (b3) : ta thực hiện việc hoán đổi giá trị bằng hàm hoandoi(i,j):void
if (A[di]>A[dj])
{
hoandoi(di,dj);
txt_khoa.text="A[i] = " + A[di] + " ; " + "A[i] = " + A[dj] ;
}
Sau đó nhảy đến frame 20(b3) bằng câu lệnh gotoAndStop(“b3”)
Tại frame 30 (b4) : ta kiểm tra các gái trị của i và j để quyết định
if(dj{
dj=dj+1;
gotoAndStop("b3")
} else
{
if (di{
di=di+1;
dj=di+1;
gotoAndStop("b3")
}else
{
gotoAndStop("b5");
}
}

8


Tại frame 50 (b5) : là frame kết thúc, có nút trở về để làm lại từ đầu
btn_reset.addEventListener(MouseEvent.CLICK,reset);
function reset(e:MouseEvent):void
{
for(var j:int=0;j{
stage.removeChild(boxs[j]);
}
stage.removeEventListener(Event.ENTER_FRAME,pressNext01);
gotoAndStop(1);
}
Ta thiết kế 3 nút điều khiển : Play, Next, Stop.
- Nút Play để chương trình chạy tự động với biến cố Event.ENTER_FRAME
btn_play.addEventListener(MouseEvent.CLICK,pressPlay);
function pressPlay(e:MouseEvent):void
{
stage.addEventListener(Event.ENTER_FRAME,pressNext01);
}
- Nút Next để chương trình chạy từng bước với biến cố MouseEvent.CLICK
- Nút Sop để chương trình dừng chạy với biến cố MouseEvent.CLICK
btn_stop.addEventListener(MouseEvent.CLICK,pressStop);
function pressStop(e:MouseEvent):void
{
stage.removeEventListener(Event.ENTER_FRAME,pressNext01);
stop();
}
9


2. Mô phỏng thuật toán tìm kiểm nhị phân
a. Thuật toán :
while L < H do
begin
mid := (L + H) div2;
if (a[mid] = X) then exit(mid);
if (a[mid] < X) then L := mid + 1
else H := mid - 1;
end;
b. Thiết kế chương trình mô phỏng
Giao diện :

Đầu vào : giống phần trước
Thiết kế chương trình : giống phần trước
Tại frame 1 (b1) : ta thiết kế phần nhập số liệu
Tại frame 10 (b2) : ta kiểm tra :
if (dau>cuoi)
gotoAndStop("b5")
else
gotoAndStop("b3");
Tại frame 20 (b3) : ta kiểm tra các giá trị của A[giua], dau, cuoi để quyết định:
10


- A[giua]=K thì kết thúc tìm thấy (tới b5)
- dau > cuoi thì kết thúc không tìm thấy (tới b5)
- dau < cuoi thì tìm tiếp (quay lại b2)
Tại frame 50 (b5) : ta thiết kế phần kết quả có nút trở về để làm lại từ đầu
Ta thiết kế 3 nút điều khiển : Play, Next, Stop : Giống như phần trước
3. Mô phỏng thuật toán tìm kiếm tuần tự
a. Thuật toán :
for i:=1 to n do
if a[i]=K then exit(i);
b. Thiết kế chương trình mô phỏng
Giao diện :

Đầu vào : giống phần trước
Thiết kế chương trình : giống phần trước
Tại frame 1 (b1) : ta thiết kế phần nhập số liệu
Tại frame 10 (b2) : ta kiểm tra :
if (di>N)
gotoAndStop("b5")
else
gotoAndStop("b3");
Tại frame 20 (b3) : ta kiểm tra xem A[di]=K hay không để quyết định tìm tiếp
(quay lại b2) hoặc kết thúc (tới b5)
11


Tại frame 50 (b5) : ta thiết kế phần kết quả có nút trở về để làm lại từ đầu
Ta thiết kế 3 nút điều khiển : Play, Next, Stop : Giống như phần trước
4. Mô phỏng thuật toán tìm giá trị lớn nhất
a. Thuật toán :
for i:=1 to n do
if a[i]>max then max:=a[i];
b. Thiết kế chương trình mô phỏng
Giao diện :

Đầu vào : giống phần trước
Thiết kế chương trình : giống phần trước
Tại frame 1 (b1) : ta thiết kế phần nhập số liệu
Tại frame 10 (b2) : ta kiểm tra :
if (di>N)
gotoAndStop("b5")
else
gotoAndStop("b3");
Tại frame 20 (b3) : ta kiểm tra xem A[di]>K hay không để quyết định cập nhật giá
trị max hay không
Tại frame 50 (b5) : ta thiết kế phần kết quả có nút trở về để làm lại từ đầu
Ta thiết kế 3 nút điều khiển : Play, Next, Stop : Giống như phần trước

12


III. Hiệu quả áp dụng
Qua quá trình thực hiện, tôi đã rút được rất nhiều kinh nghiệm cho bản thân
trong việc tiến hành các bước viết chương trình cũng như ứng dụng vào giảng dạy
đạt hiệu quả. Về phía học sinh việc các em hứng thú học tập hơn và nắm bắt được
các thuật toán dễ dàng hơn, sâu sắc hơn.
C. PHẦN KẾT LUẬN
I. Ý nghĩa của đề tài với công tác
Việc áp dụng đề tài đã góp phần nâng cao chất lượng học sinh thông qua việc
rèn luyện khả năng tư duy và giải quyết vấn đề cho các em. Đồng thời đề tài cũng
góp phần nâng cao tính sáng tạo, tìm tòi học hỏi của giáo viên để có thể tìm ra cách
mô phỏng các thuật toán đơn giản mà hiệu quả, vừa góp phần tiết kiệm cho nhà
trường và xã hội.
II. Bài học kinh nghiệm, hướng phát triển
Để có thể áp dụng tốt giáo viên cần đầu tư công sức thường xuyên nâng cao
trình độ chuyên môn và cập nhật công nghệ mới. Giáo viên có thể phát triển từ mô
phỏng các thuật toán từ đơn giản sang phức tạp đặc biệt là các thuật toán đồ thị.
III. Đề xuất kiến nghị
- Nhà trường và cấp trên nên tạo điều kiện cho giáo viên được nâng cao nghiệp vụ
để phục vụ trong giảng dạy tốt hơn.
Xác nhận, đánh giá, xếp loại của đơn vị :

Sông xoài, ngày 24 tháng 2 năm 201..

………………………………………….

Tôi cam đoan đây là SKKN của bản

………………………………………….

thân tôi viết, không sao chép nội dung

………………………………………….

của người khác

………………………………………….

(Ký và ghi rõ họ tên)

………………………………………….
………………………………………….
………………………………………….

13



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×

×