Bài 26. Chia bài toán thành hàm và cách làm mịn dần
Một bài toán trong thực tế thường không đơn giản như những ví dụ luyện tập ban đầu. Bài học này giới thiệu cách chia một bài toán lớn thành nhiều hàm nhỏ, mỗi hàm đảm nhận đúng một việc, cùng cách làm mịn dần - phác thảo các bước lớn trước, rồi mới viết chi tiết từng bước - để việc viết chương trình trở nên gọn gàng và dễ kiểm soát hơn.
- Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F(CS) · Bài 4. Làm mịn dần từng bước từ thuật toán đến chương trình máy tínhtr. 101
- Kết nối tri thứcTin học 11 (Khoa học máy tính) - Bài 26. Phương pháp làm mịn dần trong thiết kế chương trìnhtr. 118–122
- Kết nối tri thứcTin học 11 (Khoa học máy tính) - Bài 27. Thực hành thiết kế chương trình theo phương pháp làm mịn dầntr. 123–126
Bắt đầu bằng một hình dung
Hãy tưởng tượng một nhóm bạn cùng nhau tổ chức một bữa tiệc nhỏ. Nếu giao cho đúng một người phải lo liệu tất cả mọi việc - vừa đi chợ mua nguyên liệu, vừa nấu từng món, vừa kê bàn ghế, vừa dọn dẹp sau khi ăn xong - người đó chắc chắn sẽ rối tung, dễ quên việc, và khó biết nên bắt đầu từ đâu trước. Cách làm hợp lý hơn nhiều là chia bữa tiệc thành từng đầu việc riêng biệt: một nhóm lo đi chợ, một nhóm lo nấu nướng, một nhóm khác lo dọn bàn và sắp xếp chỗ ngồi. Mỗi nhóm chỉ cần tập trung hoàn thành đúng phần việc của mình; đến giờ, các phần việc được ráp lại với nhau, bữa tiệc coi như hoàn tất mà không ai phải ôm đồm quá nhiều thứ cùng lúc.
Viết một chương trình máy tính để giải quyết một bài toán lớn cũng nên đi theo tinh thần “chia để trị” như vậy: thay vì viết một khối lệnh dài giải quyết mọi thứ cùng lúc, ta chia bài toán thành từng phần việc nhỏ, mỗi phần việc giao cho một hàm đảm nhận.
Nội dung bài học
- Vì sao nên chia bài toán lớn thành nhiều hàm nhỏ?
- Làm mịn dần: từ dàn ý lớn đến từng hàm cụ thể
Tóm tắt lý thuyết cần nhớ
- Một bài toán lớn nên được chia thành nhiều hàm nhỏ, mỗi hàm chỉ đảm nhận đúng một việc rõ ràng, thay vì viết dồn tất cả vào một khối lệnh dài.
- Làm mịn dần (thiết kế từ trên xuống) là cách phác ra các bước lớn của bài toán trước - như một dàn ý - rồi mới quay lại viết chi tiết từng bước thành một hàm hoàn chỉnh.
- Chia hàm và làm mịn dần giúp chương trình dễ viết, dễ đọc, dễ kiểm thử từng phần và dễ tái sử dụng hơn so với việc viết một mạch từ đầu đến cuối.
- Trong một chương trình được chia tốt, phần chính thường chỉ gồm vài dòng gọi hàm theo đúng thứ tự, đọc vào giống như đọc lại dàn ý các bước lớn của bài toán.
Thuật ngữ tiếng Anh trong bài
| Tiếng Anh | Đọc là | Nghĩa |
|---|---|---|
| algorithm | AL-gô-rít-thầm | thuật toán Các bước làm một việc theo đúng thứ tự để ra kết quả - như công thức pha mì gói: đổ nước sôi, chờ 3 phút, rồi ăn. |
| function | PHẮNG-sần | hàm Một 'cỗ máy nhỏ' lắp sẵn để làm một việc cụ thể. |
Câu hỏi trắc nghiệm có đáp án
Mấy câu mẫu để bạn tự kiểm tra ngay. Trong ứng dụng, bài này có đủ 25 câu, chấm điểm tự động và giải thích từng câu sai.
- Để chương trình chạy nhanh hơn về tốc độ xử lý của máy tính, vì hàm đã được dịch sẵn ra mã máy
- Để mỗi hàm chỉ đảm nhận đúng một việc rõ ràng, giúp chương trình dễ viết, dễ đọc và dễ kiểm thử hơn
- Vì Python bắt buộc một chương trình phải có ít nhất bốn hàm mới chạy được, thiếu hàm sẽ báo lỗi
- Để chương trình chiếm ít dung lượng lưu trữ hơn trên ổ đĩa, vì các dòng lệnh không bị viết lặp lại
- Viết ngay chi tiết từng dòng lệnh của cả bài toán ngay từ đầu, không cần phác thảo trước
- Phác ra các bước lớn của bài toán trước, giống một dàn ý, rồi lần lượt viết chi tiết từng bước thành một hàm hoàn chỉnh
- Chỉ viết đúng một hàm duy nhất cho toàn bộ bài toán để chương trình gọn nhất có thể
- Xoá bỏ hết các hàm đã viết trước đó rồi viết lại từ đầu cho đến khi chương trình chạy đúng
- nhap_diem_so
- tinh_trung_binh
- xep_loai_hoc_luc
- in_bang_ket_qua
- a)Khi mỗi hàm chỉ lo đúng một việc rõ ràng, chương trình thường dễ đọc và dễ kiểm thử hơn so với một hàm ôm đồm nhiều việc cùng lúc.Đúng
- b)Làm mịn dần nghĩa là phải viết xong toàn bộ chi tiết của cả bài toán trước, sau đó mới được nghĩ đến các bước lớn.Sai
- c)Trong một chương trình được chia hàm hợp lý, phần chính thường chỉ còn vài dòng gọi hàm theo đúng thứ tự, không chứa nhiều phép tính chi tiết.Đúng
- d)Một hàm đã viết xong và kiểm tra đúng thì không thể dùng lại ở bất kỳ chỗ nào khác, mỗi hàm chỉ được gọi đúng một lần duy nhất trong chương trình.Sai
- (a) Đúng - mỗi hàm một việc rõ ràng giúp chương trình dễ đọc, dễ kiểm thử hơn, đây chính là lợi ích chính của việc chia hàm được nêu trong bài.
- (b) Sai - làm mịn dần đi theo thứ tự ngược lại: phác các bước lớn (dàn ý) trước, rồi mới quay lại làm chi tiết (làm mịn) từng bước sau.
- (c) Đúng - phần chính của một chương trình chia hàm hợp lý thường chỉ là vài dòng gọi hàm theo đúng thứ tự, giống như đọc lại dàn ý các bước lớn.
- (d) Sai - một hàm hoàn toàn có thể được gọi lại nhiều lần, ở nhiều chỗ khác nhau, thậm chí ở một chương trình khác có nhu cầu tương tự; đây chính là lợi ích ‘dùng lại được’ đã nêu trong bài.
Thử ngay: minh hoạ từng bước
Bấm từng bước để tự xem cơ chế hoạt động, hoặc bấm “Tự chạy” cho nó tiến mỗi giây một lần. Đổi được dữ liệu đầu vào - không cần đăng nhập.
Học trọn bài này trong ứng dụng
Bài giảng đầy đủ, 25 câu luyện tập chấm tự động, thi thử đúng cấu trúc đề tốt nghiệp (24 trắc nghiệm + 4 Đúng/Sai), bài thực hành máy tự chấm và gia sư AI giải thích chỗ sai.
Phần học miễn phí, không cần tạo tài khoản.
Bài liên quan - Lập trình, Thuật toán & CTDL (KHMT)
Cùng mạch kiến thức với bài này, học nối tiếp cho chắc phần lí thuyết.