Lý thuyết Tin học 11 (Cánh diều) 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ính
Tóm tắt lý thuyết Tin học lớp 11 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ính hay, chi tiết sách Cánh diều sẽ giúp học sinh nắm vững kiến thức trọng tâm, ôn luyện để học tốt Tin học 11.
Lý thuyết Tin học 11 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ính
A. Lý thuyết Làm mịn dần từng bước từ thuật toán đến chương trình máy tính
1. Mã giả và mô tả thuật toán bằng mã giả
- Mã giả mô tả thuật toán ngắn gọn, độc lập với ngôn ngữ lập trình.
- Mã giả đảm bảo sự chính xác và rất gần với mã lệnh chương trình.
- Mã giả thường được sử dụng trong sách giáo khoa, giáo trình hay các bài nghiên cứu để mô tả thuật toán.
- Mã giả có thể coi như chương trình khung.
- Không có quy ước thống nhất về các từ khoá, kí hiệu trong mã giả.
- Mã giả phỏng theo câu lệnh rẽ nhánh, câu lệnh lặp của ngôn ngữ lập trình.
- Sử dụng các kí hiệu toán học, dấu phép toán, kí hiệu gợi tả để làm rõ ý tưởng thuật toán.
- Các kí hiệu được chọn và quy ước rõ để tránh nhầm lẫn.
- Có thể sử dụng thêm các từ ngắn gọn sau khi đã định nghĩa rõ ràng.
- Quy ước cụ thể khi viết mã giả
- Ta sẽ ưu tiên dùng một số yếu tố của ngôn ngữ lập trình Python trong các bài học khi mô tả thuật toán bằng mã giả. Dưới đây là một số quy ước:
+ Lời chú thích bắt đầu bằng dấu “#” cho đến hết dòng.
+ Cấu trúc rẽ nhánh (phép lựa chọn) dùng mẫu câu lệnh if...else – Cấu trúc lặp (phép lặp):
* Số lần lặp biết trước: Phỏng theo mẫu lệnh for của Python nhưng mô tả danh sách giá trị theo kiểu toán học.
* Số lần lặp chưa biết trước: Phỏng theo mẫu lệnh while của Python.
+ Sử dụng các mức thụt lùi đầu dòng để đánh dấu kết thúc dãy lệnh tuần tự trong mỗi nhánh rẽ của phép lựa chọn hay trong thân vòng lặp của phép lặp.
– Các phép toán gồm:
+ Phép toán số học, phép so sánh.
+ Phép gán dùng dấu mũi tên trái.
– Một số thành phần khác: Các lời gọi hàm thư viện hay hàm do người lập trình định nghĩa có thể mô tả ngắn gọn bằng cách viết toán học.
- Có thể định nghĩa thêm kí hiệu phép toán cho các việc cụ thể.
- Ví dụ: phép đổi chỗ hai phần tử x, y trong dãy số thường được viết gọn là swap(x,y) trong các thuật toán sắp xếp.
- Mô tả thuật toán bằng liệt kê các bước cần làm.
- Cần làm chi tiết từng bước tiến gần đến ngôn ngữ lập trình.
- Mã giả là một sự lựa chọn phù hợp để trình bày.
- Cách thức chung: Chuyển các cụm từ mô tả một “việc cần làm” thành các đoạn mã giả, tiến gần hơn một bước đến các câu lệnh của chương trình chi tiết. Sau đây là các ví dụ minh hoạ.
- Ví dụ 1: Kiểm tra số nguyên tố
+ Đầu vào: số nguyên dương n.
+ Đầu ra: True nếu n là số nguyên tố, False nếu ngược lại.
- Thuật toán bao gồm bốn bước:
+ Bước 1: Kiểm tra n = 1, nếu đúng trả về False.
+ Bước 2: Kiểm tra n = 2, nếu đúng trả về True.
+ Bước 3: Kiểm tra tính nguyên tố của n và trả kết quả kiểm tra True hoặc False.
+ Bước 4: Kết thúc.
- Nhận thấy Bước 1 và Bước 2 đã chi tiết và đơn giản nên có thể chuyển thành câu lệnh Python dễ dàng.
- Bước 3 “Kiểm tra tính nguyên tố của n với n>2” cần được chi tiết và “làm mịn dần” lần lượt theo từng nhận xét sau:
+ Nhận xét 1: Nếu n chia hết cho số nguyên dương k (2≤k<n) thì n không là số nguyên tố. Bước 3 có thể được chi tiết như sau:
* Với mỗi số nguyên dương k trong khoảng 2 ≤ k < n.
* Nếu n chia hết cho k thì n không là số nguyên tố.
* Các số k (2 ≤k< n) được biểu diễn qua hàm range bằng câu lệnh: range(2,n).
- Hình 1 minh hoạ mã giả và các câu lệnh Python kiểm tra số nguyên tố sau khi chỉ tiết Bước 3 theo Nhận xét 1.
+ Nhận xét 2: Ta chỉ cần kiểm tra với k không lớn hơn căn bậc hai của n.
+ Cách chi tiết cho Bước 3:
* Với k từ 2 đến căn bậc hai của n.
* Nếu n chia hết cho k thì n không là số nguyên tố.
* Các số k (2 ≤ k ≤ căn bậc hai của n) được biểu diễn qua hàm range bằng câu lệnh: range(2, int(math.sqrt(n))+1).
Hình 2 minh hoạ mã giả và các câu lệnh Python kiểm tra số nguyên tố ở Bước 3 sau khi chi tiết theo Nhận xét 2.
+ Nhận xét 3: Số chẵn lớn hơn 2 không là số nguyên tố. Chỉ cần kiểm tra với k lẻ và không lớn hơn √n.
* Nếu n chẵn và n>2 thì n không là số nguyên tố.
* Kiểm tra n chia hết cho k với k lẻ và 3
* Các số k lẻ (3 ≤ k ≤ √n) được biểu diễn qua hàm range bằng câu lệnh: range (3, int (math.sqrt (n)) +1,2).
Hình 3 minh hoạ mã giả và các câu lệnh Python kiểm tra số nguyên tố ở Bước 3 sau khi chi tiết theo Nhận xét 3.
- Ví dụ 2. Bài toán sàng số nguyên tố: Cho trước số tự nhiên n, hãy sàng lọc chỉ giữ lại những số là số nguyên tố trong dãy {0, 1, 2,..., n}.
+ Đầu vào: một số nguyên dương n
+ Đầu ra: in ra danh sách tương ứng đánh dấu True (là số nguyên tố) hay False (là hợp số).
- Thuật toán thô:
- Bước 1. Tạo danh sách prime gồm n + 1 giá trị logic True;
- Bước 2. Với m ≥ 2, kiểm tra nếu m là một bội số của k (k < m) thì gán prime[m] = False;
- Bước 3. Gán prime[0] = False; prime[1] = False.
- Một cách chi tiết Bước 2 như sau:
+ Bắt đầu với m = 3;
+ Lặp khi m ≤n:
+ Nếu với k nào đó (2 ≤ k ≤ m − 1) mà m chia hết cho k thì m không là số nguyên tố; m ¬ m+1
+ Hết lặp
- Mã giả và các câu lệnh Python tương ứng cho Bước 2 có trong Hình 4.
- Thuật toán sàng Eratosthenes tìm tất cả các số nguyên tố nhỏ hơn hay bằng n bằng cách đánh dấu các số không phải số nguyên tố là "hợp số".
- Dựa trên ý tưởng đục bỏ dần các số không nguyên tố được cho là tìm ra bởi nhà toán học Hy Lạp trước Công nguyên Eratosthenes.
B. Bài tập Làm mịn dần từng bước từ thuật toán đến chương trình máy tính
Đang cập nhật…
Xem thêm các bài lý thuyết Tin học 11 sách Cánh diều hay, chi tiết tại:
Lý thuyết Bài 5: Đánh giá thuật toán
Lý thuyết Bài 6: Kiểm thử và sửa lỗi chương trình
Lý thuyết Bài 7: Lập trình giải bài toán tìm kiếm
Xem thêm các chương trình khác:
- Soạn văn lớp 11 Cánh diều (hay nhất)
- Văn mẫu lớp 11 - Cánh diều
- Tóm tắt tác phẩm Ngữ văn 11 – Cánh diều
- Tác giả tác phẩm Ngữ văn 11 - Cánh diều
- Giải SBT Ngữ văn 11 – Cánh diều
- Bố cục tác phẩm Ngữ văn 11 – Cánh diều
- Giải Chuyên đề học tập Ngữ văn 11 – Cánh diều
- Nội dung chính tác phẩm Ngữ văn lớp 11 – Cánh diều
- Soạn văn 11 Cánh diều (ngắn nhất)
- Giải sgk Toán 11 – Cánh diều
- Giải Chuyên đề học tập Toán 11 – Cánh diều
- Lý thuyết Toán 11 - Cánh diều
- Giải sbt Toán 11 – Cánh diều
- Giải sgk Tiếng Anh 11 – ilearn Smart World
- Giải sbt Tiếng Anh 11 - ilearn Smart World
- Trọn bộ Từ vựng Tiếng Anh 11 ilearn Smart World đầy đủ nhất
- Giải sgk Vật lí 11 – Cánh diều
- Lý thuyết Vật lí 11 – Cánh diều
- Giải sbt Vật lí 11 – Cánh diều
- Giải Chuyên đề học tập Vật lí 11 – Cánh diều
- Giải sgk Hóa học 11 – Cánh diều
- Giải Chuyên đề học tập Hóa học 11 – Cánh diều
- Lý thuyết Hóa 11 - Cánh diều
- Giải sbt Hóa học 11 – Cánh diều
- Giải sgk Sinh học 11 – Cánh diều
- Lý thuyết Sinh học 11 – Cánh diều
- Giải Chuyên đề học tập Sinh học 11 – Cánh diều
- Giải sbt Sinh học 11 – Cánh diều
- Giải sgk Giáo dục Kinh tế và Pháp luật 11 – Cánh diều
- Giải Chuyên đề học tập Kinh tế pháp luật 11 – Cánh diều
- Lý thuyết Kinh tế pháp luật 11 – Cánh diều
- Giải sbt Kinh tế pháp luật 11 – Cánh diều
- Giải sgk Lịch sử 11 – Cánh diều
- Giải Chuyên đề học tập Lịch sử 11 – Cánh diều
- Lý thuyết Lịch sử 11 - Cánh diều
- Giải sbt Lịch sử 11 – Cánh diều
- Giải sgk Địa lí 11 – Cánh diều
- Giải Chuyên đề học tập Địa lí 11 – Cánh diều
- Lý thuyết Địa lí 11 - Cánh diều
- Giải sbt Địa lí 11 – Cánh diều
- Giải sgk Công nghệ 11 – Cánh diều
- Lý thuyết Công nghệ 11 - Cánh diều
- Giải sbt Công nghệ 11 – Cánh diều
- Giải sgk Giáo dục quốc phòng an ninh 11 – Cánh diều
- Lý thuyết Giáo dục quốc phòng 11 – Cánh diều
- Giải sbt Giáo dục quốc phòng 11 – Cánh diều
- Giải sgk Hoạt động trải nghiệm 11 – Cánh diều