Trắc nghiệm Tin 10 Cánh diều Bài 18: Lập trình giải quyết bài toán trên máy tính - Đề 10
Trắc nghiệm Tin 10 Cánh diều Bài 18: Lập trình giải quyết bài toán trên máy tính - Đề 10 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!
Câu 1: Trong quá trình giải quyết bài toán trên máy tính, bước đầu tiên và quan trọng nhất là xác định bài toán. Theo em, mục đích chính của bước này là gì?
- A. Tìm ra cách viết mã nguồn hiệu quả nhất.
- B. Kiểm tra xem chương trình có chạy được trên máy tính không.
- C. Lựa chọn ngôn ngữ lập trình phù hợp.
- D. Hiểu rõ yêu cầu đầu vào (input) và kết quả đầu ra (output) cần đạt được.
Câu 2: Sau khi đã xác định rõ bài toán (bước 1), bước tiếp theo trong quy trình giải quyết bài toán trên máy tính là gì?
- A. Viết mã chương trình bằng một ngôn ngữ cụ thể.
- B. Tìm thuật toán và cách tổ chức dữ liệu phù hợp để giải quyết bài toán.
- C. Chạy thử chương trình với dữ liệu mẫu.
- D. Báo cáo kết quả giải quyết bài toán.
Câu 3: Giả sử em cần viết một chương trình tính diện tích hình tròn khi biết bán kính. Ở bước "Xác định bài toán", những thông tin nào sau đây cần được làm rõ?
- A. Ngôn ngữ lập trình sẽ sử dụng (ví dụ: Python).
- B. Các công cụ kiểm thử chương trình.
- C. Đầu vào là bán kính (số dương), đầu ra là diện tích hình tròn.
- D. Thời gian cần thiết để viết chương trình.
Câu 4: Tại sao việc tìm và thiết kế thuật toán (bước 2) lại quan trọng trước khi bắt đầu viết mã chương trình (bước 3)?
- A. Thuật toán cung cấp một kế hoạch chi tiết, từng bước để giải quyết bài toán, giúp việc viết mã trở nên có định hướng và ít lỗi hơn.
- B. Thuật toán giúp tự động hóa quá trình viết mã.
- C. Chỉ có những bài toán phức tạp mới cần thuật toán.
- D. Thuật toán là mã chương trình đã được dịch sang ngôn ngữ máy.
Câu 5: Em đã viết xong một chương trình giải phương trình bậc hai. Tuy nhiên, khi nhập hệ số a=0, chương trình báo lỗi. Em cần thực hiện hoạt động nào trong bước "Kiểm thử, chạy và hiệu chỉnh chương trình" để khắc phục vấn đề này?
- A. Viết lại toàn bộ chương trình từ đầu.
- B. Thay đổi ngôn ngữ lập trình.
- C. Chỉ kiểm thử với các trường hợp hệ số a khác 0.
- D. Tìm nguyên nhân lỗi (ví dụ: thiếu xử lý trường hợp a=0) và sửa mã chương trình.
Câu 6: Khi nói về hiệu quả của thuật toán, người ta thường quan tâm đến những yếu tố nào?
- A. Số lượng dòng lệnh trong chương trình.
- B. Màu sắc giao diện của chương trình.
- C. Thời gian thực hiện và lượng bộ nhớ sử dụng.
- D. Ngôn ngữ lập trình được sử dụng.
Câu 7: Em đang tìm hiểu về hai thuật toán khác nhau để sắp xếp một danh sách các số. Một thuật toán chạy nhanh hơn đáng kể so với thuật toán còn lại khi danh sách có kích thước lớn. Điều này liên quan chủ yếu đến tiêu chí hiệu quả nào của thuật toán?
- A. Hiệu quả về thời gian.
- B. Hiệu quả về không gian bộ nhớ.
- C. Tính dễ đọc của mã nguồn.
- D. Tính khả thi khi cài đặt.
Câu 8: Một chương trình được viết bằng ngôn ngữ lập trình bậc cao cần được chuyển đổi sang ngôn ngữ máy để máy tính có thể thực thi. Có hai phương pháp chuyển đổi chính là biên dịch và thông dịch. Điểm khác biệt cơ bản giữa biên dịch và thông dịch là gì?
- A. Biên dịch chuyển đổi từng dòng lệnh, thông dịch chuyển đổi toàn bộ chương trình cùng lúc.
- B. Biên dịch chuyển đổi toàn bộ chương trình sang ngôn ngữ máy trước khi chạy, thông dịch chuyển đổi và thực thi từng câu lệnh một.
- C. Biên dịch phát hiện lỗi cú pháp, thông dịch không phát hiện lỗi.
- D. Biên dịch chỉ dùng cho ngôn ngữ C++, thông dịch dùng cho Python.
Câu 9: Em đang sử dụng một ngôn ngữ lập trình hoạt động theo chế độ thông dịch. Khi chạy chương trình, em nhập dữ liệu và chương trình chạy bình thường cho đến một dòng lệnh cụ thể thì dừng lại và báo lỗi. Điều này cho thấy đặc điểm nào của chế độ thông dịch?
- A. Toàn bộ chương trình đã được dịch sang ngôn ngữ máy từ trước.
- B. Lỗi chỉ xuất hiện khi chương trình đã chạy xong.
- C. Quá trình dịch và thực thi diễn ra từng câu lệnh, và lỗi được phát hiện ngay tại câu lệnh đó.
- D. Chế độ thông dịch không thể phát hiện lỗi runtime.
Câu 10: Ngôn ngữ lập trình Python thường được coi là ngôn ngữ thông dịch. Điều này có ý nghĩa gì đối với quá trình phát triển và chạy chương trình Python?
- A. Có thể chạy thử từng phần của chương trình dễ dàng hơn trong quá trình phát triển, nhưng chương trình chạy có thể chậm hơn so với ngôn ngữ biên dịch.
- B. Chương trình Python phải được biên dịch hoàn toàn trước khi chạy lần đầu.
- C. Lỗi chỉ được phát hiện sau khi toàn bộ chương trình đã chạy xong.
- D. Chương trình Python không cần bất kỳ công cụ dịch nào để chạy.
Câu 11: Em đã viết một chương trình tính tổng các số từ 1 đến N. Khi chạy thử với N=5, chương trình cho kết quả 15 (đúng). Khi chạy thử với N=1000000, chương trình chạy rất lâu. Vấn đề này liên quan chủ yếu đến bước nào trong quy trình giải quyết bài toán và tiêu chí nào của thuật toán?
- A. Bước 1 (Xác định bài toán) - Tính đúng đắn.
- B. Bước 4 (Kiểm thử, hiệu chỉnh) - Hiệu quả về thời gian của thuật toán.
- C. Bước 3 (Viết chương trình) - Lỗi cú pháp.
- D. Bước 2 (Tìm thuật toán) - Tính dễ hiểu của thuật toán.
Câu 12: Trong bước "Kiểm thử, chạy và hiệu chỉnh chương trình", việc sử dụng các bộ dữ liệu kiểm thử đa dạng (bao gồm cả các trường hợp đặc biệt, dữ liệu lớn, dữ liệu sai) có mục đích gì?
- A. Phát hiện các lỗi logic, lỗi runtime và đảm bảo chương trình hoạt động đúng trong mọi tình huống.
- B. Để chương trình chạy nhanh hơn.
- C. Thay đổi yêu cầu ban đầu của bài toán.
- D. Làm cho mã nguồn chương trình ngắn gọn hơn.
Câu 13: Giả sử em cần giải một bài toán mà yêu cầu tính toán rất phức tạp và cần tốc độ thực thi cực nhanh trên máy tính. Em nên ưu tiên lựa chọn ngôn ngữ lập trình hoạt động theo chế độ nào để viết chương trình?
- A. Biên dịch, vì chương trình dịch hoàn toàn sang ngôn ngữ máy trước khi chạy, thường cho tốc độ thực thi cao hơn.
- B. Thông dịch, vì dễ dàng sửa lỗi từng dòng lệnh.
- C. Ngôn ngữ kịch bản (scripting language) bất kỳ.
- D. Ngôn ngữ chỉ có 2 chế độ dịch.
Câu 14: Em đang ở bước "Viết chương trình". Em đã có thuật toán và cách tổ chức dữ liệu chi tiết. Công việc chính của em ở bước này là gì?
- A. Xác định lại đầu vào và đầu ra của bài toán.
- B. Kiểm tra hiệu quả của thuật toán.
- C. Tìm lỗi trong logic của thuật toán.
- D. Diễn đạt thuật toán bằng các câu lệnh của một ngôn ngữ lập trình cụ thể.
Câu 15: Một chương trình sau khi biên dịch thành công (không còn lỗi cú pháp) vẫn có thể chứa lỗi. Đó có thể là loại lỗi nào?
- A. Lỗi biên dịch (Compilation error).
- B. Lỗi cú pháp (Syntax error).
- C. Lỗi logic (Logic error) hoặc lỗi runtime (Runtime error).
- D. Lỗi thông dịch (Interpretation error).
Câu 16: Khi thiết kế thuật toán, ngoài hiệu quả về thời gian và không gian, cần xem xét tính khả thi khi cài đặt. Điều này có nghĩa là gì?
- A. Thuật toán phải chạy nhanh trên mọi máy tính.
- B. Thuật toán phải có thể được chuyển đổi thành các câu lệnh của ngôn ngữ lập trình một cách hợp lý.
- C. Thuật toán phải sử dụng ít bộ nhớ nhất có thể.
- D. Thuật toán phải tự động sửa lỗi trong quá trình chạy.
Câu 17: Em được giao nhiệm vụ viết chương trình quản lý danh sách học sinh. Em quyết định sử dụng cấu trúc dữ liệu danh sách (list) để lưu trữ thông tin học sinh. Việc lựa chọn cấu trúc dữ liệu này thuộc bước nào trong quy trình giải quyết bài toán?
- A. Tìm thuật toán và cách tổ chức dữ liệu.
- B. Xác định bài toán.
- C. Viết chương trình.
- D. Kiểm thử, chạy và hiệu chỉnh chương trình.
Câu 18: Một chương trình báo lỗi "chia cho không" (division by zero) khi chạy với một bộ dữ liệu cụ thể. Đây là loại lỗi gì và thường được phát hiện ở bước nào?
- A. Lỗi cú pháp (Syntax error) - Bước viết chương trình.
- B. Lỗi biên dịch (Compilation error) - Bước viết chương trình.
- C. Lỗi logic (Logic error) - Bước tìm thuật toán.
- D. Lỗi runtime (Runtime error) - Bước kiểm thử, chạy và hiệu chỉnh.
Câu 19: Em đang làm việc với một ngôn ngữ lập trình biên dịch. Sau khi viết xong mã nguồn, em thực hiện lệnh biên dịch và nhận được thông báo về nhiều lỗi cú pháp. Em cần làm gì tiếp theo?
- A. Chạy chương trình bất chấp lỗi để xem kết quả.
- B. Quay lại bước viết chương trình để sửa các lỗi cú pháp được báo cáo.
- C. Thay đổi bộ dữ liệu kiểm thử.
- D. Thiết kế lại thuật toán.
Câu 20: Quy trình giải quyết bài toán trên máy tính thường được xem là một chu trình lặp. Điều gì xảy ra nếu sau khi kiểm thử (bước 4), em phát hiện chương trình không đáp ứng đúng yêu cầu ban đầu của bài toán?
- A. Quay lại các bước trước đó (xác định bài toán, tìm thuật toán, viết chương trình) để hiệu chỉnh.
- B. Bỏ qua lỗi và coi như chương trình đã hoàn thành.
- C. Chỉ cần sửa lỗi nhỏ trong bước kiểm thử.
- D. Bắt buộc phải viết lại toàn bộ chương trình từ đầu.
Câu 21: Khi xác định bài toán, việc làm rõ "mối quan hệ giữa các giá trị đã cho và giá trị cần tìm" có ý nghĩa gì?
- A. Giúp chọn ngôn ngữ lập trình.
- B. Giúp xác định số lượng dòng lệnh cần viết.
- C. Là cơ sở để xây dựng hoặc lựa chọn thuật toán phù hợp.
- D. Chỉ quan trọng ở bước kiểm thử.
Câu 22: Em cần viết chương trình tìm số lớn nhất trong một danh sách 1000 số nguyên. Việc xác định rõ "đầu vào là một danh sách 1000 số nguyên" và "đầu ra là số nguyên lớn nhất trong danh sách" thuộc bước nào?
- A. Xác định bài toán.
- B. Tìm thuật toán.
- C. Viết chương trình.
- D. Kiểm thử chương trình.
Câu 23: Trong bước "Tìm thuật toán và cách tổ chức dữ liệu", việc lựa chọn cách tổ chức dữ liệu (ví dụ: sử dụng mảng, danh sách liên kết, cây,...) phụ thuộc vào yếu tố nào?
- A. Màu sắc yêu thích của người lập trình.
- B. Tên của ngôn ngữ lập trình.
- C. Số lượng người sử dụng chương trình.
- D. Tính chất của dữ liệu và yêu cầu của bài toán (thêm, xóa, tìm kiếm dữ liệu có thường xuyên không,...).
Câu 24: Em đang phát triển một ứng dụng web tương tác cao, yêu cầu thay đổi và cập nhật mã nguồn liên tục trong quá trình phát triển. Ngôn ngữ lập trình hoạt động theo chế độ nào thường được ưa chuộng trong trường hợp này và tại sao?
- A. Biên dịch, vì tốc độ thực thi cuối cùng quan trọng hơn.
- B. Thông dịch, vì dễ dàng chạy thử và sửa lỗi từng phần nhỏ mà không cần biên dịch lại toàn bộ.
- C. Chỉ cần ngôn ngữ có cộng đồng lớn.
- D. Ngôn ngữ bậc thấp.
Câu 25: Sau khi viết chương trình, bước "Kiểm thử, chạy và hiệu chỉnh" không chỉ nhằm mục đích tìm lỗi. Nó còn giúp đánh giá điều gì?
- A. Việc xác định bài toán ở bước 1 có đúng không.
- B. Ngôn ngữ lập trình đã chọn có phổ biến không.
- C. Chương trình có đáp ứng được các yêu cầu về hiệu năng (tốc độ, bộ nhớ) hay không.
- D. Thuật toán có dễ đọc không.
Câu 26: Giả sử em có hai thuật toán A và B để giải cùng một bài toán. Thuật toán A sử dụng ít bộ nhớ hơn thuật toán B nhưng lại mất nhiều thời gian hơn khi xử lý dữ liệu lớn. Việc lựa chọn thuật toán nào phù hợp hơn phụ thuộc vào yếu tố nào?
- A. Ngôn ngữ lập trình sẽ sử dụng.
- B. Số lượng dòng lệnh của thuật toán.
- C. Tên của người viết thuật toán.
- D. Yêu cầu cụ thể của bài toán về tốc độ và tài nguyên hệ thống (bộ nhớ).
Câu 27: Trong quy trình giải quyết bài toán, bước nào đòi hỏi người lập trình phải có khả năng tư duy logic để phân tích vấn đề và xây dựng các bước giải chi tiết?
- A. Xác định bài toán.
- B. Tìm thuật toán và cách tổ chức dữ liệu.
- C. Viết chương trình.
- D. Kiểm thử, chạy và hiệu chỉnh chương trình.
Câu 28: Em đã viết chương trình và chạy thử với một vài bộ dữ liệu nhỏ thấy kết quả đúng. Tuy nhiên, khi dùng chương trình để xử lý dữ liệu thực tế với số lượng lớn, chương trình cho kết quả sai. Loại lỗi này (lỗi chỉ xuất hiện với dữ liệu lớn hoặc phức tạp) thường được phát hiện ở bước nào?
- A. Xác định bài toán.
- B. Tìm thuật toán.
- C. Viết chương trình (lỗi cú pháp).
- D. Kiểm thử, chạy và hiệu chỉnh chương trình (lỗi logic hoặc hiệu năng).
Câu 29: Mục đích chính của việc "hiệu chỉnh chương trình" (debugging) trong bước cuối cùng là gì?
- A. Thay đổi giao diện người dùng của chương trình.
- B. Thêm các tính năng mới cho chương trình.
- C. Tìm và sửa các lỗi (syntax, runtime, logic) đã phát hiện trong quá trình kiểm thử.
- D. Biên dịch lại chương trình sang ngôn ngữ máy.
Câu 30: Quá trình giải quyết bài toán trên máy tính là một chu trình. Điều này có nghĩa là sau khi hoàn thành bước 4 (kiểm thử, hiệu chỉnh), nếu chương trình vẫn chưa hoàn hảo hoặc yêu cầu thay đổi, em sẽ làm gì?
- A. Quay trở lại bước 1 hoặc các bước phù hợp để điều chỉnh và lặp lại quy trình.
- B. Kết thúc quy trình và chấp nhận kết quả.
- C. Chỉ cần tiếp tục kiểm thử với nhiều dữ liệu hơn.
- D. Chuyển sang giải quyết bài toán khác.