logo

Soạn Tin học 11 Kết nối tri thức Bài 23: Kiểm thử và đánh giá chương trình (trang 106, 110)

Hướng dẫn Soạn Tin học 11 Kết nối tri thức Bài 23: Kiểm thử và đánh giá chương trình (trang 106, 110) ngắn gọn, hay nhất theo chương trình Sách mới.

Bài 23: Kiểm thử và đánh giá chương trình

Lý thuyết Tin học 11 Kết nối tri thức Bài 23: Kiểm thử và đánh giá chương trình

Sơ đồ tư duy Tin học 11 Kết nối tri thức Bài 23: Kiểm thử và đánh giá chương trình


1. Hãy xây dựng các bộ dữ liệu kiểm thử đề tìm lỗi cho chương trình tính n! với n là một số nguyên dương nhập từ bàn phím.

Trả lời:

Để xác định các bộ dữ liệu kiểm thử cho chương trình tính n!, chúng ta cần phân tích các trường hợp lỗi có thể xảy ra. Các trường hợp lỗi thường gặp khi tính toán n! bao gồm:

1. Giá trị đầu vào không hợp lệ: n không phải là số nguyên dương.

2. Giá trị đầu vào quá lớn: tính toán n! có thể vượt quá giới hạn của kiểu số nguyên dùng để lưu trữ kết quả.

Dựa trên phân tích trên, chúng ta có thể xây dựng các bộ dữ liệu kiểm thử như sau:

a. Bộ kiểm thử cho trường hợp n là số nguyên dương hợp lệ.

- Giá trị n = 1

- Giá trị n = 5

- Giá trị n = 10

b. Bộ kiểm thử cho trường hợp n không phải là số nguyên dương hợp lệ.

- Giá trị n = -5

- Giá trị n = 0

- Giá trị n = 3.5

c. Bộ kiểm thử cho trường hợp n là số nguyên dương quá lớn.

- Giá trị n = 100

- Giá trị n = 1000

- Giá trị n = 10000

Chúng ta nên kiểm tra kết quả trả về của chương trình với các giá trị đầu vào trong các bộ kiểm thử trên và đảm bảo rằng kết quả trả về là đúng và không có lỗi xảy ra.


2. Cho dãy các số A = (3, 1, 0, 10, 13, 16, 9, 7, 5, 11].

a) Viết chương trình mô tả thuật toán tìm kiếm phần tử C = 9 của dãy trên. Tính thời gian chính xác thực hiện công việc tìm kiếm này.

b) Giả sử dây A ở trên đã được sắp xếp theo thứ tự tăng dần: A= [4,3,5,7,8, 10, 11, 13. 16]. Viết chương trình tìm kiếm nhị phân để tìm kiếm phân tử C = 9, đo thời gian thực hiện thuật toán. So sánh với kết quả 1ìm kiếm ở câu a.

* Gợi ý:

1. Khởi tạo i = 0.

2. So sánh phần tử thứ i trong mảng A với giá trị x:

- Nếu A[i] bằng x thì trả về giá trị i (vị trí của x trong mảng A) và dừng thuật toán.

- Nếu A[i] khác x thì tăng giá trị của i lên 1 và tiếp tục so sánh với phần tử tiếp theo trong mảng.

3. Nếu i đạt đến vị trí cuối cùng của mảng (tức i = n) thì trả về giá trị -1 (không tìm thấy x) và dừng thuật toán. Ngược lại, quay lại bước 2.


3. Viết ba chương trình mô phỏng các thuật toán sắp xếp chèn, sắp xếp chọn và sắp xếp nổi bọt mà em đã biết. Cho biết thời gian thực tế thực hiện các chương trình trên với bộ dữ liệu đầu vào là dãy A = {3, 1, 0, 10, 13, 16, 9,7, 5, T1]

Trả lời:

* Chương trình mô phỏng thuật toán sắp xếp chèn:

def insertion_sort(A):
   n = len(A)
   for i in range(1, n):
       key = A[i]
       j = i - 1
       while j >= 0 and A[j] > key:
           A[j+1] = A[j]
           j -= 1
       A[j+1] = key
   return A

A = [3, 1, 0, 10, 13, 16, 9, 7, 5, "T1"]
print("Before sorting:", A)
A = insertion_sort(A)
print("After sorting:", A)

* Chương trình mô phỏng thuật toán sắp xếp chọn:

def selection_sort(A):
   n = len(A)
   for i in range(n):
       min_idx = i
       for j in range(i+1, n):
           if A[j] < A[min_idx]:
               min_idx = j
       A[i], A[min_idx] = A[min_idx], A[i]
   return A

A = [3, 1, 0, 10, 13, 16, 9, 7, 5, "T1"]
print("Before sorting:", A)
A = selection_sort(A)
print("After sorting:", A)

* Chương trình mô phỏng thuật toán sắp xếp nổi bọt:

def bubble_sort(A):
   n = len(A)
   for i in range(n-1):
       for j in range(n-i-1):
           if A[j] > A[j+1]:
               A[j], A[j+1] = A[j+1], A[j]
   return A

A = [3, 1, 0, 10, 13, 16, 9, 7, 5, "T1"]
print("Before sorting:", A)
A = bubble_sort(A)
print("After sorting:", A)

* Để tính toán thời gian thực tế thực hiện các chương trình trên, chúng ta cần sử dụng module timeit của Python. Đoạn mã sau đây sử dụng module timeit để đo thời gian thực tế thực hiện các chương trình trên với dữ liệu đầu vào là dãy A = [3, 1, 0, 10, 13, 16, 9, 7, 5, "T1"]:

import timeit

A = [3, 1, 0, 10, 13, 16, 9, 7, 5, "T1"]

# Measure execution time of insertion sort
insertion_sort_time = timeit.timeit(stmt='insertion_sort(A)',
                                   setup='from __main__ import insertion_sort, A',
                                   number=10000)

# Measure execution time of selection sort
selection_sort_time = timeit.timeit(stmt='selection_sort(A)',
                                   setup='from __main__ import selection_sort, A',
                                   number=10000)

# Measure execution time of bubble sort
bubble_sort_time = timeit.timeit(stmt='bubble_sort(A)',
                                   setup='from __main__ import bubble_sort, A',
                                   number=10000)

print("Insertion sort execution time:", insertion_sort_time)
print("Selection sort execution time:", selection_sort_time

>>> Xem toàn bộ: Soạn Tin 11 Kết nối tri thức

-------------------------------------

Trên đây Toploigiai đã cùng các bạn Soạn Tin học 11 Kết nối tri thức Bài 23 trang 106, 110: Kiểm thử và đánh giá chương trình trong bộ SGK Kết nối tri thức theo chương trình sách mới. Chúng tôi hi vọng các bạn đã có kiến thức hữu ích khi đọc bài viết này. Click vào trang chủ Toploigiai để tham khảo và chuẩn bị bài cho năm học mới nhé. Chúc các bạn học tốt!

icon-date
Xuất bản : 24/02/2023 - Cập nhật : 19/07/2023

Tham khảo các bài học khác