1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Tin học đại cương: Chương 7 - Trường ĐH Sư phạm TP. Hồ Chí Minh

59 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 7: Bài toán và thuật toán
Tác giả Nhóm Biên Soạn HP. Tin Học Đại Cương
Trường học Trường ĐH Sư phạm TP. Hồ Chí Minh
Chuyên ngành Tin học đại cương
Thể loại bài giảng
Năm xuất bản 2011
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 59
Dung lượng 1,69 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Tin học đại cương: Chương 7 Bài toán và thuật toán, cung cấp cho người học những kiến thức như: Khái niệm vấn đề và bài toán. Thuật toán và các phương pháp biểu diễn thuật toán. Các bước để giải một bài toán trên máy tính. Chuyển đổi bài toán thành chương trình máy tính.

Trang 1

Tin học đại cương

Introduction to Information Technology

Nhóm biên soạn HP Tin Học Đại Cương

Khoa Công Nghệ Thông Tin Trường ĐHSP TP Hồ Chí Minh

Bộ môn Kĩ Thuật Dạy HọcHCMUP

- FIT

Trang 2

Chương 7: Bài toán và thuật toán

2 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 3

Giới thiệu

 Trong xu hướng phát triển của xã hội, công nghệ thông tin ngày càng đóng một vai trò rất quan trong giúp mọi người

có thể hoàn thành công việc của mình trở nên nhanh

chóng, hiệu quả và dễ dàng hơn thông qua các chương trình ứng dụng trên máy tính Thuật toán và thuật giải là nền tảng để những lập trình viên có thể xây dựng những chương trình ứng dụng phù hợp

 Đó cũng chính là mục tiêu của chương này nhằm cung

cấp các khái niệm ban đâu về bài toán và thuật toán

Đông thời đưa ra qui trình cơ bản để giải quyết 1 bài toán trên máy tính như thế nào?

3 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 4

Nội dung chính

Chương 7: Bài toán và thuật toán

Khái niệm vấn đề và bài toán

Thuật toán và các phương pháp biểu diễn thuật

toán

Các bước để giải một bài toán trên máy tính

Chuyển đổi bài toán thành chương trình máy tính

4 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 5

Khái niệm vấn đề

 Vấn đề thường được dùng với nghĩa rộng hơn bài toán,

bài toán là vấn đề mà để giải quyết nó phải liên quan ít nhiều đến tính toán

 Pitago chia mọi vấn đề mà con người cần giải quyết thành hai loại:

 Theorema : vấn đề cần khẳng định tính đúng – sai

 Problema: vấn đề cần tìm giải pháp để để đạt được mục tiêu từ những điều kiện ban đầu nào đó

5 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 6

HCMUP

- FIT

Trang 7

Ví dụ về vấn đề - bài toán

1 Bài toán kiểm tra tính nguyên tố

2 Bài toán quản lý hồ sơ sinh viên

trường

kết quả học tập

7 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 8

Bài toán trong tin học?

 Trong thực tế, không phải vấn đề nào cũng có thể là những bài

toán có tính toán (bài toán của toán học).

 Ví dụ:

 Làm sao giao dịch ngân hàng tự động không cần nhân viên

 Làm sao để con người nói chuyện được với nhau mà không cần phải gặp mặt nhau.

 Làm sao để xếp loại học sinh của trường học có 3000 học sinh

một cách nhanh chóng

 …

Tất cả là bài toán trong tin học

Là vấn đề mà ta muốn máy tính thực hiện để từ dữ liệu vào (Input) ta nhân được dữ liệu – thông tin ra cần thiết (output)

8 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 9

Ví dụ bài toán trong tin học

1 Bài toán tìm ước chung lớn nhất của hai số nguyên

dương M,N

 Input: Hai số nguyên M,N

 Output: ƯCLN

2 Bài toán xếp thời khóa biểu cho trường học

 Input: Tên giáo viên, môn dạy

 Output: TKB của trường

3 Bài toán tìm điểm thi đại học của thí sinh

 Input: Số báo danh

 Output: Điểm thi

9 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 10

Giải bài toán trên máy tính

nhƣ thế nào?

Output Input

Bài toán

Bằng cách nào ?

Giải bài toán

Hướng dẫn các thao tác cho máy thực hiện

Thuật toán

