Tải bản đầy đủ (.ppt) (129 trang)

cấu trúc dữ liệu và giải thuật

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 (757.38 KB, 129 trang )

A
C

CẤU TRÚC DỮ LIỆU VÀ
GIẢI THUẬT (501040)

B
F
D
E

G
K
H


Giới thiệu
Môn học giới thiệu:
Các cấu trúc dữ liệu cơ bản
Các giải thuật điển hình trên các cấu trúc dữ liệu đó

Dùng phương pháp hướng đối tượng.
Ngôn ngữ lập trình minh hoạ:
Mã giả (pseudocode)
C++ (không được giảng dạy chính thức trong môn
học)

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin


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

2


Nội dung
Chương 1. Tổng quan
Chương 2. Stack
Chương 3. Queue
Chương 4. Đệ qui
Chương 5. List và String
Chương 6. Cây nhị phân
Chương 7. Tìm kiếm
Chương 8. Sắp xếp

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

3


Một số thuật ngữ căn bản
Một chương trình máy tính (computer program)
là tập các câu lệnh để điều khiển một máy tính
sinh ra một kết quả cụ thể
Viết các chương trình máy tính gọi là lập trình
máy tính (computer programming)

Ngôn ngữ để tạo các chương trình máy tính gọi
là ngôn ngữ lập trình
Software là một chương trình hay tập hợp các
chương trình
Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

4


