C3 - Giai quyet van de tren may tinh

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.

HCM
BỘ MÔN CÔNG NGHỆ PHẦN MỀM - KHOA CÔNG NGHỆ THÔNG TIN

CHƯƠNG 3
GIẢI QUYẾT VẤN ĐỀ
TRÊN MÁY TÍNH

1
NỘI DUNG

1. Giới thiệu

2. Thuật toán

3. Biểu diễn thuật toán

4. Các cấu trúc điều khiển cơ bản

5. Bài tập

2
1. Giới thiệu

• Máy tính không thể tự giải quyết các vấn đề/bài toán trong thực tế.
→ Con người cần cung cấp giải pháp từng bước để hướng dẫn máy
tính thực hiện.
• Để giải quyết một vấn đề/bài toán bằng máy tính, cần trải qua các
bước sau:
1. Hiểu và Phân tích vấn đề
2. Xây dựng giải pháp
3. Cài đặt

3
Hiểu và Phân tích vấn đề
• Cần xác định rõ:
• Inputs (Dữ liệu đầu vào/Dữ kiện)
• Outputs (Kết quả đầu ra).
• Các ràng buộc, điều kiện (nếu có)
• Công thức (nếu có).
• Ví dụ: Tính tổng chi phí mua táo với số lượng tính theo kg và giá mỗi
kg cho trước
• Input: số lượng mua (kg) và giá của mỗi kg.
• Output: Tổng chi phí mua
• Ràng buộc: N/A
• Công thức: Tổng chi phí = Giá * số lượng

4
Xây dựng giải pháp
• Xây dựng giải pháp từng bước chi tiết để giải quyết vấn đề - Thuật
toán .
• Thiết kế và xác minh thuật toán.
• Đối với bài toán/vấn đề khó thường sử dụng chiến lược thiết kế
hướng top-down (chiến lược Chia để trị)
• Liệt kê các bước chính
• Nhận dữ liệu đầu vào.
• Thực hiện các phép tính.
• Hiển thị kết quả.
• Thực hiện làm mịn thuật toán: mỗi bước có thể cần được chia nhỏ
thành các bước chi tiết hơn.
• Xác minh rằng thuật toán hoạt động đúng

5
Cài đặt

• Chuyển đổi chuỗi các bước chi tiết của thuật toán sang ngôn ngữ
mà máy tính có thể hiểu được.
• Quá trình cài đặt một thuật toán là quá trình viết một chương trình
máy tính hay còn gọi là lập trình.

6
2. Thuật toán

• Định nghĩa:
• Thuật toán là thủ tục gồm một tập hợp hữu hạn các qui tắc, nhằm
xác định một dãy hữu hạn các thao tác thực hiện trên các đối tượng
dữ liệu đầu vào (input) để giải quyết một hoặc một lớp bài toán và
thu được kết quả xác định (output)..

Dữ liệu đầu vào Thuật toán Kết quả đầu ra

• Yếu tố quan trọng nhất trong việc lựa chọn thuật toán là thời gian
thực thi thuật toán.

7
Thuật toán

• Ví dụ:
• Bài toán: Tìm ước số chung lớn nhất (GCD) của hai số nguyên
dương A và B
• Input: A, B
• Output: GCD của A và B
• Mô tả thuật toán:
1. A, B là số nguyên, với A> B ≥0. Nếu A < B → hoán vị A và B.
2. Nếu B = 0 thì GCD là A → dừng
3. Ngược lại,
• Tìm số dư R của phép chia A cho B
• Gán A = B, B = R, rồi quay trở lại bước 2.

8
Các tính chất đặc trưng của thuật toán
• Tính hữu hạn
• Một thuật toán phải kết thúc sau một số bước hữu hạn..
• Tính xác định
• Mỗi bước của thuật toán phải được xác định chính xác và rõ ràng.
• Tính chính xác
• Mỗi bước phải được thực hiện chính xác trong một khoảng thời gian hữu
hạn.
• Cho kết quả chính xác.
• Tính hiệu quả
• Thời gian thực thi và bộ nhớ sử dụng
• Tính tổng quát
• Thuật toán có thể được sử dụng để giải quyết một/một lớp bài toán
• Đầu vào/đầu ra:
• Mỗi thuật toán có thể nhận 0, 1 hoặc nhiều dữ liệu đầu vào và phải có một
hoặc nhiều kết quả đầu ra

9
3. Biểu diễn thuật toán

• Mỗi thuật toán có thể được biểu diễn bằng một trong các phương
pháp sau:
• Ngôn ngữ tự nhiên
• Ngôn ngữ lưu đồ (Sơ đồ khối)
• Mã giả

10
Ngôn ngữ tự nhiên

• Ưu điểm
• Đơn giản
• Không yêu cầu người viết và người đọc nắm các kí hiệu và qui tắc
• Nhược điểm
• Dài dòng
• Không thể hiện rõ cấu trúc của thuật toán
• Dễ hiểu lầm

