ĐỀ KIỂM TRA CHẤT LƯỢNG HỌC KÌ II
MƠN: TIN HỌC 8
ĐỀ SỐ 1:
*) ĐỀ BÀI
I. Trắc nghiệm: (3.5 điểm)
Câu 1: Các câu lệnh Pascal sau đúng hay sai? Hãy chỉ ra chỗ sai nếu có.
A. For i:=1 to 10; do x:= x+1;
B. For i:=10 to 1 do x:= x+1;
C. For i:=1 to 10 do x:= x+1;
D. For i:=1 to 10 for j:=1 to 10 do x:= x+1;
E. For i:=1 to 10 do for j:=1 to 10 do x:= x+1;
Câu 2: Trong câu lệnh lặp
For i:=1 to 10 do begin ... end;
Câu lệnh được thực hiện bao nhiêu vòng lặp?
A. 1
C. 10
B. 2;
D. Không lần nào
Câu 3: Dưới đây là một đoạn chương trình của Pascal:
For i:= 0 to 10 do
Begin
..................
End;
Sau khi thực hiện đoạn chương trình trên, giá trị của i là:
A. 0
C. 11
B. 10
D. Không xác định
Câu 4: Cho một đoạn chương trình của Pascal như sau:
j:= 0;
for i:=0 to 5 do j:= j+2;
Sau khi thực hiện đoạn chương trình trên, giá trị của biến j là:
A. 2
C. 10
B. 7
D. 12
Câu 5: Trong lệnh lặp For ... to ... do của Pascal, trong mỗi vòng lặp giá trị của biến đếm thay
đổi như thế nào?
A. + 1
C. Một giá trị bất kì
B. +1 hoặc -1
D. Một giá trị khác 0.
Câu 6: Các lệnh khai báo biến mảng sau đây của Pascal đúng hay sai? Chỉ ra chỗ sai nếu có?
a) A: Array[1 . . . 100] of integer;
b) B: Array[1 . . n] of real;
c) C: Array[1 : 100] of integer;
d) D: Array[100 . . 1] of real;
e) E: Array[1 . .10] of byte;
II. Tự luận:(6.5 điểm)
Câu 1:(1đ) Em hiểu thế nào là câu lệnh lặp?
Câu 2:(2đ) Viết câu lệnh lặp với số lần biết trước của Pascal và nêu rõ hoạt động của lệnh?
Câu 3:(3,5đ) Viết chương trình bằng ngơn ngữ lập trình Pascal thực hiện cơng việc sau:
Nhập vào từ bàn phím các phần tử của một dãy số nguyên; in ra màn hình giá trị lớn
nhất của dãy số.
*) ĐÁP ÁN - BIỂU ĐIỂM
A. Trắc nghiệm: (3.5 điểm)
Mỗi ý trả lời đúng được 0,25 điểm
Câu 1: (1,25đ)
A. Sai, thừa dấu chấm phẩy đầu tiên
B. Sai, giá trị đầu phải nhỏ hơn giá trị cuối.
C. Đúng
D. Sai, thiếu từ khóa do trong lệnh For ... do thứ nhất
E. Đúng
Câu
2
3
4
5
Đáp án
C
B
D
A
Câu 6: (1,25đ)
A. Sai, cần thay ba dấu chấm bằng hai dấu chấm.
B. Sai, các chỉ số phải là các giá trị cụ thể. Tuy nhiên nếu n là một hằng đã được khai
báo thì câu lệnh này hợp lệ.
C. Sai, cần thay dâu hai chấm bằng hai dấu chấm.
D. Sai, chỉ số đầu không được lớn hơn chỉ số cuối
E. Đúng
B. Tự luận: (6.5đ)
Câu 1: (1 đ)
HS nêu được:
Câu lệnh lặp là câu lệnh được viết một lần nhưng lại được điều khiển để thực hiện lặp
một số hữu hạn lần.
Câu 2: (2đ)
HS nêu được:
*)Cấu trúc lệnh:
For <biến đếm:=giá trị đầu> to <giá trị cuối> do <câu lệnh>;
Trong đó: for, to, do là các từ khóa, biến đếm là biến kiểu nguyên, giá trị đầu, giá trị
cuối là các giá trị nguyên
.
*) Hoạt động:
- Khi thực hiện, ban đầu biến đếm sẽ nhận là giá trị đầu, sau mỗi vòng lặp, biến đếm
tự động tăng thêm 1 đơn vị cho đến khi bằng giá trị cuối.
- Câu lệnh lặp sẽ thực hiện câu lệnh nhiều lần mỗi lần là một vòng lặp. Số vòng lặp
của câu lệnh được tình bằng: Số vịng lặp = giá trị cuối - giá trị đầu + 1.
Câu 3: (3,5đ)
Program Max;
Uses crt;
Var
i, n,Max : integer;
A: Array[1..50] of integer;
Begin
Clrscr;
Write('Nhap so phan tu cua day so nguyen N='); Readln(N);
Write('Nhap cac phan tu cua day so:');
For i:=1 to N do Begin
Write('A[',i,’]=’);
Readln(A[i]);
End;
Max:=A[1];
For i:=2 to N do If Max < A[i] then Max:=A[i];
Writeln('Gia tri lon nhat cua day so la Max = ', Max);
Readln
End.
ĐỀ SỐ 2:
*) ĐỀ BÀI
I. Trắc nghiệm: (3.5 điểm)
Câu 1: Các câu lệnh Pascal sau đúng hay sai? Hãy chỉ ra chỗ sai nếu có.
A. For i:=1 to 10; do x:= x+1;
B. For i:=10 to 1 do x:= x+1;
C. For i:=1 to 10 do x:= x+1;
D. For i:=1 to 10 for j:=1 to 10 do x:= x+1;
E. For i:=1 to 10 do for j:=1 to 10 do x:= x+1;
Câu 2: Trong câu lệnh lặp
For i:=1 to 10 do begin ... end;
Câu lệnh được thực hiện bao nhiêu vòng lặp?
A. 1
C. 10
B. 2;
D. Không lần nào
Câu 3: Dưới đây là một đoạn chương trình của Pascal:
J:=0;
For i:= 0 to 5 do
Begin
..................
End;
Sau khi thực hiện đoạn chương trình trên, giá trị của i là:
A. 0
C. 11
B. 10
D. Không xác định
Câu 4: Cho một đoạn chương trình của Pascal như sau:
j:= 0;
for i:=0 to 5 do j:= j+2;
Sau khi thực hiện đoạn chương trình trên, giá trị của biến j là:
A. 2
C. 10
B. 7
D. 12
Câu 5: Trong lệnh lặp For ... to ... do của Pascal, trong mỗi vòng lặp giá trị của biến đếm thay
đổi như thế nào?
A. + 1
C. Một giá trị bất kì
B. +1 hoặc -1
D. Một giá trị khác 0.
Câu 6: Các lệnh khai báo biến mảng sau đây của Pascal đúng hay sai? Chỉ ra chỗ sai nếu có?
a) A: Array[1 . . . 100] of integer;
b) B: Array[1 . . n] of real;
c) C: Array[1 : 100] of integer;
d) D: Array[100 . . 1] of real;
e) E: Array[1 . .10] of byte;
II. Tự luận:(6.5 điểm)
Câu 1:(1đ) Em hiểu thế nào là câu lệnh lặp?
Câu 2:(2đ) Viết câu lệnh lặp với số lần chưa biết trước của Pascal và nêu rõ hoạt động của
lệnh?
Câu 3:(3,5đ) Viết chương trình bằng ngơn ngữ lập trình Pascal thực hiện cơng việc sau:
Nhập vào từ bàn phím các phần tử của một dãy số nguyên; in ra màn hình giá trị nhỏ
nhất của dãy số đó.
*) ĐÁP ÁN - BIỂU ĐIỂM
A. Trắc nghiệm: (3.5 điểm)
Mỗi ý trả lời đúng được 0,25 điểm
Câu 1: (1,25đ)
A. Sai, thừa dấu chấm phẩy đầu tiên
B. Sai, giá trị đầu phải nhỏ hơn giá trị cuối.
C. Đúng
D. Sai, thiếu từ khóa do trong lệnh For ... do thứ nhất
E. Đúng
Câu
2
3
4
5
Đáp án
C
B
D
A
Câu 6: (1,25đ)
A. Sai, cần thay ba dấu chấm bằng hai dấu chấm.
B. Sai, các chỉ số phải là các giá trị cụ thể. Tuy nhiên nếu n là một hằng đã được khai
báo thì câu lệnh này hợp lệ.
C. Sai, cần thay dâu hai chấm bằng hai dấu chấm.
D. Sai, chỉ số đầu không được lớn hơn chỉ số cuối
E. Đúng
B. Tự luận: (6.5đ)
Câu 1: (1 đ)
HS nêu được:
Câu lệnh lặp là câu lệnh được viết một lần nhưng lại được điều khiển để thực hiện lặp
một số hữu hạn lần.
Câu 2: (2đ)
HS nêu được:
*)Cấu trúc lệnh:
While <điều kiện> do <câu lệnh>;
Trong đó: while, do là các từ khóa, điều kiện thường là phép so sánh; câu lệnh có thể
là câu lệnh đơn hay câu lệnh ghép
*) Hoạt động:
- Bước 1: Kiểm tra điều kiện
- Bước 2: Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc.
Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1.
Câu 3: (3,5đ)
Program Min;
Uses crt;
Var i, n,Min : integer;
A: Array[1..50] of integer;
Begin
Clrscr;
Write('Nhap so phan tu cua day so nguyen,N='); Readln(N);
Write('Nhap cac phan tu cua day so:');
For i:=1 to N do Begin
Write('A[',i,']=');
Readln(A[i]);
End;
Min:=A[1];
For i:=2 to N do If Min > A[i] then Min:=A[i];
Writeln('Gia tri nho nhat cua day so la Min = ', Min);
Readln
End.
ĐỀ SỐ 3:
*) ĐỀ BÀI
I. Trắc nghiệm: (3 điểm)
Câu 1: Hãy chọn câu lệnh đúng?
A. For i:=1 to 20; do x:= x+1;
B. For i:=20 to 1 do x:= x+1;
C. For i:=1 to 20 do x:= x+1;
D. For i:=1 to 20 do x:= x+1;
Câu 2: Trong ngơn ngữ lập trình Pascal, để đổi giá trị hai phần tử của mảng một chiều A tại vị
trí i, j. Hãy chọn câu lệnh đúng trong các câu lệnh sau:
a) A[i]:=tg;
c) tg:= A[i];
A[i]:=A[j];
A[j]:=A[i];
A[j]:=tg;
A[j]:=tg;
b) tg:= A[i];
d) tg:= A[i];
A[i]:=A[j];
A[i]:=A[j];
A[j]:=tg;
tg:= A[j];
Câu 3: Trong ngơn ngữ lập trình Pascal, đoạn chương trình sau cho kết quả trên màn hình là
gì với i là biến số nguyên?
for i:=1 to 100 do
If i mod 9=0 then write(i,’
’);
A. 1 2 3 4 5 6 7 ... 100
B. 47592264388540087
C. 9 18 27 36 45 54 63 72 81 90 99
D. 9 9 9 9 9 9 9 9 9
Câu 4: Cho một đoạn chương trình của Pascal như sau:
j:= 0;
for i:=0 to 5 do j:= j+2;
Sau khi thực hiện đoạn chương trình trên, giá trị của biến j là:
A. 2
C. 10
B. 7
D. 12
Câu 5: Trong lệnh lặp For ... to ... do của Pascal, trong mỗi vòng lặp giá trị của biến đếm thay
đổi như thế nào?
A. + 1
C. Một giá trị bất kì
B. +1 hoặc -1
D. Một giá trị khác 0.
Câu 6: Cho đoạn chương trình sau:
So:=1;
While so<10 do
writeln(so);
So:=so+1;
Khi thực hiện đoạn chương trình trên sẽ cho kết quả là gì?
A. In ra các số từ 1 đến 9;
B. In ra các số từ 1 đến 10;
C. In ra vô hạn các số 1, mỗi số trên một dịng;
D. Khơng in ra gì hết;
II. Tự luận:(7 điểm)
Câu 1:(1đ) Em hiểu thế nào là câu lệnh lặp?
Câu 2:(2đ) Hãy nêu sự khác biệt giữa câu lệnh lặp với số lần biết trước và câu lệnh lặp với số
lần chưa biết trước của Pascal?
Câu 3:(4) Viết chương trình bằng ngơn ngữ lập trình Pascal thực hiện cơng việc sau:
Nhập vào từ bàn phím các phần tử của một dãy số nguyên; in ra màn hình các số
dương trong dãy và tổng các số âm.
*) ĐÁP ÁN - BIỂU ĐIỂM
A. Trắc nghiệm: (3 điểm)
Mỗi câu chọn đúng được 0, 5 điểm
Câu
Đáp án
1
D
2
B
3
C
4
D
5
A
6
C
II. Tự luận:(7 điểm)
Câu 1: (1 đ)
HS nêu được:
Câu lệnh lặp là câu lệnh được viết một lần nhưng lại được điều khiển để thực hiện lặp
một số hữu hạn lần.
Câu 2: (2đ)
HS nêu được:
Câu lệnh lặp với số lần biết trước
Câu lệnh lặp với số lần chưa biết trước
- Chỉ thị cho MT thực hiện 1 hoặc nhóm lệnh - Số lần lặp chưa được xác định
với số lần đã xác định từ trước.
- Điều kiện là giá trị của biến đếm có giá trị - Điều kiện kiểm tra có thể là 1 giá trị của một
nguyên đã đạt được giá trị lớn nhất hay chưa. số thực cũng có thể là một biểu thức logic.
- Câu lệnh được thực hiện ít nhất một lần sau - Điều kiện được kiểm tra trước. Nếu điều
đó kiểm tra điều kiện.
kiện được thỏa mãn câu lệnh mới được thực
hiện. Do đó có thể có trường hợp câu lệnh
khơng được thực hiện lần nào.
Câu 3: (4đ)
Program Day_so;
Uses crt;
Var
i, n,s : integer;
A: Array[1..50] of integer;
Begin
Clrscr;
Write('Nhap so phan tu cua day so nguyen,N=
Readln(N);
Write('Nhap cac phan tu cua day so:');
For i:=1 to N do Begin
Write('A[',i,']=');
Readln(A[i]);
End;
s:=0;
Writeln('Cac so duong trong mang la:');
For i:=1 to N do
Begin
if A[i]>0 then write(A[i]:8);
if A[i]<0 then s:=s + A[i];
writeln;
writeln('Tong cac so am trong mang la:',s:9);
Readln
End.
');