1. Lọc (phân nhóm) tên dành riêng và tên chuẩn trong các tên sau đây: program, byte, interger, var, begin, char, real, const, end, uses, boolean 2. Các tên sau đây tên nào là không hợp lệ: NaOH, abc, CNH-HĐH, H 2 O, 11A14, Cosɸ, Z 27 3. Các tên sau đây tên nào là không hợp lệ: Baitap, Bai tap, Bai-tap, BaiTap* 4. Phân nhóm và gọi tên các kiểu dữ liệu sau: byte, real, word, extended, integer, char, boolean, longint 5. Chọn các khai báo đúng: A) Khai báo biến: (a) Var <tên biến> : <kiểu dữ liệu>; (b) Var (tên biến) : <kiểu dữ liệu>; (c) Var <tên biến> : (kiểu dữ liệu); (d) Var (tên biến) ; (kiểu dữ liệu); B) Khai báo thư viện: (a) Uses <tên thư viện>; (b) Uses : <tên thư viện>; (c) Uses (tên thư viện); (d) Uses : (tên thư viện); C) Khai báo hằng: (a) Const <tên hằng> : <giá trị>; (b) Const <tên hằng> = <giá trị>; (c) Const <tên hằng> := <giá trị>; (d) Const : <tên hằng> = <giá trị>; D) Khai báo tên chương trình: (a) Program : <tên chương trình>; (b) Program : <tên chương trình> : (c) Program (tên chương trình); (d) Program <tên chương trình>; E) A nhận các giá trị 9 10 12 -24 ; B nhận các giá trị 0.5 7.0 - 0.2 (a) Var A : byte; B : word; (b) Var A : real; B : word; (c) Var A : integer; B : byte; (d) Var A : integer; B : real; F) Cấu trúc rẻ nhánh và câu lệnh If … then dạng thiếu: (a) if : <điều kiện> then <câu lệnh> ; (b) if <điều kiện> then <câu lệnh>; (c) if : <câu lệnh> then <điều kiện>; (d) if <câu lệnh> then <điều kiện>; G) Cấu trúc rẻ nhánh và câu lệnh If … then dạng đủ: (a) if : <điều kiện> then <câu lệnh 1> else <câu lệnh 2>; (b) if <điều kiện> then <câu lệnh 1>; else <câu lệnh 2>; (c) if : <điều kiện> then <câu lệnh 1> ; else <câu lệnh 2>; (d) if <điều kiện> then <câu lệnh 1> else <câu lệnh 2>; H) Cấu trúc lặp tiến với số lần lặp biết trước For .do (a) for <biến đếm> = <giá trị đầu> to <giá trị cuối> do <câu lệnh lặp>; (b) for <biến đếm> = <giá trị đầu>; to <giá trị cuối>; do <câu lệnh lặp>; (c) for <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh lặp>; (d) for <biến đếm> := <giá trị đầu>; to <giá trị cuối>; do <câu lệnh>; I) Cấu trúc lặp lùi với số lần lặp biết trước For .do (a) for <biến đếm> = <giá trị cuối> downto <giá trị đầu> do <câu lệnh lặp>; (b) for <biến đếm> := <giá trị cuối> downto <giá trị đầu> do <câu lệnh lặp>; (c) for <biến đếm> = <giá trị cuối>; downto <giá trị đầu>; do <câu lệnh lặp>; (d) for <biến đếm> := <giá trị cuối>; downto <giá trị đầu>; do <câu lệnh lặp>; J) Cấu trúc lặp với số lần lặp không biết trước While … do (a) While <điều kiện> do <câu lệnh lặp>; (b) While <câu lệnh lặp> do <điều kiện>; (c) While <điều kiện>; do <câu lệnh lặp>; (d) While <câu lệnh lặp>; do <điều kiện>; 6. Ghép chính xác từ khóa và công dụng của từ khóa đó Từ khóa Công dụng program Khai báo biến begin Khai báo tên chương trình end Khai báo hằng var Bắt đầu chương trình Uses Khai báo thư viện Kết thúc chương trình 7. Tìm kết quả của phép tính sau: A) 27 mod (3 div ( 6 mod 4)) (a) 1 (b) 9 (c) 0 (d) 27 B) 17 mod 3 + 15 div 3 – 2 (a) 3 (b) 4 (c) 5 (d) 6 C) 27 div (3 mod (6 div 3)) (a) 1 (b) 9 (c) 0 (d) 27 D) S := 0; For I := 1 to 10 do S := S + I; (a) S có kết quả là 0 (b) S có kết quả là 10 (c) S có kết quả là 11 (d) S có kết quả là 55 E) S := 0; For I := 1 to 10 do S := S * I; (a) S có kết quả là 36288 (b) S có kết quả là 362880 (c) S có kết quả là 3628800 (d) S có kết quả là 0 F) S := 1; For I := 1 to 10 do S := S * I; (a) S có kết quả là 36288 (b) S có kết quả là 362880 (c) S có kết quả là 3628800 (d) S có kết quả là 0 G) S := 0; For I := 1 to 10 do if (I mod 2) = 0 then S := S + I; (a) S có kết quả là 0 (b) S có kết quả là 25 (c) S có kết quả là 30 (d) S có kết quả là 55 H) S := 0; For I := 1 to 10 do if (I mod 2) <> 0 then S := S + I; (a) S có kết quả là 0 (b) S có kết quả là 25 (c) S có kết quả là 30 (d) S có kết quả là 55 I) S := 0; I := 1; While I <= 10 do begin S := S+I; I := I+2; end; (a) S có kết quả là 0 (b) S có kết quả là 25 (c) S có kết quả là 30 (d) S có kết quả là 55 J) S := 0; I := 2; While I <= 10 do begin S := S+I; I := I+2; end; (a) S có kết quả là 0 (b) S có kết quả là 25 (c) S có kết quả là 30 (d) S có kết quả là 55 K) S := 0; I := 1; While I <= 10 do begin S := S+I; I := I+1; end; (a) S có kết quả là 0 (b) S có kết quả là 25 (c) S có kết quả là 30 (d) S có kết quả là 55 8. Chọn cách biểu diễn Pascal đúng cho các biểu thức tóan học sau: A) 2x 4 + 4x 3 - 6x – 8 (a) 2 sqrt ( sqrt (x) ) + 4 (sqrt (x) * x ) - 6*x – 8 (b) 2 * sqrt ( sqrt (x) ) + 4 * (sqrt (x) * x ) - 6*x – 8 (c) 2 sqr ( sqr (x) ) + 4 (sqr (x) * x ) - 6*x – 8 (d) 2 * sqr ( sqr (x) ) + 4 * (sqr (x) * x ) - 6*x – 8 B) 2 x y + x - 5 (a) 2 sqrt (sqrt (x+y)) + sqrt (x) - 5 (b) 2 * sqr (sqr (x+y)) + sqr (x) - 5 (c) 2 * sqrt (sqrt (x+y)) + sqrt (x) - 5 (d) 2 sqr (sqrt (x+y)) + sqr (x) - 5 C) −b 2a (a) -b/2a (b) -b/2*a (c) -b/2/a (d) (-b)/2*a 9. Chọn biểu thức toán học phù hợp với biểu thức Pascal sau: A) exp(x) + 1 (a) x e + 1 (b) e x + 1 (c) x e+1 (d) e x+1 B) sqrt(abs(x+y) – sqr (b)) (a) ∣x y∣−b 2 (b) ∣x y∣− b (c) ∣x y∣−b 2 (d) ∣x y∣ b 2 C) abs(x – y) - 5 (a) Ln (x – y) – 5 (b) x− y - 5 (c) ∣x− y∣ - 5 (d) ∣x∣−∣y∣ - 5 10. Sau Then và Do nếu muốn thực hiện nhiều thao tác lệnh, các thao tác đó phải được ghép lại thành câu lệnh ghép. Vậy các thao tác lệnh đó phải được đặt trong: A) Cặp dấu ngoặc đơn B) Cặp dấu ngoặc nhọn C) Cặp từ khóa begin và end. D) Cặp từ khóa begin và end; 11. Mảng một chiều là A) Dãy các ký tự trong bảng mã ASCII B) Dãy hữu hạn các phần tử cùng kiểu cùng tên C) Bảng các phần tử cùng kiểu cùng tên D) Tất cả cùng sai 12. Xâu là A) Dãy các ký tự trong bảng mã ASCII B) Dãy hữu hạn các phần tử cùng kiểu cùng tên C) Bảng các phần tử cùng kiểu cùng tên D) Tất cả cùng sai 13. Mảng hai chiều là A) Dãy các ký tự trong bảng mã ASCII B) Dãy hữu hạn các phần tử cùng kiểu cùng tên C) Bảng các phần tử cùng kiểu cùng tên D) Tất cả cùng sai 14. Chọn cách khai báo biến mảng một chiều hợp lý A) Var <tên biến mảng> : array [chỉ số đầu chỉ số cuối] of <kiểu dữ liệu của phần tử>; B) Var <tên biến mảng> = array [chỉ số đầu chỉ số cuối] of <kiểu dữ liệu của phần tử>; C) Type <tên biến mảng> : array [chỉ số đầu chỉ số cuối] of <kiểu dữ liệu của phần tử>; D) Type <tên biến mảng> = array [chỉ số đầu chỉ số cuối] of <kiểu dữ liệu của phần tử>; 15. Chọn cách khai báo biến mảng hai chiều hợp lý A) Var <tên biến mảng> : array [chỉ số dòng đầu chỉ số dòng cuối, chỉ số cột đầu chỉ số cột cuối] of <kiểu dữ liệu của phần tử>; B) Var <tên biến mảng> = array [chỉ số dòng đầu chỉ số dòng cuối, chỉ số cột đầu chỉ số cột cuối] of <kiểu dữ liệu của phần tử>; C) Type <tên biến mảng> : array [chỉ số dòng đầu chỉ số dòng cuối, chỉ số cột đầu chỉ số cột cuối] of <kiểu dữ liệu của phần tử>; D) Type <tên biến mảng> = array [chỉ số dòng đầu chỉ số dòng cuối, chỉ số cột đầu chỉ số cột cuối] of <kiểu dữ liệu của phần tử>; 16. Chọn cách khai báo biến xâu A) Var <tên biến xâu> : <kiểu dữ liệu>; B) Var <tên biến xâu> : string [độ dài xâu]; C) Var <tên biến xâu> = <kiểu dữ liệu>; D) Var <tên biến xâu> = string [độ dài xâu]; 17. Cách thực hiện của câu lệnh gán < tên biến> := <biểu thức> ; A) Tính giá trị của biễu thức sau đó lấy giá trị đó gán vào cho biến B) Tính giá trị của biến sau đó gán giá trị đó cho biểu thức C) Cả A, B đều đúng D) Cả A, B đều sai 18. Với khai báo biến: Var A : array [1 50] of integer; Để truy xuất đến phần tử thứ 5 của mảng A thì ta thực hiện như sau: A) A<5> B) A(5) C) A[5] D) A 5 19. Với khai báo biến: Var B : arra[1 10, 1 20] of integer; Để truy xuất đến phần tử thứ dòng i, cột j của mảng B thì ta thực hiện như sau: A) Bi,j B) B<i,j> C) B(i,j) D) B[i,j] 20. Điểm khác nhau giữa lệnh Write và Writeln A) Không khác nhau B) Write đi kèm với Read; Writeln đi kèm với Readln C) Write viết ra màn hình một giá trị, Writeln viết ra màn hình nhiều giá trị D) Write: sau khi xuất nội dung, con trỏ nằm tiếp ở vị trí cuối của cùng dòng. Writeln sau khi xuất nội dung, con trỏ tự động xuống dòng kế tiếp 21. Ngôn ngữ dùng để viết các chương trình, sau cho khi đưa vào máy tính. Máy tính có khả năng hiểu và thực hiện được gọi là: A) Ngôn ngữ tự nhiên B) Ngôn ngữ chương trình C) Chương trình dịch D) Ngôn ngữ lập trình 22. Chương trình đặc biệt có chức năng chuyển đổi các chương trình được viết bằng ngôn ngữ khác thành chương trình thực hiện được trên máy tính là chương trình A) Chương trình dích B) Chương trình nguồn C) Chương trình dịch D) Tất cả 23. Chương trình dịch được phân thành mấy thành phần A) 0 B) 1 C) 2 D) 3 24. Hãy cho ví dụ về 3 tên sai trong Pascal 25. Hãy chọn mệnh đề đúng A) Tên do người lập trình đặt được gọi là từ khóa B) Tên dành riêng là tên do người lập trình đặt C) Tên chuẩn và tên dành riêng thực chất là một D) Tên do người lập trình đặt không được trùng với tên dành riêng 26. Hãy chọn mệnh đề sai A) Tên chuẩn có thể được dùng với ý nghĩa khác nhưng phải được khai báo lại trước khi dùng B) Tên dành riêng hay còn gọi là từ khóa C) Tên do người lập trình đặt được đặt theo qui tắc đặt tên D) Các mệnh đề đều sai 27. Trong các khai báo sau, khai báo nào là sai qui tắc A) Cons thuong = 1000 B) Const thuong := 1000 C) Consr thuong = 1,000; D) Const thuong = 1000; 28. Cấu trúc chương trình không được lược bỏ phần nào? A) Phần thân B) Phần khai báo C) Phần ghi chú D) Có thể bị lượt bỏ tất cả 29. Với miền giá trị từ 0 → 32767 ta cần khai báo kiểu dữ liệu nào là hợp lý A) byte B) word C) integer D) longint 30. Kiểu dữ liệu byte chiếm dung lượng bộ nhớ là A) 1 byte B) 2 byte C) 4 byte D) 6 byte 31. Kiểu dữ liệu word chiếm dung lượng bộ nhớ là A) 1 byte B) 2 byte C) 4 byte D) 6 byte 32. Kiểu dữ liệu integer chiếm dung lượng bộ nhớ là A) 1 byte B) 2 byte C) 4 byte D) 6 byte 33. Kiểu dữ liệu longint chiếm dung lượng bộ nhớ là A) 1 byte B) 2 byte C) 4 byte D) 6 byte 34. Kiểu dữ liệu real chiếm dung lượng bộ nhớ là A) 1 byte B) 2 byte C) 4 byte D) 6 byte 35. Var x, y, z : real; i, j : byte; c : char; Chiếm tổng số dung lượng bộ nhớ là bao nhiêu? A) 18 byte B) 19 byte C) 20 byte D) 21 byte 36. Khai báo nào sau đây là đúng A) var: a, b : byte ; B) Var a, b : byte; C) Var a b : byte; D) a, b : byte; 37. Cần phải khai báo tối thiểu, tối đa bao nhiêu biến để tính khoảng đường đi được của xe với vận tốc và thời gian được biết trước (được nhập giá trị vào từ bàn phím) A) Tối thiểu 1 biến, tối đa 2 biến B) Tối thiểu 2 biến, tối đa 2 biến C) Tối thiểu 2 biến, tối đa 3 biến D) Tối thiểu 3 biến, tối đa 3 biến 38. Lệnh dùng để xuất nội dung – kết quả ra màn hình là: A) wite / writeln B) read / readln C) begin D) end 39. Lệnh dùng để nhập giá trị vào từ bàn phím là: A) wite / writeln B) read / readln C) begin D) end 40. Với lệnh Write(X:6:1); giả sừ X có giá trị là 3.14 thì trên màn hình sẽ thể hiện như thế nào? A) _ _ _ _ _ 3 . 1 B) _ _ _ _ 3 . 1 C) 3 . _ _ _ _ _ 1 D) 3 . _ _ _ _ 1 41. Đọan lệnh nào là hợp lý với những thao tác lần lượt sau: 1. Nhập 2 giá trị cho 2 biến a,b → 2. Tính Tổng = a + b → Xuất giá trị tổng A) Readln(a,b); Tong := a + b ; Writeln (' a + b = ' , Tong); B) Readln(a,b); Tong = a + b ; Writeln (' a + b = ' , Tong); C) Readln(a,b); Tong := a + b ; Writeln ( a + b = , 'Tong'); D) Readln(a,b); Tong := a + b ; Writeln (' a + b = ' , 'Tong'); 42. Để lưu chương trình nhấn phím __?___ rồi gõ tên → enter. A) F1 B) F2 C) F3 D) F7 43. Để dịch chương trình dùng tổ hợp phím A) Alt + F3 B) Alt + X C) Alt + F9 D) Ctrl + F9 44. Để thực thi chương trình dùng tổ hợp phím A) Alt + F3 B) Alt + X C) Alt + F9 D) Ctrl + F9 45. Để đóng chương trình đang thực hiện dùng tổ hợp phím A) Alt + F3 B) Alt + X C) Alt + F9 D) Ctrl + F9 46. Để đóng và thoát khỏi chương trình Pascal dùng tổ hợp phím A) Alt + F3 B) Alt + X C) Alt + F9 D) Ctrl + F9 47. Chọn cách sắp xếp hợp lý : 1. Sọan thảo ; 2. Chạy chương trình ; 3. Dịch A) 1 → 2 → 3 B) 1 → 3 → 2 C) 2 → 1 → 3 D) 2 → 3 → 1 Tự luận: Viết chương trình: 1. Tính tổng từ 1 đến n với n là số nguyên dương có giá trị nhập vào từ bàn phím 2. Tính tích từ 1 đến n với n là số nguyên dương có giá trị nhập vào từ bàn phím 3. Tìm số lớn hơn giữa hai số a, b có giá trị nhập vào từ bàn phím 4. Xuất ra màn hình tam giác vuông cân sao với 5. Xuất ra màn hình ước số chung lớn nhất của hai số a, b có giá trị nhập vào từ bàn phím 6. Tổng/ tích các số chẳn / lẻ nằm trong khoảng từ 1 → n với n có giá trị nhập vào từ bàn phím 7. Xuất ra các số chẳn và chia hết cho 3 nằm trong khỏang từ 1 → n (như trên) 8. Nhập vào mảng 1 chiều, xuất giá trị các phần tử tại vị trí chẳn/lẻ trong mảng 9. Nhập vào mảng 1 chiều, xuất giá trị các phần tử chẳn/lẻ trong màng 10. Nhập vào mảng 1 chiều, tìm xem k có trong mảng hay không? 11. Nhập vào mảng 1 chiều, sắp xếp mảng tăng / giảm dần 12. Nhập vào mảng 1 chiều, tính tổng các phần tử trong mảng 13. Nhập vào mảng 1 chiều tính tồng các giá trị của phần tử mà giá trị đó chia hết cho 5 14. Nhâp vào 1 xâu, xuất xâu đó theo chiều ngược lại 15. Nhập vào xâu, tạo xâu thứ hai bằng cách chuyển các ký tự xâu thứ nhất thành ký tự In rồi đưa vào xâu thứ 2 16. Nhập xâu thứ nhất, tạo xâu thứ hai bằng cách lấy tòan bộ ký tự có trong xâu thứ nhất lọai trừ ký tự trắng 17. Nhập xâu thứ nhất, tạo xâu thứ hai bằng cách lấy toàn bộ ký tự số trong xâu 1 18. Nhập hai xâu. Xuất ra màn hình dãy ký tự là những ký tự đan xen của hai xâu 19. Nhập hai xâu , xuất ra màn hình xâu bé rồi tới xâu lớn 20. Nhap vào hai xâu, ghép hai xâu thành một xâu theo điều kiện xâu bé đứng trước, xâu lớn đứng sau, hai xâu cách nhau bằng ký tự “_” 21. . lệnh gán < tên biến> := <biểu thức> ; A) Tính giá trị của biễu thức sau đó lấy giá trị đó gán vào cho biến B) Tính giá trị của biến sau đó gán. Var A : integer; B : byte; (d) Var A : integer; B : real; F) Cấu trúc rẻ nhánh và câu lệnh If … then dạng thiếu: (a) if : <điều kiện> then <câu