Tải bản đầy đủ (.pdf) (92 trang)

Luận văn thạc sĩ ứng dụng trực quan trong dạy lập trình cho học sinh phổ thông

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.13 MB, 92 trang )

..

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA

TRẦN THỊ HOA LÀI

ỨNG DỤNG TRỰC QUAN TRONG
DẠY LẬP TRÌNH CHO HỌC SINH PHỔ THƠNG

Chun ngành: Khoa học máy tính
Mã số: 8480101

LUẬN VĂN THẠC SĨ KỸ THUẬT

Người hướng dẫn khoa học:

S TS V

Đà Nẵng - Năm 2018

TRUN

H N


LỜI CAM ĐOAN
Tôi xin cam đoan:
Nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực
tiếp của PGS.TS. Võ Trung Hùng
Tài liệu tham khảo dùng trong luận văn đều được trích dẫn rõ ràng


tên tác giả, tên nhà xuất bản, năm xuất bản và chú thích các nội dung tham khảo
đầy đủ.

Học viên

Trần Thị Hoa Lài


TRANG TÓM TẮT LUẬN VĂN
Tên đề tài: ỨNG DỤNG TRỰC QUAN
TRONG DẠY LẬP TRÌNH CHO HỌC SINH PHỔ THƠNG
Học viên:

TRẦN THỊ HOA LÀI

Mã số: 8480101 - Khóa: 34

Chuyên ngành: Khoa học máy tính

Trường Đại học Bách khoa - ĐHĐN

Tóm tắt – Ở nhiều trường trung học phổ thông, việc dạy và học tin học gặp nhiều khó
khăn, đặc biệt là việc dạy bồi dưỡng học sinh giỏi, bởi học sinh xem đây môn không thi tốt
nghiệp. Vậy để thu hút việc học mơn tin học cho học sinh thì giáo viên cần phải thường xuyên
quan tâm và đổi mới phương pháp dạy học. Một phương pháp dạy học trực quan sinh động sẽ
tạo hứng thú, đam mê môn học đối với người học. Trong luận văn này, tôi nghiên cứu về dạy
học trực quan trong dạy lập trình và bồi dưỡng học sinh giỏi cho học sinh phổ thông. Nội dung
nghiên cứu gồm: (1) Nghiên cứu cơ sở lý thuyết về dạy học trực quan, về đồ học máy tính và 3
thuật tốn trên đồ thị: Thuật tốn tìm đường đi ngắn nhất, thuật tốn tìm kiếm theo chiều sâu
và thuật tốn tìm kiếm theo chiều rộng. (2) Lý thuyết về mơ phỏng thuật tốn và mơ phỏng

trực quan 3 thuật toán trên đồ thị. (3) Thực hiện cài đặt 3 thuật toán trên đồ thị và áp dụng thực
tế trong dạy học. Từ đó so sánh kết quả tiếp thu của người học sau khi dạy học 3 thuật tốn
này bằng cách sử dụng phương pháp thơng thường và sử dụng phương pháp mô phỏng trực
quan đã mang lại kết quả khả quan.
Từ khóa: Thuật tốn, mơ phỏng thuật toán, Dijkstra, BFS, DFS.

Project title: APPLICATIONS ONLINE

IN TEACHING THE PROGRAM FOR CHILDREN
Abstract - In many Upper Secondary Schools, Teaching and learning inforrmation
technology have many challenges and dificulties, especially the training of good students .
Because the students are not interested in this subject which is not compulsory in the national
examminations at certain stages of the school education system. In order to attract students to
learn computing, the teachers need to constantly care and innovate teaching methods. A vivid
visual teaching method will create interesting, passionate subjects for learners. In this essay, I
study the visual teaching technique in teaching programming and fostering good pupils for


