programming methodology ii

Post on 01-Dec-2014

1.382 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

lap trinh 2

TRANSCRIPT

Kỹ thuật lập trình IIProgramming Methodology II

Bùi Việt Hà

0904454818

habuiviet@gmail.com

IIT201-1

iit201-1@bhiu.edu.vn

Giới thiệu môn học

• 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.

• Bước đầu phân tích thuật toán. • Cấu trúc dữ liệu sẽ lấy mô hình ADT tổng

quát làm nền tảng.• Ngôn ngữ lập trình C++, môi trường lập

trình DevC++.

Yêu cầu của môn học

• SV cần nắm được các kiến thức chính của các môn học sau:– Tin học đại cương– Lập trình cơ bản C++– Toán rời rạc

Tài liệu tham khảo

1. Data Abstraction & Problem Solving with C++. Frank. M. Carrano. Addison Wesley. 5th Edition.

2. Introduction to Algorithms. Thomas H. Cormen and other. The MIT Press. 3rd Edition.

3. Data Structure and Program Design in C++. Robert L. Kruse, A.J. Ryba. Prentice Hall.

4. Data Strcture and Algorithms in C++. Adam Drozdek. Brooks/Cole. 2d Edition.

Phương pháp học

• Bài giảng trên lớp

• Thực hành, làm bài tập trong giờ thực hành

• Thảo luận nhóm, làm bài tập và đồ án ở nhà

• Tự học, tự nghiên cứu là chính

Tổng quan chương trình• 1. Basic of OO

programming.• 2. ADT• 3. Linked List• 4. Recursion• 5. Stacks• 6. Queues• 7. Algorithm Analysis.

Searching Algorithm.• 8. Sorting Algorithm.

• 9. Binary Tree.• 10. Table & Hashing• 11. Graph. Search on

graph.• 12. Minimum Spanning

Tree.• 13. Shortest Path on

graph.• 14. Other Problems on

Graph• 15. Final Examination

I. Cơ sở lập trình hướng đối tượng

• Abstract data type and Class

• Encapsulation

• Inheritance

• Polymorphism

• Virtual Method and Late Biding

• Friend Functions

• Class Template

Abstract data type and Class

• Data --> Structure --> ADT --> Class

Data Structure

MemberFunction

CLASS

Encapsulation, Inheritance, Polymorphism

• Encapsulation: đóng gói

• Inheritance: kế thừa

• Polymorphism: đa nghĩa

Virtual Method and Late Biding

• 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ự.

Friend Functions

• Friend Function là các hàm có thể truy cập vào các biến Private của Class

Class Template

• Khái niêm Mẫu (Template)

• Mẫu hàm số

• Mẫu Class

Bài tập1. 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.

2. 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.

3. 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.

II. ADT

• Data Abstraction: the Walls / Dữ liệu tổng quát

• Specifying ADT List / Danh sách

• Implementating ADT List / áp dụng cụ thể

Data Abstraction: the Walls

Data Structure

add

remove

find

display

The Walls: bức tường

Program

Specifying ADT List (danh sách)

• 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ế.

Các ví dụ List

• Dãy số (mảng số)

• DS học sinh, sinh viên

• DS cán bộ trong bảng lương cơ quan

• DS các tài khoản của ngân hàng

• DS khách hàng

• DS sản phẩm trong kho

• DS sách trong thư viện

Specifying ADT List (danh sách)

• Các công việc với Danh sách (List):– Tạo ra một DS rỗng.– Xóa DS.– Xác định DS là rỗng hay không.– Xác định độ dài của DS.– Chèn thêm 1 phần tử vào DS.– Xóa 1 phần tử từ DS.– Lấy ra (tìm) 1 phần tử xác định từ DS.

Specifying ADT List (danh sách)

• ADT List Operation:– createList()– destroyList()– isEmpty():boolean– getLength():integer– insert(index,newItem)– remove(index)– retrieve(index,dataItem)

ADT sorted List

• Là DS mà các phần tử đã được sắp xếp thứ tự sẵn.

Implementating ADT List

• Chúng ta sẽ xây dựng một List (DS) bằng C++ class.

• 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;

Implementating ADT List

• Chúng ta sẽ xây dựng một List (DS) bằng C++ class.

• Thiết lập 2 tệp sau:ListA.hListA.cpp

Bài tập• 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.

• 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.

III. Linked List

• - Pointer and Array

• - Dynamic Allocation of Arrays

• - Pointer-Based Linked List

• - Single Linked List

• - Double Linked List

• - Linked List Implementation of ADT List

• - C++ Standard Template Library

IV. Recursion

• - Recursive Definitions

• - Function Calls and Recursion Implementation

• - Principle of Recursion

• - Bactracking

• - The Relationship between the Recursion and Math Induction

V. Stacks

• - The ADT Stacks

• - An Array-Based Implementation of the ADT Stacks

• - A Pointer-Based Implementation of the ADT Stacks

• - ADT List Stacks

• - Application of Stacks

VI. Queues

• - The ADT Queue

• - An Array-Based Implementation of the ADT Queue

• - A Pointer-Based Implementation of the ADT Queue

• - ADT List Queue

• - Application of Queue

VII. Phân tích thuật toán

• - Measure the Efficency of Algorithms

• - The Execuation Time of Algorithms

• - Big-O-Notation

• - The Best, Average, and Worst Cases

• - Searching Algorithms

• - The Efficency of Searching Algorithm

VIII. Sorting Algorithm• - Elementary Sorting Algorithm

– + Insertion Sort– + Selection Sort– + Bubble Sort– - Decision Tree

• - Efficency Sorting Algorithms– + Shell sort– + Heap Sort– + Quick Sort– + Merge Sort– + Radix Sort

• - A Comparison of Sorting Algorithms

IX. Binary Tree

• - Tree, Binary Tree, Binary Search Trees

• - The ADT Binary Tree

• - Searching in Binary Trees

• - Tree Traversal

• - The ADT Binary Search Tree Operation: Insertion, Deletion.

• - Balance a Tree

X. Table & Hashing

• - The ADT table: Selection and Implementation• - A Sorted Array-Based Implementation of the

ADT table• - A Binary Search Tree Implementation of the

ADT table.• - Heaps• - HeapSort• - Hashing Functions.• - Resolving Collision.

XI. Graph. Introduction

• - Graph Definition

• - Graph Representation– + The Set Representation– + Adjacency Lists

• - Graph as ADTs

• - Graph Traversal– + Methods– + Depth-First Search– + Breath-First Search

XII. Minimum Spanning Tree

• - Spanning Tree

• - Minimum Spanning Tree

• + Boruka Algorithm

• + Kruskal Algorithm

• + Prim Algorithm

• + Dijkstra Algorithm

XIII. Shortest Path Problems

• - A Greedy Algorithm: Shortest Path

• - All-to- All Shortest Path problem

• - Topological Sorting

• + Depth-First Algorithm

• + Breath-First Algorithm

XIV. Other problem on graph

• Cycle Detection Problem

• Matching Problem

• Eulerian and Hamiltonian Graphs

• Netwwork Maximal Flow Problem

XV. Final Examination

• Prepare to Final Examination

• Projects and Home Problem Solution

top related