Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 27

Chương 2 Lập trình và giải thuật

Chương trình máy tính


 Máy tính?
 Làm theo “lệnh” của con người.
 Điểm mạnh là tính toán với tốc độ cao (hàng tỷ phép
tính trên giây).
 Làm thế nào để “ra lệnh” cho máy tính?
 Lập chương trình cho máy tính
 Chương trình?
 Nói cho máy tính biết phải làm gì, như thế nào,…
Ngôn ngữ lập trình
 Muốn “ra lệnh” cho máy tính:
 Sử dụng một “ngôn ngữ” chung  ngôn ngữ lập trình
(programming language)
 Lập trình (computer programming): Dùng ngôn ngữ lập
trình lập nên chương trình hoạt động cho máy tính.
Ngôn ngữ lập trình
 Các thế hệ của ngôn ngữ lập trình
 Thế hệ 1 (bậc thấp): ngôn ngữ máy, assembly.
 Thế hệ 2: Gần với ngôn ngữ tự nhiên hơn, phục vụ
những nhu cầu lập trình nhất định (FORTRAN, COBOL,
ALGOL,… )
 Thế hệ 3: Gần gũi, vạn năng (PASCAL, C, C++,…)
 Thế hệ 4: Truy vấn, hỗ trợ quyết định, lập trình trí tuệ
nhân tạo (SQL, LISP, PROLOG,…).
Giải thuật (Algorithm) là gì?
 Khái niệm: Là một dãy hữu hạn các thao tác được sắp
xếp  theo một trình tự xác định sao cho sau khi thực hiện
một dãy các thao tác ấy, từ Input của bài toán, ta nhận
được Output cần tìm.
Giải thuật (Algorithm) là gì?
 Ví dụ: “Thuật toán nấu cơm”
 Bước 0: Ước lượng gạo cần thiết
 Bước 1: Vo gạo
 Bước 2: Cho gạo và nước thích hợp vào nồi cơm
điện(NCĐ)
 Bước 3: Cắm điện, chuyển chế độ “cook”
 Bước 4: Chờ đến khi NCĐ chuyển sang chế độ “warm”
 Bước 5: Chờ thêm 10 phút nữa
 Bước 6: Cơm chín, kết thúc.
Biểu diễn giải thuật
 Cách 1: Ngôn ngữ tự nhiên

 Cách 2: Ngôn ngữ lưu đồ (lưu đồ/sơ đồ khối)

 Cách 3: Mã giả (pseudocode) gọi là ngôn ngữ mô phỏng


chương trình PDL (Programming Description Language).

 Cách 4: Các ngôn ngữ lập trình như Pascal, C/C++ hay
Java. Tuy nhiên, không nhất thiết phải sử dụng đúng ký
pháp của các ngôn ngữ đó mà có thể được bỏ một số
ràng buộc.
Ngôn ngữ tự nhiên
 Sử dụng một loại ngôn ngữ tự nhiên để liệt kê các bước
của thuật toán
 Ưu điểm
 Đơn giản
 Không yêu cầu người viết và người đọc phải có kiến thức
nền tảng
 Nhược điểm
 Dài dòng
 Không làm nổi bật cấu trúc của thuật toán
 Khó biểu diễn với những bài toán phức tạp

8/23
Ngôn ngữ tự nhiên, ví dụ 1 :
Ví dụ 1 :
 Bài toán: Đưa ra kết luận về tương quan của hai số a và

b (>, < hay =).


 Đầu vào: Hai số a và b
 Đầu ra: Kết luận a>b hay a<b hay a=b.
 Ý tưởng:
 So sánh a và b rồi đưa ra kết luận

9/23
Ví dụ 1: Ngôn ngữ tự nhiên
 B0: Bắt đầu
 B1: Nhập số a và số b.
 B2: Nếu a > b, hiển thị “a>b”. Kết thúc.
Ngược lại sang B3.
 B3: Nếu a = b, hiển thị “a=b”.
Ngược lại, hiển thị “a < b”.
 B4: Kết thúc

10/23
Lưu đồ thuật toán
 Sử dụng các hình khối để minh hoạ cho các bước
thực hiện:
 Khối bắt đầu
 Khối kết thúc
 Khối thao tác cụ thể
 Khối kiểm tra điều kiện
 Sử dụng mũi tên để diễn đạt thứ tự thực hiện
Lưu đồ thuật toán
 Khối bắt đầu Begin

 Khối kết thúc End

 Thực hiện công việc A A

Đúng
Điều kiện
 Kiểm tra điều kiện
Sai
 1 mũi tên vào, 2 mũi tên ra
tương ứng với 2 trạng thái đúng/sai của Điều kiện
Mô tả bằng lưu đồ thuật toán
 Ưu điểm
 Trực quan, dễ hiểu, dễ thiết kế
 Cung cấp toàn cảnh, tổng quan về thuật toán
 Nhược điểm
 Cồng kềnh, đặc biệt với bài toán phức tạp

13/23
Cấu trúc tuần tự
 Các bước được thực hiện theo 1 trình tự tuyến tính, hết
bước này đến bước khác

Công việc 1

Công việc 2


Công việc n

14/23
Cấu trúc rẽ nhánh
 Nếu biểu thức điều kiện đúng (giá trị chân lý là True)
thực hiện công việc 1.
 Nếu biểu thức điều kiện sai (giá trị chân lý là False) thực
