Tải bản đầy đủ - 0 (trang)
Nghiên cứu và phân tích giải thuật

Nghiên cứu và phân tích giải thuật

Tải bản đầy đủ - 0trang

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 tố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ì hồn tồn có thể làm các chương trình mơ phỏng thuật tố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 tố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 tốn sắp xếp đổi chỗ trực tiếp được minh họa chi tiết, các

thuật tốn còn lại cách làm tương tự (Ngồi ra còn một số chương trình mơ phỏng

các thuật tố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 tố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 tốn tìm kiếm tuần tự

a. Thuật tố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 tố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 q 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 tố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 xun nâng cao

trình độ chun 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 tố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 xồ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ề

Nghiên cứu và phân tích giải thuật

Tải bản đầy đủ ngay(0 tr)

×