high school students. The research contents include: (1) Study theoretical foundations of visual
teaching, computer science and 3 algorithms on the graph: algorithm for finding the shortest
path, search algorithm in depth and Search algorithm by width. (2) Theory of algorithmic
simulation and visualization of 3 algorithms on the graph. (3) Implement 3 algorithms on
graph and apply reality in teaching. Then compare the results of the learner after teaching the
three algorithms using conventional methods and using visual simulation has brought positive
results.
Key words: Algorithm, algorithmic simulation, Dijkstra, BFS, DFS.


MỤC LỤC
TRANG BÌA

LỜI CAM ĐOAN
MỤC LỤC
TRANG TĨM TẮT LUẬN VĂN
DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC CÁC BẢNG
DANH MỤC CÁC HÌNH
MỞ ĐẦU .........................................................................................................................1
1. Tính cấp thiết của đề tài ......................................................................................1
2. Mục tiêu và nhiệm vụ nghiên cứu .......................................................................2
3. Đối tượng và phạm vi nghiên cứu.......................................................................2
4. Phương pháp nghiên cứu.....................................................................................3
5. Bố cục của luận văn ............................................................................................3
CHƯƠNG 1. NGHIÊN CỨU TỔNG QUAN .................................................................4
1.1. PHƯƠNG PHÁP DẠY HỌC TRỰC QUAN ................................................4
1.1.1. Phương pháp trình bày trực quan .........................................................4
1.1.2. Phương pháp quan sát ..........................................................................4
1.2. ĐỒ HỌA MÁY TÍNH ....................................................................................6
1.2.1. Khái niệm .............................................................................................6
1.2.2. Các kỹ thuật đồ họa ..............................................................................7
1.2.3. Màn hình đồ họa và một số ứng dụng của đồ họa ...............................8
1.3. ĐỒ THỊ VÀ MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ .............................10
1.3.1. Đồ thị ..................................................................................................10
1.3.2. Một số thuật toán trên đồ thị ..............................................................12
1.4. TỔNG KẾT CHƯƠNG 1 ..............................................................................19
CHƯƠNG 2. MƠ PHỎNG THUẬT TỐN .................................................................20
2.1. PHƯƠNG PHÁP MƠ PHỎNG THUẬT TỐN .........................................20
2.1.1. Khái niệm ...........................................................................................20
2.1.2. Tác dụng của mơ phỏng thuật tốn trong dạy học .............................21



2.1.3. Các u cầu đối với mơ phỏng thuật tốn ..........................................22
2.2. QUY TRÌNH MƠ PHỎNG THUẬT TỐN ..............................................23
2.2.1. Thiết kế hệ thống mơ phỏng thuật tốn ..............................................23
2.2.2. Quy trình thiết kế mơ phỏng thuật tốn .............................................24
2.3. ÁP DỤNG MƠ PHỎNG MỘT SỐ THUẬT TỐN TRÊN ĐỒ THỊ .........29
2.3.1.Thuật tốn tìm đường đi ngắn nhất (Thuật tốn Dijkstra)
......................................................................................................................29
2.3.2. Thuật tốn tìm kiếm theo chiều rộng (BFS).......................................37
2.3.3. Thuật tốn tìm kiếm theo chiều sâu (DFS) ........................................42
2.4. TỔNG KẾT CHƯƠNG ................................................................................46
CHƯƠNG 3. CÀI ĐẶT THỬ NGHIỆM ......................................................................47
3.1. LỰA CHỌN NGƠN NGỮ LẬP TRÌNH .....................................................47
3.2. CÁC CHƯƠNG TRÌNH ỨNG DỤNG ........................................................48
3.2.1. Chương trình mơ phỏng thuật tốn tìm đường đi ngắn nhất ..............48
3.2.2. Chương trình mơ phỏng thuật tốn tìm kiếm theo chiều rộng ...........55
3.2.3. Chương trình mơ phỏng thuật tốn tìm kiếm theo chiều sâu .............57
3.3. KẾT QUẢ CỦA ỨNG DỤNG THUẬT TOÁN MÔ PHỎNG .....................59
3.4. TỔNG KẾT CHƯƠNG 3 ..............................................................................60
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .....................................................................61
TÀI LIỆU THAM KHẢO .............................................................................................63
PHỤ LỤC ......................................................................................................................65
QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN THẠC SĨ (BẢN SAO)
BẢN SAO KẾT LUẬN CỦA HỘI ĐỒNG, BẢN SAO NHẬN XÉT CỦA CÁC PHẢN
BIỆN


