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