1. Một ví dụ về mối quan hệ ‘is-a’ (là một) trong lập trình hướng đối tượng là:
A. Một ‘Ô tô’ có một ‘Bánh xe’.
B. Một ‘Con chó’ là một ‘Động vật có vú’.
C. Một ‘Ngân hàng’ quản lý một ‘Tài khoản’.
D. Một ‘Máy tính’ có một ‘Màn hình’.
2. Tính kế thừa (Inheritance) trong lập trình hướng đối tượng cho phép một lớp mới:
A. Tạo ra các đối tượng độc lập mà không cần lớp cha.
B. Chỉ thừa hưởng các thuộc tính, không thừa hưởng phương thức từ lớp cha.
C. Thừa hưởng các thuộc tính và phương thức từ một lớp đã có (lớp cha) và có thể bổ sung hoặc sửa đổi chúng.
D. Định nghĩa lại hoàn toàn các thuộc tính và phương thức mà không liên quan đến lớp cha.
3. Trong lập trình hướng đối tượng, một ‘abstract class’ (lớp trừu tượng) có thể được sử dụng để:
A. Tạo trực tiếp các đối tượng của chính nó.
B. Định nghĩa một giao diện chung và các hành vi cơ bản mà các lớp con kế thừa phải triển khai, nhưng không thể tạo đối tượng trực tiếp từ lớp trừu tượng.
C. Chỉ chứa các phương thức đã được cài đặt đầy đủ.
D. Thực hiện đa hình mà không cần lớp con.
4. Trong ngôn ngữ lập trình Java, từ khóa nào được sử dụng để khai báo một lớp trừu tượng?
A. class
B. static
C. abstract
D. final
5. Trong lập trình hướng đối tượng, một lớp có thể có nhiều phương thức với cùng tên nhưng khác nhau về tham số. Đây là ví dụ của:
A. Kế thừa (Inheritance)
B. Đa hình (Polymorphism)
C. Nạp chồng phương thức (Method Overloading)
D. Đóng gói (Encapsulation)
6. Trong lập trình hướng đối tượng, ‘composition’ (thành phần) khác với ‘inheritance’ (kế thừa) ở điểm nào?
A. Composition là mối quan hệ ‘is-a’ (là một), còn inheritance là mối quan hệ ‘has-a’ (có một).
B. Composition là mối quan hệ ‘has-a’ (có một), còn inheritance là mối quan hệ ‘is-a’ (là một).
C. Composition cho phép đa kế thừa, còn inheritance thì không.
D. Composition chỉ áp dụng cho các lớp trừu tượng, còn inheritance cho mọi loại lớp.
7. Một lớp cha có thể có nhiều lớp con khác nhau, nhưng một lớp con thường chỉ kế thừa từ một lớp cha duy nhất (trong hầu hết các ngôn ngữ OOP hiện đại). Đây là đặc điểm của:
A. Đa hình (Polymorphism)
B. Đóng gói (Encapsulation)
C. Đơn kế thừa (Single Inheritance)
D. Trừu tượng hóa (Abstraction)
8. Tại sao việc sử dụng các lớp và đối tượng trong lập trình hướng đối tượng lại được ưa chuộng trong phát triển phần mềm lớn?
A. Lập trình hướng đối tượng làm cho mã nguồn phức tạp hơn và khó bảo trì hơn.
B. Nó giúp tổ chức mã nguồn một cách logic, dễ đọc, dễ hiểu, dễ bảo trì và tái sử dụng.
C. Lập trình hướng đối tượng chỉ phù hợp với các dự án nhỏ.
D. Nó yêu cầu ít tài nguyên hệ thống hơn so với lập trình thủ tục.
9. Trong ngôn ngữ lập trình C++, từ khóa nào được sử dụng để khai báo một lớp chỉ có thể được kế thừa bởi các lớp khác nhưng không thể tạo đối tượng trực tiếp?
A. public
B. private
C. protected
D. abstract (thường được mô phỏng bằng cách khai báo tất cả thành viên là pure virtual)
10. Tại sao việc sử dụng các phương thức getter và setter (thường đi kèm với nguyên lý đóng gói) lại quan trọng?
A. Để làm cho mã nguồn dài hơn và phức tạp hơn.
B. Để kiểm soát việc truy cập và sửa đổi dữ liệu, thêm logic xác thực hoặc thông báo thay đổi.
C. Để cho phép truy cập trực tiếp vào dữ liệu mà không cần bất kỳ kiểm soát nào.
D. Để loại bỏ hoàn toàn sự cần thiết của các thuộc tính.
11. Khi nói về ‘object identity’ (nhận dạng đối tượng) và ‘object equality’ (bình đẳng đối tượng), chúng khác nhau như thế nào?
A. Identity đề cập đến giá trị của thuộc tính, còn equality đề cập đến địa chỉ bộ nhớ.
B. Identity đề cập đến việc hai đối tượng có cùng địa chỉ bộ nhớ hay không, còn equality đề cập đến việc hai đối tượng có cùng giá trị thuộc tính quan trọng hay không.
C. Chúng là hai thuật ngữ đồng nghĩa, chỉ cùng một khái niệm.
D. Identity chỉ áp dụng cho các lớp trừu tượng, còn equality cho các lớp cụ thể.
12. Một lớp có thể có một hoặc nhiều đối tượng là thể hiện của nó. Đây là minh họa cho nguyên lý nào?
A. Kế thừa (Inheritance)
B. Đóng gói (Encapsulation)
C. Đa hình (Polymorphism)
D. Trừu tượng hóa (Abstraction)
13. Khi một lớp triển khai một giao diện (interface), nó phải làm gì?
A. Kế thừa tất cả các thuộc tính của giao diện.
B. Triển khai (cung cấp cài đặt) cho tất cả các phương thức được khai báo trong giao diện đó.
C. Chỉ cần triển khai một nửa số phương thức của giao diện.
D. Không cần làm gì cả, chỉ cần khai báo là đã triển khai.
14. Nguyên lý đóng gói giúp bảo vệ dữ liệu của đối tượng bằng cách nào?
A. Cho phép mọi đối tượng truy cập và sửa đổi trực tiếp các thuộc tính.
B. Che giấu các thuộc tính và chỉ cho phép truy cập/thay đổi chúng thông qua các phương thức công khai (public methods) của lớp.
C. Chuyển toàn bộ dữ liệu ra bên ngoài lớp để dễ quản lý.
D. Loại bỏ hoàn toàn các thuộc tính để tránh xung đột.
15. Một phương thức có cùng tên, cùng tham số đầu vào nhưng có thể có kiểu trả về khác nhau trong các lớp khác nhau thuộc cùng một hệ thống kế thừa được gọi là gì?
A. Nạp chồng phương thức (Method Overloading)
B. Ghi đè phương thức (Method Overriding)
C. Trừu tượng hóa (Abstraction)
D. Đóng gói (Encapsulation)
16. Một ‘final class’ (lớp cuối cùng) trong các ngôn ngữ như Java có ý nghĩa gì?
A. Lớp đó có thể được ghi đè bởi các lớp con.
B. Lớp đó không thể được kế thừa bởi bất kỳ lớp con nào khác.
C. Tất cả các phương thức trong lớp đó đều là trừu tượng.
D. Lớp đó có thể được tạo ra nhiều lần.
17. Trong ngữ cảnh của lập trình hướng đối tượng, ‘virtual function’ (hàm ảo) được sử dụng chủ yếu cho mục đích gì?
A. Bắt buộc các lớp con phải định nghĩa lại hàm đó.
B. Cho phép ghi đè phương thức (method overriding) trong các lớp con và hỗ trợ đa hình tại thời điểm chạy (runtime polymorphism).
C. Tăng tốc độ thực thi của chương trình.
D. Ngăn chặn việc kế thừa các thuộc tính của lớp cha.
18. Trong lập trình hướng đối tượng, khái niệm nào dùng để mô tả một tập hợp các thuộc tính và phương thức chung cho một nhóm đối tượng có cùng đặc điểm?
A. Lớp (Class)
B. Đối tượng (Object)
C. Trừu tượng hóa (Abstraction)
D. Đóng gói (Encapsulation)
19. Một lớp được gọi là ‘concrete class’ (lớp cụ thể) khi nào?
A. Khi nó chứa ít nhất một phương thức trừu tượng.
B. Khi nó không chứa bất kỳ phương thức trừu tượng nào và có thể tạo trực tiếp các đối tượng của nó.
C. Khi nó kế thừa từ nhiều lớp cha.
D. Khi nó chỉ có các thuộc tính mà không có phương thức.
20. Nguyên lý đa hình cho phép một câu lệnh gọi phương thức có thể thực thi mã khác nhau tùy thuộc vào:
A. Tên của lớp được khai báo.
B. Kiểu dữ liệu thực tế của đối tượng tại thời điểm thực thi.
C. Số lượng thuộc tính của đối tượng.
D. Trình tự khai báo lớp.
21. Trong lập trình hướng đối tượng, ‘abstraction’ (trừu tượng hóa) và ‘encapsulation’ (đóng gói) có mối liên hệ như thế nào?
A. Chúng là hai khái niệm hoàn toàn tách biệt và không liên quan.
B. Đóng gói là một cơ chế để thực hiện trừu tượng hóa bằng cách che giấu chi tiết và chỉ phơi bày những gì cần thiết.
C. Trừu tượng hóa là cơ chế để thực hiện đóng gói.
D. Chỉ có thể sử dụng một trong hai nguyên lý, không thể dùng cả hai.
22. Nguyên lý đóng gói (Encapsulation) trong lập trình hướng đối tượng nhấn mạnh điều gì?
A. Cho phép lớp con kế thừa tất cả thuộc tính và phương thức của lớp cha.
B. Tập hợp dữ liệu (thuộc tính) và các phương thức thao tác trên dữ liệu đó vào một đơn vị duy nhất là lớp.
C. Cho phép một lớp có nhiều dạng biểu hiện khác nhau của cùng một phương thức.
D. Che giấu chi tiết triển khai bên trong của một lớp và chỉ cho phép truy cập thông qua các phương thức công khai.
23. Khái niệm đa hình (Polymorphism) cho phép:
A. Một lớp chỉ có thể thực hiện một loại hành động duy nhất.
B. Các đối tượng thuộc các lớp khác nhau nhưng có cùng kiểu dữ liệu hoặc cùng kế thừa từ một lớp cha có thể được xử lý theo cùng một cách thông qua một giao diện chung.
C. Chỉ các phương thức trong cùng một lớp mới có thể có nhiều dạng biểu hiện.
D. Việc ghi đè phương thức chỉ áp dụng cho các thuộc tính, không áp dụng cho phương thức.
24. Trong các nguyên lý của lập trình hướng đối tượng, nguyên lý nào tập trung vào việc trừu tượng hóa các thuộc tính và hành vi của đối tượng để chỉ hiển thị những gì cần thiết cho người dùng?
A. Đóng gói (Encapsulation)
B. Kế thừa (Inheritance)
C. Đa hình (Polymorphism)
D. Trừu tượng hóa (Abstraction)
25. Trong lập trình hướng đối tượng, việc tạo ra các lớp con cho phép:
A. Chỉ đơn giản hóa việc khai báo lớp cha.
B. Tái sử dụng mã nguồn, mở rộng chức năng và tùy chỉnh hành vi của lớp cha.
C. Tăng cường bảo mật bằng cách che giấu hoàn toàn lớp cha.
D. Tạo ra các lớp hoàn toàn độc lập với lớp cha.
26. Một ‘interface’ (giao diện) trong lập trình hướng đối tượng có vai trò gì?
A. Cung cấp cài đặt mặc định cho tất cả các phương thức.
B. Định nghĩa một hợp đồng (contract) về các phương thức mà một lớp phải triển khai, không chứa dữ liệu hoặc cài đặt phương thức.
C. Cho phép kế thừa đa cấp vô hạn.
D. Tạo ra các đối tượng có thể thay đổi hành vi của lớp cha.
27. Một đối tượng trong lập trình hướng đối tượng là một thể hiện cụ thể của một lớp. Điều này có nghĩa là gì?
A. Đối tượng có thể có các thuộc tính và phương thức khác với lớp của nó.
B. Đối tượng là một thực thể độc lập, không phụ thuộc vào lớp.
C. Đối tượng mang các đặc điểm (thuộc tính và hành vi) được định nghĩa bởi lớp mà nó thuộc về.
D. Đối tượng chỉ bao gồm các phương thức, không có thuộc tính.
28. Khi một lớp con ghi đè (override) một phương thức của lớp cha, điều gì sẽ xảy ra?
A. Phương thức của lớp cha sẽ bị xóa bỏ hoàn toàn.
B. Khi gọi phương thức đó trên đối tượng của lớp con, phiên bản phương thức của lớp con sẽ được thực thi.
C. Phương thức của lớp con sẽ luôn gọi lại phương thức của lớp cha trước.
D. Lớp con không thể gọi lại phương thức của lớp cha.
29. Khái niệm nào mô tả việc tạo ra các phương thức có cùng tên nhưng khác nhau về số lượng hoặc kiểu tham số đầu vào trong cùng một lớp?
A. Ghi đè phương thức (Method Overriding)
B. Đa hình (Polymorphism)
C. Nạp chồng phương thức (Method Overloading)
D. Kế thừa (Inheritance)
30. Khi một lớp kế thừa từ hai lớp cha trở lên (đa kế thừa), điều này có thể dẫn đến vấn đề gì?
A. Vấn đề ‘kim cương’ (diamond problem) nếu hai lớp cha có chung một lớp ông nội và đều ghi đè một phương thức.
B. Giảm hiệu suất do số lượng phương thức tăng lên.
C. Tăng cường tính đóng gói, làm cho mã nguồn an toàn hơn.
D. Không có vấn đề gì, đa kế thừa luôn mang lại lợi ích.
31. Trong lập trình, tại sao việc xử lý lỗi (error handling) lại quan trọng?
A. Để làm chương trình chạy chậm hơn.
B. Để chương trình bị crash (dừng đột ngột) một cách có kiểm soát và cung cấp thông tin hữu ích.
C. Để tăng cường bảo mật bằng cách khóa người dùng.
D. Để đảm bảo mọi biến đều có giá trị ban đầu.
32. Khi bạn cần thực hiện một khối mã chỉ khi một điều kiện cụ thể là đúng, bạn sẽ sử dụng cấu trúc nào?
A. Vòng lặp ‘for’.
B. Câu lệnh ‘switch’.
C. Câu lệnh ‘if’.
D. Định nghĩa hàm.
33. Trong lập trình, khi bạn muốn kiểm tra nhiều điều kiện khác nhau liên tiếp, ví dụ: nếu điểm từ 9-10 là A, từ 7-8 là B, từ 5-6 là C, bạn sẽ sử dụng cấu trúc nào là hiệu quả nhất?
A. Nhiều câu lệnh ‘if’ đứng độc lập.
B. Cấu trúc ‘if-else if-else’ hoặc ‘switch-case’.
C. Vòng lặp ‘for’.
D. Khai báo mảng.
34. Khi bạn cần thực hiện một hành động dựa trên nhiều điều kiện khác nhau, và mỗi điều kiện sẽ dẫn đến một kết quả khác nhau, cấu trúc nào là phù hợp nhất?
A. Vòng lặp ‘while’.
B. Câu lệnh ‘if’ đơn lẻ.
C. Cấu trúc ‘if-else if-else’ hoặc ‘switch-case’.
D. Khai báo mảng.
35. Trong cấu trúc lặp ‘for’, vòng lặp sẽ tiếp tục thực thi chừng nào điều kiện còn đúng? Theo phân tích phổ biến, điều gì thường được sử dụng để điều khiển số lần lặp?
A. Một biến đếm tăng hoặc giảm.
B. Một biến boolean luôn mang giá trị ‘true’.
C. Một biến lưu trữ chuỗi ký tự.
D. Một biến lưu trữ số thực.
36. Khi bạn muốn chương trình thực hiện một hành động giống nhau nhiều lần, ví dụ như in ra màn hình một dòng chữ 10 lần, bạn sẽ sử dụng cấu trúc nào trong lập trình?
A. Câu lệnh ‘if-else’.
B. Câu lệnh ‘switch-case’.
C. Cấu trúc lặp (ví dụ: ‘for’, ‘while’).
D. Khai báo biến.
37. Phát biểu nào sau đây mô tả đúng nhất khái niệm ‘hàm’ (function) trong lập trình?
A. Một biến chỉ lưu trữ một giá trị duy nhất.
B. Một khối mã được đặt tên, có thể thực hiện một nhiệm vụ cụ thể và có thể được gọi lại nhiều lần.
C. Một cấu trúc dữ liệu lưu trữ nhiều giá trị cùng loại.
D. Một câu lệnh dùng để kết thúc chương trình.
38. Tại sao việc đặt tên biến và hàm một cách rõ ràng, có ý nghĩa lại quan trọng trong lập trình?
A. Để chương trình chạy nhanh hơn.
B. Để giảm dung lượng bộ nhớ chương trình sử dụng.
C. Để giúp người khác (và chính mình sau này) dễ dàng hiểu và bảo trì mã nguồn.
D. Để bắt buộc người dùng phải nhập đúng tên.
39. Trong lập trình, một biến được khai báo với kiểu dữ liệu ‘boolean’ có thể nhận những giá trị nào?
A. Các số nguyên dương và số nguyên âm.
B. Các ký tự chữ cái và ký tự đặc biệt.
C. Chỉ hai giá trị là ‘true’ (đúng) và ‘false’ (sai).
D. Các số thực có phần thập phân.
40. Phát biểu nào sau đây mô tả đúng nhất vai trò của câu lệnh ‘if-else’ trong lập trình?
A. Dùng để lặp lại một khối lệnh nhiều lần.
B. Dùng để định nghĩa một hàm mới.
C. Dùng để đưa ra quyết định dựa trên một điều kiện.
D. Dùng để khai báo một biến mới.
41. Phát biểu nào sau đây mô tả đúng nhất khái niệm ‘thuật toán’ (algorithm) trong khoa học máy tính?
A. Một chương trình máy tính hoàn chỉnh.
B. Một chuỗi các bước hữu hạn, rõ ràng và có thứ tự để giải quyết một vấn đề hoặc thực hiện một nhiệm vụ.
C. Một loại biến chỉ lưu trữ số nguyên.
D. Một giao diện đồ họa người dùng.
42. Trong các ngôn ngữ lập trình hiện đại, việc sử dụng ‘kiểu dữ liệu động’ (dynamic typing) có nghĩa là gì?
A. Kiểu dữ liệu của biến được xác định rõ ràng khi khai báo và không thay đổi.
B. Kiểu dữ liệu của biến có thể thay đổi trong quá trình chạy chương trình.
C. Chỉ có thể sử dụng các kiểu dữ liệu như số nguyên và chuỗi.
D. Cần phải khai báo rõ ràng mọi biến trước khi sử dụng.
43. Phát biểu nào sau đây mô tả đúng nhất vai trò của ‘bình luận’ (comment) trong mã nguồn?
A. Là một phần của mã thực thi, ảnh hưởng đến logic chương trình.
B. Là văn bản giải thích cho mã nguồn, giúp người đọc hiểu mục đích và cách hoạt động, không ảnh hưởng đến quá trình thực thi.
C. Dùng để báo lỗi cho trình biên dịch.
D. Là bắt buộc phải có trong mọi dòng mã.
44. Trong lập trình, khi bạn muốn thực hiện một đoạn mã một số lần xác định trước, ví dụ như 5 lần, cấu trúc lặp nào thường được ưu tiên sử dụng?
A. Vòng lặp ‘while’.
B. Câu lệnh ‘if’.
C. Vòng lặp ‘for’.
D. Câu lệnh ‘switch’.
45. Phát biểu nào sau đây mô tả đúng nhất một ‘vòng lặp vô hạn’ (infinite loop)?
A. Một vòng lặp kết thúc sau một số lần xác định.
B. Một vòng lặp mà điều kiện dừng không bao giờ được thỏa mãn, dẫn đến việc thực thi liên tục.
C. Một vòng lặp chỉ thực thi một lần duy nhất.
D. Một vòng lặp chỉ thực thi khi người dùng nhấn một phím.
46. Khi lập trình, việc sử dụng ‘biến’ có vai trò gì?
A. Chỉ dùng để in ra thông báo.
B. Để lưu trữ và thao tác với dữ liệu trong quá trình chương trình chạy.
C. Để định nghĩa cấu trúc lặp.
D. Để tạo ra giao diện người dùng.
47. Phát biểu nào sau đây mô tả đúng nhất mục đích của việc sử dụng ‘toán tử gán’ (=) trong lập trình?
A. So sánh hai giá trị xem chúng có bằng nhau không.
B. Thực hiện phép cộng.
C. Gán giá trị của biểu thức bên phải cho biến ở bên trái.
D. Kết thúc một câu lệnh.
48. Phát biểu nào sau đây mô tả đúng nhất chức năng của ‘toán tử so sánh’ (comparison operator) trong lập trình?
A. Thực hiện các phép tính số học như cộng, trừ.
B. Gán giá trị cho biến.
C. So sánh hai giá trị và trả về một giá trị boolean (true hoặc false).
D. Kết hợp nhiều điều kiện logic.
49. Trong lập trình, ‘kiểu dữ liệu’ (data type) dùng để làm gì?
A. Để xác định tên của chương trình.
B. Để quy định loại giá trị mà một biến có thể lưu trữ và các phép toán có thể thực hiện trên giá trị đó.
C. Để xác định số dòng mã nguồn.
D. Để tạo ra các bình luận trong mã.
50. Trong lập trình, khi một biến được khai báo là ‘hằng số’ (constant), điều đó có nghĩa là gì?
A. Giá trị của nó có thể thay đổi bất cứ lúc nào.
B. Giá trị của nó không thể thay đổi sau khi được gán lần đầu.
C. Nó chỉ có thể lưu trữ giá trị số nguyên.
D. Nó không thể được sử dụng trong các phép tính.
51. Khi một chương trình cần xử lý một danh sách các mục mà số lượng không cố định và có thể thay đổi trong quá trình chạy, cấu trúc dữ liệu nào thường được ưu tiên sử dụng?
A. Mảng có kích thước cố định.
B. Biến đơn.
C. Danh sách liên kết (linked list) hoặc các cấu trúc dữ liệu động khác.
D. Hàm.
52. Khi một chương trình thực thi một vòng lặp ‘while’, nó sẽ làm gì nếu điều kiện của vòng lặp ban đầu là ‘false’?
A. Thực thi khối lệnh bên trong vòng lặp một lần.
B. Thực thi khối lệnh bên trong vòng lặp vô số lần.
C. Bỏ qua khối lệnh bên trong vòng lặp và tiếp tục thực thi các lệnh sau đó.
D. Yêu cầu người dùng nhập lại điều kiện.
53. Trong lập trình, khi bạn muốn chương trình thực hiện một hành động cho đến khi một điều kiện không còn đúng nữa, cấu trúc lặp nào là phù hợp nhất?
A. Vòng lặp ‘for’.
B. Câu lệnh ‘if’.
C. Vòng lặp ‘while’.
D. Khai báo biến.
54. Trong lập trình, một ‘mảng’ (array) là gì?
A. Một biến chỉ chứa một giá trị duy nhất.
B. Một tập hợp các biến có tên khác nhau.
C. Một cấu trúc dữ liệu cho phép lưu trữ nhiều giá trị cùng kiểu dữ liệu dưới một tên duy nhất, truy cập bằng chỉ số.
D. Một câu lệnh điều khiển luồng chương trình.
55. Phát biểu nào sau đây mô tả chính xác nhất mục đích của việc sử dụng ‘chuỗi’ (string) trong lập trình?
A. Lưu trữ các giá trị số nguyên.
B. Lưu trữ một dãy các ký tự, thường dùng để biểu diễn văn bản.
C. Lưu trữ các giá trị logic đúng/sai.
D. Lưu trữ các giá trị có phần thập phân.
56. Phát biểu nào sau đây KHÔNG phải là một cấu trúc điều khiển luồng phổ biến trong lập trình?
A. Câu lệnh ‘if-else’.
B. Vòng lặp ‘for’.
C. Khai báo biến.
D. Vòng lặp ‘while’.
57. Khi lập trình, một ‘biến toàn cục’ (global variable) có đặc điểm gì?
A. Chỉ có thể truy cập bên trong một hàm cụ thể.
B. Có thể được truy cập và sửa đổi từ bất kỳ đâu trong mã nguồn của chương trình.
C. Tự động bị hủy khi chương trình kết thúc.
D. Luôn mang giá trị là chuỗi ký tự.
58. Phát biểu nào sau đây mô tả đúng nhất khái niệm ‘biến cục bộ’ (local variable) trong lập trình?
A. Một biến có thể truy cập từ bất kỳ đâu trong chương trình.
B. Một biến chỉ có thể truy cập và sử dụng bên trong phạm vi (scope) mà nó được khai báo, ví dụ như bên trong một hàm.
C. Một biến không bao giờ thay đổi giá trị.
D. Một biến được chia sẻ giữa nhiều chương trình.
59. Phát biểu nào sau đây mô tả đúng nhất vai trò của từ khóa ‘return’ trong một hàm?
A. Bắt đầu một vòng lặp.
B. Dừng chương trình ngay lập tức.
C. Kết thúc việc thực thi hàm hiện tại và trả về một giá trị (nếu có) cho nơi gọi hàm.
D. Khai báo một biến toàn cục.
60. Phát biểu nào sau đây mô tả đúng nhất vai trò của ‘biểu thức’ (expression) trong lập trình?
A. Một câu lệnh dùng để khai báo biến.
B. Một tổ hợp các toán tử, biến và giá trị tạo thành một biểu thức có thể được tính toán để cho ra một giá trị duy nhất.
C. Một cách để định nghĩa một hàm.
D. Một khối mã được thực thi lặp đi lặp lại.
61. Phát biểu nào sau đây là sai về khái niệm thủ tục (Procedure) trong Pascal?
A. Thủ tục có thể trả về một giá trị thông qua tên của nó.
B. Thủ tục được gọi để thực thi một khối lệnh cụ thể.
C. Thủ tục có thể nhận các tham số đầu vào.
D. Thủ tục không bắt buộc phải kết thúc bằng một giá trị trả về.
62. Trong Pascal, câu lệnh `READLN(bien);` có chức năng gì?
A. Đọc một giá trị từ bàn phím và lưu vào biến ‘bien’, sau đó chuyển sang dòng mới.
B. In giá trị của biến ‘bien’ ra màn hình.
C. Gán giá trị cố định cho biến ‘bien’.
D. Kiểm tra xem biến ‘bien’ có giá trị hợp lệ không.
63. Phát biểu nào sau đây là đúng về vòng lặp ‘FOR … DO …’ trong Pascal?
A. Thực hiện một khối lệnh một số lần được xác định trước dựa trên biến đếm.
B. Thực hiện một khối lệnh cho đến khi một điều kiện nhất định trở thành sai.
C. Lặp lại một khối lệnh liên tục cho đến khi có lệnh dừng vòng lặp.
D. Thực hiện một khối lệnh ít nhất một lần, sau đó lặp lại nếu điều kiện còn đúng.
64. Trong Pascal, từ khóa nào được sử dụng để bắt đầu một khối lệnh của chương trình chính?
A. BEGIN
B. START
C. PROGRAM
D. MAIN
65. Trong Pascal, câu lệnh `IF (a > b) THEN a := b;` có ý nghĩa gì?
A. Nếu giá trị của ‘a’ lớn hơn ‘b’, thì gán giá trị của ‘b’ cho ‘a’.
B. Nếu giá trị của ‘a’ lớn hơn ‘b’, thì gán giá trị của ‘a’ cho ‘b’.
C. Nếu giá trị của ‘a’ nhỏ hơn ‘b’, thì gán giá trị của ‘b’ cho ‘a’.
D. Nếu giá trị của ‘a’ bằng ‘b’, thì gán giá trị của ‘b’ cho ‘a’.
66. Trong Pascal, câu lệnh `CONTINUE;` được sử dụng để làm gì trong một vòng lặp?
A. Bỏ qua phần còn lại của lần lặp hiện tại và chuyển sang lần lặp tiếp theo.
B. Thoát hoàn toàn khỏi vòng lặp.
C. Thực hiện lại câu lệnh ngay trước nó.
D. Dừng chương trình.
67. Đâu là cú pháp khai báo một hằng số trong ngôn ngữ Pascal?
A. CONST ten_hang = gia_tri;
B. VAR ten_hang: gia_tri;
C. DEFINE ten_hang = gia_tri;
D. LET ten_hang = gia_tri;
68. Phát biểu nào sau đây mô tả đúng về việc khai báo thủ tục trong Pascal?
A. Bắt đầu bằng từ khóa PROCEDURE, theo sau là tên thủ tục, danh sách tham số (nếu có), dấu hai chấm, kiểu trả về (nếu có), và kết thúc bằng dấu chấm phẩy.
B. Bắt đầu bằng từ khóa FUNCTION, theo sau là tên thủ tục, danh sách tham số, và kết thúc bằng dấu chấm phẩy.
C. Bắt đầu bằng từ khóa VAR, theo sau là tên thủ tục và kiểu dữ liệu.
D. Bắt đầu bằng từ khóa BEGIN, theo sau là tên thủ tục và các câu lệnh.
69. Trong Pascal, câu lệnh `BREAK;` được sử dụng để làm gì trong một vòng lặp?
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. Bắt đầu lại vòng lặp từ đầu.
D. Dừng chương trình hoàn toàn.
70. Phát biểu nào sau đây mô tả đúng về phép toán `MOD` trong Pascal?
A. Trả về phần dư của phép chia hai số nguyên.
B. Trả về kết quả của phép chia lấy phần nguyên.
C. Trả về kết quả của phép chia hai số thực.
D. Trả về giá trị tuyệt đối của một số.
71. Phát biểu nào sau đây là sai về vòng lặp ‘REPEAT … UNTIL …’ trong Pascal?
A. Vòng lặp này đảm bảo thực hiện khối lệnh ít nhất một lần.
B. Vòng lặp tiếp tục cho đến khi điều kiện sau ‘UNTIL’ trở thành đúng.
C. Vòng lặp dừng ngay lập tức khi điều kiện sau ‘UNTIL’ trở thành sai.
D. Điều kiện dừng vòng lặp được kiểm tra sau khi thực hiện khối lệnh.
72. Phát biểu nào sau đây là đúng về cách khai báo một kiểu dữ liệu liệt kê (Enumerated Type) trong Pascal?
A. TYPE ten_kieu = (gia_tri1, gia_tri2, gia_tri3);
B. ENUM ten_kieu = {gia_tri1, gia_tri2, gia_tri3};
C. DEFINE ten_kieu AS (gia_tri1, gia_tri2, gia_tri3);
D. CREATE TYPE ten_kieu IS (gia_tri1, gia_tri2, gia_tri3);
73. Đâu là toán tử dùng để so sánh hai giá trị có bằng nhau trong Pascal?
74. Trong ngôn ngữ lập trình Pascal, khai báo biến có cấu trúc như thế nào?
A. VAR ten_bien: kieu_du_lieu;
B. DEFINE ten_bien = kieu_du_lieu;
C. LET ten_bien: kieu_du_lieu;
D. CONST ten_bien = kieu_du_lieu;
75. Trong Pascal, để khai báo một mảng có tên là ‘MyArray’ với 10 phần tử kiểu Integer, bạn sẽ viết như thế nào?
A. VAR MyArray: ARRAY [1..10] OF Integer;
B. VAR MyArray: Integer[10];
C. VAR MyArray: ARRAY OF Integer[10];
D. VAR MyArray: Integer ARRAY (10);
76. Phát biểu nào sau đây mô tả đúng về cách sử dụng câu lệnh `CASE` với mệnh đề `ELSE` (hoặc `OTHERWISE`) trong Pascal?
A. Thực hiện một khối lệnh nếu giá trị của biến không khớp với bất kỳ trường hợp nào đã liệt kê.
B. Thực hiện một khối lệnh nếu giá trị của biến khớp với trường hợp đầu tiên.
C. Thực hiện một khối lệnh nếu giá trị của biến khớp với trường hợp cuối cùng.
D. Câu lệnh `CASE` không hỗ trợ mệnh đề `ELSE`.
77. Trong Pascal, toán tử nào được sử dụng để thực hiện phép chia lấy phần nguyên?
A. DIV
B. MOD
C. REM
D. QUOT
78. Phát biểu nào sau đây mô tả chính xác về kiểu dữ liệu ‘REAL’ trong Pascal?
A. Lưu trữ các số thực, bao gồm cả phần nguyên và phần thập phân.
B. Chỉ lưu trữ các số nguyên dương.
C. Lưu trữ các ký tự và chuỗi ký tự.
D. Lưu trữ các giá trị logic (TRUE hoặc FALSE).
79. Phát biểu nào sau đây mô tả đúng nhất về kiểu dữ liệu ‘Integer’ trong Pascal?
A. Lưu trữ các số nguyên không có phần thập phân.
B. Lưu trữ các số thực có phần thập phân.
C. Lưu trữ các ký tự đơn lẻ.
D. Lưu trữ các chuỗi ký tự.
80. Toán tử nào trong Pascal được dùng để nối hai chuỗi ký tự lại với nhau?
81. Phát biểu nào sau đây mô tả đúng nhất về cấu trúc ‘CASE … OF … END’ trong Pascal?
A. Thực hiện một trong nhiều khối lệnh dựa trên giá trị của một biến hoặc biểu thức.
B. Lặp lại một khối lệnh cho đến khi một điều kiện nhất định trở thành sai.
C. Thực hiện một khối lệnh nếu điều kiện đúng, bỏ qua nếu sai.
D. Thực hiện một khối lệnh nhiều lần, mỗi lần với một giá trị khác nhau.
82. Trong Pascal, câu lệnh `INC(bien, 2);` có tác dụng gì?
A. Tăng giá trị của biến ‘bien’ lên 2 đơn vị.
B. Giảm giá trị của biến ‘bien’ đi 2 đơn vị.
C. Gán giá trị 2 cho biến ‘bien’.
D. Nhân giá trị của biến ‘bien’ với 2.
83. Trong Pascal, khi nào bạn nên sử dụng hàm (Function) thay vì thủ tục (Procedure)?
A. Khi cần thực hiện một tác vụ và trả về một giá trị duy nhất.
B. Khi cần thực hiện một chuỗi hành động không trả về kết quả.
C. Khi cần lặp lại một khối lệnh nhiều lần.
D. Khi cần định nghĩa một hằng số.
84. Phát biểu nào sau đây là đúng về biến kiểu ‘BOOLEAN’ trong Pascal?
A. Chỉ có thể nhận một trong hai giá trị: TRUE hoặc FALSE.
B. Có thể nhận bất kỳ giá trị số nguyên nào.
C. Có thể nhận bất kỳ ký tự nào.
D. Có thể nhận các chuỗi ký tự.
85. Trong Pascal, để khai báo một chương trình có tên là ‘MyProgram’, bạn sẽ bắt đầu bằng dòng nào?
A. PROGRAM MyProgram;
B. CREATE MyProgram;
C. PROJECT MyProgram;
D. MODULE MyProgram;
86. Phát biểu nào sau đây mô tả đúng về cấu trúc lặp WHILE … DO … trong Pascal?
A. Kiểm tra điều kiện trước khi thực hiện khối lệnh; nếu điều kiện sai thì khối lệnh không bao giờ được thực thi.
B. Luôn thực hiện khối lệnh ít nhất một lần, sau đó mới kiểm tra điều kiện.
C. Thực hiện khối lệnh dựa trên một biến đếm có giá trị xác định trước.
D. Chỉ thực hiện khối lệnh khi điều kiện đúng, không có cơ chế dừng lặp rõ ràng.
87. Trong Pascal, câu lệnh `WRITELN(‘Xin chào’);` sẽ hiển thị gì trên màn hình?
A. Xin chào
B. ‘Xin chào’
C. Xin chào (xuống dòng)
D. Lỗi cú pháp
88. Cấu trúc điều kiện ‘IF … THEN … ELSE …’ trong Pascal được sử dụng để làm gì?
A. Thực hiện một khối lệnh nếu điều kiện đúng, hoặc một khối lệnh khác nếu điều kiện sai.
B. Lặp lại một khối lệnh một số lần xác định.
C. Thực hiện một khối lệnh nếu điều kiện đúng.
D. Thực hiện một khối lệnh cho đến khi điều kiện sai.
89. Trong Pascal, câu lệnh `IF NOT (a > b) THEN …` tương đương với câu lệnh nào sau đây?
A. IF (a <= b) THEN …
B. IF (a < b) THEN …
C. IF (a = b) THEN …
D. IF (a >= b) THEN …
90. Kiểu dữ liệu ‘CHAR’ trong Pascal dùng để lưu trữ loại thông tin nào?
A. Một ký tự đơn lẻ, ví dụ: ‘A’, ‘b’, ‘5’.
B. Một chuỗi các ký tự, ví dụ: ‘Xin chào’.
C. Một số nguyên.
D. Một số thực.
91. Trong Pascal, cách khai báo mảng ‘var A: array[1..10] of Integer;’ có ý nghĩa gì?
A. Khai báo một mảng có tên A gồm 10 phần tử, mỗi phần tử là một số thực.
B. Khai báo một mảng có tên A gồm 10 phần tử, mỗi phần tử là một số nguyên.
C. Khai báo một mảng có tên A gồm 1 phần tử, có chỉ số từ 1 đến 10.
D. Khai báo một mảng có tên A có 10 biến độc lập.
92. So với sắp xếp nổi bọt, sắp xếp chọn (selection sort) có điểm gì khác biệt?
A. Sắp xếp chọn luôn thực hiện nhiều phép hoán đổi hơn.
B. Sắp xếp chọn tìm phần tử nhỏ nhất (hoặc lớn nhất) và đặt nó vào đúng vị trí của nó ở mỗi bước.
C. Sắp xếp chọn không yêu cầu danh sách được sắp xếp trước.
D. Sắp xếp chọn hiệu quả hơn nhiều trên các danh sách lớn.
93. Trong Pascal, câu lệnh ‘CASE weekday OF Monday, Tuesday, Wednesday: Write(‘Workday’); Thursday, Friday: Write(‘Workday’); Saturday, Sunday: Write(‘Weekend’); END;’ sẽ in ra gì nếu biến ‘weekday’ có giá trị là ‘Friday’?
A. Workday
B. Weekend
C. WorkdayWeekend
D. Lỗi.
94. Trong ngôn ngữ lập trình Pascal, khai báo biến ‘var diemTB: Real;’ có ý nghĩa gì?
A. Khai báo một biến có tên ‘diemTB’ để lưu trữ giá trị số nguyên.
B. Khai báo một biến có tên ‘diemTB’ để lưu trữ giá trị ký tự.
C. Khai báo một biến có tên ‘diemTB’ để lưu trữ giá trị số thực.
D. Khai báo một biến có tên ‘diemTB’ để lưu trữ chuỗi ký tự.
95. Trong Pascal, vòng lặp ‘WHILE condition DO statement;’ sẽ thực hiện ‘statement’ khi nào?
A. Chỉ thực hiện ‘statement’ một lần duy nhất.
B. Thực hiện ‘statement’ cho đến khi ‘condition’ trở thành sai.
C. Thực hiện ‘statement’ cho đến khi ‘condition’ trở thành đúng.
D. Thực hiện ‘statement’ ngay cả khi ‘condition’ sai.
96. Phát biểu nào sau đây mô tả đúng nhất chức năng của câu lệnh ‘IF condition THEN statement1 ELSE statement2;’ trong Pascal?
A. Thực hiện ‘statement1’ nếu ‘condition’ sai, thực hiện ‘statement2’ nếu ‘condition’ đúng.
B. Thực hiện ‘statement1’ và ‘statement2’ độc lập với ‘condition’.
C. Thực hiện ‘statement1’ nếu ‘condition’ đúng, nếu sai thì bỏ qua cả hai.
D. Thực hiện ‘statement1’ nếu ‘condition’ đúng, thực hiện ‘statement2’ nếu ‘condition’ sai.
97. Phát biểu nào sau đây về kiểu dữ liệu ‘Boolean’ trong Pascal là đúng?
A. Chỉ lưu trữ được các số nguyên.
B. Lưu trữ được các giá trị True hoặc False.
C. Lưu trữ được chuỗi ký tự.
D. Lưu trữ được các số thực.
98. Trong Pascal, để kiểm tra xem một phần tử ‘x’ có thuộc tập hợp ‘S’ hay không, ta sử dụng toán tử nào?
A. x = S
B. x IN S
C. x CONTAINS S
D. x BELONGS_TO S
99. Xét đoạn mã Pascal sau: ‘var i: Integer; begin for i := 1 to 5 do Write(i); end.’. Kết quả in ra màn hình là gì?
A. 12345
B. 1 2 3 4 5
C. 54321
D. Lỗi cú pháp.
100. Sự khác biệt chính giữa thủ tục (procedure) và hàm (function) trong Pascal là gì?
A. Hàm trả về giá trị, thủ tục thì không.
B. Thủ tục trả về giá trị, hàm thì không.
C. Hàm chỉ dùng biến cục bộ, thủ tục dùng biến toàn cục.
D. Thủ tục chỉ dùng biến toàn cục, hàm dùng biến cục bộ.
101. Trong Pascal, để truy cập một trường (field) của bản ghi (record) có tên ‘sinhVien’ và trường đó tên là ‘hoTen’, ta sử dụng cú pháp nào?
A. sinhVien(hoTen)
B. sinhVien.hoTen
C. sinhVien[hoTen]
D. sinhVien->hoTen
102. Phát biểu nào sau đây mô tả đúng về thuật toán tìm kiếm tuyến tính (linear search)?
A. Nó yêu cầu danh sách phải được sắp xếp.
B. Nó kiểm tra từng phần tử của danh sách theo thứ tự cho đến khi tìm thấy phần tử cần tìm hoặc hết danh sách.
C. Nó chia đôi danh sách ở mỗi bước để tìm kiếm.
D. Nó rất hiệu quả với các danh sách lớn.
103. Phát biểu nào sau đây mô tả đúng về việc sử dụng con trỏ (pointer) trong Pascal?
A. Con trỏ lưu trữ trực tiếp giá trị của biến.
B. Con trỏ lưu trữ địa chỉ của một biến hoặc một vùng nhớ khác.
C. Con trỏ chỉ có thể trỏ đến biến kiểu số nguyên.
D. Con trỏ không thể thay đổi giá trị mà nó trỏ đến.
104. Phát biểu nào sau đây mô tả đúng về thuật toán sắp xếp nổi bọt (bubble sort)?
A. Nó là một trong những thuật toán sắp xếp nhanh nhất.
B. Nó hoạt động bằng cách liên tục so sánh các cặp phần tử liền kề và đổi chỗ chúng nếu chúng sai thứ tự.
C. Nó yêu cầu bộ nhớ phụ để lưu trữ.
D. Nó chia danh sách thành các nửa nhỏ hơn.
105. Phát biểu nào sau đây mô tả đúng về cách khai báo thủ tục (procedure) trong Pascal?
A. Bắt đầu bằng từ khóa ‘FUNCTION’.
B. Bắt đầu bằng từ khóa ‘PROCEDURE’ và kết thúc bằng ‘END;’ hoặc ‘END’.
C. Bắt đầu bằng từ khóa ‘VAR’.
D. Không cần từ khóa khai báo.
106. Trong Pascal, khi gọi một hàm, giá trị trả về của hàm được sử dụng như thế nào?
A. Bị bỏ qua.
B. Được gán cho một biến, sử dụng trong biểu thức, hoặc in ra màn hình.
C. Chỉ có thể được gán cho một biến.
D. Chỉ có thể in ra màn hình.
107. Để thực hiện một hành động lặp lại N lần, ta thường ưu tiên sử dụng loại vòng lặp nào trong Pascal?
A. WHILE
B. REPEAT
C. FOR
D. GOTO
108. Phát biểu nào sau đây mô tả đúng về kiểu dữ liệu tập hợp (set) trong Pascal?
A. Lưu trữ một chuỗi ký tự.
B. Lưu trữ một tập hợp các phần tử duy nhất, không có thứ tự.
C. Lưu trữ một mảng các số nguyên.
D. Lưu trữ một giá trị boolean.
109. Trong Pascal, câu lệnh ‘REPEAT statement UNTIL condition;’ khác với ‘WHILE condition DO statement;’ ở điểm nào?
A. WHILE kiểm tra điều kiện trước khi thực hiện, REPEAT-UNTIL thực hiện ít nhất một lần rồi mới kiểm tra.
B. WHILE thực hiện ít nhất một lần rồi mới kiểm tra, REPEAT-UNTIL kiểm tra điều kiện trước.
C. Cả hai đều kiểm tra điều kiện trước khi thực hiện.
D. Cả hai đều thực hiện ít nhất một lần rồi mới kiểm tra điều kiện.
110. Phân biệt sự khác nhau cơ bản giữa vòng lặp ‘FOR’ và ‘WHILE’ trong Pascal?
A. Vòng lặp FOR luôn thực hiện số lần xác định trước, WHILE thực hiện dựa trên điều kiện.
B. Vòng lặp WHILE luôn thực hiện số lần xác định trước, FOR thực hiện dựa trên điều kiện.
C. Cả hai vòng lặp đều thực hiện dựa trên điều kiện.
D. Cả hai vòng lặp đều thực hiện số lần xác định trước.
111. Phát biểu nào sau đây mô tả đúng về chuỗi ký tự (string) trong Pascal?
A. Là một mảng các ký tự có độ dài cố định.
B. Là một mảng các ký tự có độ dài linh hoạt, được bao bởi dấu nháy đơn ‘…’.
C. Là một kiểu dữ liệu chỉ lưu được một ký tự.
D. Là một kiểu dữ liệu chỉ lưu được số nguyên.
112. Để truy cập phần tử thứ 5 của mảng A đã khai báo ở câu trên (‘var A: array[1..10] of Integer;’), ta sử dụng cú pháp nào?
A. A(5)
B. A[5]
C. A.5
D. A{5}
113. Phát biểu nào sau đây mô tả đúng về cấu trúc dữ liệu bản ghi (record) trong Pascal?
A. Là một tập hợp các phần tử có cùng kiểu dữ liệu.
B. Là một tập hợp các phần tử, mỗi phần tử có thể có kiểu dữ liệu khác nhau và được đặt tên riêng.
C. Là một chuỗi các ký tự.
D. Là một tập hợp các số nguyên.
114. Khi nào thì câu lệnh ‘BREAK’ được sử dụng trong vòng lặp của Pascal?
A. Để bắt đầu một vòng lặp mới.
B. Để thoát khỏi vòng lặp hiện tại ngay lập tức.
C. Để chuyển sang lần lặp tiếp theo.
D. Để kết thúc chương trình.
115. Trong Pascal, để nối hai chuỗi ký tự ‘s1’ và ‘s2’, ta thường sử dụng toán tử nào?
116. Ưu điểm chính của thuật toán tìm kiếm nhị phân (binary search) so với tìm kiếm tuyến tính là gì?
A. Nó không yêu cầu danh sách phải được sắp xếp.
B. Nó hiệu quả hơn về mặt thời gian khi tìm kiếm trên các danh sách lớn.
C. Nó đơn giản hơn để cài đặt.
D. Nó có thể tìm kiếm trên mọi loại dữ liệu.
117. Phát biểu nào sau đây mô tả đúng về mảng (array) trong Pascal?
A. Là một tập hợp các phần tử có kiểu dữ liệu khác nhau.
B. Là một tập hợp các phần tử có cùng kiểu dữ liệu, được truy cập bằng chỉ số.
C. Là một tập hợp các ký tự.
D. Là một tập hợp các biến độc lập.
118. Trong Pascal, toán tử ‘^’ (dereference operator) được dùng để làm gì khi làm việc với con trỏ?
A. Để khai báo một con trỏ.
B. Để gán địa chỉ của một biến cho con trỏ.
C. Để truy cập giá trị mà con trỏ đang trỏ tới.
D. Để giải phóng bộ nhớ mà con trỏ đang sử dụng.
119. Để thực hiện tìm kiếm nhị phân (binary search), điều kiện tiên quyết là gì?
A. Danh sách phải được sắp xếp theo thứ tự giảm dần.
B. Danh sách phải được sắp xếp theo thứ tự tăng dần hoặc giảm dần.
C. Danh sách phải có độ dài là lũy thừa của 2.
D. Danh sách phải chứa các phần tử duy nhất.
120. Trong Pascal, để khai báo một con trỏ kiểu Integer, ta sử dụng cú pháp nào?
A. var ptr: Integer;
B. var ptr: ^Integer;
C. var ptr: Pointer;
D. var ptr: IntegerPointer;
121. Phát biểu nào sau đây mô tả chính xác kiểu dữ liệu ‘Char’ trong Pascal?
A. Lưu trữ một dãy các ký tự.
B. Lưu trữ một ký tự đơn, được bao bởi dấu nháy đơn.
C. Lưu trữ các giá trị số nguyên.
D. Lưu trữ các giá trị đúng/sai.
122. Câu lệnh nào sau đây trong Pascal dùng để hiển thị một chuỗi ký tự ra màn hình?
A. Readln(‘Chuỗi cần hiển thị’);
B. Writeln(‘Chuỗi cần hiển thị’);
C. Input(‘Chuỗi cần hiển thị’);
D. Print(‘Chuỗi cần hiển thị’);
123. Trong Pascal, để thực hiện phép toán logic ‘HOẶC’ (OR), bạn sử dụng từ khóa nào?
124. Trong Pascal, câu lệnh nào dùng để thực hiện phép chia lấy phần nguyên giữa hai số nguyên?
125. Phát biểu nào sau đây là đúng về cách Pascal thực thi các câu lệnh?
A. Các câu lệnh được thực thi theo thứ tự ngẫu nhiên.
B. Các câu lệnh được thực thi từ dưới lên trên.
C. Các câu lệnh được thực thi theo trình tự từ trên xuống dưới.
D. Chỉ những câu lệnh có dấu chấm phẩy mới được thực thi.
126. Phát biểu nào sau đây mô tả đúng nhất về kiểu dữ liệu ‘Boolean’ trong lập trình?
A. Kiểu dữ liệu này chỉ có thể lưu trữ các ký tự đơn.
B. Kiểu dữ liệu này chỉ có thể lưu trữ các số nguyên dương.
C. Kiểu dữ liệu này chỉ có thể lưu trữ hai giá trị: Đúng (True) hoặc Sai (False).
D. Kiểu dữ liệu này có thể lưu trữ một chuỗi các ký tự.
127. Trong Pascal, để khai báo một hằng số có giá trị là 100, bạn sử dụng cú pháp nào?
A. VAR hang_so: Integer = 100;
B. CONST hang_so = 100;
C. DEFINE hang_so = 100;
D. LET hang_so = 100;
128. Phát biểu nào sau đây đúng về kiểu dữ liệu chuỗi (String) trong Pascal?
A. Chỉ có thể chứa tối đa 255 ký tự.
B. Có thể chứa một hoặc nhiều ký tự, được bao bởi dấu nháy đơn.
C. Không thể thực hiện phép nối chuỗi.
D. Mỗi ký tự trong chuỗi là một biến độc lập.
129. Trong Pascal, để thực hiện phép nhân hai số thực, ví dụ ‘x’ và ‘y’, bạn sẽ sử dụng ký hiệu nào?
A. x / y;
B. x + y;
C. x * y;
D. x – y;
130. Phát biểu nào sau đây là đúng về cấu trúc chung của một chương trình Pascal?
A. Chương trình bắt buộc phải có phần khai báo biến.
B. Phần khai báo thủ tục/hàm phải đứng trước phần khai báo biến.
C. Một chương trình Pascal bắt đầu bằng từ khóa ‘PROGRAM’ và kết thúc bằng dấu chấm (‘.’).
D. Tất cả các câu lệnh phải được đặt trong cặp Begin…End.
131. Trong Pascal, để thực hiện phép toán logic ‘VÀ’ (AND), bạn sử dụng từ khóa nào?
132. Trong Pascal, làm thế nào để đọc một giá trị số nguyên từ bàn phím và gán vào biến ‘a’?
A. Write(a);
B. Read(a);
C. Input(a);
D. Scan(a);
133. Trong Pascal, ký hiệu nào được sử dụng để bắt đầu một dòng chú thích (comment) chỉ có một dòng?
134. Phát biểu nào sau đây mô tả đúng về phạm vi của biến trong Pascal?
A. Biến toàn cục có thể truy cập từ mọi nơi trong chương trình.
B. Biến cục bộ chỉ có thể truy cập trong khối lệnh mà nó được khai báo.
C. Pascal không hỗ trợ biến cục bộ.
D. Tất cả các biến đều có phạm vi truy cập toàn cục.
135. Trong Pascal, câu lệnh nào sau đây dùng để đọc một giá trị số thực từ bàn phím?
A. Readln(ten_bien_chuoi);
B. Read(ten_bien_so_thuc);
C. Char(ten_bien_so_thuc);
D. Integer(ten_bien_so_thuc);
136. Trong Pascal, làm thế nào để gán giá trị 10.5 cho một biến số thực có tên là ‘gia_tri_thuc’?
A. gia_tri_thuc := 10;
B. gia_tri_thuc = 10.5;
C. gia_tri_thuc := 10.5;
D. SET gia_tri_thuc = 10.5;
137. Phát biểu nào sau đây đúng về việc sử dụng dấu chấm phẩy (‘;’) trong Pascal?
A. Dấu chấm phẩy là tùy chọn và không bắt buộc.
B. Dấu chấm phẩy dùng để kết thúc mọi câu lệnh.
C. Dấu chấm phẩy dùng để phân tách các câu lệnh liên tiếp.
D. Chỉ cần đặt dấu chấm phẩy ở cuối mỗi khối BEGIN…END.
138. Phát biểu nào sau đây là đúng về cách Pascal thực hiện phép chia số thực?
A. Luôn trả về phần nguyên của kết quả.
B. Sử dụng toán tử DIV.
C. Sử dụng toán tử ‘/’.
D. Trả về phần dư của phép chia.
139. Trong ngôn ngữ lập trình Pascal, câu lệnh nào sau đây được sử dụng để khai báo một biến kiểu số nguyên?
A. VAR x: Real;
B. VAR x: String;
C. VAR x: Char;
D. VAR x: Integer;
140. Trong Pascal, khi khai báo biến kiểu ký tự, bạn sẽ sử dụng từ khóa nào?
A. String
B. Char
C. Integer
D. Boolean
141. Phát biểu nào sau đây là đúng về việc sử dụng toán tử ‘+’ trong Pascal?
A. Chỉ dùng để cộng hai số nguyên.
B. Dùng để cộng hai số thực hoặc nối hai chuỗi ký tự.
C. Chỉ dùng để nối hai chuỗi ký tự.
D. Không thể dùng để cộng hai số thực.
142. Phát biểu nào sau đây là đúng về kiểu dữ liệu ‘Real’ trong Pascal?
A. Chỉ lưu trữ được các số nguyên.
B. Lưu trữ được các số thực, có thể có phần thập phân.
C. Chỉ lưu trữ được các ký tự.
D. Chỉ lưu trữ được hai giá trị True/False.
143. Trong lập trình Pascal, để thực hiện một phép toán cộng hai số nguyên, ví dụ ‘a’ và ‘b’, cú pháp nào sau đây là đúng?
A. a + b;
B. a.add(b);
C. a + b;
D. a plus b;
144. Trong Pascal, khai báo nào sau đây là đúng cho một biến lưu trữ tên của một người?
A. VAR ten: Integer;
B. VAR ten: Char;
C. VAR ten: String;
D. VAR ten: Boolean;
145. Phát biểu nào sau đây mô tả đúng về cách Pascal xử lý biến?
A. Biến có thể được sử dụng trước khi khai báo.
B. Tất cả các biến phải được khai báo trong phần khai báo biến trước khi sử dụng.
C. Pascal tự động phát hiện và khai báo kiểu dữ liệu của biến.
D. Tên biến không phân biệt chữ hoa và chữ thường.
146. Trong Pascal, để thực hiện phép chia lấy phần dư giữa hai số nguyên ‘a’ và ‘b’, toán tử nào được sử dụng?
147. Nếu bạn muốn một biến lưu trữ một giá trị đúng hoặc sai, bạn nên khai báo nó thuộc kiểu dữ liệu nào?
A. Integer
B. Char
C. Boolean
D. Real
148. Khi làm việc với chuỗi ký tự trong lập trình, ký tự đặc biệt nào thường được sử dụng để bao quanh một chuỗi?
A. Dấu gạch chéo ‘/’.
B. Dấu nháy đơn ”’.
C. Dấu hai chấm ‘:’.
D. Dấu chấm phẩy ‘;’.
149. Phát biểu nào sau đây mô tả đúng về kiểu dữ liệu ‘Integer’ trong Pascal?
A. Lưu trữ các số có phần thập phân.
B. Lưu trữ các ký tự.
C. Lưu trữ các số nguyên, không có phần thập phân.
D. Lưu trữ các giá trị đúng/sai.
150. Trong Pascal, câu lệnh nào được sử dụng để đọc một chuỗi ký tự từ bàn phím?
A. Write(‘Nhập chuỗi: ‘); Readln(ten_bien_chuoi);
B. Input(‘Nhập chuỗi: ‘); Read(ten_bien_chuoi);
C. Print(‘Nhập chuỗi: ‘); Char(ten_bien_chuoi);
D. Display(‘Nhập chuỗi: ‘); String(ten_bien_chuoi);