Tải bản đầy đủ (.pdf) (47 trang)

Bài giảng Cơ sở lập trình: Chương 2 - Lê Viết Mẫn

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 (232.94 KB, 47 trang )

Thuật toán
v 1.0 - 10/2012

Lê Viết Mẫn -

1

Thuật toán


chúng ta đã học...
1. Lập trình là gì ?
1.1. Lập trình và ngơn ngữ lập trình
1.2. Lịch sử và các hướng lập trình
1.3. Chương trình và thuật tốn
1.4. Các bước trong lập trình

2. C# và .NET

Lê Viết Mẫn -

2

Thuật toán


Giải bài tốn trên máy tính
1. Xác định bài tốn
2. Thiết kế thuật tốn
3. Phân tích thuật tốn
4. Cài đặt thuật toán


5. Kiểm tra / Bắt lỗi
6. [ Sửa lỗi ]

Lê Viết Mẫn -

3

Thuật toán


Nội dung
1. Thuật tốn
1.1. Khái niệm
1.2. Các tính chất
1.3. Phát triển thuật tốn

2. Mơ tả thuật tốn
3. Các dạng thuật tốn cơ bản
4. Ví dụ

Lê Viết Mẫn -

4

Thuật tốn


Thuật toán

Lê Viết Mẫn -


5

Thuật toán


Thuật tốn





Một tập các chỉ thị / lệnh đơn giản được xác định rõ ràng để giải
quyết một bài toán nào đó




Tính tốn và trả ra một hoặc một tập các giá trị ở đầu ra (output)

Thuật toán = Logic + Điều khiển
Logic - trả lời câu hỏi “Thuật toán làm gì ? Giải quyết vấn đề
gì ? Những yếu tố trong bài tốn có quan hệ với nhau thế
nào ?...”







Nhận một tập các giá trị ở đầu vào (input)

Gồm các kiến thức chuyên môn mà bạn phải biết để có thể giải bài tốn
Để giải bài tốn tính diện tích hình cầu, bạn phải biết cơng thức tính diện
tích hình cầu

Điều khiển - trả lời câu hỏi “Giải thuật phải làm như thế nào ?”
Lê Viết Mẫn -

6

Thuật toán


Thuật tốn





Có thể được mơ tả bằng...






Ngơn ngữ tự nhiên
Ngơn ngữ lập trình
Mã giả

Lưu đồ

Cấu trúc dữ liệu - Phương pháp tổ chức dữ liệu
Chương trình = Thuật tốn + Cấu trúc dữ liệu

Lê Viết Mẫn -

7

Thuật toán


Ví dụ - giải p.t bậc nhất
ax + b = 0

Lê Viết Mẫn -

8

Thuật toán


Ví dụ - giải p.t bậc nhất
ax + b = 0
Nếu a ≠ 0: x = -b/a
Ngược lại, a = 0:
Nếu b = 0: pt có vơ số nghiệm
Nếu b ≠ 0: pt vơ nghiệm

Lê Viết Mẫn -


9

Thuật tốn


Ví dụ - tìm số lớn nhất
Cho ba số a, b, c. Tìm số lớn nhất trong ba số đó

Lê Viết Mẫn -

10

Thuật toán


Ví dụ - tìm số lớn nhất
Cho ba số a, b, c. Tìm số lớn nhất trong ba số đó
Bước 1 : Cho Max = a
Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng

Lê Viết Mẫn -

11

Thuật toán



Các câu hỏi về thuật tốn





Thuật tốn đã giải quyết được bài toán được phát biểu ?
Thuật toán đã được định nghĩa tốt ?
Thuật toán đưa ra được một kết quả ?
Thuật tốn kết thúc sau thời gian tính tốn hợp lý ?

Lê Viết Mẫn -

12

Thuật toán


Tính chất
Tính kết thúc (tính dừng)



... q trình thực hiện thuật toán phải kết thúc sau khi thực hiện
một số hữu hạn các bước cơng việc
Thuật tốn tính tổng các số tự nhiên
Bước 1 : Cho s = 0, i = 1
Bước 2 : Cộng thêm i vào s ( s = s + i )
Bước 3 : Tăng i thêm 1 ( i = i + 1 )