Ngôn ngữ máy
Cấp thấp nhất. Các chương trình bao gồm 0, 1.
Lập trình bằng ngôn ngữ máy có thể điều khiển
trực tiếp đến phần cứng máy tính
Ví dụ
00101010 000000000001 000000000010
10011001 000000000010 000000000011
Instruction part
address parts (địa chỉ bộ nhớ
(opcode – tác vụ
của dữ liệu
được thực hiện)Programming Fundamentals
5


ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

5


Assembly languages
Thực hiện cùng nhiệm vụ ngôn ngữ máy nhưng
sử dụng tên tượng trưng cho opcode và các
toán tử thay vì 1, 0
LOAD BASEPAY
ADD OVERPAY
STORE GROSSPAY
Chương trình ngôn ngữ assembly phải được
dịch sang ngôn ngữ máy trước khi có thể thực
thi bởi máy tính
Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

6



Assembler

Assembly
language
program

Translation
program
(assembler)

Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

Machine
language
program

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

7


Ngôn ngữ lập trình cấp cao
Sử dụng các câu lệnh dễ hiểu hơn.
Các chương trình sử dụng ngônn ngữ cấp cao

phải được dịch sang ngôn ngữ cấp thấp bằng
cách sử dụng một chương trình gọi là compiler

Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

8


High-level Programming Languages
(cont.)
Cho phép người lập trình viết các câu lệnh như
câu tiếng Anh và các kí hiệu toán học thông
dụng
Mỗi dòng trong chương trình ngôn ngữ mức cao
gọi là câu lệnh
Example:

Result = (First + Second)*Third

Programming Fundamentals

ĐH Bách Khoa Tp.HCM


Khoa Công nghệ Thông tin

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

9


Phần mềm ứng dụng và phần
mềm hệ thống
2 loại chương trình máy tính
Application software bao gồm những chương
trình được viết để thực thi các nhiệm vụ cụ thể
được yêu cầu bởi user

• System software là tập các chươg trình phải
luôn được sẵn sàng đến bất kì hệ thống máy
tính cho nó vận hành (hệ điều hành, bộ chuyển
đổi ngôn ngữ)
Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

10

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

10



PROGRAMMING LANGUAGES
Một số ngôn ngữ thông dụng
FORTRAN
COBOL
BASIC
PASCAL
C
C++
Java

1957
1960s
1960s
1971 Structure programming
Object-oriented programming

Cú pháp (syntax)
Cú pháp của một ngôn ngữ lập trình là tập các luật để viết các câu
lệnh chính xác
Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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


11


The C Programming Language
In the 1970s, at Bell Laboratories, Dennis Ritchie and Brian
Kernighan designed the C programming language.
C was used exclusively on UNIX and on mini-computers. During the
1980s, C compilers were written for other flatforms, including PCs.
To provide a level of standardization for C language, in 1989, ANSI
created a standard version of C, called ANSI C.
One main benefit of C : it is much closer to assembly language
other than other high-level programming languages.
The programs written in C often run faster and more efficiently than
programs written in other high-level programming language.

Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

12


The C++ Programming Language
In 1985, at Bell Laboratories, Bjarne Stroutrup created C++ based
on the C language. C++ is an extension of C that adds objectoriented programming capabilities.

C++ is now the most popular programming language for writing
programs that run on Windows and Macintosh.
The standardized version of C++ is referred to as ANSI C++.

The ANSI standards also define run-time libraries, which contains
useful functions, variables, constants, and other programming items
that you can add to your programs.
The ANSI C++ run-time library is called Standard Template Library
or Standard C++ Library
Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

13


Giải thuật
Dùng C++ để diễn tả?  có vấn đề
Có thể diễn tả giải thuật bằng cách sử dụng
flowchart
Flow chart thể hiện nét phát thảo cấu trúc căn
bản và tính logic của chương trình
Một cách khác để diễn tả giải thuật là sử dụng
mã giả pseudocode
Giả lập, thường là dễ hiểu, không chi tiết đến các kỹ

thuật lập trình
Ở cấp độ hết sức tổng quát: gần ngôn ngữ tự nhiên
Hoặc rất chi tiết: như dùng ngôn ngữ tựa Pascal, tựa
C++
Programming Fundamentals
14

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

14


Giải thuật (Algorithm)
15

Các tính chất quan trọng của giải thuật là:
􀂾 Hữu hạn (finiteness): giải thuật phải luôn luôn kết
thúc sau một số hữu hạn bước.
􀂾 Xác định (definiteness): mỗi bước của giải thuật
phải được xác định rõ ràng và phải được thực
hiện chính xác, nhất quán.
􀂾 Hiệu quả (effectiveness): các thao tác trong giải
thuật phải được thực hiện trong một lượng thời
gian hữu hạn.
– Ngoài ra một giải thuật còn phải có đầu vào (input)
và đầu ra (output).

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

15


Flowchart symbols
Terminal
Input/output

Connector

Process

Flowlines
Predefined process
Decision

Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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


16


Example
Start

Input Name,
Hours, Rate

Calculate
Pay ← Hours × Rate

Note: Name, Hours
and Pay are variables
in the program.

Dislay
Name, Pay

End
Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

17



Algorithms in pseudo-code
Sử dụng các cụm từ như tiếng Anh để mô tả
pseudocode.
Example:
Input the three values into the variables Name,
Hours, Rate.
Calculate
Pay = Hours × Rate.
Display Name and Pay.
Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

18


Loops

Note:
1.   Loop is a very important
concept in programming.

Start


2.   NUM ← NUM + 1 means

NUM ← 4
SQNUM ← NUM2

Print
NUM, SQNUM

old value of NUM + 1
becomes new value of NUM.
The algorithm can be described
in pseudocode as follows:
NUM ← 4

NUM ← NUM + 1

do
SQNUM← NUM2

No
NUM> 9?
Yes

   Print NUM, SQNUM
NUM ← NUM + 1
while (NUM <= 9)

STOP


Programming Fundamentals

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

19


Giải thuật bằng mã giả
Ví dụ: Mã giả của bubble sort
Giải thuật 1

Giải thuật 2

Algorithm Bubble sort
Algorithm Bubble sort
Input: The list A of n elements is
Input: The list A of n elements is
given
given
Output: The list A is sorted
Output: The list A is sorted
1. loop for n time
1.1. for each pair in the list
1.1.1. if it is not in ordered
1.1.1.1. exchange them

End Bubble sort
ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

1. for outter in 0..(n-2)
1.1. for inner in 0..(n-2- outter)
1.1.1. if Ainner+1 < Ainner
1.1.1.1. swap Ainner, Ainner+1
End Bubble sort

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

20


Giải thuật bằng ngôn ngữ lập trình
Ví dụ: Lập trình cụ thể Bubble sort
Giải thuật 1: Pascal

Giải thuật 2: C++

procedure BubbleSort(var A: list);
var i,j: int;
begin
for i := 1 to n-1 do
for j := 1 to (n-1-i) do
if A[j+1] < A[j] then
begin
tmp := A[j]; A[j] := A[j+1];

A[j+1] := tmp;
end;
end;

void BubbleSort(list A)
{
int i, j;
for (i=0; i < n-2; i++)
for (j=0; j<(n-2-i); j++)
if (A[j+1] < A[j]) {
tmp := A[j]; A[j] := A[j+1];
A[j+1] := tmp;
}
}

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

21


So sánh mã giả và NNLT
Nhận xét:
Mã giả 1: gần với cách trao đổi của con người nhất
nhưng khó lập trình nhất
Mã giả 2: dễ lập trình hơn


Phương pháp:
Đầu tiên: cách giải quyết vấn đề bằng máy tính số
(giải thuật bằng mã giả)
Sau đó: ngôn ngữ lập trình cụ thể

Học:
Nhớ giải thuật (mã giả)
Dùng NNLT cụ thể để minh chứng
ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

22


Giải bài toán bằng phần mềm
1. Xác định bài toán
2. Thiết kế phần mềm
3. Thiết kế dữ liệu
4. Thiết kế và phân tích giải thuật
5. Lập trình và gỡ rối
6. Kiểm tra phần mềm
7. Bảo trì

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin


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

23


Lập trình hướng đối tượng (OOP)
Chương trình = tập các đối tượng tương tác nhau.
Đối tượng (object) = thuộc tính + tác vụ
local data
of object
đối tượ ng
(object)

entry
local data of
operation
ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

24


Kiểu trừu tượng
Kiểu trừu tượng (abstract type): định nghĩa
interface (tập các entry)
Entry
Tên method

Danh sách tham số hình thức
Đặc tả chức năng

Chưa có dữ liệu bên trong, chưa dùng được
Chỉ dùng để thiết kế ý niệm

ĐH Bách Khoa Tp.HCM

Khoa Công nghệ Thông tin

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

25


×