1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

13 198 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 1,46 MB
File đính kèm FLASH.rar (192 KB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

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

NĂM HỌC 20…-20…

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

Trang 2

MỤC LỤC

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

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

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

Trang 3

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

Trang 4

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ế

Trang 5

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

Trang 6

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 :

Trang 7

Đầ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ỗ";

}

Trang 8

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<N-1)

{

dj=dj+1;

gotoAndStop("b3") } else

{

if (di<N-2) {

di=di+1;

dj=di+1;

gotoAndStop("b3") }else

{

gotoAndStop("b5");

} }

Trang 9

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<N;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();

}

Trang 10

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:

Trang 11

- 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)

Trang 12

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

Trang 13

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)

Ngày đăng: 25/09/2019, 21:24

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w