Bước 4 : Quay lại bước 2
Bước 5 : Nhận s là kết quả giải bài toán
Bước 6 : Dừng
Lê Viết Mẫn -

13

Thuật toán


Tính chất
Tính xác định



... nếu trong những điều kiện như nhau thì kết quả thực hiện
khơng phụ thuộc vào đối tượng thực hiện thuật tốn



thuật tốn phải rõ ràng, khơng nhập nhằng, khơng thể hiểu theo nhiều nghĩa

Thuật tốn tìm giá trị lớn nhất
Bước 1 : Cho Max = a
Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng
Lê Viết Mẫn -


14

Thuật toán


Tính chất
Tính tổng qt



... nếu thuật tốn được dùng để giải cả một lớp bài tốn cùng loại

Thuật tốn tìm giá trị lớn nhất
Bước 1 : Cho Max = a
Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng
Lê Viết Mẫn -

15

Thuật toán


Tính chất
Tính xác định đầu vào - đầu ra




... nếu xác định rõ các dữ liệu đầu vào và các dữ liệu đầu ra



đầu vào, đầu ra được xác định càng chính xác thì q trình xây dựng thuật
tốn càng thuận lợi và thuật tốn càng có chất lượng cao hơn

Thuật tốn tìm giá trị lớn nhất
Bước 1 : Cho Max = a
Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng
Lê Viết Mẫn -

16

Thuật toán


Tính chất
Tính hiệu quả



... nếu cho ra kết quả đúng trong mức chi phí ít nhất về thời gian,
khơng gian

Thuật tốn tìm giá trị lớn nhất
Bước 1 : Cho Max = a

Bước 2 : So sánh b với Max. Nếu b > Max thì cho Max = b
Bước 3 : So sánh c với Max. Nếu c > Max thì cho Max = c
Bước 4 : Trả ra Max là giá trị lớn nhất
Bước 5 : Dừng
Lê Viết Mẫn -

17

Thuật toán


Phát triển thuật tốn






Xác định đầu vào (Input)
Xác định các bước xử lý (Process)
Xác định đầu ra (Output)
Vẽ biểu đồ HIPO
Xác định các chương trình con (Module)

Lê Viết Mẫn -

18

Thuật toán



Xác định đầu vào




Chúng ta cần dữ liệu gì ?
Chúng ta lấy dữ liệu đó như thế nào ?
Dữ liệu tồn tại ở dạng nào ?

Lê Viết Mẫn -

19

Thuật toán


Xác định đầu ra


Những kết quả nào chương trình phải trả ra cho người sử
dụng ?



Kết quả phải được trả ra ở dạng nào ?

Lê Viết Mẫn -

20


Thuật toán


Xác định các bước xử lý



Cách xử lý dữ liệu để đạt được kết quả có ý nghĩa ?
Áp dụng cơng thức gì ?

Lê Viết Mẫn -

21

Thuật tốn


Vẽ biểu đồ HIPO
Hierarchy of Inputs Processes & Outputs
Bài toán

Đầu vào

C.t. con

C.t. con

Xử lý


C.t. con

Lê Viết Mẫn -

C.t. con

22

Đầu ra

C.t. con

C.t. con

Thuật toán


Xác định các c.t. con


Cách nào để chia các vấn đề lớn thành các vấn đề nhỏ hơn, dễ
quản lý hơn ?





Các chương trình con cần những đầu vào nào ?
Các xử lý nào là cần thiết cho mỗi chương trình con ?
Đầu ra nào là được chờ đợi tại mỗi chương trình con ?


Lê Viết Mẫn -

23

Thuật tốn


Mơ tả thuật tốn

Lê Viết Mẫn -

24

Thuật tốn


Ngôn ngữ tự nhiên
ax + b = 0
Nếu a ≠ 0: x = -b/a
Ngược lại, a = 0:
Nếu b = 0: pt có vơ số nghiệm
Nếu b ≠ 0: pt vơ nghiệm





Sử dụng ngơn ngữ thường ngày (tiếng mẹ đẻ)
Dễ trình bày vấn đề

Dài dịng, khơng trình bày rõ cấu trúc thuật tốn, khó hiểu
Lê Viết Mẫn -

25

Thuật tốn


×