Professional Documents
Culture Documents
CHƯƠNG 1
THUẬT GIẢI VÀ
LƯU ĐỒ
LT
NN
C++
Chương 1 – Thuật giải và lưu đồ
2
Khoa CNTT - UNETI
LT
NN
C++
1.1 Khái niệm thuật giải
eureka! Algorithm
Một tập hợp các công việc
xác định các bước cần thiết
để hoàn thành một nhiệm vụ
Program
3
Khoa CNTT - UNETI
LT
NN
C++
1.1 Khái niệm thuật giải
Thuật giải (Algorithm)
Là một tập “hữu hạn” các thao tác (các công
việc, các phép toán) có thể đặt tên được và
chúng được thực hiện theo một trình tự thích
hợp trên một số đối tượng để đạt được mục
đích mong muốn.
4
Khoa CNTT - UNETI
LT
NN
C++
1.1 Khái niệm thuật giải
Chương trình (Program)
Là một tập “hữu hạn” các chỉ thị máy được bố trí,
sắp xếp theo một trật tự xác định, nhằm giải
quyết yêu cầu của bài toán đặt ra. Chương trình
được viết bằng một NNLT cụ thể nào đó.
Cấu
Thuật Chương
trúc dữ
giải trình
liệu
5
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả
bằng lưu
đồ
Diễn tả
bằng
ngôn ngữ
lập trình
Diễn tả bằng
ngôn ngữ
ngữ tự nhiên
6
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả bằng ngôn ngữ tự nhiên
Ví dụ 1: Thuật giải nấu cơm được viết như sau:
Bước 1: lấy gạo theo định lượng cần thiết
Bước 2: vo gạo và đổ nước vào nồi
Bước 3: đun sôi cạn nước
Bước 4: giữ lửa nhỏ
Bước 5: cách 5 phút một nếm cơm xem chín chưa.
• Nếu chưa chín quay về bước 5
• Nếu đã chín thì chuyển sang bước 6
Bước 6: tắt lửa và bắc nồi cơm ra. Kết thúc
7
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả bằng ngôn ngữ tự nhiên
Ví dụ 2: Thuật giải giải phương trình bậc nhất ax +b = 0
Bước 1: Nhập vào 2 hệ số a và b.
Bước 2: Xét điều kiện a = 0 ?
• Nếu đúng là a = 0, thì đi đến bước 3. Nếu không, nghĩa là
a ≠ 0, thì đi đến bước 4.
Bước 3: Xét điều kiện b = 0 ?
• Nếu b = 0, thì báo phương trình có vô số nghiệm. Chuyển
đến bước 5.
• Nếu b ≠ 0, thông báo phương trình vô nghiệm. Chuyển
đến bước 5.
Bước 4: Phương trình có một nghiệm duy nhất là
x=-b/a.
Bước 5: Kết thúc thuật toán
8
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả bằng ngôn ngữ tự nhiên
Đơn giản, gần với tư duy của con người
Rườm rà, phụ thuộc vào cách diễn đạt của NSD
Không có được một cái nhìn khái quát về toàn bộ
thuật toán.
9
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả bằng ngôn ngữ lập trình
Ngôn ngữ lập trình (program language): là ngôn
ngữ do các chuyên gia tin học tạo ra dùng để viết
chương trình cho máy tính. NNLT được xây dựng
khá đơn giản về chính tả và ngữ pháp, gần gũi với
ngôn ngữ khoa học kỹ thuật.
Phân loại NNLT:
• Ngôn ngữ máy: Assembly
• Ngôn ngữ lập trình cấp cao: Pascal, C/C++, …
10
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả bằng ngôn ngữ lập trình
Phân loại NNLT:
• Ngôn ngữ máy: Assembly
• Ngôn ngữ lập trình cấp cao: Pascal, C/C++, …
Ngôn ngữ máy phụ thuộc vào máy tính bằng cách sử
dụng các lệnh máy. Các chương trình thực thi phải
bằng ngôn ngữ máy.
Ngôn ngữ cấp cao độc lập với máy tính bằng cách
sử dụng các hướng dẫn thuật toán của con người
11
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả bằng ngôn ngữ lập trình
Ngôn ngữ máy
13
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả bằng lưu đồ
Sử dụng các ký hiệu được quy định để diễn tả thuật
giải.
Biểu tượng Mô tả
Nhập a, b Nhập 2 số a, b
đúng sai
a=0?
đúng sai
b=0?
PT co no
PT vo so no PT vo no x =-b/a
Kết thúc
16
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả bằng lưu đồ Bắt đầu
Ví dụ 3:
Viết thuật toán để nhập vào 2 số a, b Nhập a, b
từ bàn phím sau đó đổi giá trị của
tg = a
biến a cho biến b và ngược lại.
Dùng thêm một biến trung gian (tg) a=b
sau đó tiến hành:
Chuyển giá trị của biến a cho biến tg b = tg
Chuyển giá trị của biến b cho biến a
Chuyển giá trị của biến tg cho biến b. In a, b
Kết thúc
17
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Diễn tả bằng lưu đồ
Ví dụ 4: Lưu đồ thuật giải tính tổng S của n số nguyên
đầu tiên
Bắt đầu
Nhập n
S = n*(n+1)/2
In S
Kết thúc
18
Khoa CNTT - UNETI
LT
NN
C++
1.3 Các cấu trúc của thuật giải
Cấu trúc
tuần tự
Cấu
trúc lựa
chọn
Cấu trúc
lặp
19
Khoa CNTT - UNETI
LT
NN
C++
1.3.1 Cấu trúc tuần tự
Ví dụ 1: Lưu đồ thuật giải đổi chỗ 2 phần tử a, b
Ví dụ 2: Lưu đồ thuật giải tính Bắt đầu
tổng S của n số nguyên đầu tiên
Nhập a, b
Bắt đầu
tg = a
Nhập n
a=b
S = n*(n+1)/2
b = tg
In S In a, b
Nhập a, b
đúng sai
a=0?
đúng sai
b=0?
PT co no
PT vo so PT vo no x =-b/a
no
Kết thúc
22
Khoa CNTT - UNETI
LT
NN
C++
1.3.2 Cấu trúc lựa chọn
Ví dụ 2: Tìm số lớn nhất trong 3 số a, b, c
Bắt đầu
A
Nhập a, b, c
đúng sai
max < c?
max = a
max = c
đúng sai
max < b?
In max
max = b PT co no
Kết thúc
A 23
Khoa CNTT - UNETI
LT
NN
C++
1.3.3 Cấu trúc lặp
Lưu đồ Thứ tự thực hiện
S = 0;
Việc sau
i = 1; lặp
sai
Việc i <= n?
trong đúng
vòng lặp PT coSn= o S + i; In S
x =-b/ai = i +1
Kết thúc
25
Khoa CNTT - UNETI
LT
NN
C++ Câu hỏi củng cố bài
B. Hình thoi
D. Hình oval
2
6
LT
NN
C++ Câu hỏi củng cố bài
2
7
LT
NN
C++ Câu hỏi củng cố bài
3. Cấu trúc lặp là cấu trúc:
A. Thực hiện hết lệnh nọ đến lệnh kia
B. Nếu điều kiện đúng thì thực hiện việc này,
nếu điều kiện sai thì thực hiện việc kia.
C. Nếu điều kiện sai thì thực hiện công việc
bên trong vòng lặp, cho đến khi điều kiện
đúng thì thực hiện công việc sau lặp.
D. Nếu điều kiện còn đúng thì thực hiện công
việc bên trong vòng lặp, cho đến khi điều
kiện sai thì thực hiện công việc sau lặp.
2
8
LT
NN
C++
Tổng kết
Thuật giải Tập hợp hữu hạn các thao tác, các
phép toán được thực hiện theo một
trật tự nhất định
Chương trình
Khái
Tập hợp hữu hạn các chỉ thị máy, thể
niệm hiện thuật giải
NNTN
Đơn giản, gần gũi
Diễn tả Rườm rà, phụ thuộc cách diễn đat
thuật giải Lưu đồ
Thuật giải Sử dụng các ký hiệu quy định để diễn
và lưu đồ tả thuật giải
NNLT
Ngôn ngữ dùng viết CT cho MT
Gần gũi NN khoa học kỹ thuật
3
0
LT
NN
C++ Bài tập
3
1
LT
NN
C++ Bài tập
3
2