A. PHẦN TRẮC NGHIỆM (6,0 điểm)
Khoanh tròn vào chữ cái đứng trước câu trả lời đúng:
Câu 1. Mảng một chiều là:
A. A = [[“Toán”, 9.0], [“Hoá học”, 8.0], [“Tiếng Anh”, 9.5]].
B. B = [2, 4, 6, 8, 10].
C. C = [5, 7, 9, “Tin học”].
D. D = [“Đen”, “Hồng”, “Trắng”, 1].
Câu 2. Chọn câu đúng.
A. Hàm add() dùng để bổ sung phần tử vào cuối danh sách.
B. Phần tử thứ 2 của mảng C = [1, 6, 7, 2, 9] là 7.
C. Phần tử nằm tại cột i và hàng j của ma trận kích thước m n được kí hiệu là aij.
D. Sử dụng toán tử in và lệnh for … in để duyệt từng phần tử của mảng một chiều trong Python.
Câu 3. Để bổ sung phần tử vào vị trí bất kì của danh sách trong Python, ta sử dụng lệnh:
A. append().
B. push().
C. insert().
D. extend().
Câu 4. Ma trận vuông M bậc 3 dưới đây có thể khai báo trong Python như thế nào?
M= 153240672952108
A. M=[15, 32, 4, 0, 67, 29, [52, 10, 8]].
B. M=[15, 0, 52, 32, 67, 10, [4, 29, 8]].
C. M=[4, 29, 8, 32, 67, 10, 15, 0, 52].
D. M=[52, 10, 8, 0, 67, 29, 15, 32, 4].
Câu 5. Để truy cập phần tử tại hàng 1 cột 2 của ma trận M ở câu 4, ta gõ lệnh:
A. M1[2].
B. M2[1].
C. M1[0].
D. M0[1].
Câu 6. Cấu trúc dữ liệu mảng một chiều trong Python có thể biểu diễn bằng kiểu dữ liệu:
A. str.
B. list.
C. int.
D. bool.
Câu 7. Chọn câu sai.
A. Thuật toán tìm kiếm tuần tự được thực hiện bằng cách duyệt lần lượt các phần tử của dãy từ đầu đến cuối để tìm phần tử có giá trị bằng giá trị cần tìm.
B. Việc thiết kế thuật toán tìm kiếm sẽ phụ thuộc vào cấu trúc của miền dữ liệu cần tìm kiếm và tiêu chí cụ thể của bài toán tìm kiếm.
C. Thuật toán tìm kiếm tuần tự không được áp dụng cho các dãy được sắp xếp theo thứ tự xác định.
D. Tìm kiếm là một trong những bài toán quan trọng nhất của Tin học.
Câu 8. Cho dãy A = [4, 6, 15, 28, 3, 51, 72]. Thuật toán tìm kiếm nhị phân cần thực hiện bao nhiêu lần duyệt để tìm ra phần tử có giá trị bằng 51 trong dãy?
A. 1.
B. 2.
C. 3.
D. 4.
Câu 9. Cho dãy A = [1, 5, 24, 9, 38, 0, 7, 42, 61, 10]. Thuật toán tìm kiếm tuần tự cần thực hiện bao nhiêu lần duyệt để tìm ra phần tử có giá trị bằng 7 trong dãy?
A. 7.
B. 8.
C. 9.
D. 10.
Câu 10. Lệnh mở tệp để đọc là:
A. f=open(<file name>, “w”, encoding = “UTF-8”).
B. f=open(<file name>, “a”, encoding = “UTF-8”).
C. f=open(<file name>, “r”, encoding = “UTF-8”).
D. f=open(<file name>, “o”, encoding = “UTF-8”).
Câu 11. Để đọc toàn bộ dữ liệu tệp, đưa kết quả vào một danh sách (list), mỗi phần tử là một dòng, ta sử dụng lệnh:
A. f.readline().
B. f.readall().
C. f.readlist().
D. f.readlines().
Câu 12. Cách đơn giản nhất để ghi dữ liệu ra tệp văn bản là sử dụng lệnh:
A. print().
B. write().
C. copy().
D. push().
Câu 13. Em đã được học mấy thuật toán sắp xếp đơn giản?
A. 1.
B. 2.
C. 3.
D. 4.
Câu 14. Chọn câu đúng.
A. Tại mỗi bước lặp của thuật toán sắp xếp chọn, cần tìm phần tử lớn nhất nằm trong dãy A[i], A[i+1], … , A[n-1] và đổi chỗ phần tử nhỏ nhất này với A[n].
B. Tại mỗi bước lặp của thuật toán sắp xếp chọn, cần tìm phần tử nhỏ nhất nằm trong dãy A[i], A[i+1], … , A[n-1] và đổi chỗ phần tử nhỏ nhất này với A[i].
C. Tại mỗi bước lặp của thuật toán sắp xếp chọn, cần tìm phần tử nhỏ nhất nằm trong dãy A[i], A[i+1], … , A[n-1] và đổi chỗ phần tử nhỏ nhất này với A[n-1].
D. Tại mỗi bước lặp của thuật toán sắp xếp chọn, cần tìm phần tử lớn nhất nằm trong dãy A[i], A[i+1], … , A[n-1] và đổi chỗ phần tử nhỏ nhất này với A[i+1].
Câu 15. Trong thuật toán sắp xếp chèn, vòng lặp for … in … được viết như thế nào?
A. for i in range(1, n).
B. for i in range(0,n).
C. for i in range(n).
D. for i in range(1, n).
Câu 16. Ý tưởng của thuật toán sắp xếp nổi bọt là cho cho chỉ số j chạy từ:
A. 0 đến n – 1.
B. 1 đến n – 1.
C. 0 đến n – 2.
D. 1 đến n – 2.
Câu 17. Ý tưởng của thuật toán sắp xếp chọn là cho chỉ số i chạy từ:
A. Phần tử đầu tiên đến phần tử cuối cùng.
B. Phần tử thứ hai đến phần tử cuối cùng.
C. Phần tử thứ hai đến phần tử gần cuối.
D. Phần tử đầu tiên đến phần tử gần cuối.
Câu 18. Chọn câu sai.
A. Thuật toán sắp xếp nổi bọt lấy ý tưởng từ hiện tượng “nổi bọt” của không khí dưới nước.
B. Ý tưởng của thuật toán sắp xếp nổi bọt là liên tục đổi chỗ hai phần tử bất kì nếu chúng chưa được sắp thứ tự đúng.
C. Có nhiều cách thể hiện thuật toán sắp xếp nổi bọt, nhưng cách thường dùng là sử dụng hai vòng lặp lồng nhau.
D. Thuật toán sắp xếp nổi bọt kiểm tra hai phần tử cạnh nhau, nếu chúng chưa sắp xếp đúng thì đổi chỗ.
Câu 19. Tính đúng của thuật toán cần được chứng minh bằng:
A. Lập luận toán học.
B. Các bộ dữ liệu kiểm thử.
C. Độ phức tạp của thuật toán.
D. Thời gian thực hiện chương trình.
Câu 20. Hiệu quả hay tính tối ưu của chương trình thường được xem xét trên cơ sở đánh giá:
A. Tính đúng của thuật toán.
B. Ý tưởng thực hiện thuật toán.
C. Độ phức tạp tính toán.
D. Độ tin cậy của chương trình.
Câu 21. Chọn câu sai.
A. Kiểm thử làm tăng độ tin cậy của chương trình.
B. Nếu với các bộ dữ liệu kiểm thử, dữ liệu đầu ra đều đúng thì kết luận ngay thuật toán và chương trình đúng.
C. Khi sử dụng các bộ dữ liệu kiểm thử để kiểm tra tính đúng của chương trình, nếu phát hiện lỗi không chính xác của dữ liệu đầu ra thì kết luận ngay thuật toán và chương trình không đúng.
D. Các phương pháp kiểm thử không có tính năng chứng minh được tính đúng của một thuật toán.
Câu 22. Chương trình tính giai thừa của một số nguyên dương sau sai ở dòng thứ mấy?
A. 8.
B. 4.
C. 9.
D. 7.
Câu 23. Độ phức tạp tính toán phổ biến nhất có mấy loại?
A. 1.
B. 2.
C. 3.
D. 4.
Câu 24. Chọn câu sai.
A. Độ phức tạp thời gian thường bị ảnh hưởng bởi số lần thực hiện các phép toán/câu lệnh có trong chương trình/thuật toán.
B. Để đánh giá hiệu quả chương trình đôi khi người ta còn quan tâm tới các tiêu chí như tính dễ hiểu, rõ ràng, ngắn gọn, dễ cài đặt, dễ bảo trì, … của chương trình.
C. Một chương trình/thuật toán là hiệu quả nếu độ phức tạp của thuật toán này là thấp.
D. Độ phức tạp tính toán quan trọng nhất là độ phức tạp không gian.
PHẦN TỰ LUẬN (4,0 điểm)
Câu 1 (2,0 điểm)
Độ phức tạp thời gian (time complexity) là gì?
Cho dãy A = [1, 2, 5, 8, 11, 16, 20] và giá trị cần tìm là K = 2. Hãy mô tả các bước của thuật toán tìm kiếm nhị phân.
Câu 2 (2,0 điểm) Cho dãy A = [72, 35, 18, 46, 2, 10, 59]. Viết chương trình sắp xếp dãy A theo thứ tự tăng dần theo thuật toán sắp xếp chèn.
A. PHẦN TRẮC NGHIỆM: (6,0 điểm)
Mỗi câu trả lời đúng được 0,25 điểm.
B. PHẦN TỰ LUẬN: (4,0 điểm)