Bài giảng Tin học đại cương - Bài 3: Giải quyết bài toán - Bùi Trọng Tùng

TIN HỌC ĐẠI CƯƠNG  
Bài 3. Giải quyết bài toán  
Bùi Trọng Tùng, SoICT, HUST  
Nội dung  
1. Thuật toán  
2. Biểu diễn thuật toán  
3. Một số thuật toán cơ bản  
2
1
Nội dung  
2. Biểu diễn thuật toán  
3. Một số thuật toán cơ bản  
3
Khái niệm Bài toán (problem)  
• “Bài toán” hay “Vấn đề”  
• Vấn đề có nghĩa rộng hơn bài toán  
• Bài toán là một loại vấn đề mà để giải quyết phải  
liên quan ít nhiều đến tính toán: bài toán trong vật  
lý, hóa học, xây dựng, kinh tế…  
• Biểu diễn vấn đề-bài toán: A → B  
• A: Giả thiết, điều kiện ban đầu  
• B: Kết luận, mục tiêu cần đạt  
• Giải quyết vấn đề-bài toán  
• Từ A dùng một số hữu hạn các bước suy luận có lý  
hoặc hành động thích hợp để đạt được B  
• Trong Tin học, A là đầu vào, B là đầu ra  
4
2
Giải quyết bài toán bằng máy tính  
• Máy tính không thể dùng để giải quyết các vấn  
đề liên quan đến hành động vật lý hoặc biểu thị  
cảm xúc  
• Máy tính chỉ làm được những gì mà nó được  
bảo phải làm. Máy tính không thông minh, nó  
không thể tự phân tích vấn đề và đưa ra giải  
pháp.  
• Lập trình viên là người phân tích vấn đề, tạo ra  
các chỉ dẫn để giải quyết vấn đề (chương  
trình), và máy tính sẽ thực hiện các chỉ dẫn đó  
5
Giải quyết bài toán bằng máy tính  
• Phương án giải quyết bài toán được gọi là  
thuật toán/giải thuật trong tính toán  
• Một thuật toán là:  
• một dãy hữu hạn các thao tác và trình tự thực  
hiện các thao tác đó sao cho sau khi thực hiện dãy  
thao tác này theo trình tự đã chỉ ra, với đầu vào  
(input) ta thu được kết quả đầu ra (output) mong  
muốn.  
6
3
Các đặc trưng của thuật toán  
•
Tính dừng: phải cho ra kết quả sau một số hữu hạn  
các bước  
•
Tính đúng đắn: kết quả tính toán của giải thuật là chính  
xác  
•
•
Tính xác định: các bước thực hiện có trình tự xác định  
Tính khách quan: cho kết quả như nhau khi chạy trên  
các máy tính khác nhau  
•
•
Tính tổng quát: áp dụng cho các bài toán cùng dạng  
mong muốn  
Tính hiệu quả: đánh giá dựa trên khối lượng các phép  
toán cần thực hiện  
7
Giải quyết bài toán bằng máy tính  
• Không chỉ đơn giản là lập trình  
• Phức tạp, gồm nhiều giai đoạn phát triển  
• Các giai đoạn quan trọng  
• Bước 1. Xác định yêu cầu bài toán  
• Bước 2. Phân tích và thiết kế bài toán  
• Lựa chọn phương án giải quyết (thuật toán)  
• Xây dựng thuật toán  
• Bước 3. Lập trình  
• Bước 4. Kiểm thử và hiệu chỉnh chương trình  
• Bước 5. Triển khai và bảo trì  
8
4
Hai giai đoạn chính để hiện thực hóa bài  
toán  
Giai đoạn giải quyết vấn đề  
Giai đoạn thực hiện  
9
Nội dung  
1. Thuật toán  
3. Một số thuật toán cơ bản  
10  
5
Biểu diễn thuật toán  
• 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.  
11  
Nội dung  
1. Thuật toán  
2.1. Ngôn ngữ tự nhiên  
2.2. Lưu đồ thuật toán  
3. Một số thuật toán cơ bản  
12  
6
Nội dung  
1. Thuật toán  
2. Biểu diễn thuật toán  
2.2. Lưu đồ thuật toán  
3. Một số thuật toán cơ bản  
13  
2.1. 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  
14  
7
Ví dụ  
• Ví dụ 1: Tính 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  
• Tính thương a/b  
• Nếu b khác 0, tính thương  
• Nếu b bằng 0, đưa ra thông báo không thực hiện được  
phép chia  
15  
Mô tả bằng ngôn ngữ tự nhiên  
• B1: Nhập số a và số b.  
• B2: tong ß a + b; hieu ß a – b; tich ß a * b  
• B3: Hiển thị tong, hieu, tich  
• B3: Nếu b = 0, thông báo lỗi “Không thực hiện  
được phép chia”.  
Ngược lại thuong ß a/b. Hiển thị thương  
• B5: Kết thúc  
16  
8
Nội dung  
1. Thuật toán  
2. Biểu diễn thuật toán  
2.1. Ngôn ngữ tự nhiên  
3. Một số thuật toán cơ bản  
17  
2.2. Lưu đồ thuật toán  
Một số khối trong sơ đồ khối dùng biểu diễn thuật toán  
Bắt đầu hoặc kết thúc  
Thao tác tính toán hoặc phức tạp  
Lệnh vào, lệnh ra (read hoặc write)  
Kiểm tra điều kiện  
Nối tiếp đoạn lệnh  
Luồng thực hiện  
18  
9
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  
19  
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.  
20  
10  
Cấu trúc lặp  
• Khi biểu thức điều kiện còn  
đúng, thực hiện công việc  
• Thực hiện công việc khi  
biểu thức điều kiện còn  
đúng  
21  
Ví dụ  
Bắt đầu  
Nhập a, b  
• B1: Nhập số a và số b.  
• B2: tong ß a + b;  
hieu ß a – b  
tong ß a + b;  
hieu ß a – b  
tich ß a * b  
tich ß a * b  
Hiển thị tong,  
hieu, tich  
• B3: Hiển thị tong, hieu, tich  
Đ
S
• B4: Nếu b = 0, thông báo lỗi  
“Không thực hiện được  
phép chia”.  
b = 0  
thuong ß a / b;  
Thông  
báo lỗi  
Ngược lại thuong ß a/b.  
Hiển thị thuong  
Hiển thị thương  
• B5: Kết thúc  
Kết thúc  
22  
11  
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  
23  
Nội dung  
1. Thuật toán  
2. Biểu diễn thuật toán  
3.1. Thuật toán số học  
3.2. Thuật toán về dãy  
3.3. Thuật toán đệ quy  
24  
12  
Nội dung  
1. Thuật toán  
2. Biểu diễn thuật toán  
3. Một số thuật toán cơ bản  
3.2. Thuật toán về dãy  
3.3. Thuật toán đệ quy  
25  
Giải phương trình bậc 1  
• 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  
26  
13  
Mô tả tuần tự các bước  
• B1: Nhập a và b.  
• B2: Nếu a ≠ 0 thì x ← -b/a. Hiển thị “Phương  
trình có 1 nghiệm duy nhất x”.  
Ngược lại sang B3  
• B3: Nếu b ≠ 0 thì hiển thị “Phương trình vô  
nghiệm”.  
Ngược lại Hiển thị “Phương trình vô  
số nghiệm”  
B4: Kết thúc  
27  
Lưu đồ thuật toán  
28  
14  
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  
ax2 + bx + c = 0 (a ≠ 0)  
• Ý tưởng:  
• Tính định thức và biện luận nghiệm  
29  
Bài toán số nguyên tố  
• Cho một số nguyên dương p. Làm thế nào để biết  
được p có phải số nguyên tố hay không?  
• Input: p nguyên dương  
• Output: kết luận về tính nguyên tố của p  
• Ý tưởng?  
• Nếu p = 0 hoặc 1: Không phải số nguyên tố  
• Nếu p > 1:  
• Kiểm tra từ 2 đến p - 1 có phải là ước số của p không  
• Nếu có thì kết luận p không là số nguyên tố, ngược lại không có  
số nào thì kết luận p là số nguyên tố  
30  
15  
Mô tả các bước  
31  
Lưu đồ thuật toán  
32  
16  
Tìm UCLN, BCNN của hai số  
• B1 : Nhập 2 số a, b  
• B2 : x ß a, y ß b  
• B3 : Nếu y ≠ 0, sang B4  
Ngược lại, sang bước 5  
• B4 : r ß x mod y  
x ß y  
y ß r  
Quay lại B3.  
• B5: ucln ß x, bcnn ß (a*b) / ucln.  
• B6: Hiển thị ucln, bcnn.  
• B7: Kết thúc  
33  
Tìm ước số  
Tìm tất cả các ước số của một số nguyên dương N  
•
Ý tưởng : Duyệt lần lượt các giá trị từ 1 tới N và in ra  
nếu giá trị đó là ước số của N.  
Giải thuật  
•
•
•
B1 : Nhập N  
B2 : Gán i ß 1  
B3 : Nếu i ≤ N tới B4  
Ngược lại kết thúc  
•
•
B4 : Nếu N chia hết cho i, hiển thị i.  
B5 : i ß i + 1. Quay lại B3  
34  
17  
Tìm ước số chẵn  
Tìm tất cả các ước số chẵn của một số nguyên dương N  
• Ý tưởng : Duyệt lần lượt các số chẵn từ 2 tới N và in ra nếu  
giá trị đó là ước số của N.  
Giải thuật  
• B1 : Nhập N  
• B2 : Gán i ß 2  
• B3 : Nếu i ≤ N tới B4  
Ngược lại, kết thúc  
• B4 : Nếu N chia hết cho i, xuất i.  
• B5 : i ß i + 2. Quay lại B3  
• B6 : Kết thúc  
35  
Số hoàn hảo  
Kiểm tra tính hoàn hảo của số nguyên dương N.  
• B1 : Nhập N  
• B2 : Gán i ß 1, tongUoc ß 0,  
• B3 : Nếu i < N tới B4  
Ngược lại, tới B6  
• B4 : Nếu N chia hết cho i, gán tongUocß tongUoc + i  
• B5 : i ß i + 1. Quay lại B3  
• B6 : Nếu tongUoc = N, kết luận N là số hoàn hảo.  
Ngược lại, kết luận N không phải là số hoàn hảo  
• B7 : Kết thúc  
36  
18  
Tính số Fibonacci  
Tìm số Fibonacci thứ N  
Thuật giải  
•B1 : Nhập N  
•B2 : Gán i ß 2, Fn-1 ß 1, Fn-2 ß 1, Fn ß 1  
•B3 : Nếu i < N tới B4.  
Ngược lại, tới B5  
•B4 : Gán Fn ß Fn-1 + Fn-2  
Gán Fn-2 ß Fn-1  
Gán Fn-1 ß Fn  
Gán i ß i + 1  
Quay lại B3  
• B5: Hiển thị Fn.  
• B6: Kết thúc.  
37  
Nội dung  
1. Thuật toán  
2. Biểu diễn thuật toán  
3. Một số thuật toán cơ bản  
3.1. Thuật toán số học  
3.3. Thuật toán đệ quy  
38  
19  
3.2. Thuật toán về dãy  
• Làm việc với một dãy số  
• Các bài toán điển hình  
• Tìm số lớn nhất, nhỏ nhất trong dãy  
• Kiểm tra dãy có phải là dãy tăng hoặc dãy giảm  
• Sắp xếp dãy tăng dần hoặc giảm dần  
• Tìm trong dãy có phần tử nào bằng một giá trị cho  
trước  
• Tính trung bình cộng của dãy  
• …  
39  
Tìm số lớn nhất trong dãy  
• Bài toán: Tìm giá trị lớn nhất của một dãy số  
nguyên có n số  
• Đầu vào: Số nguyên dương n và n số nguyên a0,  
a1,…, an-1  
• Đầu ra: số nguyên lớn nhất của dãy  
• Ý tưởng:  
• Khởi tạo giá trị max = a0  
• Lần lượt so sánh max với ai với i = 1, 2, …, n-1  
nếu max < ai ta gán giá trị mới cho max = ai  
40  
20  
Tải về để xem bản đầy đủ
pdf 27 trang baolam 19960 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Bài 3: Giải quyết bài toán - Bùi Trọng Tùng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_phan_1_tin_hoc_can_ban_bai_3_gia.pdf