You are on page 1of 32

TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP

LOGO Khoa Công Nghệ Thông Tin


-------------

Phần 2. NN lập trình C++

CHƯƠNG 1
THUẬT GIẢI VÀ
LƯU ĐỒ
LT
NN
C++
Chương 1 – Thuật giải và lưu đồ

1.1 KHÁI NIỆM THUẬT GIẢI

1.2 CÁC CÁCH DIỄN TẢ THUẬT GIẢI

1.3 CÁC CẤU TRÚC CỦA THUẬT GIẢI

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

 Hợp ngữ - Ngôn ngữ máy


được mã hóa dưới dạng tài
liệu
 Một chương trình được dịch sang
ngôn ngữ máy trong quá trình của

 Ngôn ngữ lập trình cấp cao
(Pascal, C++)
 Một chương trình được dịch sang
ngôn ngữ máy một lần trước khi
xử lý 12
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
Các thành phần cơ bản của NNLT bao gồm:
 Bộ kí tự (character set): hay bảng chữ cái dùng để
viết chương trình
 Cú pháp (syntax): là bộ quy tắc để viết chương trình
 Ngữ nghĩa (semantic): xác định ý nghĩa các thao
tác, hành động cần phải thực hiện, ngữ cảnh của
câu lệnh trong chương trình.

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ả

Bắt đầu, kết thúc chương trình

Nhập, xuất dữ liệu

Các thao tác cần thực hiện

Các điều kiện cần kiểm tra

Đường đi của lưu đồ

A hoặc 1 Điểm nối của lưu đồ


14
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ụ 1: Lưu đồ thuật giải tính tổng 2 số a, b
Bắt đầu Điểm bắt đầu chương trình

Nhập a, b Nhập 2 số a, b

c=a+b Tính tổng c = a + b

In c Xuất dữ liệu, in ra tổng c

Kết thúc Điểm kết thúc chương trình


15
Khoa CNTT - UNETI
LT
NN
C++
1.2 Các cách diễn tả thuật giải
Ví dụ 2: Lưu đồ thuật Bắt đầu
giải giải phương trình
ax + b = 0 Nhập 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

Kết thúc Kết thúc 20


Khoa CNTT - UNETI
LT
NN
C++
1.3.2 Cấu trúc lựa chọn
Lưu đồ Thứ tự thực hiện

Kiểm tra điều kiện,


đúng sai nếu điều kiện đúng
Điều kiện ? thực hiện <việc1>,
Dạng
đầy nếu điều kiện sai thực
đủ Việc 1 Việc 2 hiện <việc2>, sau đó
ra khỏi cấu trúc lựa
chọn

đúng Kiểm tra điều kiện,


Dạng sai
Điều kiện ? nếu điều kiện đúng
không thực hiện <việc>, nếu
đầy
Việc điều kiện sai không
đủ
thực hiện gì, sau đó ra
khỏi cấu trúc lựa chọn
21
Khoa CNTT - UNETI
LT
NN
C++
1.3.2 Cấu trúc lựa chọn
Ví dụ 1: Lưu đồ thuật giải giải phương trình
ax+b=0
Bắt đầu

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

Kiểm tra điều kiện, nếu


sai đúng thì thực hiện
Điều kiện ? <việc> trong vòng lặp
Dạng đúng sau đó quay lên kiểm tra
1 Việc điều kiện nếu còn đúng
Việc thì thực hiện tiếp, nếu
điều kiện sai thì thực
hiện <việc> sau lặp.

Thực hiện <việc> trong


Việc vòng lặp rồi kiểm tra
Dạng điều kiện nếu đúng thì
2 thực hiện tiếp <việc>
đúng sai cho đến khi điều kiện sai
điều kiện? thực hiện <việc> sau
Việc lặp.
24
Khoa CNTT - UNETI
LT
NN
C++
1.3.3 Cấu trúc lặp
Tính tổng S của n Bắt đầu
số nguyên đầu
tiên Nhập 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

1. Ký hiệu nào sau đây thể hiện điều kiện


cần kiểm tra trong lưu đồ thuật giải

A. Hình chữ nhật

B. Hình thoi

C. Hình bình hành

D. Hình oval

2
6
LT
NN
C++ Câu hỏi củng cố bài

2. Ký hiệu nào sau đây để chỉ điểm nối


của lưu đồ thuật giải

A. Đường thẳng có mũi tên

B. Đường cong có mũi tên

C. Hình tròn nhỏ có chữ hoặc số đi kèm

D. Hình tròn nhỏ rỗng

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

Tuần tự Gồm lệnh đơn, hết lệnh nọ đến lệnh


Các cấu
trúc của kia
thuật giải Lựa chọn
 Dạng đầy đủ
 Dạng không đầy đủ
Lặp
 Dạng 1
 Dạng 2 2
9
LT
NN
C++ Câu hỏi lý thuyết

1. Thuật giải là gì? Chương trình là gì?

2. Nêu các cách diễn tả thuật giải

3. Nêu các cấu trúc của thuật giải. Cho ví


dụ minh họa

3
0
LT
NN
C++ Bài tập

Vẽ lưu đồ thuật giải các bài sau:


1. Giải phương trình bậc 2 ax2 + bx + c = 0
2. Tìm số nhỏ nhất trong 3 số a, b, c (dùng
cấu trúc lựa chọn dạng đầy đủ)
3. Tính tổng
S = 2 + 4 + … + 2n
4. Tính tích
P = 1*3*5* … *(2n-1)

3
1
LT
NN
C++ Bài tập

Vẽ lưu đồ thuật giải các bài sau:


5. Nhập vào 3 số nguyên dương a, b, c.
Kiểm tra xem chúng có tạo thành 3 cạnh
tam giác hay không? Nếu có thì đó là tam
giác gì?
6. Tìm UCLN của 2 số nguyên dương p, q với
p>q.

3
2

You might also like