I. Trắc nghiệm (2.5 điểm) chọn đáp án đúng. Câu 1. Số lần lặp trong câu lệnh lặp với số lần biết trước được xác định bằng? A. Giá trị cuối – giá trị đầu -1 B. Giá trị cuối + giá trị đầu +1 C. Giá trị cuối – giá trị đầu +1 D. Giá trị cuối + giá trị đầu -1 Câu 2. Trong ngôn ngữ lập trình Pascal, cấu trúc câu lệnh lặp nào sau đây đúng? A. For i:=1 to 38 do writeln(‘A’); A. For i:=38 to 1 do writeln(‘A’); A. For i:1 to 38 do writeln(‘A’); A. For i=1 to 38 do writeln(‘A’); Câu 3. Sau khi thực hiện chương trình dưới đây, giá trị của biến j bằng bao nhiêu? j:= 1; for i:= 0 to 10 do j:= j+1; A. 12; B. 13; C. 11; D. 14; Câu 4. Trong câu lệnh khai báo biến mảng, phát biểu nào sau đây đúng: A. Chỉ số đầu > chỉ số cuối; B. Chỉ số đầu chỉ số cuối; C. Kiểu dữ liệu chỉ có thể là real; D. Cả ba ý trên đều đúng; Câu 5. Cú pháp đầy đủ của câu lệnh While … do là: A. While do <điều kiện>; B. While <điều kiện>; ; C. While <điều kiện> to do; D. While <điều kiện> do ; Câu 6: Trong câu lệnh lặp: j:=0; For i := 4 to 10 do begin j:= j + 2; write( j ); end; Khi kết thúc câu lệnh lặp trên, giá trị j bằng bao nhiêu? A. 2 B. 14 C. 12 D. 10 Câu 7. Hãy cho biết chương trình dưới đây sẽ thực hiện bao nhiêu vòng lặp khi thực hiện đoạn chương trình ? n:=10; T:=100; While n>10 do n:=n+5; T:=T – n; A. 0 B. 4 C. 6 D. 10 Câu 8: Chỉ ra cú pháp khai báo biến mảng đúng trong Turbo Pascal: A. Var : array[] of ; B. Var : array[..]: ; C. Var : array[:]: ; D. Var : array[..]of ; Câu 9: Các phần tử của mảng: A. Phải là số nguyên. B. Phải có giá trị như nhau. C. Phải cùng kiểu dữ liệu. D. Có thể cùng kiểu hoặc khác kiểu dữ liệu. Câu 10. Trong Pascal, câu lệnh nào sau đây được viết đúng? A. Var soluong: array [1..40] of Integer; B. Var soluong: array [40..1] of Integer; C. Var soluong: array [1..40,8] of Real; D. Var soluong: array [1..40] of Real; II. Tự luận (7.5 điểm) Câu 1. (2 điểm) Viết cú pháp, vẽ sơ đồ và nêu hoạt động câu lệnh lặp với số lần chưa biết trước? Câu 2: (2 điểm): Cho chương trình sau: a) Đối với từng đoạn chương trình Pascal sau đây, hãy cho biết lệnh writeln (j,k) in ra màn hình giá trị của j, k là bao nhiêu? j:=2; k:=3; for i:=1 to 5 do j:=j+2; k:=k+j; writeln(j,k); b) Đối với từng đoạn chương trình Pascal sau đây, hãy cho biếtcõ bao nhiêu vòng lặp và lệnh writeln (s) in ra màn hình giá trị của s là bao nhiêu? S:=20; n:=0; While S > 5 do Begin n:=n+3; S:=S -n; End; writeln(S); Câu 3 (3,5 điểm) Viết chương trình thực hiện các công việc sau: a. Nhập dãy số nguyên gồm 100 số b. Hiển thị dãy số ra màn hình c. Hiển thị các số dương trong dãy
$I$
1. C
2. A
3. A
4. Không đáp án
5. D
6. B
7. A
8. D
9. C
10. A
$II$
Câu 1:
Cú pháp: while <điều kiện> do <câu lệnh>;
Hoạt động:
+ Xét điều kiện, nếu điều kiện đúng, thực hiện và lặp đến khi nào điều kiện sai.
+ Nếu từ đầu điều kiện đã sai thì kết thúc chương trình.
+ Trường hợp nữa là lặp $\infty$ có nghĩa là lặp vô tận, vô cực, là điều kiện luôn đúng.
Sơ đồ: (hình)
Câu 2:
a.
Do k:=k+j không nằm trong vòng lặp nên chỉ thực hiện j:=j+2;
Ban đầu j=2; k=3.
Lần 1: j=j+2=2+2=4
Lần 2: j=j+2=4+2=6
Lần 3: j=j+2=6+2=8
Lần 4: j=j+2=8+2=10
Lần 5: j=j+2=10+2=12
k=k+j=3+12=15
$\to$ j=12; k=15.
b.
Ban đầu S=20; n=0
Lần 1 S>5 (TM): n=n+3=0+3=3; S=S-n=20-3=17
Lần 2 S>5 (TM): n=n+3=3+3=6; S=S-n=17-6=11
Lần 3 S>5 (KTM): n=n+3=6+3=9; S=S-n=11-9=2
Thực hiện 3 lần và S=2.
Câu 3:
uses crt;
var a:array[1..100] of longint;
n,i:integer;
begin
clrscr;
write(‘Nhap so luong phan tu: ‘); readln(n);
for i:=1 to n do
begin
write(‘Nhap phan tu thu ‘,i,’: ‘); readln(a[i]);
end;
write(‘Day so vua nhap: ‘);
for i:=1 to n do write(a[i],’ ‘); writeln;
write(‘Cac so duong: ‘);
for i:=1 to n do if a[i]>0 then write(a[i],’ ‘);
readln;
end.
I. Trắc nghiệm
1 C
2 A
3 C
4
5 D
6 C
7 A
8 B
9 C
10 A
II. Tự luận
Cau 1
*Cú pháp: 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à một phép so sánhCâu lệnh: có thể là câu lệnh đơn giản hay câu lệnh ghé
*Câu lệnh này được thực hiện như sau:
– 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
*Sơ đồ hoạt động:(xem hinh)
Câu 2
a) j=12
k=15
b) SLL: 3 lan
s=0
Câu 3
uses crt;
var a:array[1..100]of integer;
n,i,dem:integer;
begin
clrscr;
write(‘Nhap n=’); readln(n);
for i:=1 to n do
begin
write(‘A[‘,i,’]=’); readln(a[i]);
end;
until (0<n) and (n<=100);
dem:=0;
for i:=1 to n do
if a[i]>0 then inc(dem);
writeln(dem);
readln;
end.