Ở 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 toán trên đồ thị Thuật toán tìm đường đi ngắn nhất thuật toán tìm kiếm theo chiều sâu và thuật toán tìm kiếm theo chiều rộng 2 Lý thuyết về mô phỏng thuật toá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 toá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
ĐẠ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 luận văn thực hướng dẫn trực tiếp PGS.TS Võ Trung Hùng Tài liệu tham khảo dùng luận văn trích dẫn rõ ràng tên tác giả, tên nhà xuất bản, năm xuất thích 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 học tin học gặp nhiều khó khăn, đặc biệt việc dạy bồi dưỡng học sinh giỏi, học sinh xem 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 giáo viên cần phải thường xuyên quan tâ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 tạo hứng thú, đam mê môn học người học Trong luận văn này, nghiên cứu dạy học trực quan dạy lập trình 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 sở lý thuyết dạy học trực quan, đồ học máy tính thuật tốn đồ thị: Thuật tốn tìm đường ngắn nhất, thuật tốn tìm kiếm theo chiều sâu thuật tốn tìm kiếm theo chiều rộng (2) Lý thuyết mơ thuật tốn mơ trực quan thuật toán đồ thị (3) Thực cài đặt thuật toán đồ thị áp dụng thực tế dạy học Từ so sánh kết tiếp thu người học sau dạy học thuật toán cách sử dụng phương pháp thông thường sử dụng phương pháp mô trực quan mang lại kết khả quan Từ khóa: Thuật tốn, mơ thuật tố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 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 algorithms on the graph (3) Implement 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 Tính cấp thiết đề tài Mục tiêu nhiệm vụ nghiên cứu .2 Đối tượng phạm vi nghiên cứu .2 Phương pháp nghiên cứu Bố cục luận văn CHƯƠNG NGHIÊN CỨU TỔNG QUAN 1.1 PHƯƠNG PHÁP DẠY HỌC TRỰC QUAN 1.1.1 Phương pháp trình bày trực quan 1.1.2 Phương pháp quan sát 1.2 ĐỒ HỌA MÁY TÍNH 1.2.1 Khái niệm .6 1.2.2 Các kỹ thuật đồ họa 1.2.3 Màn hình đồ họa số ứng dụng đồ 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 đồ thị 12 1.4 TỔNG KẾT CHƯƠNG 19 CHƯƠNG 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 mơ thuật tốn dạy học .21 2.1.3 Các yêu cầu mơ 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ơ thuật tốn 23 2.2.2 Quy trình thiết kế mơ thuật tốn .24 2.3 ÁP DỤNG MÔ PHỎNG MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ 29 2.3.1.Thuật tốn tìm đường ngắn (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 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ơ thuật tốn tìm đường ngắn 48 3.2.2 Chương trình mơ thuật tốn tìm kiếm theo chiều rộng 55 3.2.3 Chương trình mơ 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 TỐN MƠ PHỎNG .59 3.4 TỔNG KẾT CHƯƠNG 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 STT Tiếng Việt TỪ VIẾT TẮT VIẾT RÕ PPDH Phương pháp dạy học TQ Trực quan ĐHMT Đồ họa máy tính GV Giáo viên HS Học sinh MPTT Mơ thuật tốn TT Thuật tốn TK Tìm kiếm STT Tiếng Anh TỪ VIẾT TẮT VIẾT RÕ BFS Breadth First Search 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 bước lặp thuật toán Dijkstra 31 Bảng 2.3 Các chương trình chức thuật toá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 chức TT BFS 41 Bảng 2.6 Các chương trình chức 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 hỗ trợ thiết kế Hình 1.2 Ứng dụng đồ họa để biểu diễn thông tin Hình 1.3 Ứng dụng đồ họa giáo dục đào tạo 10 Hình 1.4 Tương tác 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 bước thực thuật tốn dijkstra 23 Hình 2.2 Sơ đồ bước thiết kế hệ thống mơ thuật tốn 24 Hình 2.3 Mơ hình tốn mô 24 Hình 2.4 Dữ liệu đầu vào: đồ thị vô hướng gồm đỉnh, cạnh 26 Hình 2.5 Mơ theo bước thuật tốn Dijkstra 28 Hình 2.6 Minh họa liệu đầu vào trực quan 32 Hình 2.7 Kết mơ thuật tốn Dijkstra 33 Hình 2.8 Đồ thị theo mẫu .35 Hình 2.9 Minh họa liệu vào thuật tốn BFS .38 Hình 2.10 Kết mơ thuật tốn BFS .39 Hình 2.11 Cách tạo đồ thị cho tốn tìm kiếm BFS 40 Hình 2.12 Minh họa liệu vào cho thuật toán DFS 43 Hình 2.13 Kết minh họa thuật toán DFS 43 Hình 2.14 Cách tạo đồ thị cho tốn DFS 44 Hình 3.1 Khung chương trình mơ thuật tốn Dijkstra .49 Hình 3.2 Chi tiết khung bảng chọn mơ thuật tốn Dijkstra .50 Hình 3.3 Khung cơng cụ chương trình mơ thuật tốn Dijkstra 50 Hình 3.4 Khung chương trình mơ thuật tốn BFS .55 Hình 3.5 Dữ liệu vào để minh họa thuật toán BFS .56 Hình 3.6 Kết minh họa thuật tốn BFS 56 Hình 3.7 Khung chương trình mơ thuật tốn DFS 57 Hình 3.8 Dữ liệu vào để minh họa thuật toán DFS 58 Hình 3.9 Kết minh họa thuật tốn DFS 59 68 PHỤ LỤC 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 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] > && !visit[j]) { visit[j] = true; back[j] = i; queue.add(0, Integer.valueOf(j)); } } - 71 PHỤ LỤC 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] > && !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] > && !visit[j]) { back[j] = i; DFS(j); } } } ... xuyên quan tâ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 tạo hứng thú, đam mê môn học người học Trong luận văn này, nghiên cứu dạy học trực quan dạy lập trình bồi dưỡng học. .. giúp học sinh hiểu cấu trúc liệu thuật tốn nhanh Để tìm hiểu kỹ số thuật toán ứng dụng kỹ thuật trực quan trình dạy thuật tốn đó, tơi chọn đề tài ? ?Ứng dụng trực quan dạy lập trình cho học sinh phổ. .. khả Do đó, phương pháp dạy học sinh động để tạo niềm đam mê gây hứng thú cho học sinh quan trọng Phương pháp dạy học trực quan phương pháp mà giáo viên dạy lập trình cần quan tâm để phát huy tính