10 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 11

Thuật toán là gì?

Từ thuật toán (Algorithm) xuất phát từ tên

một nhà toán học người Trung Á là

Muhammad ibn Musa al-Khwarizmi,

thường gọi là al’Khwarizmi Ông là tác giả

một cuốn sách về số học, trong đó ông đã

dùng phương pháp mô tả rất rõ ràng, mạch lạc

cách giải những bài toán Sau này, phương

pháp mô tả cách giải toán của ông đã được

xem là một chuẩn mực và được nhiều nhà toán

học khác tuân theo Từ algorithm ra đời dựa

theo cách phiên âm tên của ông

Muḥammad ibn Mūsā Khwārizmī (Arabic: نب دمحم

al-يمزراوخلا ىسوم ) was a Persian mathematician, astronomer, astrologer and geographer He was born around 780, in either Khwarizm or Baghdad, and died around 850

(Trích từ Wikipedia)

11 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 12

Khái niệm thuật toán

 Thuật toán là khái niệm cơ sở của toán học và tin học

 Thuật toán là một dãy các chỉ thị rõ ràng và có thể thi hành được để hướng dẫn thực hiện hành động nhằm đạt được mục tiêu đặt ra

 Thuật toán là sự thể hiện của một phương pháp để giải quyết vấn đề

12 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 13

 Nghiên cứu thuật toán là một trong những vấn đề quan trọng của tin học

 Lý thuyết về thuật toán giải quyết một số vấn đề sau:

toán nào không giải đƣợc bằng thuật toán

 Tìm thuật toán tốt nhất, tối ƣu

 Triển khai thuật toán trên máy tính

13 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 14

Đặc trưng của thuật toán

Nhập (input) Các thuật toán thường có giá trị đầu vào

Xuất (output) Từ giá trị vào thuật toán cho ra kết quả

Tính xác định(definiteness) Các bước trong thuật toán phải chính xác rõ ràng

Tính hữu hạn(finiteness) Thuật toán phải cho ra lời giải

(hay kết quả) sau một số bước hữu hạn

Tính hiệu quả(Effectiveness) Tính hiệu quả được đánh giá dựa trên một số tiêu chuẩn như khối lượng tính toán, không gian và thời gian sử dụng (khi thực hiện thuật toán trên máy tính)

Tính tổng quát(Generalliness) Thuật toán phải áp dụng được cho tất cả các bài toán cùng dạng, chứ không chỉ

áp dụng được cho một số trường hợp riêng lẻ nào đó Bản quyền: Khoa CNTT 2011 14

HCMUP

- FIT

Trang 15

Ví dụ về thuật toán giải

 Bước 3 : Gán cho x giá trị -b/a, rồi qua bước 4

 Bước 4: Xuất ra giá trị x rồi qua bước 5

 Bước 5 : Kết thúc Bản quyền: Khoa CNTT 2011 15

HCMUP

- FIT

Trang 16

Cấu trúc cơ bản của thuật toán

Tuần tự: thực hiện hết lệnh này đến lệnh khác

Rẽ nhánh: tùy theo dữ liệu đầu vào mà ta quyết định

thực hiện câu lệnh gì tiếp theo

Lặp: thực hiện lại nhiều lần một số câu lệnh nào đó

cho đến khi điều kiện không còn thỏa mãn nữa

16 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 17

HCMUP

- FIT

Trang 18

Biểu diễn thuật toán bằng

phương pháp ngôn ngữ tự nhiên

 Liệt kê các thao tác, các chỉ thị bằng ngôn ngữ tự nhiên

Ví dụ: Có 43 que diêm Hai người chơi luân phiên bốc diêm Mỗi lượt, mỗi người bốc từ 1 đến 3 que diêm Người nào bốc cuối cùng sẽ thắng cuộc

 Giải thuật để người đi trước luôn thắng cuộc được diễn

tả bằng cách liệt kê từng bước như sau:

Bước 1: Bốc 3 que rồi đợi đối phương đi

Bước 2: Đối phương bốc (giả sử x que, 0<x<4)

Bước 3: Đến lượt người đi trước bốc a = (4-x) que

Ngược lại qua bước 4

Bước 4:Tuyên bố thắng cuộc Kết thúc

18 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 19

Biễu diễn thuật toán bằng

