Programming Methodology Ii

1,177 views

Published on

lap trinh 2

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,177
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Programming Methodology Ii

  1. 1. Kỹ thuật lập trình II Programming Methodology II Bùi Việt Hà 0904454818 [email_address]
  2. 2. IIT201-1 [email_address]
  3. 3. Giới thiệu môn học <ul><li>Giới thiệu các phương pháp và kỹ thuật lập trình chính như Searching, Sorting trên các cấu trúc dữ liệu tổng quát như Link List, Tree và Graph. </li></ul><ul><li>Bước đầu phân tích thuật toán. </li></ul><ul><li>Cấu trúc dữ liệu sẽ lấy mô hình ADT tổng quát làm nền tảng. </li></ul><ul><li>Ngôn ngữ lập trình C++, môi trường lập trình DevC++. </li></ul>
  4. 4. Yêu cầu của môn học <ul><li>SV cần nắm được các kiến thức chính của các môn học sau: </li></ul><ul><ul><li>Tin học đại cương </li></ul></ul><ul><ul><li>Lập trình cơ bản C++ </li></ul></ul><ul><ul><li>Toán rời rạc </li></ul></ul>
  5. 5. Tài liệu tham khảo <ul><li>Data Abstraction & Problem Solving with C++. Frank. M. Carrano. Addison Wesley. 5th Edition. </li></ul><ul><li>Introduction to Algorithms. Thomas H. Cormen and other. The MIT Press. 3rd Edition. </li></ul><ul><li>Data Structure and Program Design in C++. Robert L. Kruse, A.J. Ryba. Prentice Hall. </li></ul><ul><li>Data Strcture and Algorithms in C++. Adam Drozdek. Brooks/Cole. 2d Edition. </li></ul>
  6. 6. Phương pháp học <ul><li>Bài giảng trên lớp </li></ul><ul><li>Thực hành, làm bài tập trong giờ thực hành </li></ul><ul><li>Thảo luận nhóm, làm bài tập và đồ án ở nhà </li></ul><ul><li>Tự học, tự nghiên cứu là chính </li></ul>
  7. 7. Tổng quan chương trình <ul><li>1. Basic of OO programming. </li></ul><ul><li>2. ADT </li></ul><ul><li>3. Linked List </li></ul><ul><li>4. Recursion </li></ul><ul><li>5. Stacks </li></ul><ul><li>6. Queues </li></ul><ul><li>7. Algorithm Analysis. Searching Algorithm. </li></ul><ul><li>8. Sorting Algorithm. </li></ul><ul><li>9. Binary Tree. </li></ul><ul><li>10. Table & Hashing </li></ul><ul><li>11. Graph. Search on graph. </li></ul><ul><li>12. Minimum Spanning Tree. </li></ul><ul><li>13. Shortest Path on graph. </li></ul><ul><li>14. Other Problems on Graph </li></ul><ul><li>15. Final Examination </li></ul>
  8. 8. I. Cơ sở lập trình hướng đối tượng <ul><li>Abstract data type and Class </li></ul><ul><li>Encapsulation </li></ul><ul><li>Inheritance </li></ul><ul><li>Polymorphism </li></ul><ul><li>Virtual Method and Late Biding </li></ul><ul><li>Friend Functions </li></ul><ul><li>Class Template </li></ul>
  9. 9. Abstract data type and Class <ul><li>Data --> Structure --> ADT --> Class </li></ul>Data Structure Member Function CLASS
  10. 10. Encapsulation, Inheritance, Polymorphism <ul><li>Encapsulation: đóng gói </li></ul><ul><li>Inheritance: kế thừa </li></ul><ul><li>Polymorphism: đa nghĩa </li></ul>
  11. 11. Virtual Method and Late Biding <ul><li>Virtual Method (hàm ảo): Khái niệm hàm số được khai báo sau khi có lời gọi hàm thực sự. </li></ul>
  12. 12. Friend Functions <ul><li>Friend Function là các hàm có thể truy cập vào các biến Private của Class </li></ul>
  13. 13. Class Template <ul><li>Khái niêm Mẫu (Template) </li></ul><ul><li>Mẫu hàm số </li></ul><ul><li>Mẫu Class </li></ul>
  14. 14. Bài tập <ul><li>Xây dựng chương trình nhập 1 dãy số từ bàn phím, sắp xếp lại theo thứ tự tăng dần và in kết quả ra màn hình. </li></ul><ul><li>Xây dựng chương trình nhập một DS học sinh từ bàn phím (bao gồm Họ + đệm + tên) sau đó sắp xếp lại danh sách học sinh này theo thứ tự từ điển theo tên + họ + đệm. </li></ul><ul><li>Làm 2 bài tập trên, dữ liệu được nhập từ 1 file text. Dòng đầu tiên ghi số lượng dãy số / số lượng HS. </li></ul>
  15. 15. II. ADT <ul><li>Data Abstraction: the Walls / Dữ liệu tổng quát </li></ul><ul><li>Specifying ADT List / Danh sách </li></ul><ul><li>Implementating ADT List / áp dụng cụ thể </li></ul>
  16. 16. Data Abstraction: the Walls Data Structure add remove find display The Walls: bức tường Program
  17. 17. Specifying ADT List (danh sách) <ul><li>List (Danh sách) là một những cấu trúc dữ liệu hay gặp nhất trên thực tế. </li></ul>
  18. 18. Các ví dụ List <ul><li>Dãy số (mảng số) </li></ul><ul><li>DS học sinh, sinh viên </li></ul><ul><li>DS cán bộ trong bảng lương cơ quan </li></ul><ul><li>DS các tài khoản của ngân hàng </li></ul><ul><li>DS khách hàng </li></ul><ul><li>DS sản phẩm trong kho </li></ul><ul><li>DS sách trong thư viện </li></ul>
  19. 19. Specifying ADT List (danh sách) <ul><li>Các công việc với Danh sách (List): </li></ul><ul><ul><li>Tạo ra một DS rỗng. </li></ul></ul><ul><ul><li>Xóa DS. </li></ul></ul><ul><ul><li>Xác định DS là rỗng hay không. </li></ul></ul><ul><ul><li>Xác định độ dài của DS. </li></ul></ul><ul><ul><li>Chèn thêm 1 phần tử vào DS. </li></ul></ul><ul><ul><li>Xóa 1 phần tử từ DS. </li></ul></ul><ul><ul><li>Lấy ra (tìm) 1 phần tử xác định từ DS. </li></ul></ul>
  20. 20. Specifying ADT List (danh sách) <ul><li>ADT List Operation: </li></ul><ul><ul><li>createList() </li></ul></ul><ul><ul><li>destroyList() </li></ul></ul><ul><ul><li>isEmpty():boolean </li></ul></ul><ul><ul><li>getLength():integer </li></ul></ul><ul><ul><li>insert(index,newItem) </li></ul></ul><ul><ul><li>remove(index) </li></ul></ul><ul><ul><li>retrieve(index,dataItem) </li></ul></ul>
  21. 21. ADT sorted List <ul><li>Là DS mà các phần tử đã được sắp xếp thứ tự sẵn. </li></ul>
  22. 22. Implementating ADT List <ul><li>Chúng ta sẽ xây dựng một List (DS) bằng C++ class. </li></ul><ul><li>Ví dụ về cấu trúc lõi của List: const int MAX_LIST = 100; typedef int ListItemType; ListItemType items[MAX_LIST]; int size; </li></ul>
  23. 23. Implementating ADT List <ul><li>Chúng ta sẽ xây dựng một List (DS) bằng C++ class. </li></ul><ul><li>Thiết lập 2 tệp sau: ListA.h ListA.cpp </li></ul>
  24. 24. Bài tập <ul><li>Thiết lập một DS các số tự nhiên bằng phương pháp ADT. Viết các hàm số thực hiện các công việc sau: - Tính tổng của các số này - Thay đổi vị trí các phần tử i và j của DS - Tính giá trị phần tử Min và Max của DS trên. </li></ul><ul><li>Thiết lập một DS học sinh trong lớp học bao gồm họ tên, năm sinh và nam/nữ. Viết hàm số đếm số học sinh là nữ trong DS trên. </li></ul>
  25. 25. III. Linked List <ul><li>- Pointer and Array </li></ul><ul><li>- Dynamic Allocation of Arrays </li></ul><ul><li>- Pointer-Based Linked List </li></ul><ul><li>- Single Linked List </li></ul><ul><li>- Double Linked List </li></ul><ul><li>- Linked List Implementation of ADT List </li></ul><ul><li>- C++ Standard Template Library </li></ul>
  26. 26. IV. Recursion <ul><li>- Recursive Definitions </li></ul><ul><li>- Function Calls and Recursion Implementation </li></ul><ul><li>- Principle of Recursion </li></ul><ul><li>- Bactracking </li></ul><ul><li>- The Relationship between the Recursion and Math Induction </li></ul>
  27. 27. V. Stacks <ul><li>- The ADT Stacks </li></ul><ul><li>- An Array-Based Implementation of the ADT Stacks </li></ul><ul><li>- A Pointer-Based Implementation of the ADT Stacks </li></ul><ul><li>- ADT List Stacks </li></ul><ul><li>- Application of Stacks </li></ul>
  28. 28. VI. Queues <ul><li>- The ADT Queue </li></ul><ul><li>- An Array-Based Implementation of the ADT Queue </li></ul><ul><li>- A Pointer-Based Implementation of the ADT Queue </li></ul><ul><li>- ADT List Queue </li></ul><ul><li>- Application of Queue </li></ul>
  29. 29. VII. Phân tích thuật toán <ul><li>- Measure the Efficency of Algorithms </li></ul><ul><li>- The Execuation Time of Algorithms </li></ul><ul><li>- Big-O-Notation </li></ul><ul><li>- The Best, Average, and Worst Cases </li></ul><ul><li>- Searching Algorithms </li></ul><ul><li>- The Efficency of Searching Algorithm </li></ul>
  30. 30. VIII. Sorting Algorithm <ul><li>- Elementary Sorting Algorithm </li></ul><ul><ul><li>+ Insertion Sort </li></ul></ul><ul><ul><li>+ Selection Sort </li></ul></ul><ul><ul><li>+ Bubble Sort </li></ul></ul><ul><ul><li>- Decision Tree </li></ul></ul><ul><li>- Efficency Sorting Algorithms </li></ul><ul><ul><li>+ Shell sort </li></ul></ul><ul><ul><li>+ Heap Sort </li></ul></ul><ul><ul><li>+ Quick Sort </li></ul></ul><ul><ul><li>+ Merge Sort </li></ul></ul><ul><ul><li>+ Radix Sort </li></ul></ul><ul><li>- A Comparison of Sorting Algorithms </li></ul>
  31. 31. IX. Binary Tree <ul><li>- Tree, Binary Tree, Binary Search Trees </li></ul><ul><li>- The ADT Binary Tree </li></ul><ul><li>- Searching in Binary Trees </li></ul><ul><li>- Tree Traversal </li></ul><ul><li>- The ADT Binary Search Tree Operation: Insertion, Deletion. </li></ul><ul><li>- Balance a Tree </li></ul>
  32. 32. X. Table & Hashing <ul><li>- The ADT table: Selection and Implementation </li></ul><ul><li>- A Sorted Array-Based Implementation of the ADT table </li></ul><ul><li>- A Binary Search Tree Implementation of the ADT table. </li></ul><ul><li>- Heaps </li></ul><ul><li>- HeapSort </li></ul><ul><li>- Hashing Functions. </li></ul><ul><li>- Resolving Collision. </li></ul>
  33. 33. XI. Graph. Introduction <ul><li>- Graph Definition </li></ul><ul><li>- Graph Representation </li></ul><ul><ul><li>+ The Set Representation </li></ul></ul><ul><ul><li>+ Adjacency Lists </li></ul></ul><ul><li>- Graph as ADTs </li></ul><ul><li>- Graph Traversal </li></ul><ul><ul><li>+ Methods </li></ul></ul><ul><ul><li>+ Depth-First Search </li></ul></ul><ul><ul><li>+ Breath-First Search </li></ul></ul>
  34. 34. XII. Minimum Spanning Tree <ul><li>- Spanning Tree </li></ul><ul><li>- Minimum Spanning Tree </li></ul><ul><li>+ Boruka Algorithm </li></ul><ul><li>+ Kruskal Algorithm </li></ul><ul><li>+ Prim Algorithm </li></ul><ul><li>+ Dijkstra Algorithm </li></ul>
  35. 35. XIII. Shortest Path Problems <ul><li>- A Greedy Algorithm: Shortest Path </li></ul><ul><li>- All-to- All Shortest Path problem </li></ul><ul><li>- Topological Sorting </li></ul><ul><li>+ Depth-First Algorithm </li></ul><ul><li>+ Breath-First Algorithm </li></ul>
  36. 36. XIV. Other problem on graph <ul><li>Cycle Detection Problem </li></ul><ul><li>Matching Problem </li></ul><ul><li>Eulerian and Hamiltonian Graphs </li></ul><ul><li>Netwwork Maximal Flow Problem </li></ul>
  37. 37. XV. Final Examination <ul><li>Prepare to Final Examination </li></ul><ul><li>Projects and Home Problem Solution </li></ul>

×