Trải qua những tháng ngày trau dồi kiến thức bộ môn “ĐO LƯỜNG VÀ ĐÁNH GIÁ KẾT QUẢ”, nhóm sinh viên chúng em đã lĩnh hội được ít nhiều những kiến thức mà thầy đã tận tụy truyền đạt bấy lâu nay. Ngày hôm nay, chúng em xin gửi thầy đề tài này, đó là thành quả học tập của chúng em sau những tháng ngày tìm hiểu về bộ môn này. Sau khi suy nghĩ kĩ càng, chúng em đã quyết định trích một phần lí thuyết trong sách giáo khoa lớp 11 để làm đề tài. Bằng tất cả sự cố gắng, long quyết tâm và tinh thần đoàn kết, nhóm chúng em
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM TP.HỒ CHÍ MINH
KHOA TOÁN-TIN
LỚP ĐHSP TIN ĐỒNG NAI
Danh sách nhóm thực hiện:
Nguyễn Lê Cẩm Ngọc
Lê Thụy Hoài Phương
Phạm Thị Thủy Nguyễn Thị Hồng Linh Nguyễn Vĩnh Hảo
PHÂN TÍCH NỘI DUNG VÀ SOẠN CÂU TRẮC NGHIỆM VỀ
(sách GK Tin lớp 11, tác giả: Hồ Sĩ Đàm,Nguyễn Đức Nghĩa, Ngô Ánh Tuyết, , NXB: Bộ Giáo Dục và Đào Tạo, Năm 2008
Thuộc chương 4, từ trang 52 đến trang 74)
Bài thực hành học phần Trắc Nghiệm khách quan
Giảng Viên :Ths Lý Minh Tiên
Tp.Hồ Chí Minh, Tháng 12- 2008
Trang 2Lời nói đầu
Kính thưa thầy!
Trải qua những tháng ngày trau dồi kiến thức bộ môn “ĐO LƯỜNG VÀ ĐÁNH GIÁ KẾT QUẢ”, nhóm sinh viên chúng em đã lĩnh hội được ít nhiều những kiến thức mà thầy đã tận tụy truyền đạt bấy lâu nay Ngày hôm nay, chúng
em xin gửi thầy đề tài này, đó là thành quả học tập của chúng em sau những tháng ngày tìm hiểu về bộ môn này Sau khi suy nghĩ kĩ càng, chúng em đã quyết định trích một phần lí thuyết trong sách giáo khoa lớp 11 để làm đề tài Bằng tất cả sự cố gắng, long quyết tâm và tinh thần đoàn kết, nhóm chúng em đã hoàn thành đề tài này.tuy nhiên vì kinh nghiệm, thời gian và kiến thức có hạn, chắc chắn chúng em còn mắc nhiều những sai sót Vì thế chúng em rất mong được sự giúp đỡ của thầy, cũng như những ý kiến đóng góp để đề tài của chúng em hoàn thành một cách xuất sắc chính những điếu này sẽ giúp chúng em hoàn thành tốt hơn trong công việc giảng dạy sau này, giúp chúng em
đánh giá kết quả của học sinh một cách đúng đắn và chính xác hơn
Cuối cùng chúng em xin chân thành cảm ơn sự quan tâm của thầy đến chúng em cũng như những sinh viên của
ĐỒNG NAI này Kính chúc thầy nhiều sức khỏe, thành đạt trong công việc giảng dạy của mình
Nhóm sinh viên thực hiện:
CHƯƠNG 4 KIỂU DỮ LIỆU CÓ CẤU TRÚC
Bài 11 Kiểu mảng………
1.Kiểu mảng một chiều ………
a.khai báo
b.một số ví dụ
2 Kiểu mảng hai chiều………
a.khai báo
b.một số ví dụ
Bài tập và thực hành 3
Bài tập và thực hành 4
Bài 12 Kiểu xâu
1 Khai báo
2.Các thao tác xử lí xâu
3.Một số ví dụ
Bài tập và thực hành 5………
Bài 13 Kiểu bản ghi
1.Khai báo
2.Gán giá trị
Trang 3
KIỂU DỮ LIỆU CÓ CẤU TRÚC
0 Kiểu mảng:
I M ảng m ột chi ều:
0 Định nghĩa mảng 1 chiều
1 viết lệnh khai báo biến
2 Cách tham chiếu đến phần tử
3 Sử dụng mảng 1 chiều để giải quyết một số bài toán tính toán, tìm kiếm đơn giản trên máy tính
II M ảng hai chi ều:
0 Định nghĩa mảng 2 chiều
1 viết lệnh khai báo biến
2 Cách tham chiếu đến phần tử
3 Phân biệt tính chất và cách sử dụng mảng 2chiều và mảng 1chiều.
4 sử dụng mảng 2 chiều để giải quyết các bài toán sắp xếp
1 KIỂU XÂU:
0 định nghĩa xâu
1 viết lệnhkhai báo biến của kiểu xâu
Cách 1: khai báo trực tiếp biến mảng hai chiều:
Var<tên kiểu mảng>:array[kiểu chỉ số hang, kiểu chỉ số cột]of<kiểu phần tử>;
Cách 2: khai báo gián tiếp biến mảng hai chiều:
Type<tên kiểu mảng>=array[kiểu chỉ số hang, kiểu chỉ số cột]of<kiểu phần tử>;
Var<kiểu biến mảng>:<tên kiểu mảng>;
Cách 1: khai báo trực tiếp biến mảng một chiều:
Var<tên biến mảng>:array[kiểu chỉ số]of<kiểu phần tử>;
Cách 2:khai báo gián tiếp biến mảng một chiều:
Type<tên kiểu mảng>=array[kiểu chỉ số] of<kiểu phần tử>;
Var<tên biến mảng>:<tên kiểu mảng>;
Trang 42 Lựa chọn sử dụng các phép toán , hàm , thủ tục để xử lí xâu cho phù hợp với yêu cầu.
3 Cách tham chiếu tới phần tử của xâu
4 Sử dụng các hàm, thủ tục xử lí xâu để viết chương trình thay thế, tìm kiếm,và biến đổi xâu
2 KIỂU BẢN GHI:
0 Định nghĩa và nêu ứng dụng của kiểu bản ghi
1 Viết lệnh Khai báo tên kiểu bản ghi
2 Viết lệnh khai báo tên và kiểu các trường
3 Viết lệnh khai báo biến
4 Cách tham chiếu đến trường
5 Sử dụng kiểu bản ghi để viết các chương trình quản lí (học sinh, nhân viên,…)
Var<tên biến bản ghi>:<tên kiểu bản ghi>;
<tên trường>:<kiểu trường 1>;
……….
<tên trường>:<kiểu trường n>;
End;
Type<tên kiểu bản ghi>=record Var<tên biến>:string[độ dài lớn nhất của xâu];
Trang 5
[A].KIỂU MẢNG
[C].KIỂU BẢN GHI
[A1].Mảng 1 chiều
[A2] Mảng 2 chiều
[A11].Định nghĩa mảng 1 chiều.{biết}
[A13].viết lệnh tham chiếu đến phần tử{biết}
[A12].viết lệnh khai báo biến {biết} [A121].viết khai báo trực tiếp{biết}
[A122].viết khai báo gián tiếp{biết}
[B].KIỂU XÂU
[A14] Sử dụng mảng 1 chiều để giải quyết một số bài toán tính toán, tìm kiếm đơn
giản trên máy tính {hiểu,vận dụng}
[A21].Định nghĩa mảng 2 chiều.{biết}
[A23].viết lệnh tham chiếu đến phần tử{biết}
[A24] Phân biệt tính chất và cách sử dụng mảng 2chiều và mảng 1chiều.{hiểu}
[A25].sử dụng mảng 2 chiều để giải quyết các bài toán sắp xếp.{ hiểu,vận dụng}
[C3] Viết lệnh khai báo tên và kiểu các trường.{biết}
[B1].định nghĩa xâu {biết}
[B2].viết lệnh khai báo biến của kiểu xâu {biết}
[B3]. Lựa chọn sử dụng các phép toán , hàm , thủ tục để xử lí xâu cho phù hợp với yêu cầu.{hiểu}
[B4]. Viết lệnh tham chiếu tới phần tử của xâu {biết}
[B5] Sử dụng các hàm, thủ tục xử lí xâu để viết chương trình thay thế, tìm kiếm,và biến đổi xâu.{hiểu,vận dụng}
[C1] Định nghĩa và nêu ứng dụng của kiểu bản ghi.{biết}
[C2] Viết lệnh Khai báo tên kiểu bản ghi.{biết}
[C6] Sử dụng các khai báo kiểu bản ghi để viết các câu lệnh nhập xuất danh sách học sinh, sinh viên,
nhân viên,….{ vận dụng}
[C5] Viết lệnh tham chiếu đến trường{biết}
[C4] Viết lệnh khai báo biến.{biết}
[A22].viết lệnh khai báo biến {biết} [A221].viết khai báo trực tiếp{biết}
[A222].viết khai báo gián tiếp{biết}
Trang 6DÀN BÀI TRẮC NGHIỆM: KIỂU DỮ LIỆU CÓ CẤU TRÚC.
A.KI ỂU M ẢNG B.KI ỂU XÂU C.KI ỂU B ẢN GHI
T ỔNG
M ẢNG 1 CHI ỂU M ẢNG 2 CHI ỀU
A11 A12 A13 A14 A21 A22 A23 A24 A25 B1 B2 B3 B4 B5 C1 C2 C3 C4 C5 C6
V ẬN
Câu 1,[A12], biết.(hoặc nhận biết cách khai báo biến của mảng 1 chiều)
Câu Khai báo sau là hợp lệ
type
Arrayreal: array[-100 200] of real;
Đúng sai
(đáp án: sai)
Câu 2,[A22], biết.( hoặc nhận biết cách khai báo biến của mảng 2 chiều)
Câu Khai báo sau là hợp lệ
Var
Arrayint: array[0 5*(n+1),0 n] of integer;
Đúng sai
(đáp án: đúng)
Trang 7Câu 3,[C1], biết.(hoặc biết về định nghĩa xâu)
Xâu là kiểu dữ liệu không có cấu trúc
Đúng sai
(đáp án: sai)
Câu 4,[A22] biết( hoặc nhận biết cách khai báo biến của mảng 2 chiều)
cách khai báo mảng hai chiều sau đây là hợp lệ
Var B:array[1 9,1 10] of integer;
Đúng sai
(đáp án: đúng)
Câu 5,[A22],biết(hoặc nhận biết cách khai báo biến gián tiếp của mảng 2 chiều)
Khai báo mảng hai chiều sau đây là khai báo gián tiếp
Var B:array[1 9] of array[1 10] of integer;
Đúng sai (đáp án: sai)
Câu 6, [C4], biết(hoặc nhận biết cách khai báo biến của kiểu bản ghi)
Cách khai báo biến kiểu bản ghi sau là hợp lệ:
Var gioitinh:= string[10];
Đúng sai
(đáp án: sai)
Câu 7,[A11],biết( hoặc biết được các dạng của mảng 1 chiều)
Các mảng kí tự là mảng 1 chiều có các phần tử thuộc kiểu kí tự
Đúng sai
(đáp án: đúng)
câu 8 ,[C4], biết (hoặc biết cách khai báo biến của kiểu bản ghi)
cho khai báo bản ghi còn thiếu sau:
type
hoso= record
ho:string[8];
tên:string[9];
tuoi:integer;
end;
var a: array[1 100] of ……;
chỗ trống còn thiếu là:
0 record
1 Integer
2 String
(đáp án d)
Câu 9,[B3], hiểu( hoặc cho ra được kết quả đúng của thủ tục insert)
Ta có 2 xâu s1=’PC’ và s2=’IBM486’ Sau khi dùng thủ tục insert(s1,s2,4) Kết quả là:
a.’PCIBM’
b ‘PC IBM 486’
c.’IBM PC 486’
d cả 3 câu đều sai
(đáp án c)
Trang 8Câu 10,[A24], hiểu( phân biệt được mảng 2 chiều và mảng 1 chiều)
Phát biểu nào sau đây đúng?
a Mảng 2 chiều và mảng 1 chiều có phần tử giống nhau
b Mảng 2 chiều là một ma trận còn mảng 1 chiều là 1 dãy
c Cả a và b đều đúng
d Cả 3 câu đều sai
(đáp án d)
Câu 11,[B3],hiểu ( hoặc cho ra được kết quả của thủ tục pos)
Ta có xâu s=’abcdef’ dùng thủ tục pos(‘k’,s) thì kết quả là:
a 6
b 2
c 0
d cả 3 câu đều sai
(đáp án c)
Câu 12,[B3], biết(hoặc biết được nhiệm vụ của hàm ORD)
Hàm ORD(c) làm nhiệm vụ gì?
0 Viết hoa chữ C
1 cho biết thứ tự của c trong mã ASCII
2 xuất chữ c
3 cả 3 câu đều sai
(đáp án b)
Câu 13, [A12], biết.(hoặc biết được cách khai báo biến của mảng 1 chiều)
Chọn khai báo đúng :
a.Var A: array[1 10] of integer;
b Var A= array[1 10] of integer;
c.Var A:= array[1 10] of integer;
d.Var A: array[1,10] of integer;
(đáp án a)
Câu 14,[A12].biết (hoặc biết được các cách khai báo biến của mảng 1 chiều)
Trong các trường hợp khai báo biến trong PASCAL sau đây, trường hợp nào không hợp lệ
a.VAR x:array[1 10000] of 1 100;
b.VAR x:array[1 10000] of 1,3 100;
c.VAR x:array[1 10000] of 3 100;
d.VAR x:array[1 10000] of (a,b,c,d);
(Trả lời b.)
Câu 15,[A13], biết(hoặc biết được cách truy xuất phần tử trong mảng 1 chiều)
Cho mảng 1 chiều A, x là phần tử của A lệnh truy xuất phần tử x trong mảng A nào sau đây đúng?
a A.x;
b A->x;
c A[x];
d A(x);
(đáp án c)
Câu 16,[A14], vận dụng( hoặc viết được các câu lệnh để nhập dữ liệu cho mảng A)
Cho khai báo sau:
Var A: Array[1 4] of Real;
i : Integer ;
Ðể nhập dữ liệu cho A, chọn câu nào :
a For i:=1 to 4 do Write(‘ Nhập A[‘, i, ‘]:’); Readln(A[i]);
b For i:=1 to 4 do Readln(‘ Nhập A[‘, i, ‘]:’);
c.For i:=1 to 4 do Begin Write(‘ Nhập A[‘, i, ‘]:’); Readln(A[i]); End;
d.Write(‘ Nhập A:’); Readln(A);
Trang 9(đáp án c)
câu 17,[A13], biết (hoặc nhận biết cách truy xuất phần tử của mảng 1 chiều)
Cho khai báo biến :
Var A : array[1 5] of Integer;
Chọn lệnh đúng :
a.A[1] := 4/2 ; b.A[2] := -6 ; c.A(3) := 6 ; d.A := 10 ; (đáp án b)
Câu 18,[A14] hiểu,(hoặc cho ra kết quả đúng sau khi chạy chương trình)
cho đoạn code sau:
Var
A: Array[1 4] of Integer ;
i : Integer ;
Sau khi thực hiện các lệnh :
For i:=1 to 4 do A[i]:= i;
For i:=1 to 4 do A[i]:= A[i]+1;
thì mảng A có gía trị là :
0 A[1]=1, A[2]=2, A[3]=3, A[4]=4
1 A[1]=2, A[2]=3, A[3]=4, A[4]=5
2 A[1]=0, A[2]=1, A[3]=2, A[4]=3
3 A[1]=1, A[2]=1, A[3]=1, A[4]=1
(trả lời b)
Câu 19,[A22], biết(hoặc chỉ ra cách khai báo biến của mảng 2 chiều)
Khai báo nào sau đây đúng :
a.Var A: array[1 n,1 m] of integer;
b Const n=2; m=3; Var A:array[1 n,1 m] of integer;
c Var n,m: integer; A: array[1 n,1 m] of integer;
d.Var A: array[3, 2] of Integer;
(trả lời b)
Câu 20[B3], hiểu (hoặc hiểu được ý nghĩa của các phép so sánh trong xâu)
Cho biến SS kiểu lô gic Lệnh nào làm SS có gía trị là TRUE :
0 SS := 'a'< 'A';
1 SS := 'A' = 'a';
2 SS := 'an' < 'a';
3 SS := 'PASCAL' < 'pascal';
(đáp án d)
Trang 10Câu 21,[A25], vận dụng(hoặc viết được các câu lệnh để nhập dữ liệu cho ma trận A)
Cho khai báo sau:
Var
A : array[1 2,1 3] of Real;
i, j : integer;
Ðể nhập dữ liệu cho ma trận A, chọn :
a Write(‘ Nhập A:’); Readln(A) ;
b. For i:=1 to 2 do Readln(A[i, j]);
c For i:=1 to 2 do
For j:=1 to 3 do
begin
write(‘Nhập A[‘, i, j, ‘]:’);
readln(A[i, j]);
end;
d For i:=1 to 2 do
For j:=1 to 3 do
write(‘Nhập A[‘, i, j, ‘]:’);
readln(A[i, j]);
(trả lời c)
Câu 22,[A25] hiểu( tính ra được kết quả đúng sau khi chạy chương trình)
Khi chạy chương trình :
Var
A : array[1 2,1 3] of integer;
i, j, S : integer;
Begin
A[1,1]:= 3 ; A[1,2]:= -1 ; A[1,3]:= -4 ;
A[2,1]:= -9 ; A[2,2]:= 0 ; A[2,3]:= 5 ;
S:=0;
for i:=1 to 2 do
for j:=1 to 3 do If A[i,j] < 0 then S:=S+1;
Write(S);
End
Kết qủa in ra gía trị của S là :
a 0
b -9
c 3
d 5
(đáp án c)
Câu 23,[A25], vận dụng(hoặc viết được các câu lệnh để tìm số lớn nhất của mảng 2 chiều)
Var
A : array[1 2,1 3] of Real;
i, j : integer; Max : Real;
Ðể tìm số lớn nhất của ma trận A, chọn câu nào :
a Max:=A[1,1];
If Max < A[i,j] then Max:=A[i,j];
b Max:=A[1,1];
For i:=1 to 2 do
if Max < A[i,j] then Max:=A[i,j];
c A[1,1]:=Max ;
For i:=1 to 2 do
For j:=1 to 3 do
if Max< A[i,j] then A[i,j]:=Max;
d Max:=A[1,1];
Trang 11For i:=1 to 2 do
For j:=1 to 3 do if Max < A[i,j] then Max:=A[i,j];
(đáp án d)
Câu 24,[B3], hiểu( chỉ ra được câu sai của phép so sánh trong xâu)
Cho khai báo sau :
Var
Ho, ten : String[15];
Lệnh nào sai :
0 Write('Ho ten la : ' ; Ho ; Ten);
1 Write('Ho ten la : ' + Ho + Ten);
2 Write('Ho ten la : ', Ho , Ten);
3 Write('Ho ten la : ', Ho + Ten);
(đáp án a)
Câu 25,[B3], hiểu( hoặc chỉ ra được câu đúng của hàm str được sử dụng trong xâu)
Cho khai báo sau:
Var
Chuoi : string[10];
x : real;
Lệnh nào đúng :
0 Chuoi := Str(x:5:2) ;
1 Str(x:5:2, Chuoi);
2 Chuoi := x ;
3 x := Chuoi ;
(đáp án b)
Câu 26[B3] , hiểu( hoặ c cho ra kết quả đúng của hàm copy )
Cho St là biến chuỗi,
St:= Copy( 'PASCAL VERSION 5.5' , 8, 7) ;
Write(St);
Sau khi thực hiện hai lệnh trên , Kết qủa in lên màn hình là:
a VERSION 5.5
b VERSION
c PASCAL
d 5.5
(đáp án b)
Câu 27)[C6] (vận dụng)
Nếu A,B là hai biến bản ghi cùng kiểu thì ta có thể gán giá trị của B cho A bằng câu lệnh
(đáp án c)
Trang 12Câu 28)[C6] (vận dụng)
Cho đọan chương trình:
Type
Hocsinh=record
Hoten:string[30];
Ngaysinh:string[10];
Gioitinh:boolean;
Tin,toan,van:real;
End;
khai báo hai biến kiểu hocsinh là:
a.A,B:=hocsinh;
b.A,B:hocsinh;
c.A,B=hocsinh;
d.cả 3 câu trên đều sai
(Đáp án b)
Câu 29[A2](vận dụng khai báo mảng hai chiều)
Biến mảng hai chiều B lưu trữ bản nhân có thể được khai báo trong pascal như sau: a.var B:array[1…9] of array [1 10 ] of integer;
b.var B:array[1…9,1…10] of integer;
c.var B:array[1…9][1…10] of integer;
d.a,b là đúng
(Đáp án d)
Câu 30,31[A2](vận dụng viết chương trình mảng 2 chiều)
Cho đọan chương trình:
1.program manghaichieu;
2.uses crt;
3.var b:array[1 5,1 7] of integer;
4 d,i,j,k:integer;
5.begin
6 clrscr;
7.writeln(‘nhap cac phan tu cua mang theo dong :’);
8.for i:=1 to 5 do
9.begin
10.for j:=1 to 7 do read (b[i,j]);
11.writeln;
12.end;
13.write(‘nhap vao gia tri k=’);readln(k);
14.d:=0;
15.writeln(‘ds cac phan tu mang nho hon’,k,’:’);
16.for i:=1to 5 do
17.for j:=1 to 7 do
18.if b[i,j] <k then behgin
19.write(b[I,j],’ ‘);
20.d:=d+1;
21.end;
22.if d=0then writeln(‘khong co phan tu nao nho hon’,k);
23.readln;
Trang 13Câu 30:từ 1 đến 12: đọan chương trình đó dùng để làm gì?
a.nhập vào 5*7 phần tử
b.xuất vào 5*7 phần tử
c.đưa ra màn hình các phần tử có giá trị nhỏ hơn k
d.chức năng khác
(đáp án a)
Câu 31: từ 13 đến 24: đọan chương trình đó dùng để làm gì?
a.nhập vào 5*7 phần tử
b.xuất vào 5*7 phần tử
c.đưa ra màn hình các phần tử có giá trị nhỏ hơn k
d.chức năng khác
(đáp án c)
Câu 32[A14] ,vận dụng ( sử dụng các khai báo mảng một chiều để xuất ra màn hình dãy số vừa nhập)
Cho khai báo sau:
Program daytang;
Var
Day: array[1 10] of integer;
A,b,I,j: integer;
Begin
For i:=1 to 10 do
Begin
Write (‘nhap:’)
Readln(day[i]);
End;
Hãy viết câu lệnh xuất ra màn hình dãy số vừa nhập
………
………
………
………
Câu 33, [A14], vận dụng( kiểm tra mảng tăng ) Với các câu lệnh ở câu 32, hãy viết các câu lệnh kiểm tra xem đây có phải là dãy tăng hay không? ………
………
………
………
………
………
………
Trang 14Câu 34,[A14], vận dụng(tính tổng các số lẻ có trong dãy trong mảng 1 chiều).
Với các câu lệnh ở 32 và 33, hãy viết lệnh tính tổng các số lẻ có trong dãy
………
………
………
………
………
………
………
………
Câu 35[A23], biết( hoặc biết cách tham chiếu phần tử trong mảng 2 chiều ) Cho đoạn chưong trình sau A : array[1 2,1 3] of integer; i, j, S : integer; Begin A[1;1]:= 3 ; A[1;2]:= -1 ; A[1;3]:= -4 ; A[2;1]:= -9 ; A[2;2]:= 0 ; A[2;3]:= 5 ; S:=0; for i:=1 to 2 do for j:=1 to 3 do If A[i;j] < 0 then S:=S+1; Write(S); End Chương trình trên đã sai ở chỗ……….cần sửa lại là………
( đáp án : A[i;j] cần sửa lại là A[i,j]) Câu 36,[B5], vận dụng( hoặc cho câu lệnh đúng để chương trình in ra mã ASCII của các chữ cái) Cho đoạn chương trình còn thiếu sau: Var a :array[char] of integer; ch:char; begin for ch:=’A’ to ‘z’ do begin ……… ;
Writeln(‘ki tu ‘, ch, ‘co ma ASCII la:’, a[ch]);
End;
Readln
End
Hãy điền vào câu lệnh còn thiếu trên để chương trình in ra mã ASCII của các chữ cái)
(đáp án : a[ch]:=ord(ch) )