phương pháp lưu đồ (lowchart)

 Là một phương tiện hình học giúp ta diễn tả giải thuật một cách trực quan

 Được tạo bởi các kiểu khối cơ bản, nối với nhau bằng các đường có hướng

 Thuật ngữ tiếng Anh là Flow Chart

19 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 20

Các ký hiệu cơ bản trong

phương pháp lưu đồ

20

bắt đầu kết thúc

chương

điều kiện

nhập hoặc xuất thao tác

Bản quyền: Khoa CNTT 2011 HCMUP

- FIT

Trang 21

- FIT

Trang 22

Biểu diễn thuật toán bằng

phương pháp mã giả (pseudo code)

 Ngoài việc sử dụng ngôn ngữ tự nhiên và lưu đồ để

biểu diễn thuật toán, người ta còn sử dụng ngôn ngữ tựa pascal, c, … được gọi là mã giả

 Trong mã giả ta sử dụng cả cấu trúc của ngôn ngữ lập

trình và ngôn ngữ tự nhiên

22 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 23

HCMUP

- FIT

Trang 24

Các bước giải

1 bài toán trên máy tính

 Bước 1: Xác định vấn đề - bài toán

 Bước 2: Lựa chọn phương pháp giải

 Bước 3: Xây dựng thuật toán hoặc thuật giải

- FIT

Trang 25

Các bước để thiết kế thuật toán

 Bước 1: Xác định vấn đề bài toán (input, output)

 Bước 2: Hình thành ý tưởng chính để để xây dựng thuật toán (bài toán giải bằng cách nào? Thuật toán sẽ dừng khi nào?)

 Bước 3: Xây dựng thuật toán (ngôn ngữ tự nhiên, lưu

đồ, mã giả)

 Bước 4: Mô phỏng để kiểm tra tính đúng đắn của thuật toán (chạy thử bằng tay)

25 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 26

ví dụ 1: Kiểm tra một số nguyên a là số

HCMUP

- FIT

Trang 27

Ví dụ 1: …( tt)

 Xây dụng thuật toán

 Cách 1: Dùng ngôn ngữ tự nhiên

Bước 1: Nhập a Bước 2: Nếu a chia hết cho 2 thì xuất a chẵn Ngược lại thì xuất a lẻ Qua bước 3 Bước 3: Kết thúc

- FIT

Trang 28

Ví dụ 2: Tìm số lớn nhất trong dãy số

Xác định vấn đề - bài toán:

a1, a2, …, aN (ai với i : 1  N)

Lựa chọn phương pháp giải:

HCMUP

- FIT

Trang 29

Tìm ra quả lớn nhất rồi!

MAX

Ồ! Quả này lớn hơn

Mô phỏng ý tưởng

29 HCMUP

- FIT

Trang 30

Xây dựng thuật toán

Bước 4: Nếu ai > Max thì Max  ai;

Bước 5: i  i+1 rồi quay lại B3

Cách 2: Dùng lưu đồ

B1 B2

Max  a i

Đ

S

S Đ

- FIT

Trang 31

Mô phỏng thuật toán

HCMUP

- FIT

Trang 32

Ví dụ 3: Bài toán kiểm tra tính nguyên tố

 Xác định bài toán

HCMUP

- FIT

Trang 33

Bài toán kiểm tra tính nguyên tố (tt)

 Ý tưởng

N<4 : Xem như bài toán đã được giải quyết

N>=4 : Tìm ước i đầu tiên > 1 của N

- Nếu i < N N không là số nguyên tố

N không là số nguyên tố : Tìm thấy iÎ[2 (N-1)]  Kết thúc

N là số nguyên tố : Không tìm thấy iÎ[2 (N-1)], i=N  Kết thúc

33 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 34

Kiểm tra tính nguyên tố (tt)

 Xây dựng thuật toán

a) Cách liệt kê :

Bước 1 : Nhập số nguyên dương N;

Bước 2 : Nếu N=1 thì thông báo “N không là số

Bước 5 : Nếu i là ước của N thì đến bước 7

Bước 6 : i  i +1 rồi quay lại bước 5; (Tăng i

HCMUP

- FIT

Trang 35

Kiểm tra nguyên tố (tt)

b) Sơ đồ khối :

Bước 1 : Nhập số nguyên dương N;