11
Mã giả (Pseudo-Code)
• Sử dụng kết hợp ngôn ngữ tự nhiên, các ký hiệu toán học, và vay mượn
một số cấu trúc của một ngôn ngữ lập trình nào đó
• Không thể được thực thi trên máy tính
• Không có tiêu chuẩn chung trong việc viết mã giả
• Ưu điểm
• Chính xác hơn ngôn ngữ tự nhiên.
• Dễ đọc, hiểu, sửa đổi
• Chuyển đổi mã giả sang ngôn ngữ lập trình dễ dàng
• Nhược điểm
• Không có biểu diễn trực quan logic chương trình
• Không có tiêu chuẩn chung nào để sử dụng mã giả → xảy ra nhiều vấn đề

12
Mã giả

• Ví dụ: Tính trung bình cộng của 10 số


1. Total=0
2. Average=0
3. For 1 to 10
4. Read number
5. Total=Total+number
6. End for
7. Average=Total/10

13
Lưu đồ
• Ngôn ngữ lưu đồ là một dạng sơ đồ biểu diễn trực quan luồng dữ liệu
được xử lí trong hệ thống.
• Sử dụng các ký hiệu hình học để biểu diễn thuật toán
Ký hiệu Chức năng

Dùng để bắt đầu hoặc kết thúc thuật toán

Nhập hoặc xuất dữ liệu

Biểu diễn các thao tác xử lí tính toán, gán giá trị,…

Chứa các biểu thức kiểm tra điều kiện

Dùng để gọi chương trình con

Chỉ hướng đi của thuật toán và kết nối giữa các


khối
Lưu đồ
• Ví dụ: Tìm tổng của 2 số
• Ưu điểm:
• Trực quan, dễ hiểu, dễ kiểm tra
• Nhược điểm:
• Mất thời gian
• Cồng kềnh đối với các bài toán phức tạp

15
4. Các cấu trúc điều khiển cơ bản

• Bất kỳ thuật toán nào cũng có thể được mô tả bằng ba cấu trúc
điều khiển cơ bản sau:
• Cấu trúc tuần tự
• Cấu trúc rẽ nhánh
• Cấu trúc lặp

16
Cấu trúc tuần tự

• Các bước được thực hiện theo một trình tự tuyến tính từ trên
xuống, hết bước này đến bước khác.
• Ví dụ: Begin
Ax + By + C
• Tính S =
x2 + y2
Read
• Trong đó x, y ≠ 0 (A, B, C, x, y)

S = ( A * x + B * y + C) / x * x + y * y

Print S

End
17
Cấu trúc rẽ nhánh
• Một quyết định dựa trên một số điều kiện
• Điều kiện là một biểu thức đúng hoặc sai
• Cấu trúc rẽ nhánh có thể được biểu diễn bằng sơ đồ khối trong hai
trường hợp sau:

True (T) False (F)


False (F) Condition
Condition

True (T)
Task A Task B
Task A

18
Cấu trúc rẽ nhánh
• Ví dụ: Vẽ sơ đồ thuật toán để giải phương trình
ax + b = 0 Begin

Read a,b

F Root is
a=0
x = -b/a
T

b=0 F equation has no


solution
T
Infinitely many
solutions

End
19
Cấu trúc lặp
• Cấu trúc lặp là cấu trúc cho phép một/chuỗi các tác vụ được thực
hiện lặp lại nhiều lần. Trong đó, số lần lặp phải là hữu hạn và có
thể xác định hoặc không xác định trước.
• Vòng lặp với số lần lặp không xác định sẽ dừng khi điều kiện kết
thúc thỏa mãn.

False (F) Task A


Condition

True (T)

Condition
Task A False (F)

True (T)

20
Cấu trúc lặp
• Ví dụ: Tính tổng S = 1 + 2 + … + N
Begin

Input N

F N>0

T
S=0
i=1

i <= N F Print S

T
S=S+i
i=i+1

End
21
5. Bài tập
Sử dụng lưu đồ, thiết kế thuật toán để giải quyết các bài toán sau:
1. Tìm diện tích của hình tròn.
2. Nhân viên của một siêu thị thực hiện sắp xếp N quả trứng (N > 0) vào
trong từng hộp, mỗi hộp có 12 quả trứng. Hỏi có bao nhiêu hộp trứng
và bao nhiêu trứng còn dư?
3. Kiểm tra một số nguyên cho trước là chẵn hay lẻ
4. Tìm nghiệm của phương trình bậc 2 ax2 + bx + c = 0.
5. Cho n là số nguyên dương, x là số thực. Tính tổng:
n
x 2i +1
a) S(n) =  sin ix
i =1 2i + 1
1 1 1
b) S(n) = 1 + + + ... +
3 5 2n + 1

6. Tìm gia thừa của một số nguyên dương N.

22
Bài tập
7. Hiển thị tất cả các số lẻ trong đoạn 0 và 1000
8. Kiểm tra xem một số nguyên cho trước có phải số nguyên tố
không.
9. Cho dãy số a0, a1,…., an-1:
a) Tìm tổng của tất cả các phần tử trong danh sách.
b) In tất cả các phần tử trong danh sách.
c) In tất cả các phần tử âm trong danh sách.
d) Kiểm tra xem có phải tất cả các phần tử trong danh sách đều
dương hay không.
e) Tìm phần tử nhỏ nhất và lớn nhất trong danh sách
f) Sắp xếp danh sách theo thứ tự tăng dần

23
Q&A

24

You might also like