DANH MỤC CÁC TỪ VIẾT TẮT
1.
STT


Tiếng Việt
TỪ VIẾT TẮT

VIẾT RÕ

1

PPDH

Phương pháp dạy học

2

TQ

Trực quan

3

ĐHMT

Đồ họa máy tính

4

GV

Giáo viên

5


HS

Học sinh

6

MPTT

Mơ phỏng thuật tốn

7

TT

Thuật tốn

8

TK

Tìm kiếm

2.
STT

Tiếng Anh
TỪ VIẾT TẮT

VIẾT RÕ


1

BFS

Breadth First Search

2

DFS

Depth First Search


DANH MỤC CÁC BẢNG
Bảng 2.1. Thuật toán Dijkstra ............................................................................. 29
Bảng 2.2. Chi tiết các bước lặp của thuật toán Dijkstra ...................................... 31
Bảng 2.3. Các chương trình con và chức năng của thuật tốn Dijkstra .............. 36
Bảng 2.4. Thuật tốn tìm kiếm theo chiều rộng ................................................. 37
Bảng 2.5. Các chương trình con và chức năng của TT BFS ............................... 41
Bảng 2.6. Các chương trình con và chức năng của TT DFS............................... 45
Bảng 3.1. Số liệu thống kê .................................................................................. 59


DANH MỤC CÁC HÌNH

Hình 1.1. Ứng dụng đồ họa trong hỗ trợ thiết kế........................................................ 8
Hình 1.2. Ứng dụng đồ họa để biểu diễn thơng tin ................................................... 9
Hình 1.3. Ứng dụng đồ họa trong giáo dục đào tạo.................................................. 10
Hình 1.4. Tương tác giữa người dùng với phần mềm học tập .................................. 10

Hình 1.5. Đồ thị vơ hướng ........................................................................................ 11
Hình 1.6. Đồ thị có hướng ........................................................................................ 11
Hình 1.7. Đồ thị có hướng có trọng số .................................................................... 13
Hình 2.1. Hình ảnh sau một bước thực hiện của thuật tốn dijkstra ........................ 23
Hình 2.2. Sơ đồ các bước thiết kế hệ thống mô phỏng thuật tốn ............................ 24
Hình 2.3. Mơ hình bài tốn mơ phỏng ...................................................................... 24
Hình 2.4. Dữ liệu đầu vào: một đồ thị vơ hướng gồm 5 đỉnh, 6 cạnh ...................... 26
Hình 2.5. Mơ phỏng theo từng bước của thuật tốn Dijkstra ................................... 28

Hình 2.6. Minh họa dữ liệu đầu vào trực quan ............................................... 32
Hình 2.7. Kết quả mơ phỏng thuật tốn Dijkstra ...........................................................33
Hình 2.8. Đồ thị theo mẫu .............................................................................................35
Hình 2.9. Minh họa dữ liệu vào của thuật tốn BFS .....................................................38
Hình 2.10. Kết quả mơ phỏng thuật tốn BFS ...............................................................39
Hình 2.11. Cách tạo đồ thị cho bài tốn tìm kiếm BFS ................................................40
Hình 2.12. Minồng, Giải thuật và lập trình, NXB Đại học Sư phạm Hà nội –
2002.
[4] Lê Minh Hoàng, Lý thuyết đồ thị, NXB Đại học sư phạm Hà nội – 2002.
[5] TS. Nguyễn Xuân My (chủ biên), Một số vấn đề chọn lọc trong Tin học
(T1+T2), Nhà xuất bản giáo dục – 2009.
[6] Trần Đỗ Hùng (chủ biên), Chuyên đề bồi dưỡng Học sinh giỏi Tin học bài tập
quy hoạch động, NXB giáo dục.
[7] Đồn Văn Ban, Lập trình hướng đối tượng Java, NXB khoa học và kĩ thuật.
[8] Đoàn Văn Ban, Lập trình Java nâng cao, NXB Khoa học và kĩ thuật.
[9] TS Hoàng Kiếm (Chủ biên), Cơ sở đồ họa máy tính, NXB GD Việt nam.
[10] Dương Anh Đức (chủ biên), Giáo trình đồ họa máy tính, NXB Đại học
QG TPHCM – 2010.
[11] TS Nguyễn Văn Tuấn, Tài liệu bài giảng lý luận dạy học, NXB Đại học QG
TPHCM – 2009.
[12] Trần Xuân Nam, Xử lý tín hiệu không gian và thời gian - lý thuyết mô