Bước 2 : Nếu N=1 thì thông báo “N không

Bước 6 : i  i +1 rồi quay lại bước 5;

(Tăng i lên 1 đơn vị)

Bước 7 : Nếu i = N thì thông báo “N là số

nguyên tố”, ngược lại thì thông báo “N

không là số nguyên tố”, kết thúc

35 Bản quyền: Khoa CNTT 2011

Đ S

Đ S

Nhập N

N là SNT

N là không SNT

HCMUP

- FIT

Trang 36

Kiểm tra tính nguyên tố (tt)

 Cải tiến thuật toán

cách giảm số lần xuống

Dựa vào một tính chất của số nguyên tố:

Nếu N >= 4 và không có ước trong phạm vi từ 2 đến phần nguyên căn bậc 2 của N N là số nguyên tố

Ý tưởng : Tìm i tăng dần trong phạm vi từ 2 đến phần nguyên

√N thỏa điều kiện là ước của N :

- Nếu không tìm được N là số nguyên tố

- Ngược lại N không là số nguyên tố

Các bạn hãy viết lại thuật toán theo ý

tưởng mới Bản quyền: Khoa CNTT 2011 36

HCMUP

- FIT

Trang 37

Ví dụ 3: Bái toán tìm kiếm

hoặc thông báo không tìm thấy k trong dãy

Vị trí của 2 trong dãy là 5 (không tìm thấy 6)

37 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 38

Hình thành ý tưởng

 Tìm kiếm tuần tự được thực hiện một cách tự nhiên :

 Lần lượt đi từ số hạng thứ nhất,

 So sánh giá trị số hạng đang xét với khóa

 Cho đến khi gặp một số hạng bằng khóa hoặc dãy đã

được xét hết mà không tìm thấy giá trị của khóa trên dãy.

38 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 39

Xây dựng thuật toán

Bước 4: i  i + 1;

Bước 5: Nếu i > N thì thông báo

dãy A không có số hạng nào

có giá trị bằng k, rồi kết thúc;

Bước 6: Quay lại bước 3;

Nhập N , a 1 , a 2 ,…,a n và k

Đƣa ra i ; Kết thúc

B.3

B.4

B.5 B.6

Đ S

Thông báo trong dãy số A không có số hạng nào bằng k Nhập N, a1, a2, …, an và k

Bản quyền: Khoa CNTT 2011 HCMUP

- FIT

Trang 40

Mô phỏng thuật toán

- FIT

Trang 41

Bài tập 1

Thiết kế thuật toán theo phương pháp dùng ngôn ngữ tự nhiên cho các bài toán sau:

a.Kiểm tra 2 số a, b giống nhau hay khác nhau

b.Kiểm tra 1 số a, b số nào lớn hơn

c.Giải phương trình bậc 2: ax2 + bx + c = 0

41 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 42

HCMUP

- FIT

Trang 43

Bài tập 3

Thiết kế thuật toán theo phương pháp dùng phương pháp

mã giả cho các bài toán sau:

a.Có n hộp có khối lượng khác nhau và một cái cân dĩa Tìm cách cân để tìm được hộp có trọng lượng nặng nhất

b.Tìm ước số chung lớn nhất của a và b

c.Nhập vào 3 số nguyên dương, kiểm tra xem 3 số đã cho

có tạo thành tam giác không? Nếu có là tam giác gì?

(Đều, cân, vuông, vuông cân, thường)

43 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 44

 Có nhiều bài toán chƣa tìm ra thuật toán hoặc chƣa

 Có những bài toán có thuật toán nhƣng khó thực hiện

44 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 45

Thuật giải (tt)

 Từ những nhận định trên người ta thấy rằng: cần phải

có những đổi mới cho khái niệm thuật toán  “Thuật giải

 Thuật giải cũng là thuật toán nhưng được mở rộng của tính chất:

45 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 46

HCMUP

- FIT

Trang 47

Ví dụ về thuật giải

Bài toán đổ nước

Có hai bình đựng nước là B5 có dung tích 5lít , B8 có dung tích 8lít Hãy chỉ

ra cách đong để có được hai lít nước Các thao tác có thể thực hiện được là :

 Hứ ng đầy nước vào bình B5 hoặc B8

 Đổ hế t nước trong một bình

 Đổ nướ c từ bình này sang bình khác cho đến lúc bình kia đầy

