Font size
WorksheetsKiểm thử và đánh giá chương trình
Total questions: 107
Worksheet time: 1hrs 20mins
Phương pháp kiểm thử nào dưới đây có thể giúp tăng độ tin cậy của chương trình nhưng không chứng minh được tính đúng của thuật toán?
Kiểm thử bằng chứng minh lôgic toán học
Sử dụng các bộ dữ liệu kiểm thử
Sử dụng phương pháp quy nạp toán học
Xem xét thời gian chạy của chương trình
Phương pháp nào sau đây thường được sử dụng để chứng minh tính đúng của thuật toán một cách chắc chắn?
Kiểm thử bằng cách chạy nhiều lần
Dùng dữ liệu kiểm thử ngẫu nhiên
Chứng minh bằng lôgic toán học
Kiểm tra độ phức tạp tính toán
Mục đích chính của việc kiểm thử chương trình là gì?
Đảm bảo chương trình chạy nhanh nhất có thể
Phát hiện lỗi và sửa lỗi để tăng độ tin cậy của chương trình
Chứng minh chương trình không bao giờ sai
Đánh giá khả năng tối ưu của thuật toán
Trong kiểm thử chương trình, tại sao không thể chỉ dựa vào các bộ dữ liệu kiểm thử để chứng minh tính đúng của thuật toán?
Vì các bộ dữ liệu kiểm thử thường có sai sót
Vì kiểm thử không kiểm tra được tất cả các tình huống có thể xảy ra
Vì thuật toán luôn có khả năng chạy sai
Vì kiểm thử chỉ làm tăng thời gian chạy của chương trình
Tiêu chí nào dưới đây thường được xem xét khi đánh giá hiệu quả của một thuật toán?
Tính đơn giản và dễ hiểu
Thời gian và không gian bộ nhớ sử dụng
Khả năng phát hiện lỗi tự động
Độ dài của mã lệnh
Một chương trình có thể tối ưu về mặt thời gian nhưng không tối ưu về mặt nào dưới đây?
Tính đúng của thuật toán
Dung lượng bộ nhớ sử dụng
Khả năng kiểm thử
Độ phức tạp logic
Trong kiểm thử chương trình, tại sao nên sử dụng các bộ dữ liệu có tính đa dạng cao?
A. Để kiểm tra độ nhanh chậm của thuật toán
B. Để tăng khả năng phát hiện lỗi trong các trường hợp khác nhau
C. Để giúp chương trình dễ hiểu hơn
D. Để giảm thời gian chạy chương trình
Trong kiểm thử chương trình, tại sao nên sử dụng các bộ dữ liệu có tính đa dạng cao?
Để kiểm tra độ nhanh chậm của thuật toán
Để tăng khả năng phát hiện lỗi trong các trường hợp khác nhau
Để giúp chương trình dễ hiểu hơn
Để giảm thời gian chạy chương trình
Độ phức tạp tính toán của một thuật toán chủ yếu đánh giá điều gì?
Tính đơn giản của thuật toán
Tài nguyên phần cứng cần thiết để chạy chương trình
Tốc độ thực thi và bộ nhớ cần thiết cho chương trình
Khả năng kiểm tra lỗi của chương trình
Trong các lựa chọn sau, đâu là lợi ích của việc sử dụng các bộ dữ liệu kiểm thử?
Chứng minh thuật toán chạy đúng cho mọi trường hợp
Tăng độ tin cậy của chương trình
Giảm thời gian cần để viết mã
Đảm bảo bộ nhớ sử dụng tối thiểu
Phương pháp quy nạp toán học thường được sử dụng để làm gì trong kiểm thử chương trình?
Để tìm và sửa lỗi trong mã lệnh
Để chứng minh tính đúng của thuật toán
Để đo độ phức tạp của chương trình
Để đánh giá dung lượng bộ nhớ sử dụng
Phương pháp nào sau đây không phải là phương pháp kiểm thử chương trình?
Chạy chương trình theo từng lệnh để tìm lỗi.
In dữ liệu trung gian để kiểm tra giá trị.
Tự động xóa lỗi trong mã nguồn.
Tạo các bộ dữ liệu kiểm thử.
Phương pháp bất biến vòng lặp có tác dụng gì trong kiểm chứng thuật toán?
Giúp phát hiện và loại bỏ lỗi trong chương trình.
Giúp đánh giá độ phức tạp của thuật toán.
Giúp chứng minh thuật toán đúng bằng lập luận toán học.
Giúp tăng tốc quá trình kiểm thử chương trình.
Khi một chương trình được kiểm thử với 10 bộ dữ liệu và có 9 lần cho kết quả đúng, ta có thể kết luận gì?
Chương trình chỉ sai với dữ liệu đầu vào nhất định.
Chương trình hoàn toàn đúng
C. Chương trình không có lỗi.
D. Chương trình có thể vẫn còn lỗi.
Câu 13: Khi một chương trình được kiểm thử với 10 bộ dữ liệu và có 9 lần cho kết quả đúng, ta có thể kết luận gì?
Chương trình chỉ sai với dữ liệu đầu vào nhất định.
Chương trình hoàn toàn đúng.
Chương trình không có lỗi.
Chương trình có thể vẫn còn lỗi.
Câu 14: Nếu cần kiểm thử chương trình tính tổng các số chẵn trong một danh sách, bộ dữ liệu nào dưới đây giúp kiểm thử hiệu quả nhất?
[1, 3, 5, 7]
[2, 4, 6, 8]
[2, 3, 4, 5, 6]
[0]
Câu 15: Tại sao kiểm thử chương trình không thể chứng minh chương trình đúng hoàn toàn?
Do không có cách nào loại bỏ hết lỗi trong chương trình.
Do kiểm thử không thay thế được việc chứng minh toán học.
Do kiểm thử chỉ giúp giảm lỗi chứ không đảm bảo tính đúng.
Do không thể kiểm thử với mọi bộ dữ liệu đầu vào.
Câu 16: Kiểm thử chương trình có vai trò gì?
Giúp tìm ra lỗi và tăng độ tin cậy của chương trình.
Xóa bỏ các đoạn mã thừa trong chương trình.
Giúp chương trình chạy nhanh hơn.
Chứng minh chương trình hoàn toàn đúng.
Câu 17: Khi đánh giá hiệu quả của thuật toán, tiêu chí nào quan trọng nhất?
Độ dài mã nguồn.
Độ phức tạp không gian.
Mức độ dễ hiểu của chương trình.
Độ phức tạp thời gian.
Câu 18: Trong kiểm thử chương trình, việc thiết lập điểm dừng (breakpoint) có mục đích gì?
Dừng chương trình ngay khi gặp lỗi.
Giúp theo dõi giá trị biến tại từng bước thực thi.
Tăng tốc độ thực thi chương trình.
Tự động sửa lỗi.
Câu 19: Câu lệnh nào trong Python giúp đo thời gian thực thi chương trình?
import perf_counter; perf_counter()
import clock; clock.start(); clock.stop(); print(clock.time())
from datetime import now; print(now())
import time; start = time.time(); end = time.time(); print(end - start)
Câu 20: Một thuật toán được coi là đúng khi nào?
D. Khi chương trình chạy không có lỗi.
B. Khi kiểm thử với nhiều bộ dữ liệu khác nhau đều cho kết quả đúng.
C. Khi được chứng minh bằng lập luận toán học.
D. Khi chương trình chạy không có lỗi.
Một thuật toán được coi là đúng khi nào?
Khi thời gian chạy của thuật toán nhanh hơn các thuật toán khác.
Khi kiểm thử với nhiều bộ dữ liệu khác nhau đều cho kết quả đúng.
Khi được chứng minh bằng lập luận toán học.
Khi chương trình chạy không có lỗi.
Mục đích chính của việc sử dụng các bộ dữ liệu kiểm thử là gì?
Chứng minh tính đúng đắn tuyệt đối của chương trình.
Kiểm tra độ tin cậy của chương trình bằng cách phát hiện lỗi có thể có.
Đánh giá tốc độ thực thi của chương trình.
Đảm bảo chương trình tiết kiệm bộ nhớ tối đa.
Tiêu chí nào dưới đây là quan trọng nhất khi đánh giá hiệu quả của một thuật toán?
Thời gian chạy nhanh hơn các thuật toán khác cùng giải bài toán.
Sử dụng bộ nhớ ít nhất có thể.
Chương trình phải rõ ràng, dễ hiểu và dễ áp dụng.
Phải chứng minh được tính đúng đắn tuyệt đối của thuật toán.
Kiểm thử chương trình là quá trình kiểm tra và đánh giá để phát hiện lỗi, đảm bảo chương trình hoạt động chính xác theo yêu cầu. Dù kiểm thử không thể loại bỏ hoàn toàn lỗi, nhưng nó giúp cải thiện chất lượng và độ tin cậy của phần mềm. Hãy đánh giá tính đúng hoặc sai của các phát biểu sau:
Kiểm thử bằng nhiều bộ dữ liệu giúp tăng khả năng phát hiện lỗi.
Nếu một chương trình chạy đúng với tất cả bộ dữ liệu kiểm thử thì nó chắc chắn đúng.
Kiểm thử giúp loại bỏ hoàn toàn lỗi trong chương trình.
Kiểm thử giúp tăng độ tin cậy của chương trình.
Đánh giá hiệu quả chương trình là quá trình phân tích và so sánh các thuật toán dựa trên các tiêu chí như độ phức tạp thời gian (thời gian thực thi) và độ phức tạp không gian (bộ nhớ
Đánh giá tính đúng hoặc sai của các phát biểu sau: a) Một chương trình đơn giản nhưng có độ phức tạp cao vẫn được coi là hiệu quả. b) Độ phức tạp không gian chỉ quan trọng với những bài toán lớn. c) Độ phức tạp thời gian quan trọng hơn độ phức tạp không gian trong hầu hết các bài toán. d) Các thuật toán có cùng kết quả nhưng có thể có mức độ hiệu quả khác nhau.
Đúng
Sai
Độ phức tạp thời gian của phép nhân hai số nguyên có n chữ số, như trong ví dụ của Karatsuba, là bao nhiêu?
O(n)
O(nlogn)
O(n2)
O(n1.585)
Trong chương trình 1 ở Hình 24.2, tổng số đơn vị thời gian để thực hiện toàn bộ chương trình là bao nhiêu?
n+3
n2+2n2 + 2n2+2
2n+3
n3+3n2 + 3n2+3
Trong chương trình 2 ở Hình 24.2, độ phức tạp thời gian của vòng lặp lồng nhau là gì?
O(n)
O(logn)
O(n2)
O(1)
Ký hiệu O(n) trong phân tích độ phức tạp thời gian biểu thị điều gì?
Chương trình có độ phức tạp tuyến tính
Chương trình có độ phức tạp bình phương
Chương trình có độ phức tạp mũ
Chương trình có độ phức tạp hàng số
Quy tắc cộng trong tính độ phức tạp thời gian của thuật toán được áp dụng trong trường hợp nào?
Khi có vòng lặp lồng nhau
Khi thực hiện hai chương trình nối tiếp nhau
Khi thực hiện phép toán nhân
Khi thực hiện phép toán chia
Nếu chương trình có độ phức tạp thời gian T(n)=n2+3n+1 độ phức tạp thời gian của nó là gì?
O(n2)
O(n)
O(logn)
O(n3)
Độ phức tạp thời gian của thuật toán sắp xếp chọn là bao nhiêu?
O(n)
O(logn)
O(n2)
O(nlogn)
Trong trường hợp nào độ phức tạp thời gian của chương trình là O(1)?
Khi chương trình có vòng lặp lồng nhau
Khi chương trình chỉ có các phép toán đơn và không phụ thuộc vào n
Khi chương trình có độ phức tạp tuyến tính
Khi chương trình có độ phức tạp lũy thừa
Ký hiệu O(logn) được dùng khi độ phức tạp thời gian của thuật toán là gì?
Tuyến tính
Logarit
Đa thức
Mũ
Để tính độ phức tạp thời gian của chương trình với các phép toán lồng nhau, ta áp dụng quy tắc nào?
Quy tắc cộng
Quy tắc nhân
Quy tắc chia
Quy tắc cộng và chia
Độ phức tạp thời gian của thuật toán là gì?
Dung lượng bộ nhớ chương trình sử dụng.
Số phép toán cần thực hiện theo kích thước đầu vào.
Thời gian thực thi chương trình trên máy tính.
Số lần chạy chương trình trên máy tính.
Trong chương trình có vòng lặp lồng nhau, cách xác định độ phức tạp thời gian như thế nào?
Đếm tất cả các câu lệnh được thực hiện.
Đo thời gian thực thi của chương trình.
Cộng tổng số vòng lặp trong chương trình.
Nhân số lần lặp của các vòng lặp với nhau.
Độ phức tạp thời gian của thuật toán tìm kiếm nhị phân là bao nhiêu?
O(n)
O(log n)
O(1)
O(n²)
Nếu một thuật toán có độ phức tạp thời gian O(n²), điều này có nghĩa là gì?
Thời gian thực thi không phụ thuộc vào n.
Thời gian thực thi tăng theo bình phương của n.
Thời gian thực thi giảm khi n tăng.
Thời gian thực thi tăng gấp đôi khi n tăng gấp
ày có nghĩa là gì?
Thời gian thực thi không phụ thuộc vào n.
Thời gian thực thi tăng theo bình phương của n.
Thời gian thực thi giảm khi n tăng.
Thời gian thực thi tăng gấp đôi khi n tăng gấp đôi.
Kí hiệu O-lớn (Big-O) dùng để làm gì?
Đánh giá độ phức tạp thuật toán khi dữ liệu tăng.
Đo lường tốc độ thực thi của bộ xử lý.
Xác định tần suất chương trình gặp lỗi.
Đánh giá mức tiêu thụ năng lượng hệ thống.
Thuật toán nào sau đây có độ phức tạp thời gian O(n log n)?
Sắp xếp chọn.
Sắp xếp nổi bọt.
Tìm kiếm tuyến tính.
Sắp xếp nhanh.
Chương trình sau có độ phức tạp thời gian là bao nhiêu?
O(log n)
O(1)
O(n²)
O(n)
Khi đánh giá độ phức tạp thời gian thuật toán, phép toán nào được coi là phép toán tích cực?
Phép toán có độ phức tạp cao nhất.
Phép toán có kết quả lớn nhất.
Phép toán được thực hiện nhiều nhất trong thuật toán.
Phép toán xuất hiện ở dòng đầu tiên của chương trình.
Trong các chương trình sau, chương trình nào có độ phức tạp thấp nhất?
Chương trình với vòng lặp O(n).
Chương trình với vòng lặp O(n²).
Chương trình với vòng lặp O(n log n).
Chương trình với vòng lặp O(log n).
Tại sao độ phức tạp O(1) được coi là tối ưu?
Vì nó giúp giảm đáng kể lượng bộ nhớ dùng.
Vì nó có thể giải quyết mọi bài toán dễ dàng.
Vì nó luôn có tốc độ cao hơn O(log n).
Vì thời gian chạy không đổi dù dữ liệu tăng.
Độ phức tạp thời gian của chương trình 1 trong Hình 24.2, với tổng thời gian tính toán là T1(n)=n+3, được đánh giá là:
O(1)
O(log n)
O(n)
O(n²)
g trình 1 trong Hình 24.2, với tổng thời gian tính toán là T1(n)=n+3, được đánh giá là:
O(1)
O(log n)
O(n)
O(n²)
Độ phức tạp thời gian của chương trình 2 trong Hình 24.2, với tổng thời gian tính toán là T2(n)=n2+3, được đánh giá là:
O(n)
O(n²)
O(log n)
O(1)
Độ phức tạp thời gian của một thuật toán biểu thị lượng thời gian cần thiết để thuật toán hoàn thành công việc dựa trên kích thước đầu vào. Việc hiểu rõ và so sánh các mức độ phức tạp giúp lựa chọn thuật toán tối ưu hơn. Hãy đánh giá tính đúng hoặc sai của các phát biểu sau:
Độ phức tạp O(n!) thường xuất hiện trong thuật toán quay lui (backtracking).
Độ phức tạp O(n²) luôn tốt hơn O(n log n).
Độ phức tạp O(1) luôn nhanh hơn O(log n).
Khi đánh giá thuật toán, cần ưu tiên thuật toán có độ phức tạp thấp nhất.
Ký hiệu O-lớn (Big-O) được sử dụng để mô tả tốc độ tăng trưởng của hàm chi phí tính toán khi kích thước đầu vào tăng lên. Nó giúp đánh giá hiệu suất của các thuật toán, đặc biệt là về thời gian và không gian. Hãy đánh giá tính đúng hoặc sai của các phát biểu sau:
Độ phức tạp O(n log n) thường xuất hiện trong các thuật toán sắp xếp hiệu quả.
Nếu một thuật toán có T(n) = O(n³), thì khi n tăng gấp đôi, thời gian thực thi tăng gấp 8 lần.
O(log n) tăng nhanh hơn O(n).
O(n²) có tốc độ tăng nhanh hơn O(n log n).
Câu 1: Trong thuật toán sắp xếp chèn, bước nào sau đây giúp tìm vị trí đúng để chèn phần tử A[i]?
while A[j] < value: j = j + 1
j = i - 1; while j >= 0 and A[j] > value: A[j+1] = A[j]; j = j - 1
for j in
thuật toán sắp xếp chèn, bước nào sau đây giúp tìm vị trí đúng để chèn phần tử A[i]?
A. while A[j] < value: j = j + 1
B. j = i - 1; while j >= 0 and A[j] > value: A[j+1] = A[j]; j = j - 1
C. for j in range(i): A[j] = A[j+1]
D. for j in range(i): if A[j] > A[i]: swap(A[j], A[i])
Trong phương pháp làm mịn dần, mỗi bước thực hiện điều gì?
A.Giảm số lượng dòng lệnh trong chương trình.
B. Làm rõ ý tưởng và cụ thể hóa chương trình.
C.Tự động tối ưu hóa các phần mã nguồn.
D.Tăng tốc độ thực thi của thuật toán.
Khi làm mịn thuật toán sắp xếp chèn, tại sao cần tạo biến value để lưu phần tử đang xét?
A.Để tăng tốc độ thực thi của cả chương trình.
B.Để giảm số lần so sánh các phần tử trong danh sách.
C. Để di chuyển phần tử trong danh sách không mất dữ liệu.
D.Để thay thế phần tử lớn nhất ở trong danh sách.
Phương pháp làm mịn dần trong thiết kế chương trình là gì?
A.Chia bài toán thành nhiều bước từ tổng quan đến chi tiết.
B.Viết ngay toàn bộ chương trình.
C.Kiểm thử chương trình trước khi viết mã.
D.Tạo một chương trình đơn giản trước khi làm chi tiết hơn.
Nếu thay thuật toán tìm vị trí chèn trong sắp xếp chèn bằng cách duyệt toàn bộ danh sách, điều gì sẽ xảy ra?
A.Thuật toán sẽ sai trong một số trường hợp.
B.Thuật toán sẽ vẫn đúng nhưng có thể chậm hơn.
C.Thuật toán sẽ nhanh hơn đáng kể.
D.Thuật toán sẽ không thay đổi về tốc độ.
Trong thuật toán sắp xếp chèn, bước đầu tiên trong quá trình làm mịn dần là gì?
A.So sánh phần tử thứ hai và phần tử đầu.
B.Phân chia danh sách thành hai phần riêng.
C.Xây dựng ý tưởng chèn từng phần tử.
D.Tìm phần tử nhỏ nhất từ đầu danh sách.
Trong phương pháp làm mịn dần, tại sao cần thực hiện từng bước từ ý tưởng tổng quát đến chi tiết?
A. Để dễ dàng kiểm soát và sửa lỗi.
B. Để giảm số lượng biến sử dụng trong chương trình.
C. Để tăng số lượng vòng lặp trong thu
Tại sao cần thực hiện từng bước từ ý tưởng tổng quát đến chi tiết?
Để dễ dàng kiểm soát và sửa lỗi.
Để giảm số lượng biến sử dụng trong chương trình.
Để tăng số lượng vòng lặp trong thuật toán.
Để viết chương trình ngắn gọn hơn.
Khi thiết kế thuật toán bằng phương pháp làm mịn dần, bước cuối cùng là gì?
Vẽ sơ đồ khối biểu diễn thuật toán đó.
Viết mã giả mô tả hoạt động thuật toán.
Viết mã lệnh hoàn chỉnh cho chương trình.
Chạy thử nghiệm chương trình trên máy tính.
Tại sao phương pháp làm mịn dần giúp thiết kế chương trình hiệu quả hơn?
Giảm bớt số dòng lệnh cần viết.
Giúp chương trình chạy nhanh hơn.
Giúp tổ chức chương trình rõ ràng và dễ hiểu hơn.
Tránh được tất cả các lỗi trong chương trình.
Trong bài toán đếm số cặp nghịch đảo của một dãy số, bước đầu tiên trong thiết kế chương trình là gì?
Xây dựng vòng lặp kiểm tra từng cặp số.
Xác định rõ điều kiện cặp số nghịch đảo.
Khởi tạo biến đếm số cặp nghịch đảo.
Xây dựng ý tưởng tổng quát đếm số cặp đó.
Phương pháp làm mịn dần trong thiết kế chương trình là gì?
Phương pháp làm giảm số lượng mã lệnh trong chương trình
Phương pháp chi tiết hóa các bước từ ý tưởng tổng quan đến từng hành động cụ thể
Phương pháp kiểm tra lỗi sau khi viết xong chương trình
Phương pháp tổ chức dữ liệu theo thứ tự tăng dần
Khi thiết kế chương trình theo phương pháp làm mịn dần, bước đầu tiên cần thực hiện là gì?
Xác định đầu vào và đầu ra của bài toán
Viết toàn bộ chương trình
Kiểm tra lỗi
Thực hiện từng thao tác cụ thể
Trong thuật toán sắp xếp chèn, tại bước đầu tiên của thiết kế, công việc nào được thực hiện?
Tạo biến mới để lưu giá trị cần chèn
Duyệt từ phần tử thứ hai đến phần tử cuối của dãy
Sắp xếp các phần tử theo thứ tự giảm dần
Tạo danh sách mới từ danh sách cũ
việc nào được thực hiện?
Tạo biến mới để lưu giá trị cần chèn
Duyệt từ phần tử thứ hai đến phần tử cuối của dãy
Sắp xếp các phần tử theo thứ tự giảm dần
Tạo danh sách mới từ danh sách cũ
Trong bước làm mịn "Chèn A[i] vào đúng vị trí", thao tác nào dưới đây là đúng?
So sánh A[i] với tất cả phần tử trong dãy
So sánh A[i] với các phần tử bên phải của nó
Chuyển các phần tử lớn hơn A[i] sang phải
Chèn A[i] vào vị trí đầu tiên của dãy
Sau khi chèn một phần tử vào vị trí đúng trong dãy sắp xếp chèn, ta có thể khẳng định gì?
Dãy đã hoàn toàn sắp xếp
Các phần tử từ A[0] đến A[i] đã được sắp xếp
Các phần tử từ A[i] đến A[n-1] đã được sắp xếp
Chỉ phần tử A[i] được sắp xếp
Trong chương trình đếm số cặp nghịch đảo, điều kiện kiểm tra nghịch đảo của cặp (i, j) là gì?
A[i] < A[j]
i > j
A[i] > A[j] và i < j
A[i] = A[j]
Câu lệnh nào dùng để thiết lập biến value lưu trữ giá trị của A[i] trong sắp xếp chèn?
value = A[i]
value = A[j+1]
A[i] = value
A[j+1] = value
Phương pháp làm mịn dần trong thiết kế chương trình giúp gì cho lập trình viên?
Tăng tốc độ chạy chương trình
Giảm dung lượng bộ nhớ chương trình
Làm rõ từng bước của chương trình, dễ dàng chuyển ý tưởng thành câu lệnh
Tự động phát hiện lỗi cú pháp
Trong chương trình đếm số cặp nghịch đảo, tại sao vòng lặp thứ hai chỉ duyệt từ i + 1 đến n - 1?
Để tiết kiệm thời gian và tránh lặp lại các cặp đã kiểm tra
Vì chỉ số j phải lớn hơn chỉ số i
Để kiểm tra mọi phần tử trong dãy
Vì cặp (i, j) không quan trọng
Sau khi hoàn thành phương pháp làm mịn dần, kết quả cuối cùng là:
Một chương trình hoàn chỉnh với các bước chi tiết
Một thuật toán tổng quan mà không có mã lệnh cụ thể
Chỉ là một ý tưởng thiết kế ban đầu
Một báo cáo về quá trình thiết kế
Khi thiết kế chương trình theo phương pháp làm mịn dần, bước đầu tiên thường là:
Viết mã hoàn chỉnh ngay từ đầu.
Tìm hiểu yêu cầu bài toán, xác định đầu vào và đầu ra của bài toán.
Chia bài toán thành các phần nhỏ và tiến hành làm mịn từng phần.
Thực hiện từng bước chi tiết theo thứ tự mà không cần phân tích tổng thể.
Trong phương pháp làm mịn dần, khi thiết kế thuật toán sắp xếp chèn, bước nào sau đây là đúng?
Đầu tiên, chèn phần tử A[i] vào đúng vị trí rồi mới tiến hành duyệt các phần tử còn lại.
Tạo biến value lưu phần tử đang xét, sau đó dịch chuyển các phần tử lớn hơn value sang phải.
Chỉ cần kiểm tra điều kiện A[i] < A[j] để xác định vị trí chèn phần tử.
Thực hiện tất cả các thao tác trên cùng một dòng lệnh để tăng hiệu suất.
Phương pháp làm mịn dần (stepwise refinement) là kỹ thuật phát triển chương trình bằng cách chia nhỏ vấn đề thành các bước chi tiết hơn, giúp thiết kế chương trình rõ ràng và dễ quản lý. Hãy đánh giá tính đúng hoặc sai của các phát biểu sau:
Làm mịn dần giúp cải thiện tốc độ thực thi chương trình.
Bước cuối cùng của phương pháp làm mịn dần là viết chương trình hoàn chỉnh.
Phương pháp làm mịn dần giúp viết chương trình theo từng bước rõ ràng.
Mỗi bước trong quá trình làm mịn dần phải hoàn toàn độc lập với các bước trước đó.
Phương pháp làm mịn dần giúp phát triển thuật toán sắp xếp chèn bằng cách chia quá trình giải quyết thành các bước chi tiết hơn, từ ý tưởng ban đầu đến chương trình hoàn chỉnh. Đánh giá
Đánh giá tính đúng hoặc sai của các phát biểu sau: a) Nếu danh sách đã sắp xếp, thuật toán có thể dừng ngay mà không cần thực hiện. b) Bước đầu tiên là xác định ý tưởng tổng quát về cách chèn từng phần tử. c) Chương trình hoàn chỉnh cần sử dụng ít nhất ba vòng lặp lồng nhau. d) Sau khi tìm được vị trí chèn, cần dịch chuyển các phần tử để tạo khoảng trống.
Mô đun nào thực hiện việc đọc dữ liệu từ tệp vào chương trình trong quá trình thiết kế chương trình theo mô đun?
GhiDL
NhapDL
Sapxep
XuLyDL
Công việc nào sau đây thuộc nhóm "Công việc nâng cấp một mô đun cũ"?
Tạo báo cáo mới ghi doanh số bán trung bình trong ngày
Thay đổi số lượng mặt hàng có doanh số cao nhất trong báo cáo
Nhập thêm mặt hàng và doanh số mới vào tệp dữ liệu
Thực hiện báo cáo riêng cho khách hàng
Khi sắp xếp các mặt hàng theo thứ tự doanh số, mô đun nào sẽ thực hiện chức năng này?
NhapDL
GhiDL
Sapxep
InBaoCao
Nếu cần tìm mặt hàng có doanh số xấp xỉ một giá trị K, công việc này thuộc nhóm nào?
Công việc mới hoàn toàn
Công việc nâng cấp một mô đun cũ
Không thuộc nhóm nào
Công việc không liên quan đến thuật toán và lập trình
Phương pháp thiết kế chương trình theo mô đun có ưu điểm nào sau đây?
Làm chương trình ngắn gọn, dễ hiểu hơn
Giảm khả năng tái sử dụng các phần của chương trình
Hạn chế khả năng làm việc nhóm
Giảm tính linh hoạt khi chỉnh sửa chương trình
Mô đun nào sau đây có nhiệm vụ đưa dữ liệu ra báo cáo cuối ngày?
NhapDL
GhiDL
Sapxep
XuLyDL
Nếu cần bổ sung thêm mặt hàng và doanh số mới vào tệp Data.inp, công việc này sẽ thuộc nhóm nào?
Công việc mới hoàn toàn
Công việc nâng cấp một mô đun cũ
Công việc kết hợp nhiều mô đun
Công việc không liên quan đến thuật toán và lập trình
Để thực hiện công việc bổ sung ghi lại 2 mặt hàng có doanh số cao nhất và 4 mặt hàng có doanh số thấp nhất, cần chỉnh sửa mô đun nào?
NhapDL
GhiDL
Sapxep
XuLyDL
Thiết kế chương trình theo mô đun giúp dễ dàng nâng cấp và bổ sung vì lý do nào sau đây?
Tất cả các mô đun được gộp thành một đoạn mã duy nhất
Mỗi mô đun hoạt động độc lập và thực hiện một chức năng riêng
Các mô đun không thể thay đổi hoặc cập nhật
Chỉ có một mô đun duy nhất nên không cần bổ sung thêm
Nếu muốn tạo thêm một báo cáo riêng ghi doanh số bán trung bình và các mặt hàng có doanh số lớn hơn mức trung bình, cần bổ sung mô đun nào?
NhapDL
GhiDL
Sapxep
BC2
Trong thiết kế mô đun, mỗi mô đun con cần có đặc điểm gì?
Phụ thuộc hoàn toàn vào mô đun chính của chương trình.
Chỉ thực hiện chạy duy nhất một lần trong chương trình.
Chức năng riêng biệt, có khả năng tái sử dụng nhiều lần.
Độc lập hoàn toàn, không liên quan các mô đun khác.
Vì sao cần sử dụng thiết kế chương trình theo mô đun?
Tránh hoàn toàn lỗi lập trình.
Giúp chương trình dễ đọc, dễ bảo trì.
Giúp chương trình chạy nhanh hơn.
Giảm số dòng lệnh trong chương trình.
Mô đun xử lý dữ liệu trong bài toán cửa hàng thực phẩm thực hiện công việc gì?
Mô đun xử lý dữ liệu trong bài toán cửa hàng thực phẩm thực hiện công việc gì?
Sắp xếp danh sách hàng hóa theo doanh số bán ra.
Thêm mặt hàng mới vào trong danh sách hàng hóa.
Hiển thị danh sách các mặt hàng lên trên màn hình.
Nhận dữ liệu nhập vào từ bàn phím người dùng.
Trong mô đun xuất dữ liệu, kết quả được lưu vào đâu?
Cơ sở dữ liệu.
Tệp văn bản.
Màn hình.
Không lưu trữ.
Trong chương trình quản lý cửa hàng thực phẩm, nếu cần bổ sung báo cáo về mặt hàng có doanh số trung bình, cần làm gì?
Viết thêm một mô đun mới.
Không thể thực hiện.
Chỉnh sửa mô đun xử lý dữ liệu.
Chỉnh sửa mô đun nhập dữ liệu.
Trong bài toán quản lý cửa hàng thực phẩm, chương trình có bao nhiêu mô đun chính?
5
4
3
2
Trong mô đun nhập dữ liệu, dữ liệu được đọc từ đâu?
Bàn phím.
Một tệp văn bản.
Cơ sở dữ liệu.
Mạng internet.
Khi thiết kế chương trình tìm mặt hàng có doanh số gần nhất với một giá trị K, có thể sử dụng thuật toán nào?
Tìm kiếm nhị phân.
Thuật toán đệ quy.
Tìm kiếm tuyến tính.
Thuật toán sắp xếp.
Khi cần thay đổi định dạng báo cáo từ 3 mặt hàng cao nhất thành 2 mặt hàng cao nhất, mô đun nào cần chỉnh sửa?
Mô đun xử lý dữ liệu của các mặt hàng trong kho.
Mô đun nhập dữ liệu từ bàn phím người dùng.
Cần sửa đổi mô đun chính của chương trình.
Mô đun xuất dữ liệu báo cáo lên màn hình.
Thiết kế chương trình theo mô đun là gì?
Tạo chương trình chỉ với một hàm duy nhất, không phân chia.
Chạy chương trình mà không cần thiết kế trước các bước.
Chia chương trình thành các phần nhỏ, chức năng độc lập.
Viết chương trình liền mạch, không chia nhỏ thành các phần.
Trong phương pháp thiết kế chương trình theo mô đun, công việc "nhập dữ liệu từ tệp Data.inp và lưu vào hai mảng P và S" sẽ được thực hiện bởi mô đun nào?
Mô đun xử lý dữ liệu
Mô đun nhập dữ liệu
Mô đun báo cáo
Không mô đun nào thực hiện
Trong phương pháp thiết kế theo mô đun, công việc "tìm và sắp xếp các mặt hàng theo doanh số" sẽ được thực hiện bởi mô đun nào?
Mô đun nhập dữ liệu
Mô đun xử lý dữ liệu
Mô đun báo cáo
Không mô đun nào thực hiện
Thiết kế mô đun mang lại nhiều lợi ích trong quá trình phát triển phần mềm, giúp tối ưu hóa việc bảo trì, mở rộng và cộng tác. Đánh giá tính đúng hoặc sai của các phát biểu sau:
Giúp chương trình dễ bảo trì và nâng cấp.
Không thể thêm tính năng mới nếu đã thiết kế mô đun.
Mô đun có thể được sử dụng lại nhiều lần trong chương trình khác.
Có thể chia nhóm lập trình viên làm việc trên các mô đun riêng biệt.
Thiết kế chương trình theo mô đun là phương pháp chia chương trình thành các phần nhỏ (mô đun) để dễ dàng quản lý, bảo trì và tái sử dụng. Đánh giá tính đúng hoặc sai của các phát biểu sau:
Các mô đun có thể được tái sử dụng trong các chương trình khác.
Thiết kế mô đun giúp chia chương trình thành các phần nhỏ dễ quản lý.
Mỗi mô đun trong chương trình có thể hoạt động độc lập với nhau.
Nếu thay đổi một mô đun, toàn bộ chương trình phải sửa lại.