hiện công việc 2.

Sai Sai
Điều kiện Điều kiện

Đúng Đúng

Công việc Công việc 1 Công việc 1

15/23
Cấu trúc lặp
 Khi biểu thức điều kiện  Thực hiện công việc
còn đúng, thực hiện công đến khi biểu thức điều
việc kiện sai.

Sai
Điều kiện Công việc

Đúng
Đúng
Công việc Điều kiện

Sai

Công việc Công việc


khác khác

16/23
Ví dụ 2- Mô tả bằng lưu đồ thuật toán

Begin
 B1: Nhập a và b
Nhập a, b

 B2: Nếu a > b, hiển thị Đúng


a>b
“a>b” và kết thúc.
𝑎  >  𝑏
Sai
Đúng
a=b
Ngược lại, sang B3
Sai
B3: Nếu a = b, hiển thị
𝑎  =  𝑏

“a=b” và kết thúc. 𝑎<𝑏


Ngược lại, hiển thị “a<b”

End
 B4: Kết thúc

17/23
Mã giả (pseudocode)
 Ngôn ngữ tựa (gần giống) với ngôn ngữ lập trình được
gọi là mã giả
 Mệnh đề có cấu trúc
 Ngôn ngữ tự nhiên
 Ưu điểm
 Tiện lợi, đơn giản
 Dễ hiểu, dễ diễn đạt

18/23
Ví dụ 3:
 Bài toán: Đưa ra tổng, tích, hiệu, thương của hai số a
và b.
 Đầu vào: Hai số a và b
 Đầu ra: Tổng, tích, hiệu và thương của a và b.
 Ý tưởng:
 Tính tổng, tích, hiệu của a và b
 Nếu b khác 0, đưa ra thương
 Nếu b bằng 0, đưa ra thông báo không thực hiện được
phép chia

19/23
Ví dụ 3 -Ngôn ngữ tự nhiên
 Ngôn ngữ tự nhiên Begin  Sơ đồ khối
B1: Nhập số a và b. Nhập a, b

B2: s a+b; d  a-b; p  a*b


s←a+b
B3: Hiển thị: d←a–b
p←a*b
- Tổng là s
- Hiệu là d
- Tích là p 𝐻𝑖ể𝑛 𝑡h ị𝑠,𝑑,𝑝
B4: Nếu b=0, hiển thị “Không thực Đúng
b=0
hiện được phép chia” và kết thúc Sai
Ngược lại, Hiển thị “Thương
a/b” và kết thúc
𝑇h ươ 𝑛𝑔𝑎/𝑏
End
20/23
Ví dụ 4
 Bài toán: Giải phương trình bậc I
 Đầu vào: Hai hệ số a, b
 Đầu ra: Nghiệm của phương trình ax + b = 0
 Ý tưởng:
 Lần lượt xét a = 0 rồi xét b = 0 để xét các trường hợp
của phương trình

21/23
Ví dụ 4: ngôn ngữ tự nhiên
 Ngôn ngữ tự nhiên  Sơ đồ khối
Begin
B1: Nhập a và b
B2: Nếu a0 thì x-b/a. Hiển thị Nhập a, b

“Phương trình có 1 nghiệm duy Đúng

nhất x”. a=0


Sai Đúng
Ngược lại, sang B3 b=0

B3: Nếu b0 thì hiển thị “Phương Sai

trình vô nghiệm”.
Ngược lại, hiển thị “Phương
𝑃𝑇𝑣ô 𝑛𝑔h𝑖ệ𝑚 𝑃𝑇𝑣ô𝑠ố 𝑛𝑔h𝑖ệ𝑚
trình vô số nghiệm”
B4: Kết thúc End

22/23
Bài tập
 Bài toán: Giải phương trình bậc II
 Đầu vào: Ba hệ số a, b, c
 Đầu ra: Nghiệm của phương trình
 Ý tưởng:
 Lần lượt xét a = 0, b = 0 rồi xét c = 0 để kiểm tra các
trường hợp của phương trình bậc 2
Lời giải
Begin

Nhập a, b, c

∆←

Sai Đúng
∆>0

Sai Đúng
∆=0

−𝑏
𝑥=
2∗ 𝑎


𝐼𝑛 𝑛𝑔h𝑖ệ𝑚𝑥 𝐼𝑛 𝑛𝑔h𝑖ệ𝑚𝑥1,𝑥2
End
Bài tập
 Bài toán: Tìm giá trị lớn nhất trong 3 số
 Đầu vào: Ba hệ số a, b, c
 Đầu ra: giá trị lớn nhất
 Ý tưởng:
 So sánh lần lượt các số.

Bài toán mở rộng: Tìm giá trị lớn nhất trong dãy
gồm nhiều số
Ý tưởng

3 1 4 9 8 6

Max 3
Max 3 1
Max 3 4
Max 4 9
Max 9 8
Max 9 6
Bài tập
 Bài 01: Hoán đổi giá trị 2 số a và b.
 Bài 01: Tìm tất cả các ước của số N.
 Ý tưởng: kiểm tra từ 1 đến N, nếu gặp số chia hết thì ghi
nhận
 Bài 02: Kiểm tra số p có phải số nguyên tố hay không
 Ý tưởng: đếm số lượng ước số của p

27/23

You might also like