1. Trong lập trình Pascal, từ khóa ‘BEGIN’ và ‘END.’ dùng để làm gì?
A. Khai báo biến.
B. Bắt đầu và kết thúc một khối lệnh hoặc toàn bộ chương trình.
C. Thực hiện phép toán số học.
D. So sánh hai giá trị.
2. Trong Pascal, thủ tục (procedure) khác với hàm (function) ở điểm cơ bản nào?
A. Thủ tục không thể có tham số, hàm thì có.
B. Thủ tục không trả về giá trị, hàm trả về giá trị.
C. Thủ tục chỉ dùng cho câu lệnh lặp, hàm chỉ dùng cho câu lệnh điều kiện.
D. Thủ tục và hàm hoàn toàn giống nhau.
3. Để truy cập phần tử thứ 5 của mảng ‘scores’ đã khai báo, ta sử dụng ký hiệu nào?
A. scores(5);
B. scores[5];
C. scores.5;
D. scores{5};
4. Trong Pascal, để khai báo một hằng số có tên ‘PI’ với giá trị 3.14159, ta sử dụng cú pháp nào?
A. Var PI: Real = 3.14159;
B. Const PI = 3.14159;
C. Define PI = 3.14159;
D. Set PI to 3.14159;
5. Trong lập trình Pascal, lệnh nào sau đây dùng để khai báo một biến kiểu số nguyên?
A. Var a: Real;
B. Var a: Char;
C. Var a: Integer;
D. Var a: String;
6. Phát biểu nào sau đây là ĐÚNG về kiểu dữ liệu Boolean trong Pascal?
A. Chỉ chứa các giá trị ký tự.
B. Chỉ chứa các giá trị số thực.
C. Chứa các giá trị logic True hoặc False.
D. Chứa một chuỗi các ký tự.
7. Phát biểu nào sau đây là ĐÚNG về cách sử dụng toán tử ‘+=’ trong Pascal?
A. Toán tử ‘+=’ không tồn tại trong Pascal.
B. Dùng để so sánh hai giá trị.
C. Dùng để khai báo kiểu dữ liệu.
D. Dùng để thực hiện phép chia.
8. Phát biểu nào sau đây là ĐÚNG về kiểu dữ liệu Char trong Pascal?
A. Chỉ chứa các giá trị số nguyên.
B. Chỉ chứa một ký tự đơn.
C. Chỉ chứa các giá trị logic True/False.
D. Chứa một chuỗi ký tự.
9. Trong Pascal, để khai báo một biến có thể lưu trữ chuỗi ký tự, ta sử dụng kiểu dữ liệu nào?
A. Integer
B. Boolean
C. Char
D. String
10. Phát biểu nào sau đây mô tả chính xác nhất chức năng của ‘GotoXY(X, Y)’ trong Pascal?
A. Di chuyển con trỏ văn bản đến vị trí cột X, dòng Y.
B. Dừng chương trình trong X giây.
C. Thực hiện phép nhân X với Y.
D. Khai báo một biến có tên X và Y.
11. Phát biểu nào sau đây là ĐÚNG về câu lệnh WHILE…DO trong Pascal?
A. Luôn thực hiện khối lệnh ít nhất một lần.
B. Thực hiện khối lệnh cho đến khi điều kiện trở thành sai.
C. Lặp lại một số lần cố định.
D. Chỉ thực hiện khối lệnh nếu điều kiện ban đầu là sai.
12. Trong Pascal, cấu trúc lặp FOR…DO thường được sử dụng khi nào?
A. Khi số lần lặp không xác định trước.
B. Khi cần lặp lại một khối lệnh với số lần biết trước.
C. Khi cần lặp lại cho đến khi một điều kiện cụ thể bị sai.
D. Khi cần lặp lại dựa trên giá trị của một biến Boolean.
13. Phát biểu nào sau đây là ĐÚNG về toán tử ‘MOD’ trong Pascal?
A. Thực hiện phép chia số thực.
B. Thực hiện phép nhân.
C. Thực hiện phép chia lấy phần dư.
D. Thực hiện phép so sánh bằng.
14. Trong Pascal, khi sử dụng vòng lặp REPEAT…UNTIL, khối lệnh bên trong sẽ được thực hiện khi nào?
A. Khi điều kiện là đúng.
B. Khi điều kiện là sai.
C. Luôn thực hiện ít nhất một lần, sau đó dừng khi điều kiện là đúng.
D. Luôn thực hiện ít nhất một lần, sau đó dừng khi điều kiện là sai.
15. Phát biểu nào sau đây là ĐÚNG về việc sử dụng từ khóa ‘USES’ trong Pascal?
A. Dùng để khai báo biến.
B. Dùng để định nghĩa một thủ tục.
C. Dùng để bao gồm các đơn vị (unit) thư viện vào chương trình.
D. Dùng để kết thúc chương trình.
16. Trong Pascal, để khai báo một mảng gồm 100 phần tử kiểu số nguyên, ta viết:
A. Var arr: Array[1..100] of Char;
B. Var arr: Array[1..100] of Real;
C. Var arr: Array[1..100] of Integer;
D. Var arr: Array[100] of String;
17. Phát biểu nào sau đây là ĐÚNG về việc khai báo một hàm trả về giá trị số thực trong Pascal?
A. Function MyFunc: Integer;
B. Function MyFunc: Boolean;
C. Function MyFunc: Real;
D. Function MyFunc: Char;
18. Trong Pascal, cấu trúc CASE…OF được sử dụng để làm gì?
A. Thực hiện một lệnh lặp với số lần xác định.
B. Chọn một trong nhiều khối lệnh để thực thi dựa trên giá trị của một biến.
C. Kiểm tra xem hai giá trị có bằng nhau không.
D. Đọc dữ liệu từ tệp.
19. Trong Pascal, ký hiệu ‘//’ hoặc ‘(* *)’ dùng để làm gì?
A. Thực hiện phép nhân.
B. Khai báo kiểu dữ liệu.
C. Tạo chú thích trong mã nguồn.
D. Gán giá trị cho biến.
20. Phát biểu nào sau đây là ĐÚNG về cách sử dụng dấu nháy đơn (‘) trong Pascal?
A. Dùng để bao quanh tên biến.
B. Dùng để bao quanh chuỗi ký tự.
C. Dùng để thực hiện phép chia.
D. Dùng để khai báo hằng.
21. Phát biểu nào sau đây là ĐÚNG về việc sử dụng ký tự ‘;’ trong Pascal?
A. Dùng để bắt đầu một khối lệnh.
B. Dùng để kết thúc một câu lệnh hoặc một khai báo.
C. Dùng để khai báo biến.
D. Dùng để thực hiện phép cộng.
22. Phát biểu nào sau đây mô tả chính xác nhất vai trò của ‘Exit’ trong Pascal?
A. Thực hiện phép nhân.
B. Dừng thực thi của một hàm hoặc thủ tục ngay lập tức.
C. Khai báo một biến kiểu chuỗi.
D. In dữ liệu ra màn hình.
23. Trong Pascal, để gán giá trị 10 cho biến số nguyên ‘dem’, ta sử dụng lệnh nào?
A. dem := 10;
B. dem = 10;
C. dem << 10;
D. dem -> 10;
24. Trong Pascal, lệnh ‘Writeln;’ dùng để làm gì?
A. Đọc một dòng dữ liệu từ bàn phím.
B. In một dòng dữ liệu ra màn hình và xuống dòng mới.
C. Khai báo một biến chuỗi.
D. Thực hiện phép chia lấy dư.
25. Phát biểu nào sau đây là ĐÚNG về việc sử dụng dấu chấm (.) cuối cùng trong một chương trình Pascal?
A. Đánh dấu kết thúc của một câu lệnh.
B. Đánh dấu kết thúc của toàn bộ chương trình.
C. Đánh dấu sự bắt đầu của khối khai báo.
D. Dùng để phân tách các biến.
26. Phát biểu nào sau đây mô tả đúng nhất vai trò của ‘Readln’ trong Pascal?
A. In dữ liệu ra màn hình.
B. Đọc một dòng dữ liệu từ bàn phím và bỏ qua ký tự xuống dòng.
C. Thực hiện phép tính toán học phức tạp.
D. Dừng chương trình trong một khoảng thời gian.
27. Phát biểu nào sau đây mô tả chính xác nhất chức năng của câu lệnh IF-THEN trong Pascal?
A. Lặp lại một khối lệnh nhiều lần.
B. Chọn một trong hai nhánh thực thi dựa trên điều kiện.
C. Thực hiện một khối lệnh nếu điều kiện sai.
D. Khai báo một biến mới.
28. Trong Pascal, từ khóa ‘PROGRAM’ dùng để làm gì?
A. Khai báo biến toàn cục.
B. Định nghĩa một thủ tục.
C. Đặt tên cho chương trình.
D. Thực hiện vòng lặp.
29. Trong Pascal, toán tử ‘DIV’ dùng để làm gì?
A. Thực hiện phép chia lấy phần dư.
B. Thực hiện phép chia lấy phần nguyên.
C. Thực hiện phép nhân.
D. Thực hiện phép chia số thực.
30. Trong Pascal, câu lệnh ‘IF A > B THEN C := A ELSE C := B;’ có thể được viết gọn lại bằng cách nào?
A. C := IF A > B THEN A ELSE B;
B. C := (A > B)? A : B;
C. C := Max(A, B);
D. C := Min(A, B);
31. Trong lập trình hướng đối tượng, ‘Inheritance’ cho phép:
A. Một lớp con kế thừa các thuộc tính và phương thức từ lớp cha.
B. Một lớp định nghĩa các hành vi mà các lớp khác phải tuân theo.
C. Gói gọn dữ liệu và phương thức vào một đơn vị duy nhất.
D. Cho phép một đối tượng có nhiều hình thái.
32. Trong lập trình, biến ‘global’ có phạm vi truy cập như thế nào?
A. Có thể truy cập từ bất kỳ đâu trong chương trình.
B. Chỉ có thể truy cập trong phạm vi hàm mà nó được khai báo.
C. Chỉ có thể truy cập trong phạm vi khối lệnh mà nó được khai báo.
D. Chỉ có thể truy cập trong phạm vi lớp mà nó được khai báo.
33. Đâu là ví dụ về một ngôn ngữ lập trình biên dịch (compiled language)?
A. C++
B. Python
C. JavaScript
D. PHP
34. Một ‘linked list’ (danh sách liên kết) khác với ‘array’ (mảng) ở điểm nào cơ bản nhất về cấu trúc lưu trữ?
A. Các phần tử trong linked list không cần lưu trữ liền kề nhau trong bộ nhớ, mỗi phần tử chứa con trỏ tới phần tử tiếp theo.
B. Mảng yêu cầu mỗi phần tử phải có một con trỏ tới phần tử tiếp theo.
C. Linked list luôn có kích thước cố định sau khi tạo.
D. Mảng cho phép thêm/xóa phần tử ở giữa một cách hiệu quả hơn linked list.
35. Khi làm việc với cấu trúc dữ liệu ‘tree’, nút có cấp độ cao nhất (không có nút cha) được gọi là gì?
A. Root (Nút gốc)
B. Leaf (Nút lá)
C. Branch (Nhánh)
D. Node (Nút)
36. Khi thiết kế một thuật toán, mục tiêu chính của việc phân tích độ phức tạp thời gian là gì?
A. Đánh giá hiệu suất của thuật toán theo số lượng phép toán cơ bản khi kích thước đầu vào thay đổi.
B. Xác định lượng bộ nhớ mà thuật toán sử dụng.
C. Đảm bảo thuật toán luôn trả về kết quả đúng.
D. Biên dịch thuật toán sang mã máy.
37. Một ‘queue’ trong khoa học máy tính hoạt động theo nguyên tắc nào?
A. Vào trước, ra trước (First-In, First-Out – FIFO)
B. Vào sau, ra trước (Last-In, First-Out – LIFO)
C. Vào trước, ra sau (First-In, Last-Out – FILO)
D. Vào sau, ra sau (Last-In, Last-Out – LILO)
38. Khi nói về hệ điều hành, chức năng chính của ‘scheduler’ là gì?
A. Quyết định tiến trình nào sẽ chạy trên CPU và khi nào.
B. Quản lý việc cấp phát bộ nhớ cho các tiến trình.
C. Xử lý các yêu cầu nhập/xuất của thiết bị.
D. Cung cấp giao diện đồ họa cho người dùng.
39. Ngôn ngữ nào thường được sử dụng để truy vấn và thao tác dữ liệu trong cơ sở dữ liệu quan hệ?
A. SQL (Structured Query Language)
B. HTML (HyperText Markup Language)
C. CSS (Cascading Style Sheets)
D. XML (eXtensible Markup Language)
40. Khái niệm ‘Abstraction’ trong lập trình hướng đối tượng có nghĩa là:
A. Chỉ hiển thị những thuộc tính và hành vi cần thiết của đối tượng, che giấu sự phức tạp bên trong.
B. Cho phép một lớp kế thừa từ nhiều lớp cha.
C. Gói gọn dữ liệu và phương thức vào một đơn vị.
D. Cho phép đối tượng có nhiều hình thái.
41. Trong lập trình hướng đối tượng, khái niệm ‘Encapsulation’ đề cập đến việc:
A. Gói gọn dữ liệu và các phương thức xử lý dữ liệu đó vào trong một đơn vị gọi là đối tượng.
B. Cho phép một lớp kế thừa các thuộc tính và hành vi từ một lớp khác.
C. Cho phép các đối tượng thuộc các lớp khác nhau phản ứng với cùng một thông điệp theo cách riêng của chúng.
D. Che giấu thông tin chi tiết về cách thức hoạt động của một đối tượng, chỉ để lộ những gì cần thiết.
42. Đâu là một ví dụ về hệ quản trị cơ sở dữ liệu (DBMS)?
A. MySQL
B. HTML
C. CSS
D. JavaScript
43. Thuật toán tìm kiếm nhị phân (binary search) yêu cầu điều kiện tiên quyết nào đối với dữ liệu đầu vào?
A. Dữ liệu phải được sắp xếp theo thứ tự.
B. Dữ liệu phải là các số nguyên.
C. Dữ liệu phải có kích thước lớn.
D. Dữ liệu phải có các giá trị duy nhất.
44. Đâu là đặc điểm chính của một thuật toán đệ quy (recursive algorithm)?
A. Thuật toán tự gọi lại chính nó để giải quyết các bài toán con.
B. Thuật toán sử dụng vòng lặp để lặp lại một khối lệnh.
C. Thuật toán chia bài toán thành các bài toán nhỏ độc lập.
D. Thuật toán sử dụng cấu trúc dữ liệu cây để lưu trữ kết quả.
45. Ngôn ngữ lập trình nào chủ yếu được sử dụng để phát triển giao diện người dùng cho các trang web?
A. JavaScript
B. Python
C. Java
D. C#
46. Trong lập trình, một ‘class’ (lớp) có thể được xem như là gì?
A. Một bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng.
B. Một thực thể riêng lẻ có các thuộc tính và hành vi.
C. Một chuỗi các lệnh để thực hiện một nhiệm vụ.
D. Một cấu trúc dữ liệu để lưu trữ danh sách.
47. Trong phân tích thuật toán, ký hiệu ‘Big O’ (O) dùng để mô tả điều gì?
A. Giới hạn trên của độ phức tạp thời gian hoặc không gian của thuật toán.
B. Giới hạn dưới của độ phức tạp thời gian hoặc không gian của thuật toán.
C. Độ phức tạp thời gian hoặc không gian trung bình của thuật toán.
D. Độ phức tạp thời gian hoặc không gian tốt nhất của thuật toán.
48. Trong các cấu trúc dữ liệu, ‘hash table’ (bảng băm) thường được sử dụng để làm gì một cách hiệu quả?
A. Lưu trữ và truy xuất dữ liệu nhanh chóng dựa trên khóa.
B. Sắp xếp một tập hợp các phần tử theo thứ tự.
C. Quản lý các phần tử theo thứ tự vào trước, ra trước.
D. Lưu trữ dữ liệu có cấu trúc phân cấp.
49. Giao thức nào chịu trách nhiệm truyền tải các trang web trên Internet?
A. HTTP (Hypertext Transfer Protocol)
B. FTP (File Transfer Protocol)
C. SMTP (Simple Mail Transfer Protocol)
D. DNS (Domain Name System)
50. Ngôn ngữ nào thường được sử dụng để định nghĩa cấu trúc và nội dung của một trang web?
A. HTML (HyperText Markup Language)
B. CSS (Cascading Style Sheets)
C. JavaScript
D. SQL (Structured Query Language)
51. Trong cơ sở dữ liệu quan hệ, một ‘khóa chính’ (primary key) có vai trò gì?
A. Xác định duy nhất mỗi bản ghi trong một bảng.
B. Thiết lập mối quan hệ giữa hai bảng.
C. Lưu trữ dữ liệu bổ sung cho một bản ghi.
D. Kiểm soát quyền truy cập vào dữ liệu.
52. Giao thức nào được sử dụng để gửi và nhận email?
A. SMTP (Simple Mail Transfer Protocol)
B. HTTP (Hypertext Transfer Protocol)
C. FTP (File Transfer Protocol)
D. TCP (Transmission Control Protocol)
53. Đâu là một ví dụ về hệ điều hành?
A. Windows
B. HTML
C. Python
D. MySQL
54. Đâu là một ví dụ về ngôn ngữ lập trình thông dịch (interpreted language)?
A. Python
B. C
C. C++
D. Java (mặc dù chạy trên JVM, nó có giai đoạn biên dịch)
55. Khi xem xét thuật toán sắp xếp, thuật toán nào dưới đây thường có độ phức tạp thời gian trung bình là O(n log n)?
A. Merge Sort
B. Bubble Sort
C. Selection Sort
D. Insertion Sort
56. Trong mạng máy tính, vai trò của ‘router’ là gì?
A. Chuyển tiếp các gói dữ liệu giữa các mạng khác nhau dựa trên địa chỉ IP.
B. Kết nối các thiết bị trong cùng một mạng cục bộ (LAN).
C. Giải mã tên miền thành địa chỉ IP.
D. Mã hóa dữ liệu để bảo mật truyền thông.
57. Trong mạng máy tính, địa chỉ IP phiên bản 4 (IPv4) có độ dài bao nhiêu bit?
A. 32 bit
B. 64 bit
C. 128 bit
D. 16 bit
58. Khái niệm ‘Polymorphism’ trong lập trình hướng đối tượng cho phép:
A. Các đối tượng thuộc các lớp khác nhau có thể phản ứng với cùng một lời gọi phương thức theo cách riêng của chúng.
B. Một lớp có thể kế thừa các thuộc tính và phương thức từ nhiều lớp cha.
C. Che giấu chi tiết triển khai của một lớp, chỉ hiển thị giao diện cần thiết.
D. Tái sử dụng mã nguồn bằng cách tạo các lớp con từ lớp cha.
59. Trong lập trình, khi nói về cấu trúc dữ liệu ‘stack’, hành động nào sau đây là hành động cơ bản nhất để thêm một phần tử vào stack?
A. Push
B. Pop
C. Peek
D. Enqueue
60. Trong lập trình, ‘debugging’ là quá trình gì?
A. Tìm kiếm và sửa lỗi trong mã nguồn.
B. Viết mã nguồn cho một chức năng mới.
C. Tối ưu hóa hiệu suất của chương trình.
D. Thiết kế giao diện người dùng.
61. Khi so sánh thuật toán Sắp xếp nhanh (Quick Sort) và Sắp xếp trộn (Merge Sort) về độ phức tạp không gian, điểm khác biệt chính là gì?
A. Quick Sort cần nhiều không gian hơn Merge Sort.
B. Merge Sort cần nhiều không gian hơn Quick Sort.
C. Cả hai đều có độ phức tạp không gian tương đương.
D. Quick Sort không cần không gian bổ sung, Merge Sort cần.
62. Phân tích trường hợp xấu nhất (worst-case analysis) của một thuật toán nhằm mục đích gì?
A. Ước tính thời gian hoặc không gian thực thi trung bình.
B. Xác định giới hạn trên về hiệu suất của thuật toán.
C. Đảm bảo thuật toán luôn hoạt động nhanh nhất có thể.
D. Phân tích hành vi của thuật toán trên dữ liệu mẫu nhỏ.
63. Độ phức tạp thời gian O(n log n) thường được coi là hiệu quả cho các thuật toán sắp xếp vì:
A. Nó gần với giới hạn dưới lý thuyết cho sắp xếp dựa trên so sánh.
B. Nó nhanh hơn đáng kể so với O(n^2).
C. Nó luôn nhanh hơn O(log n).
D. Nó có độ phức tạp không gian bằng O(1).
64. Trong phân tích thuật toán, ‘độ phức tạp trung bình’ (average-case complexity) là gì?
A. Thời gian thực thi trong trường hợp xấu nhất.
B. Thời gian thực thi trung bình trên tất cả các trường hợp đầu vào có thể.
C. Thời gian thực thi khi đầu vào là nhỏ nhất.
D. Thời gian thực thi khi đầu vào là lớn nhất.
65. Theo quan điểm về tính ổn định (stability) của thuật toán sắp xếp, thuật toán nào sau đây được coi là không ổn định?
A. Sắp xếp trộn (Merge Sort)
B. Sắp xếp vun đống (Heap Sort)
C. Sắp xếp chèn (Insertion Sort)
D. Sắp xếp đếm (Counting Sort)
66. Trong các thuật toán sắp xếp, thuật toán nào có thể được triển khai hiệu quả nhất cho các mảng có số lượng phần tử trùng lặp lớn?
A. Sắp xếp nhanh (Quick Sort)
B. Sắp xếp trộn (Merge Sort)
C. Sắp xếp đếm (Counting Sort)
D. Sắp xếp vun đống (Heap Sort)
67. Trong các thuật toán sắp xếp, thuật toán nào sau đây có thể có độ phức tạp thời gian là O(n^2) trong trường hợp xấu nhất nhưng lại có thể là O(n) trong trường hợp tốt nhất?
A. Sắp xếp vun đống (Heap Sort)
B. Sắp xếp trộn (Merge Sort)
C. Sắp xếp chèn (Insertion Sort)
D. Sắp xếp nhanh (Quick Sort)
68. Theo phân tích phổ biến về các thuật toán sắp xếp, thuật toán nào sau đây có độ phức tạp thời gian trung bình là O(n log n) và thường được sử dụng cho các tập dữ liệu lớn do hiệu quả của nó?
A. Sắp xếp nổi bọt (Bubble Sort)
B. Sắp xếp chọn (Selection Sort)
C. Sắp xếp nhanh (Quick Sort)
D. Sắp xếp chèn (Insertion Sort)
69. Trong các thuật toán tìm kiếm, thuật toán tìm kiếm nhị phân (Binary Search) có yêu cầu gì đối với dữ liệu đầu vào để đạt hiệu quả tối ưu?
A. Dữ liệu phải được sắp xếp theo thứ tự tăng dần.
B. Dữ liệu phải được sắp xếp theo thứ tự giảm dần.
C. Dữ liệu phải là một mảng liên tục trong bộ nhớ.
D. Dữ liệu không cần phải được sắp xếp.
70. Câu hỏi sau đây liên quan đến việc phân tích thuật toán: Nếu một thuật toán có độ phức tạp thời gian O(n^3), điều này có nghĩa là gì?
A. Thời gian thực thi tăng tuyến tính với n.
B. Thời gian thực thi tăng theo hàm mũ.
C. Thời gian thực thi tăng theo lập phương của n.
D. Thời gian thực thi không đổi.
71. Khi phân tích độ phức tạp của thuật toán đệ quy, phương pháp nào thường được sử dụng để tìm ra công thức đóng (closed-form expression)?
A. Phương pháp phân tích trường hợp xấu nhất.
B. Phương pháp cây đệ quy hoặc định lý Master.
C. Phương pháp kiểm thử trên tập dữ liệu nhỏ.
D. Phương pháp ước lượng bằng thực nghiệm.
72. Khi đánh giá hiệu quả của một thuật toán, khái niệm ‘độ phức tạp không gian’ (space complexity) đề cập đến điều gì?
A. Thời gian thực thi của thuật toán trên một bộ xử lý nhất định.
B. Lượng bộ nhớ tối đa mà thuật toán cần để thực thi.
C. Số lượng phép so sánh tối thiểu mà thuật toán thực hiện.
D. Số lượng bước lặp lớn nhất mà thuật toán có thể thực hiện.
73. Khái niệm ‘tiền xử lý’ (preprocessing) trong phân tích thuật toán thường áp dụng cho loại thuật toán nào để cải thiện hiệu suất truy vấn sau này?
A. Thuật toán sắp xếp tại chỗ.
B. Thuật toán tìm kiếm trên dữ liệu tĩnh.
C. Thuật toán đệ quy.
D. Thuật toán tham lam (Greedy Algorithm).
74. Trong phân tích thuật toán, trường hợp ‘tốt nhất’ (best-case) đề cập đến tình huống nào?
A. Tình huống mà thuật toán yêu cầu nhiều tài nguyên nhất.
B. Tình huống mà thuật toán yêu cầu ít tài nguyên nhất.
C. Tình huống trung bình mà thuật toán hoạt động.
D. Tình huống mà thuật toán thất bại.
75. Khi nói về đệ quy trong thuật toán, điều kiện tiên quyết để đảm bảo thuật toán dừng là gì?
A. Luôn có ít nhất hai lời gọi đệ quy trong mỗi bước.
B. Phải có một hoặc nhiều trường hợp cơ sở (base cases) để dừng lại.
C. Kích thước của bài toán phải tăng lên sau mỗi lần gọi đệ quy.
D. Tất cả các lời gọi đệ quy phải có cùng một dạng.
76. Độ phức tạp thời gian của thuật toán tìm kiếm tuần tự (Linear Search) trên một mảng có n phần tử là bao nhiêu trong trường hợp xấu nhất?
A. O(1)
B. O(log n)
C. O(n)
D. O(n log n)
77. Trong các thuật toán sắp xếp, thuật toán nào thường được khuyến nghị cho các mảng rất nhỏ hoặc gần như đã sắp xếp?
A. Sắp xếp nhanh (Quick Sort)
B. Sắp xếp trộn (Merge Sort)
C. Sắp xếp chèn (Insertion Sort)
D. Sắp xếp vun đống (Heap Sort)
78. Khi phân tích thuật toán, khái niệm ‘độ phức tạp đồng bộ’ (tight bound) thường được biểu diễn bằng ký hiệu nào?
A. O (Big O)
B. Ω (Big Omega)
C. Θ (Theta)
D. o (little o)
79. Khi một thuật toán có độ phức tạp thời gian là O(log n), điều này cho thấy hiệu suất của nó thay đổi như thế nào khi kích thước dữ liệu đầu vào (n) tăng lên?
A. Thời gian thực thi tăng tuyến tính.
B. Thời gian thực thi tăng chậm, theo hàm logarit.
C. Thời gian thực thi không đổi.
D. Thời gian thực thi tăng theo bình phương.
80. Khi phân tích thuật toán, ‘độ phức tạp phụ thuộc vào giá trị’ (value-dependent complexity) có thể xảy ra với thuật toán nào?
A. Tìm kiếm nhị phân trên mảng được sắp xếp.
B. Sắp xếp nổi bọt trên mảng đã sắp xếp.
C. Sắp xếp đếm (Counting Sort).
D. Sắp xếp trộn (Merge Sort).
81. Thuật toán nào sau đây thường được sử dụng để tìm đường đi ngắn nhất trong đồ thị có trọng số không âm?
A. Thuật toán tìm kiếm theo chiều rộng (BFS).
B. Thuật toán tìm kiếm theo chiều sâu (DFS).
C. Thuật toán Dijkstra.
D. Thuật toán Kruskal.
82. Trong phân tích thuật toán, ‘độ phức tạp không gian phụ’ (auxiliary space complexity) đề cập đến:
A. Tổng lượng bộ nhớ mà thuật toán sử dụng.
B. Lượng bộ nhớ bổ sung mà thuật toán cần ngoài bộ nhớ lưu trữ đầu vào.
C. Lượng bộ nhớ cần thiết để lưu trữ đầu ra của thuật toán.
D. Lượng bộ nhớ mà trình biên dịch sử dụng.
83. Thuật toán nào sau đây được xem là ví dụ điển hình cho sắp xếp theo kiểu chia để trị (divide and conquer)?
A. Sắp xếp nổi bọt (Bubble Sort)
B. Sắp xếp trộn (Merge Sort)
C. Sắp xếp vun đống (Heap Sort)
D. Sắp xếp đổi chỗ trực tiếp (Simple Selection Sort)
84. Câu hỏi sau đây liên quan đến việc phân tích thuật toán: Nếu một thuật toán có độ phức tạp thời gian là O(2^n), điều này cho thấy hiệu suất của nó như thế nào khi kích thước đầu vào tăng lên?
A. Thời gian thực thi tăng rất chậm.
B. Thời gian thực thi tăng tuyến tính.
C. Thời gian thực thi tăng theo hàm mũ, rất nhanh.
D. Thời gian thực thi không đổi.
85. Nếu một thuật toán có độ phức tạp thời gian là O(n), điều này ngụ ý rằng khi kích thước đầu vào tăng gấp đôi, thời gian thực thi sẽ:
A. Tăng gấp đôi.
B. Tăng gấp bốn.
C. Không thay đổi.
D. Giảm đi một nửa.
86. Độ phức tạp thời gian O(1) có nghĩa là gì trong phân tích thuật toán?
A. Thời gian thực thi tăng tuyến tính với kích thước đầu vào.
B. Thời gian thực thi giảm dần khi kích thước đầu vào tăng.
C. Thời gian thực thi không phụ thuộc vào kích thước đầu vào.
D. Thời gian thực thi tăng theo hàm logarit của kích thước đầu vào.
87. Trong phân tích thuật toán, nếu một thuật toán có độ phức tạp thời gian là O(n^2), điều này có nghĩa là gì đối với thời gian thực thi khi kích thước dữ liệu đầu vào (n) tăng lên?
A. Thời gian thực thi tăng tuyến tính với n.
B. Thời gian thực thi tăng theo bình phương của n.
C. Thời gian thực thi gần như không đổi.
D. Thời gian thực thi giảm khi n tăng.
88. Trong các cấu trúc dữ liệu, cấu trúc dữ liệu nào thường được sử dụng để triển khai thuật toán tìm kiếm nhị phân hiệu quả nhất?
A. Danh sách liên kết (Linked List)
B. Mảng (Array)
C. Ngăn xếp (Stack)
D. Hàng đợi (Queue)
89. Khi so sánh Sắp xếp nhanh (Quick Sort) và Sắp xếp vun đống (Heap Sort), điểm khác biệt chính về phương pháp thực hiện là gì?
A. Quick Sort sử dụng đệ quy, Heap Sort không.
B. Heap Sort sử dụng cấu trúc dữ liệu đống (heap), Quick Sort không.
C. Quick Sort thường thực hiện tại chỗ, Heap Sort cần không gian phụ.
D. Cả hai đều sử dụng phương pháp ‘chia để trị’.
90. Độ phức tạp thời gian của thuật toán sắp xếp vun đống (Heap Sort) là bao nhiêu?
A. O(n)
B. O(n log n)
C. O(n^2)
D. O(log n)
91. Cho khai báo: ‘TYPE KyTuVietTat = SET OF ‘A’..’Z’;’. Câu lệnh nào sau đây kiểm tra xem ký tự ‘X’ có thuộc tập hợp ‘kyHieu’ (kiểu KyTuVietTat) hay không?
A. IF ‘X’ IN kyHieu THEN…
B. IF kyHieu CONTAINS ‘X’ THEN…
C. IF ‘X’ BELONGS TO kyHieu THEN…
D. IF kyHieu HAS ‘X’ THEN…
92. Nếu muốn truy cập vào phần tử ở hàng thứ 2, cột thứ 3 của mảng ‘matrix’ đã khai báo ở câu trước, ta dùng biểu thức nào?
A. matrix[2, 3]
B. matrix(2)(3)
C. matrix[2][3]
D. matrix(2, 3)
93. Cú pháp khai báo mảng hai chiều trong Pascal thường có dạng nào?
A. VAR ten_bien : ARRAY[so_hang, so_cot] OF kieu_du_lieu;
B. VAR ten_bien : ARRAY[gioi_han_hang_duoi..gioi_han_hang_tren, gioi_han_cot_duoi..gioi_han_cot_tren] OF kieu_du_lieu;
C. VAR ten_bien : ARRAY OF kieu_du_lieu[so_hang][so_cot];
D. VAR ten_bien : ARRAY [so_hang] OF ARRAY [so_cot] OF kieu_du_lieu;
94. Khi làm việc với mảng hai chiều, ta cần sử dụng bao nhiêu chỉ số để truy cập vào một phần tử?
A. Một chỉ số.
B. Hai chỉ số.
C. Ba chỉ số.
D. Số lượng chỉ số tùy thuộc vào kích thước của mảng.
95. Yếu tố nào là quan trọng nhất để đảm bảo một thuật toán đệ quy dừng lại?
A. Sử dụng vòng lặp lồng nhau.
B. Có một hoặc nhiều trường hợp cơ sở (base cases) mà thuật toán có thể trả về trực tiếp mà không cần gọi lại chính nó.
C. Tăng kích thước của bài toán trong mỗi lần gọi đệ quy.
D. Sử dụng biến toàn cục để lưu trữ kết quả.
96. Một chương trình Pascal khai báo ‘VAR diem : ARRAY[1..10] OF Real;’. Nếu muốn truy cập vào phần tử thứ 5 của mảng ‘diem’, ta sẽ sử dụng biểu thức nào?
A. diem(5)
B. diem[5]
C. diem.5
D. diem{5}
97. Trong Pascal, hàm nào dùng để nối hai chuỗi lại với nhau?
A. COPY
B. CONCAT
C. LENGTH
D. POS
98. Trong Pascal, để khai báo một hằng số, ta sử dụng từ khóa nào?
A. VAR
B. CONST
C. TYPE
D. BEGIN
99. Khi nào thì thuật toán tìm kiếm nhị phân (Binary Search) cho hiệu quả cao nhất?
A. Khi mảng có kích thước nhỏ.
B. Khi mảng chưa được sắp xếp.
C. Khi mảng đã được sắp xếp.
D. Khi cần tìm kiếm nhiều lần trên một mảng lớn.
100. Trong thuật toán sắp xếp nổi bọt (Bubble Sort), mục đích của mỗi lượt duyệt qua mảng là gì?
A. Tìm kiếm phần tử lớn nhất và đặt nó vào cuối mảng.
B. So sánh các cặp phần tử liền kề và hoán đổi chúng nếu chúng sai thứ tự.
C. Chia mảng thành hai nửa và sắp xếp đệ quy từng nửa.
D. Chèn phần tử hiện tại vào vị trí đúng trong phần mảng đã sắp xếp.
101. Cho hai chuỗi ‘s1 := ‘Lap’;’ và ‘s2 := ‘Trinh’;’. Sau câu lệnh ‘s3 := s1 + s2;’, giá trị của chuỗi ‘s3’ sẽ là gì?
A. ‘LapTrinh’
B. ‘Lap + Trinh’
C. ‘Lap’
D. ‘Trinh’
102. Cho khai báo: ‘TYPE NgayTrongTuan = (Hai, Ba, Tu, Bon, Nam, Sau, Bay);’. Biến ‘homNay’ thuộc kiểu ‘NgayTrongTuan’. Nếu ‘homNay’ là ‘Bon’, thì giá trị của ‘Succ(homNay)’ sẽ là gì?
103. Phát biểu nào sau đây đúng về ‘chuỗi’ (string) trong Pascal?
A. Chuỗi là một kiểu dữ liệu cơ bản, không thể coi là một dạng mảng ký tự.
B. Chuỗi có thể được coi là một mảng ký tự có độ dài thay đổi.
C. Chuỗi chỉ có thể chứa các ký tự số.
D. Độ dài của chuỗi luôn cố định theo quy định của hệ điều hành.
104. Mục đích chính của việc sử dụng mảng trong lập trình là gì?
A. Để lưu trữ nhiều giá trị khác nhau của các kiểu dữ liệu khác nhau.
B. Để tổ chức và quản lý một tập hợp các dữ liệu có cùng kiểu và có mối liên hệ với nhau.
C. Để thực hiện các phép toán số học phức tạp trên một tập hợp các số.
D. Để định nghĩa các hàm và thủ tục trong chương trình.
105. Hàm ‘LENGTH(s)’ trong Pascal trả về giá trị gì?
A. Vị trí xuất hiện đầu tiên của một ký tự trong chuỗi ‘s’.
B. Độ dài của chuỗi ‘s’ (số ký tự).
C. Ký tự đầu tiên của chuỗi ‘s’.
D. Chuỗi ‘s’ được viết ngược lại.
106. Trong ngôn ngữ lập trình Pascal, khi khai báo một biến kiểu mảng, cú pháp nào sau đây là đúng?
A. VAR ten_bien : ARRAY [so_luong] OF kieu_du_lieu;
B. VAR ten_bien : ARRAY [gioi_han_duoi..gioi_han_tren] OF kieu_du_lieu;
C. VAR ten_bien : ARRAY (gioi_han_duoi..gioi_han_tren) OF kieu_du_lieu;
D. VAR ten_bien : ARRAY OF kieu_du_lieu [gioi_han_duoi..gioi_han_tren];
107. Phát biểu nào sau đây là đúng về ‘kiểu bản ghi’ (Record Type) trong Pascal?
A. Các trường của bản ghi phải cùng kiểu dữ liệu.
B. Mỗi trường của bản ghi có thể có kiểu dữ liệu khác nhau.
C. Bản ghi là một tập hợp các phần tử không có thứ tự.
D. Kích thước của bản ghi có thể thay đổi động.
108. Khi sử dụng cấu trúc ‘CASE OF’ trong Pascal, điều gì xảy ra nếu giá trị của biến không khớp với bất kỳ trường hợp nào và không có mệnh đề ‘ELSE’?
A. Chương trình sẽ bỏ qua cấu trúc CASE và tiếp tục thực thi lệnh tiếp theo.
B. Chương trình sẽ báo lỗi và dừng thực thi.
C. Chương trình sẽ thực hiện mệnh đề ELSE (nếu có).
D. Chương trình sẽ thực hiện lại cấu trúc CASE.
109. Trong các cấu trúc dữ liệu, ‘ngăn xếp’ (Stack) hoạt động theo nguyên tắc nào?
A. FIFO (First-In, First-Out)
B. LIFO (Last-In, First-Out)
C. LILO (Last-In, Last-Out)
D. FILO (First-In, Last-Out)
110. Cho khai báo bản ghi: ‘TYPE SinhVien = RECORD Ten: STRING; DiemTB: Real; END;’. Nếu ‘sv1’ là biến kiểu SinhVien, làm thế nào để gán giá trị ‘Nguyen Van A’ cho trường ‘Ten’ của ‘sv1’?
A. sv1.Ten := ‘Nguyen Van A’;
B. sv1(Ten) := ‘Nguyen Van A’;
C. sv1[‘Ten’] := ‘Nguyen Van A’;
D. sv1.Ten(‘Nguyen Van A’);
111. Thuật toán tìm kiếm tuần tự (Linear Search) hoạt động dựa trên nguyên tắc nào?
A. Chia đôi mảng và so sánh với phần tử ở giữa.
B. Duyệt qua từng phần tử của mảng theo thứ tự cho đến khi tìm thấy hoặc hết mảng.
C. Sử dụng cấu trúc dữ liệu cây để tìm kiếm nhanh hơn.
D. So sánh phần tử cần tìm với phần tử đầu và cuối của mảng.
112. Trong Pascal, ‘đệ quy’ (recursion) là gì?
A. Là quá trình lặp lại một khối lệnh nhiều lần.
B. Là kỹ thuật mà một hàm hoặc thủ tục tự gọi lại chính nó để giải quyết bài toán.
C. Là việc sử dụng vòng lặp ‘WHILE’ để thực hiện công việc.
D. Là việc chia nhỏ bài toán thành các bài toán con độc lập.
113. Phát biểu nào sau đây mô tả đúng nhất về ‘kiểu liệt kê’ (Enumerated Type) trong Pascal?
A. Một kiểu dữ liệu chỉ chứa các giá trị số nguyên.
B. Một kiểu dữ liệu định nghĩa một danh sách các giá trị có thứ tự, được đặt tên riêng.
C. Một kiểu dữ liệu cho phép lưu trữ chuỗi ký tự.
D. Một kiểu dữ liệu cho phép lưu trữ nhiều giá trị khác nhau của các kiểu dữ liệu khác nhau.
114. Trong các cấu trúc dữ liệu, ‘hàng đợi’ (Queue) hoạt động theo nguyên tắc nào?
A. LIFO (Last-In, First-Out)
B. FIFO (First-In, First-Out)
C. FILO (First-In, Last-Out)
D. LILO (Last-In, Last-Out)
115. Trong lập trình Pascal, ‘thủ tục’ (procedure) và ‘hàm’ (function) có điểm khác biệt cơ bản nào?
A. Thủ tục không thể nhận tham số, còn hàm thì có thể.
B. Hàm bắt buộc phải trả về một giá trị, còn thủ tục thì không nhất thiết.
C. Thủ tục chỉ thực hiện hành động, còn hàm chỉ tính toán.
D. Không có sự khác biệt cơ bản nào, chúng có thể thay thế cho nhau.
116. Khi một thủ tục hoặc hàm được khai báo với tham số ‘VAR’, điều đó có nghĩa là gì?
A. Tham số được truyền theo giá trị, thay đổi bên trong không ảnh hưởng bên ngoài.
B. Tham số được truyền theo địa chỉ, mọi thay đổi bên trong sẽ ảnh hưởng đến biến gốc bên ngoài.
C. Tham số chỉ có thể là hằng số.
D. Tham số chỉ có thể là mảng.
117. Phát biểu nào sau đây KHÔNG đúng về mảng một chiều trong Pascal?
A. Các phần tử của mảng phải cùng kiểu dữ liệu.
B. Kích thước của mảng có thể thay đổi trong quá trình thực thi chương trình.
C. Các phần tử của mảng được đánh số thứ tự bằng các chỉ số nguyên.
D. Mảng một chiều cho phép truy cập trực tiếp đến bất kỳ phần tử nào thông qua chỉ số của nó.
118. Cho khai báo mảng hai chiều: ‘VAR matrix : ARRAY[1..3, 1..4] OF Real;’. Số lượng phần tử trong mảng ‘matrix’ là bao nhiêu?
119. Cho đoạn chương trình Pascal sau:
“`pascal
VAR a : ARRAY[1..5] OF Integer;
BEGIN
FOR i := 1 TO 5 DO
a[i] := i * 2;
END.
“`
Sau khi thực thi đoạn chương trình trên, giá trị của phần tử a[3] là bao nhiêu?
120. Trong Pascal, khi khai báo một ‘kiểu tập hợp’ (Set Type), mục đích của nó là gì?
A. Để lưu trữ một danh sách các phần tử có thứ tự.
B. Để lưu trữ một tập hợp các phần tử duy nhất, không có thứ tự, thuộc cùng một kiểu cơ sở.
C. Để định nghĩa các hàm và thủ tục.
D. Để thực hiện các phép toán số học.
121. Trong Pascal, từ khóa nào được sử dụng để khai báo một thủ tục?
A. procedure
B. function
C. begin
D. var
122. Trong lập trình Pascal, khi khai báo một biến kiểu ‘boolean’, nó có thể nhận một trong hai giá trị nào?
A. True hoặc False.
B. 0 hoặc 1.
C. On hoặc Off.
D. Yes hoặc No.
123. Phát biểu nào sau đây mô tả đúng về cấu trúc ‘if-then’ đơn giản trong Pascal?
A. Thực hiện một khối lệnh nếu điều kiện là đúng, nếu không thì bỏ qua khối lệnh đó.
B. Luôn thực hiện một khối lệnh, bất kể điều kiện.
C. Chỉ thực hiện khối lệnh nếu điều kiện là sai.
D. Yêu cầu phải có ‘else’ đi kèm.
124. Phân tích vòng lặp ‘for i := 1 to 10 do writeln(i);’. Vòng lặp này sẽ thực thi bao nhiêu lần?
A. 10 lần
B. 11 lần
C. 9 lần
D. Vô hạn lần
125. Xét đoạn mã Pascal sau:
“`pascal
var
i: integer;
begin
for i := 1 to 5 do
if i mod 2 = 0 then
writeln(‘Chan’);
end.
“`
Đoạn mã này sẽ in ra bao nhiêu lần từ ‘Chan’?
A. 2 lần
B. 3 lần
C. 5 lần
D. 1 lần
126. Phát biểu nào sau đây đúng về sự khác biệt giữa kiểu dữ liệu ‘integer’ và ‘real’ trong Pascal?
A. ‘integer’ lưu số nguyên, ‘real’ lưu số thực.
B. ‘integer’ lưu số thực, ‘real’ lưu số nguyên.
C. ‘integer’ lưu ký tự, ‘real’ lưu số nguyên.
D. ‘integer’ và ‘real’ đều lưu số nguyên.
127. Phát biểu nào sau đây mô tả đúng vai trò của các biến trong lập trình Pascal?
A. Biến là nơi lưu trữ dữ liệu và có thể thay đổi giá trị trong quá trình thực thi chương trình.
B. Biến chỉ dùng để lưu trữ các giá trị không thay đổi trong suốt chương trình.
C. Biến dùng để định nghĩa các hàm và thủ tục.
D. Biến là một phần của cấu trúc điều khiển.
128. Xét đoạn mã Pascal sau:
“`pascal
var
x: integer;
begin
x := 5;
if x > 10 then
writeln(‘Lon hon 10’)
else
writeln(‘Khong lon hon 10’);
end.
“`
Kết quả hiển thị trên màn hình khi đoạn mã này được thực thi là gì?
A. Khong lon hon 10
B. Lon hon 10
C. Chương trình báo lỗi
D. Không hiển thị gì
129. Xét đoạn mã Pascal sau:
“`pascal
var
i: integer;
begin
for i := 1 to 3 do
writeln(i*2);
end.
“`
Kết quả hiển thị trên màn hình sẽ là:
A. 2, 4, 6 (mỗi số trên một dòng)
B. 1, 2, 3 (mỗi số trên một dòng)
C. 6, 4, 2 (mỗi số trên một dòng)
D. Chương trình báo lỗi
130. Trong Pascal, toán tử logic nào dùng để kết hợp hai điều kiện, yêu cầu cả hai điều kiện phải đúng thì kết quả mới đúng?
131. Xét đoạn mã Pascal sau:
“`pascal
var
count: integer;
begin
count := 0;
while count < 5 do
begin
writeln('Lap thu: ', count);
count := count + 1;
end;
end.
“`
Đoạn mã này sẽ in ra bao nhiêu dòng chữ 'Lap thu: '?
A. 5 lần
B. 6 lần
C. 4 lần
D. Vô hạn lần
132. Một lập trình viên muốn viết một chương trình Pascal để tính tổng các số tự nhiên từ 1 đến N, với N là một số nguyên dương nhập từ bàn phím. Cấu trúc lặp nào sau đây là phù hợp nhất để thực hiện việc này?
A. Vòng lặp ‘for’ vì số lần lặp đã biết trước.
B. Vòng lặp ‘while’ vì cần kiểm tra điều kiện trước khi lặp.
C. Vòng lặp ‘repeat … until’ vì cần thực hiện ít nhất một lần.
D. Cấu trúc ‘if-then-else’ vì chỉ có một giá trị N.
133. Trong lập trình Pascal, câu lệnh nào sau đây được sử dụng để lặp lại một khối lệnh cho đến khi một điều kiện trở thành sai?
A. repeat … until
B. for … do
C. while … do
D. case … of
134. Trong Pascal, kiểu dữ liệu nào sau đây được sử dụng để lưu trữ một dãy các ký tự?
A. string
B. integer
C. real
D. boolean
135. Trong lập trình Pascal, khi nào thì câu lệnh ‘break’ được sử dụng?
A. Để thoát khỏi vòng lặp hiện tại ngay lập tức.
B. Để chuyển sang lần lặp tiếp theo của vòng lặp.
C. Để kết thúc chương trình.
D. Để định nghĩa một hằng số.
136. Trong ngôn ngữ lập trình Pascal, cấu trúc điều khiển ‘if-then-else’ được sử dụng để thực hiện một khối lệnh khi điều kiện đúng và một khối lệnh khác khi điều kiện sai. Phát biểu nào sau đây mô tả chính xác nhất chức năng của ‘else’ trong cấu trúc này?
A. Else thực hiện một khối lệnh khi điều kiện của ‘if’ là sai.
B. Else luôn thực hiện một khối lệnh sau ‘if’, bất kể điều kiện đúng hay sai.
C. Else chỉ được sử dụng khi có nhiều điều kiện ‘if’ lồng nhau.
D. Else là một từ khóa tùy chọn và không ảnh hưởng đến luồng thực thi của chương trình.
137. Trong Pascal, từ khóa nào được sử dụng để khai báo một hằng số?
A. const
B. var
C. type
D. procedure
138. Phân tích cấu trúc ‘for … do’ trong Pascal, nếu giá trị đầu nhỏ hơn giá trị cuối và bước nhảy là 1, thì vòng lặp sẽ thực hiện theo chiều nào?
A. Tăng dần từ giá trị đầu đến giá trị cuối.
B. Giảm dần từ giá trị cuối về giá trị đầu.
C. Thực hiện một lần duy nhất.
D. Vô hạn lần.
139. Xét đoạn mã Pascal sau:
“`pascal
var
y: integer;
begin
y := 7;
case y of
5: writeln(‘Nam’);
7: writeln(‘Bay’);
9: writeln(‘Chin’);
else
writeln(‘Khac’);
end;
end.
“`
Kết quả hiển thị trên màn hình là gì?
A. Bay
B. Nam
C. Chin
D. Khac
140. Trong Pascal, làm thế nào để một hàm (function) trả về một giá trị cho chương trình gọi nó?
A. Gán giá trị cho tên của hàm đó bên trong khối lệnh của hàm.
B. Sử dụng từ khóa ‘return’ như trong một số ngôn ngữ khác.
C. Gán giá trị cho một biến toàn cục.
D. In giá trị ra màn hình.
141. Phát biểu nào sau đây mô tả đúng vai trò của toán tử ‘mod’ trong Pascal?
A. Trả về phần dư của phép chia hai số nguyên.
B. Trả về thương của phép chia hai số nguyên.
C. Trả về phần thập phân của phép chia.
D. So sánh hai số có bằng nhau không.
142. Khi sử dụng câu lệnh ‘repeat … until’ trong Pascal, điều kiện dừng được kiểm tra:
A. Sau mỗi lần thực thi khối lệnh.
B. Trước mỗi lần thực thi khối lệnh.
C. Chỉ sau lần thực thi khối lệnh đầu tiên.
D. Không bao giờ được kiểm tra.
143. Trong Pascal, khi sử dụng câu lệnh ‘writeln’, điều gì xảy ra với con trỏ màn hình sau khi nội dung được in ra?
A. Con trỏ sẽ xuống dòng mới.
B. Con trỏ sẽ ở cuối dòng vừa in.
C. Con trỏ sẽ quay về đầu dòng.
D. Chương trình dừng lại.
144. Phát biểu nào sau đây là đúng về cách truy cập phần tử của một mảng trong Pascal?
A. Sử dụng tên mảng theo sau là chỉ số của phần tử trong cặp dấu ngoặc vuông.
B. Sử dụng tên mảng theo sau là chỉ số của phần tử trong cặp dấu ngoặc đơn.
C. Sử dụng tên mảng theo sau là chỉ số của phần tử trong cặp dấu ngoặc nhọn.
D. Không cần chỉ số, chỉ cần tên mảng là đủ.
145. Phát biểu nào sau đây mô tả đúng về ‘thủ tục’ (procedure) trong Pascal?
A. Thủ tục là một khối lệnh có tên, có thể được gọi lại nhiều lần và không trả về giá trị trực tiếp.
B. Thủ tục luôn trả về một giá trị duy nhất cho chương trình chính.
C. Thủ tục chỉ được sử dụng để khai báo biến.
D. Thủ tục là một loại hằng số.
146. Trong Pascal, để khai báo một mảng (array) có 10 phần tử kiểu integer, với chỉ số bắt đầu từ 1, cú pháp khai báo đúng là:
A. var myArray: array[1..10] of integer;
B. var myArray: integer[1..10];
C. var myArray: array of integer[10];
D. var myArray: integer array(10);
147. Xét đoạn mã Pascal sau:
“`pascal
var
a, b: integer;
begin
a := 10;
b := 5;
if (a > 5) and (b < 10) then
writeln('A')
else
writeln('B');
end.
“`
Kết quả hiển thị trên màn hình là gì?
A. A
B. B
C. Chương trình báo lỗi
D. Không hiển thị gì
148. Phát biểu nào sau đây mô tả đúng về sự khác biệt giữa ‘function’ và ‘procedure’ trong Pascal?
A. Function trả về giá trị, procedure không trả về giá trị.
B. Procedure trả về giá trị, function không trả về giá trị.
C. Cả function và procedure đều trả về giá trị.
D. Cả function và procedure đều không trả về giá trị.
149. Trong lập trình Pascal, nếu một vòng lặp ‘while’ có điều kiện ban đầu là sai, thì điều gì sẽ xảy ra?
A. Khối lệnh bên trong vòng lặp sẽ không được thực thi lần nào.
B. Khối lệnh bên trong vòng lặp sẽ được thực thi một lần.
C. Chương trình sẽ báo lỗi.
D. Vòng lặp sẽ chạy vô hạn.
150. Nếu một chương trình cần thực hiện một hành động cụ thể dựa trên nhiều giá trị có thể có của một biến, cấu trúc điều khiển nào sau đây là phù hợp nhất trong Pascal?
A. case … of
B. if … then
C. while … do
D. repeat … until