phỏng, NXB Khoa học và kĩ thuật – 2010.
[13] Đỗ Xuân Lôi, Cấu trúc dữ liệu và giải thuật, NXB thống kê – 1999.
[14] GS.TS. Hồng Kiếm, Giải một bài tốn trên máy tính như thế nào, NXB
giáo dục – 2003.
[15] Trần Đức Huyên, Phương pháp giải các bài toán trong tin học, NXB giáo
dục – 2003.


64

Tài liệu tiếng Anh
[16] Kehoe C., Stasko J., Taylor A., Rethinking the evaluation of algorithm
nimations as learning aids: an observational study, Technical Report GITGVU-99-10, March, 1999.
[17] Donald Knuth, The Art of Computer Programming Volumes 1, 2,
3, Addison Wesley.
[18] Brown - Algorithm Animation. The MIT Press, Cambridge, MA, 1988.
[19] Douglas West, Introduction to Graph Theory, Prentice Hall; 3 edition
(December 1, 2007)
[20] Byrne, M. D, Catrambone, R. and Stasko, J. T.(1996). Do algorithm
animations aid learning? Graphics, Visualization, and Usability Center,
Georgia Institute of Technology, Atlanta, GA, Technical Report GITGVU96-18, August 1996.
[21] Stasko, Tango: A Framework and System for Algorithm Animation. IEEE
Computer, 23(9): pp27-39, 1990.


65

PHỤ LỤC 1
class MyLine
implements Serializable

