Bỏ qua nội dung

B.1 · Tư duy tính toán

Tổ chức Baccalaureate Quốc tế · IB Diploma · Computer Science · HL · Chủ đề 5

5.1

Phạm vi và yêu cầu tiên quyết

Trọng tâm HL được hỗ trợ. Mục tiêu đánh giá 2027 đầu tiên; PDF chính thức trả về 403; brief thu hồi cũ là đánh giá cuối cùng 2026. Hướng dẫn còn lại, yêu cầu đánh giá và thực tiễn đều giữ nguyên các mức lưu trữ đã ghi.

Yêu cầu tiên quyết: đọc các đại lượng và đơn vị được nêu, sử dụng phép tính toán và các điều kiện mô hình dưới đây. Mỗi bài học sẽ phát triển phương pháp riêng trước khi chuyển giao độc lập.

Đây là các ví dụ giảng dạy gốc hoặc được ghi rõ là hư cấu, không phải là các phép đo thực tế hay các nghiên cứu đánh giá học viên đã hoàn tất.

5.2

Thuật toán, quá trình theo dõi và bằng chứng tính đúng đắn

Giải thích hiện tượng này là gì?

  • Một thuật toán có thể hoạt động tốt với một ví dụ nhưng thất bại ở biên. Việc thử nghiệm nên được thiết kế dựa trên yêu cầu, không chỉ dựa trên đường dẫn thành công (happy path).
  • Bắt đầu bằng một dự đoán. Nêu rõ các đại lượng hoặc đặc điểm bạn sẽ so sánh, sau đó quyết định bằng chứng nào có thể phân biệt hai lời giải thích.

Xây dựng mô hình

  • Một thuật toán là một thủ tục hữu hạn, không mơ hồ cho một tác vụ. Một bản theo dõi (trace) ghi lại các thay đổi trạng thái. Một bất biến vòng lặp mô tả một đặc tính được bảo toàn qua mỗi lần lặp và giúp chứng minh tính đúng đắn.
  • Thuật toán: Một quy trình hữu hạn giải quyết một nhiệm vụ được nêu rõ; Kiểm tra biên: Một bài kiểm tra tại giới hạn của phạm vi đầu vào được cho phép.
Sơ đồ ví dụ giải chi tiết: thuật toán, dấu vết và bằng chứng tính đúng đắn

Chọn bằng chứng để kiểm định mô hình

  • Nêu điều kiện đầu vào và đầu ra mong đợi. Sử dụng các trường hợp biên, tập rỗng khi được phép, các giá trị trùng lặp và không hợp lệ. Phân biệt thuật toán sai với việc triển khai sai hoặc yêu cầu chưa đầy đủ.
  • Theo dõi quá trình tìm kiếm trên một danh sách sắp xếp giả nhỏ. Nêu quy ước đánh chỉ số. Đối với tìm kiếm nhị phân, cập nhật các cận sao cho khoảng còn lại thu hẹp lại và từ chối đầu vào không sắp xếp trừ khi việc sắp xếp là một phần của tác vụ.

Bắt đầu từ các đại lượng đã biết

  • Nêu các giá trị đã biết và đơn vị của chúng. Chọn công thức vì các giả thiết của nó phù hợp với trường hợp này, sau đó biến đổi trước khi thay số.
  • Đã biết: tìm kiếm tuyến tính trên danh sách tám phần tử có thể yêu cầu tám phép so sánh khi phần tử cần tìm nằm ở cuối hoặc không tồn tại. Nhân đôi độ dài danh sách sẽ làm tăng gấp đôi số phép so sánh trong trường hợp xấu nhất theo mô hình này. Tìm kiếm nhị phân giảm khoảng cách đi khoảng một nửa mỗi bước nhưng yêu cầu cấu trúc thứ tự phù hợp.

Ví dụ:

Một tìm kiếm tuyến tính quét hết tất cả 14 phần tử mà không tìm thấy khớp. Có bao nhiêu phép so sánh phần tử xảy ra? Sử dụng cùng trình tự: đại lượng đã biết → mô hình → mối quan hệ → thay thế → đơn vị và diễn giải.


Kiểm tra kết luận và giới hạn của nó

  • Một thử nghiệm mẫu thành công không chứng minh tính đúng đắn đối với tất cả các đầu vào hợp lệ. Không đưa cú pháp giả mã cụ thể của Cambridge vào chương trình IB nếu không có nguồn gốc từ khóa học.
  • Quay trở lại quan sát ban đầu. Giải thích kết quả hỗ trợ điều gì, những điều kiện nào mà nó giả định, và một cách để kiểm chứng một giải thích cạnh tranh.

Cảnh báo:

Một thử nghiệm mẫu thành công chứng minh thuật toán đúng đắn đối với mọi đầu vào hợp lệ. Tuyên bố này là sai: Một thử nghiệm mẫu thành công không chứng minh tính đúng đắn đối với tất cả các đầu vào hợp lệ. Không đưa cú pháp giả mã cụ thể của Cambridge vào chương trình IB nếu không có nguồn gốc từ khóa học.

Tóm tắt:

Thuật toán, bản theo dõi và bằng chứng về tính đúng đắn: Nêu điều kiện đầu vào và đầu ra mong đợi. Sử dụng các trường hợp biên, tập rỗng khi được phép, các giá trị trùng lặp và không hợp lệ. Phân biệt thuật toán sai với việc triển khai sai hoặc yêu cầu chưa đầy đủ.

Chuỗi thực thi chạy được và ranh giới

def first_index(values, target):
    for index, value in enumerate(values):
        if value == target:
            return index
    return -1
print(first_index([4, 7, 4], 4))
print(first_index([4, 7, 4], 9))
print(first_index([], 4))

Kết quả mong đợi:

0
-1
-1

Vòng lặp kiểm tra index 0 trước, dừng lại khi tìm thấy matches, và chỉ trả về −1 sau khi duyệt hết danh sách. Do đó, các bản sao trùng sẽ trả về index đầu tiên. Danh sách rỗng sẽ không thực thi thân vòng lặp.

Từ vựng Luyện tập
English Tiếng Việt
algorithm/ˈælɡərɪθəm/ thuật toán
boundary test/ˈbaʊndəri test/ kiểm tra biên

Nhiều chủ đề hơn trong Tổ chức Baccalaureate Quốc tế · IB Diploma · Computer Science · HL

Đăng nhập hoặc tạo tài khoản

IGCSE, A-Level & AP