Câu hỏi: Khi lập trình giải bài toán theo một thuật toán đã cho, em sẽ bắt đầu như thế nào? Theo em cách làm như thế có đúng phương pháp không?
Hướng dẫn trả lời:
- Cần hiểu và thành thạo các thuật toán.
- Phải nắm được yêu cầu của đề bài và lựa chọn thuật toán thích hợp.
Câu 1: Mô tả thuật toán bằng liệt kê các bước còn chứa nhiều cụm từ của ngôn ngữ tự nhiên, mỗi cụm từ nêu một việc phải làm. Để lập trình thực hiện thuật toán, cần làm chi tiết dần từng bước. Theo em, đây có phải là “chia để trị” hay không? Vì sao?
Hướng dẫn trả lời:
Theo em, đây là “chia để trị” => Làm mịn dẫn các bước mô tả thuật toán là để tiến gắn hơn đến các câu lệnh của ngôn ngữ lập trình. Ở đây, chọn sử dụng mã code để trình bày, vì nó ngắn gọn, dễ hiểu và không phụ thuộc vào ngôn ngữ lập trình cụ thể.
Cách thức chung: Chuyển đổi các cụm từ mô tả một "nhiệm vụ" cần thực hiện thành các đoạn mã code để tiến dần đến các câu lệnh cụ thể của chương trình.
Câu 1: Hãy nêu một điều kiện sàng khác cho bài toán sàng số: in ra danh sách các số nguyên dương nhỏ hơn n và thoả mãn điều kiện sàng mới. Gợi ý: Ví dụ "không là số chính phương”.
Hướng dẫn trả lời:
Gợi ý:
Khái niệm về số chính phương trong Python cũng tương tự như đã mô tả ở trên. Chúng ta xem xét một số là số chính phương trong Python nếu nó là kết quả của việc bình phương của một số tự nhiên. Điều quan trọng đầu tiên là rằng nó giúp chúng ta xác định số chính phương trong Python.
Nói cách khác, căn bậc 2 của một số chính phương chính là một số tự nhiên. Điều quan trọng thứ hai là rằng nó giúp chúng ta xác định số chính phương trong Python.
Câu 2: Viết mô tả mã giả cho thuật toán tương ứng với Câu 1
Hướng dẫn trả lời:
Mô tả mã giả cho thuật toán tương tự:
def find_square_number(n):
#flag = 1 => số chính phương
#flag = 0 => không phải số chính phương
flag = 0;
#Tìm số bất kỳ nhỏ hơn hoặc bằng n mà bình phương bằng n
if any(i**2 == n for i in range(n+1)):
flag = 1
return flag