{
public

MyLine(java.awt.geom.Line2D.Double

l,

int

indexPointA, int indexPointB, int cost)
{
this.l = new java.awt.geom.Line2D.Double();
this.cost = cost;
this.indexPointA = indexPointA;
this.indexPointB = indexPointB;
this.l = l;
}
private void drawArrow(Graphics2D g, double theta,
double x0, double y0,
Color colorLine, int size)
{
double x = x0 - 10D * Math.cos(theta +
0.52359877559829882D);
double y = y0 - 10D * Math.sin(theta +
0.52359877559829882D);
g.setStroke(new BasicStroke(size));
g.draw(new java.awt.geom.Line2D.Double(x0, y0, x,
y));
x = x0 - 10D * Math.cos(theta 0.52359877559829882D);
y = y0 - 10D * Math.sin(theta 0.52359877559829882D);

g.draw(new java.awt.geom.Line2D.Double(x0, y0, x,
y));
}


66
public int dijkstra()
{
initValue();
int i = 1;
int k;
for(k = 0; checkContinue(k); k++)
{
for(i = 1; i < size; i++)
if(!checkedPointMin[i]

&&

len[i]

<

infinity)
break;

if(i >= size)
break;
for(int j = 1; j < size; j++)
if(!checkedPointMin[j] && len[i] > len[j])
i = j;


checkedPointMin[i] = true;
for(int j = 1; j < size; j++)
{
if(!checkedPointMin[j] && len[i] + a[i][j]
< len[j])
{
len[j] = len[i] + a[i][j];
p[j] = i;
}
logLen[k][j] = len[j];
logP[k][j] = p[j];
}
}


67
if(endPoint == -1)
{
numberPointChecked = arrMyPoint.size();
return 0;
} else
{
numberPointChecked = k;
return len[endPoint];
}
}
public int dijkstraStep(int step)
{
initValue();

int i = 0;
int k = 0;
arrPointResultStep = new ArrayList();
for(; checkContinueStep(step, k); k++)
{
for(i = 1; i < size; i++)
if(!checkedPointMin[i]

&&

len[i]

<

infinity)
if(i >= size)
{
stop = true;
break;
}
for(int j = 1; j < size; j++)
if(!checkedPointMin[j] && len[i] > len[j])
i = j;
for(int j = 1; j < size; j++)
{


68

PHỤ LỤC 2

public Graph()
{
}
public class GraphicsPanel extends JPanel
{
private Color background;
private Point centerPoint;
private int R;
private int numberPoint;
private ArrayList listPoint;
private ArrayList listLine;
public GraphicsPanel()
{
background = Color.lightGray;
listPoint = new ArrayList();
listLine = new ArrayList();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
setBackground(background);
drawGraph(g);
}
public void start(int width, int height)
{
listPoint.clear();
listLine.clear();
centerPoint = new Point(getWidth() / 2,
getHeight() / 2);
R = centerPoint.x <= centerPoint.y ? centerPoint.x



69
: centerPoint.y;
R = (R * 4) / 5;
System.out.println((new
StringBuilder(String.valueOf(width))).append(" ").append(height).toString());
createGraph();
repaint();
}
private void createGraph()
{
for(int i = 0; i < numberPoint; i++)
{
double

phi

=

-90D

+

(360D

*

(double)i)


(double)numberPoint;
System.out.println(phi);
phi = (phi * 3.1415926535897931D) / 180D;
System.out.println((new StringBuilder("phi =
")).append(phi).append("

").append(Math.cos(phi)).append("

").append(Math.sin(phi)).toString());
int x = centerPoint.x + (int)((double)R *
Math.cos(phi));
int y = centerPoint.y + (int)((double)R *
Math.sin(phi));
System.out.println((new
StringBuilder(String.valueOf(x))).append(" +
").append(y).toString());
listPoint.add(new MyPoint(x, y,
listPoint.size() + 1));
}
}
private void drawGraph(Graphics g)
{

/


70
public void BFS(int i)
{
ArrayList queue = new ArrayList();

visit[i] = true;
queue.add(0, Integer.valueOf(i));
while(queue.size() > 0)
{
i

=

((Integer)queue.get(queue.size()

1)).intValue();
queue.remove(queue.size() - 1);
listVisit.add(Integer.valueOf(i));
for(int j = 0; j < listPoint.size(); j++)
{
if(matrix[i][j] > 0 && !visit[j])
{
visit[j] = true;
back[j] = i;
queue.add(0, Integer.valueOf(j));
}
}

-


71

PHỤ LỤC 3
public Graph()

{
}
public class GraphicsPanel extends JPanel
{
private Color background;
private Point centerPoint;
private int R;
private int numberPoint;
private ArrayList listPoint;
private ArrayList listLine;
public GraphicsPanel()
{
background = Color.lightGray;
listPoint = new ArrayList();
listLine = new ArrayList();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
setBackground(background);
drawGraph(g);
}
public void DFS1(int i)
{
Stack stack = new Stack();
visit = new boolean[numberPoint];
visit[i] = true;
stack.push(Integer.valueOf(i));
while(!stack.empty())



72
{
i = ((Integer)stack.peek()).intValue();
stack.pop();
listVisit.add(Integer.valueOf(i));
for(int j = 0; j < numberPoint; j++)
{
if(matrix[i][j] > 0 && !visit[j])
{
visit[j] = true;
back[j] = i;
stack.push(Integer.valueOf(j));
}
}
}
public void DFS(int i)
{
visit[i] = true;
listVisit.add(Integer.valueOf(i));
for(int j = 0; j < listPoint.size(); j++)
{
if(matrix[i][j] > 0 && !visit[j])
{
back[j] = i;
DFS(j);
}
}
}










×