Thuật giải :

Đổ đầy nước vào bình B5 (B5=5)

Đổ hết nước từ bình B5 sang bình B8 (B5=0, B8=5)

Đổ đầy nước bình B5 (B5=5, B8=5)

Đổ nước từ bình B5 cho đến khi B8 đầy (B5=2, B8=8)

TÍNH XÁC ĐỊNH VÀ TÍNH ĐÚNG Bản quyền: Khoa CNTT 2011 47

HCMUP

- FIT

Trang 48

Con người làm việc

Khái niệm về ngôn ngữ lập trình

Bản quyền: Khoa CNTT 2011 HCMUP

- FIT

Trang 49

Sự hỗ trợ của máy tính

Khái niệm về ngôn ngữ lập trình

Bản quyền: Khoa CNTT 2011 HCMUP

- FIT

Trang 50

Source code

Kiến thức

về NNLT

Kiến thức Chuyên môn

Chương trình

biên dịch

(Bộ máy của NNLT)

File Ngôn ngữ máy (exe, dll, com, )

Sự hỗ trợ của máy tính

Khái niệm về ngôn ngữ lập trình

Bản quyền: Khoa CNTT 2011 HCMUP

- FIT

Trang 51

Phân loại ngôn ngữ lập trình

Ngôn ngữ máy

Hợp ngữ

Ngôn ngữ bậc cao

51 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 52

Ngôn ngữ máy

Là ngôn ngữ duy nhất mà máy tính có thể trực tiếp hiểu và thực hiện.Mỗi loại máy có ngôn ngữ máy

của riêng nó được tập hợp dưới dạng các câu lệnh

Ưu điểm: cho phép khai thác triệt để và tối ưu khả năng của máy tính

Nhược điểm: khó viết, chương trình nhận được

cồng kềnh và khó hiệu chỉnh

52 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 53

Hợp ngữ (Assembly)

Có cấu trúc rất giống ngôn ngữ máy Mã lệnh được thay bằng tên viết tắt tương ứng Hợp ngữ chỉ chạy được sau khi đã được dịch ra ngôn ngữ máy thông qua chương trình hợp dịch ( Assembler )

Ưu điểm: khắc phục được nhược điểm của ngôn

ngữ máy

Nhược điểm: không phù hợp với số đông người lập trình

53 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 54

Ngôn ngữ bậc cao

Mô phỏng ngôn ngữ tự nhiên, sử dụng các ký hiệu toán học thống nhất chung

Không phụ thuộc vào loại máy tính cụ thể

Chỉ chạy được sau khi đã được dịch ra ngôn ngữ

máy thông qua chương trình thông dịch ( Interpreter ) hoặc biên dịch ( Compiler )

Ưu điểm: dễ viết, chương trình dễ hiểu, dễ hiệu

chỉnh và dễ nâng cấp hơn

54 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 55

Chương trình dịch

Là chương trình đặc biệt dùng để chuyển chương trình trên ngôn ngữ ban đầu (chương trình nguồn) sang chương trình tương đương trên ngôn ngữ

máy

Chương trình dịch chia làm 2 loại:

Kỹ thuật thông dịch (Interpreter)

Kỹ thuật biên dịch (Compiler)

55 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 56

Kỹ thuật thông dịch

Là kiểu dịch từng dòng lệnh để hiểu công việc cần làm và thực hiện ngay chứ không nhất thiết phải tạo

ra các đoạn mã tương đương trong ngôn ngữ máy

Nếu một câu lệnh phải thực hiện nhiều lần thì cũng phải dịch nhiều lần

Ứng dụng: môi trường đối thoại giữa người và hệ thống

56 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Trang 57

Kỹ thuật biên dịch

Là kiểu dịch toàn bộ chương trình ban đầu thành

một chương trình tương ứng trong ngôn ngữ máy (chương trình đích), sau đó nạp chương trình đích vào máy tính để thực hiện

Ứng dụng: phù hợp với các chương trình ổn định và phải thực hiện nhiều lần

57 Bản quyền: Khoa CNTT 2011

HCMUP

- FIT

Ngày đăng: 28/01/2022, 09:28

🧩 Sản phẩm bạn có thể quan tâm