[Cánh diều] Trắc nghiệm Tin học 11 KHMT bài 14 Thực hành về thư viện các hàm tự định nghĩa
1. Khi một hàm được gọi, quá trình nào sau đây xảy ra đầu tiên?
A. Thực thi các lệnh trong thân hàm.
B. Trả về giá trị cho chương trình gọi.
C. Truyền các tham số từ chương trình gọi sang hàm.
D. Giải phóng bộ nhớ cho các biến cục bộ.
2. Đâu là một ví dụ về cách sử dụng hàm có sẵn trong thư viện chuẩn của Pascal (không phải tự định nghĩa)?
A. my_function := Calculate(x, y);
B. result := Sqrt(value);
C. call PrintScreen;
D. assign(file_handle, data.txt);
3. Đâu là cách khai báo đúng một hàm nhận vào hai số thực và trả về số thực trong Pascal?
A. PROCEDURE TinhToan(x, y: Real): Real;
B. FUNCTION TinhToan(x, y: Real): Real;
C. FUNCTION TinhToan(x, y: Real);
D. VAR TinhToan(x, y: Real): Real;
4. Trong định nghĩa hàm Pascal, phần khai báo các tham số được đặt ở đâu?
A. Sau từ khóa BEGIN.
B. Sau tên hàm, trong cặp dấu ngoặc đơn.
C. Trước từ khóa FUNCTION.
D. Sau từ khóa END.
5. Trong lập trình Pascal, khi định nghĩa một hàm, từ khóa nào được sử dụng để khai báo kiểu dữ liệu trả về của hàm?
A. PROCEDURE
B. FUNCTION
C. VAR
D. BEGIN
6. Đoạn mã Pascal nào sau đây mô tả đúng cách gán giá trị trả về cho một hàm?
A. RETURN gia_tri;
B. END gia_tri;
C. ten_ham := gia_tri;
D. SET gia_tri TO ten_ham;
7. Nếu một hàm có nhiều tham số, thứ tự của các tham số khi gọi hàm có quan trọng không?
A. Không, thứ tự không quan trọng.
B. Có, thứ tự phải khớp với thứ tự khai báo.
C. Chỉ quan trọng nếu tham số là kiểu VAR.
D. Chỉ quan trọng nếu tên tham số được sử dụng.
8. Nếu một hàm cần xử lý dữ liệu từ nhiều biến khác nhau mà không muốn thay đổi giá trị gốc của các biến đó, cách truyền tham số nào là phù hợp nhất?
A. Truyền theo kiểu VAR.
B. Truyền theo kiểu giá trị (value parameters).
C. Truyền dưới dạng biến toàn cục.
D. Không truyền tham số mà đọc trực tiếp biến toàn cục.
9. Điểm khác biệt cơ bản nhất giữa hàm (function) và thủ tục (procedure) trong Pascal là gì?
A. Thủ tục có thể nhận tham số, hàm thì không.
B. Hàm luôn trả về một giá trị, còn thủ tục thì không.
C. Thủ tục thực hiện một hành động, hàm thực hiện tính toán.
D. Hàm chỉ dùng cho số, thủ tục dùng cho chuỗi ký tự.
10. Nếu bạn muốn tạo một hàm tính diện tích hình tròn, bạn cần biết thông tin gì làm tham số đầu vào?
A. Chu vi hình tròn.
B. Bán kính hình tròn.
C. Đường kính hình tròn.
D. Diện tích hình vuông.
11. Khi định nghĩa một hàm, phạm vi hoạt động của các biến khai báo bên trong khối lệnh của hàm đó được gọi là gì?
A. Biến toàn cục (Global variable).
B. Biến cục bộ (Local variable).
C. Biến tham số (Parameter variable).
D. Biến tĩnh (Static variable).
12. Nếu bạn viết một hàm tính trung bình cộng của một mảng các số nguyên, mảng đó sẽ được truyền vào hàm dưới dạng nào?
A. Một biến đơn lẻ đại diện cho mảng.
B. Một chuỗi các giá trị riêng lẻ.
C. Một tham số kiểu mảng (array type).
D. Không thể truyền mảng vào hàm.
13. Khi gọi một hàm đã định nghĩa trong chương trình Pascal, cú pháp đúng là gì?
A. TEN_HAM(tham_so_1, tham_so_2, ...)
B. CALL TEN_HAM(tham_so_1, tham_so_2, ...)
C. TEN_HAM tham_so_1, tham_so_2, ...
D. EXECUTE TEN_HAM(tham_so_1, tham_so_2, ...)
14. Nếu một hàm không nhận tham số nào, khi gọi hàm đó, cặp dấu ngoặc đơn () có bắt buộc phải có không?
A. Có, luôn luôn bắt buộc.
B. Không, tùy thuộc vào trình biên dịch.
C. Chỉ khi hàm trả về giá trị là số.
D. Không, có thể bỏ qua.
15. Đâu là mục đích chính của việc sử dụng thư viện các hàm tự định nghĩa trong lập trình?
A. Giảm dung lượng chương trình bằng cách loại bỏ các lệnh lặp.
B. Tăng tốc độ thực thi của chương trình nhờ tối ưu hóa code.
C. Tái sử dụng mã nguồn, làm cho chương trình dễ đọc, dễ bảo trì và phát triển.
D. Tự động sửa lỗi cú pháp trong chương trình.
16. Khi định nghĩa một hàm, tại sao việc khai báo các tham số lại quan trọng?
A. Để trình biên dịch biết chương trình sẽ chạy.
B. Để hàm có thể nhận dữ liệu đầu vào và xử lý.
C. Để hàm có thể trả về kết quả.
D. Để chương trình có nhiều dòng code hơn.
17. Cho hàm sau:
```pascal
function GiaiThua(n: Integer): Integer;
begin
if n = 0 then
GiaiThua := 1
else
GiaiThua := n * GiaiThua(n - 1);
end;
```
Hàm này dùng để làm gì?
A. Tính tổng các số từ 1 đến n.
B. Tính giai thừa của một số nguyên không âm.
C. Tìm số lớn nhất trong hai số.
D. Kiểm tra xem một số có phải là số nguyên tố không.
18. Cho đoạn mã Pascal sau:
```pascal
function TinhTong(a, b: Integer): Integer;
begin
TinhTong := a + b;
end;
```
Đoạn mã này mô tả điều gì?
A. Một thủ tục (procedure) nhận hai số nguyên và không trả về giá trị.
B. Một hàm (function) nhận hai số nguyên và trả về tổng của chúng.
C. Một chương trình con nhận hai số nguyên và in kết quả ra màn hình.
D. Một biến lưu trữ tổng của hai số nguyên.
19. Tại sao việc kiểm thử (testing) các hàm tự định nghĩa là rất quan trọng?
A. Để đảm bảo hàm hoạt động đúng với mọi trường hợp đầu vào.
B. Để làm cho code trông chuyên nghiệp hơn.
C. Để tăng kích thước file thực thi của chương trình.
D. Để trình biên dịch không báo lỗi.
20. Trong một hàm đệ quy, điều kiện nào là quan trọng nhất để tránh vòng lặp vô hạn?
A. Hàm phải luôn trả về một giá trị là số nguyên.
B. Hàm phải gọi chính nó với các tham số tiến dần về điều kiện dừng.
C. Phải có ít nhất một biến cục bộ bên trong hàm.
D. Hàm phải được định nghĩa trước khi gọi.
21. Đâu là cách khai báo một thủ tục trong Pascal?
A. FUNCTION TenThuTuc(...);
B. PROCEDURE TenThuTuc(...);
C. METHOD TenThuTuc(...);
D. SUBROUTINE TenThuTuc(...);
22. Khi một hàm gọi lại chính nó (đệ quy), nó có cần khai báo lại kiểu dữ liệu trả về không?
A. Có, ở mỗi lần gọi đệ quy.
B. Không, chỉ cần khai báo một lần duy nhất ở định nghĩa ban đầu.
C. Chỉ khi gọi lần thứ hai.
D. Không, vì nó là một thủ tục.
23. Trong Pascal, khi một hàm nhận tham số theo kiểu VAR, điều gì xảy ra với biến được truyền vào khi hàm thực thi?
A. Giá trị của biến không thay đổi.
B. Giá trị của biến có thể bị thay đổi bởi hàm.
C. Chương trình sẽ báo lỗi vì không được phép thay đổi biến.
D. Biến sẽ được sao chép và hàm chỉ làm việc trên bản sao.
24. Đâu là sai lầm phổ biến nhất khi làm việc với hàm tự định nghĩa trong các bài thực hành Tin học 11?
A. Quên khai báo kiểu dữ liệu trả về cho hàm.
B. Không gán giá trị cho tên hàm trước khi kết thúc hàm.
C. Sử dụng sai số lượng hoặc kiểu dữ liệu của tham số khi gọi hàm.
D. Tất cả các phương án trên đều là sai lầm phổ biến.
25. Theo phân tích phổ biến, việc chia chương trình lớn thành các hàm nhỏ hơn giúp ích gì nhiều nhất cho lập trình viên?
A. Giảm số lượng dòng code cần viết.
B. Tăng khả năng bị lỗi của chương trình.
C. Giúp hiểu và quản lý logic chương trình dễ dàng hơn.
D. Tự động hóa quá trình gỡ lỗi.