Tải bản đầy đủ (.doc) (19 trang)

Bài thực hành học phần Trắc Nghiệm khách quan. KIỂU DỮ LIỆU CÓ CẤU TRÚC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (348.79 KB, 19 trang )

TRƯỜ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


Lờ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ị.......................................................................................


KIỂU DỮ LIỆU CÓ CẤU TRÚC

0
0
1

Kiểu mảng:
I. M ảng m ột chi ều:
Định nghĩa mảng 1 chiều
viết lệnh khai báo biến
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>;

2
3

C ách tham chiếu đến phần tử
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
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>;

2
3
4
1
0
1

C ách tham chiếu đến phần tử
Phân biệt tính chất và cách sử dụng mảng 2chiều và mảng 1chiều.
sử dụng mảng 2 chiều để giải quyết các bài toán sắp xếp.

KIỂU XÂU:

định nghĩa xâu
viết lệnh khai báo biến của kiểu xâu
Var<tên biến>:string[độ dài lớn nhất của xâu];


2
3
4

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.
C ách tham chiếu tới phần tử của xâu
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
1

Định nghĩa và nêu ứng dụng của kiểu bản ghi.
Viết lệnh Khai báo tên kiểu bản ghi.
Type<tên kiểu bản ghi>=record

2

Viết lệnh khai báo tên và kiểu các trường
<tên trường>:<kiểu trường 1>;
…………………………….
<tên trường>:<kiểu trường n>;
End;

3

Viết lệnh khai báo biến
Var<tên biến bản ghi>:<tên kiểu bản ghi>;

4
5

C ách tham chiếu đến trường
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,…).


[A11]. Định nghĩa mảng 1 chiều.{biết}


[A1].Mảng 1 chiều

[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}

[A13].viết lệnh tham chiếu đến phần tử{biết}
[A].KIỂU MẢNG

[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}

[A2]. Mảng 2 chiều

[A21]. Định nghĩa mảng 2 chiều.{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}

[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}

[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}
[B].KIỂU XÂU


[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}
[C3]. Viết lệnh khai báo tên và kiểu các trường.{biết}
[C].KIỂU BẢN GHI

[C4]. Viết lệnh khai báo biến.{biết}
[C5]. Viết lệnh tham chiếu đến trường{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}


DÀ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
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
BI ẾT

1

3


2

4

HI ỂU

3

V ẬN
DỤNG

4

TỔNG

1

1
1

2

1

25 câu (62.5%)

1
2

6

10 câu(25%)

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
(đáp án: đúng)

sai

2

15(37.5%)

1

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

1

T ỔNG


6(15%)

2

2
5 câu(12.5%)

19(47.5%)
40(100%)


Câ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
3
Hoso
(đá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)


Câ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
b.VAR
c.VAR
d.VAR

x:array[1..10000]
x:array[1..10000]
x:array[1..10000]
x:array[1..10000]


of
of
of
of

1..100;
1,3..100;
3..100;
(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);

(đá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
1
2
3

A[1]=1, A[2]=2, A[3]=3, A[4]=4
A[1]=2, A[2]=3, A[3]=4, A[4]=5
A[1]=0, A[2]=1, A[3]=2, A[4]=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
1
2
3

SS := 'a'< 'A';
SS := 'A' = 'a';

SS := 'an' < 'a';
SS := 'PASCAL' < 'pascal';

(đáp án d)


Câ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];



For 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 :
Write('Ho ten la : ' ; Ho ; Ten);
Write('Ho ten la : ' + Ho + Ten);
Write('Ho ten la : ', Ho , Ten);
Write('Ho ten la : ', Ho + Ten);

0
1
2

3

(đá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
1

2
3

Chuoi := Str(x:5:2) ;
Str(x:5:2, Chuoi);
Chuoi := x ;
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
0

A=B;

1

B=A;

2


A:=B;

3

B:=A;

(đáp án c)


Câ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] 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;


24.end.
Câ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?
………………………………………………………………
……………………………………………………………..
………………………………………………………………
……………………………………………………………..
………………………………………………………………
………………………………………………………………
……………………………………………………………..


Câ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) )


Câu 37, [A14], hiểu( hoặc cho khai báo đúng của biến max để nó lưu giá trị lớn nhất)

Trong khai báo sau còn bỏ trống . . . một chỗ, vì chưa xác định được kiểu dữ liệu của biến Max :
Var
A: Array[‘a’..’d’] of Real ;
Ch : Char ;
Max : . . . ;
Muốn biến Max lưu gía trị lớn nhất của mảng A thì cần khai báo biến Max kiểu gì vào chỗ . . . :
a.Char
b.Integer
c.String
d.Real
(đáp án d)

Câu 38,[A14], hiểu ( hoặc cho kết quả đúng của đoạn chương trình sử dụng mảng 1 chiều)
Cho a[0],a[1],…,a[m-1] và b[0],b[1],…,b[m-1] là các số nguyên bé hơn số nguyên dương B. Xét thuật toán sau:
r:=0;
k:=m-1;
for i:=0 to m-1 do
begin
s:= a[i]+b[i]+r;
if selse begin c[i]:=s-b;r:=1

end

end
if r>0 then begin k:= m; c[m] :=1 end
vậy mảng c[i] có giá trị là…………………………..
Trả lời: c[i] là các chữ số của tổng các số (a[m-1]…a[1]a[0])B và (b[m-1]…b[1]b[0])B.

Câu 39, [B5]hiều ( hoặc chỉ ra nhiệm vụ của chương trình)

var

so:integer;
k:integer;

begin
writeln(‘nhap vao mot so nguyen:’);
readln(so);
k:=0;
repeat
so:=so div 10;
k:=k+1;
until so=0;
write(‘so k=’,k);
readln;
end.
Đoạn chương trình trên làm nhiệm vụ…………………………..
(đáp án: đếm chữ số)


Câu 40, [B5], vận dụng,( hoặc sử dụng hàm length để tính độ dài của chuỗi)
cho doạn code còn trống sau:
PROGRAM dao_chuoi;
var st: string [80];
l,i:integer;
begin
write(“nhap vao chuoi ki tu: “;
redln(st);
…………………………. ;
writeln(“dao nguoc chuoi”

for i:= l down to l do
writeln(st[i];
readln
end.

Câu trắc nghiệm kiểu gép đôi
[C6] (vận dụng)
Hãy nối các biến bên trái với các kiểu dữ liệu tương ứng bên phải trong bản ghi sinh viên viết bằng ngôn ngữ pascal
sau
0
1
2
3

Hoten
ngaysinh
gioitinh
diemtrungbinh

a.real
b.string[30]
c.float
d.date
e.boolean
f.string[5]

(đáp án: 1-b, 2-d, 3-e, 4-a)

SÁCH GIÁO KHOA TIN HỌC 11
CHƯƠNG IV:

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:
Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu. Mảng được đặt tên và mỗi phần tử của nó
có một chỉ số. Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh số các phần tử của
nó.
Ta có thể dung bảy biến thực để lưu trữ nhiệt độ của các ngày trong tuần. Chương trình giải bài toán có
thể được viết bằng Pascal như sau:


Program nhietdo_tuan;
Var t1,t2,t3,t4,t5,t6,t7,tb: real;
Dem: integer;
Begin
Writeln(‘nhap vao nhiet do cua 7 ngay: ’);
Readln(t1,t2,t3,t4,t5,t6,t7);
tb:= (t1+t2+t3+t4+t5+t6+t7)/7;
dem:=0;
if t1>tb then dem:= dem+1;
if t2>tb then dem:= dem+1;
if t3>tb then dem:= dem+1;
if t4>tb then dem:= dem+1;
if t5>tb then dem:= dem+1;
if t6>tb then dem:= dem+1;
if t7>tb then dem:= dem+1;
writeln(‘nhiet do trung binh tuan: ’,tb:4:2);
writeln(‘so ngay nhiet do cao hon trung binh: ’,dem);
readln
end.
**Khai b áo:

T ổng qu át, khai b áo bi ến m ảng m ột chi ều c ó d ạ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>;
Trong đ ó:
0
Ki ểu ch ỉ s ố th ư ờng l à m ột đo ạn s ố nguy ên li ên t ục c ó d ạng n1..n2 v ới n1,n2 l à c ác h àng ho ặc bi ểu th ức nguy
ên x ác đ ịnh ch ỉ s ố đ ầu v à ch ỉ s ố cu ối (n1<= n2).
1
Ki ểu ph ần t ử l à ki ểu c ủa c ác ph ần t ử m ảng.
Tham chi ếu t ới ph ần t ử m ảng m ột chi ều đ ư ợc x ác đ ịnh b ởi t ên m ảng c ùng v ới chỉ số, được viết trong cặp ngoặc
[ hay].
Ví dụ: tham chiếu tới nhiệt độ của ngày thứ 20, trong chương trình trên, được viết là nhietdo[20].

2. Kiểu mảng hai chiều:

0

Định nghĩa: Mảng hai chiều là bảng các phần tử cùng kiểu.
Nhận xét:
Mỗi hang của mảng hai chiều có cấu trúc như một mảng một chiều cùng kích thước. Nếu coi mỗi hang của mảng
hai chiều là một phần tử thì ta có thể nói mảng hai chiều là mảng một chiều mà mỗi phần tử là mảng một chiều.
Khai báo:
Tổng quát, khai báo biến mảng hai chiều trong Pascal:

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>;

V í d ụ:
Type
Arrayreal= array [-100..200,100..200 ] of real;
arrayb oolean= array [-n+1..n+1,n..2+n ] of b oolean;
v ar
arrayint: array [1..10,1..15 ]of int eger;
arraylong: array [0..3*(n+1),0..n ]of longint;
trong đ ó n l à h ằng nguy ên.
Tham chi ếu t ới ph ần t ử c ủa m ảng hai chi ều đ ư ợc x ác đ ịnh b ởi t ên m ảng c ùng v ới hai ch ỉ s ố đ ư ợc ph ân c ách b ởi d
ấu plh ẩu v à vi ết trong c ặp ngo ặc [ hay ].
V í d ụ: tham chi ếu t ới ph ần t ử ở h àng th ứ 5, c ột th ứ 9 c ủa bi ến m ảng arrayint khai b áo trong v í d ụ tr ên đ ư ợc vi ết:
Arrayint [5,9 ].
B ài 12: KI ỂU X ÂU


D ữ li ệu trong c ác b ài to án kh ông ch ỉ thu ộc ki ểu s ố m à x ả i ểu phi s ố- d ạng k í t ự. D ữ li ệu ki ểu x âu l à d ãy c ác k í t ự.
v í d ụ: c ác x âu k í t ự đ ơn gi ản:
‘b ách khoa’,’ki su’,’2006 la nam Dinh Hoi’
Đ ịnh ngh ĩa: C ó th ể xem x âu l à m ảng m ột chi ều m à m ỗi ph ần t ử l à m ột k í t ự. C ác k í t ự c ủa x âu đ ư ợc đ ánh s ố th ứ
t ự, th ư ờng b ắt đ ầu t ừ 1.
T ư ơng t ự m ảng, tham chi ếu t ới ph ần t ử c ủa x âu đ ư ợc x ác đ ịnh b ởi t ên bi ến x âu v à ch ỉ s ố đ ặt trong c ặp ngo
ặc [ v à ].
V í d ụ: gi ả s ử c ó bi ến Hoten l ưu tr ữ gi á tr ị h ằng x âu ‘Ng uyen Le Huyen’ th ì Hoten [6 ] cho ta k í t ự ‘n ‘ l à k í t ự th ứ s
áu c ủa bi ến x âu Hoten.

1. Khai b áo:
Bi ến ki ểu x âu khai b áo:

Var<tên biến>:string[độ dài lớn nhất của xâu];
v í d ụ:
v ar hoten: string [25 ];
Trong m ô t ả x âu c ó th ể b ỏ qua ph ần khai b áo đ ộ d ài, ch ẳng h ạn:
v ar chugiai: string;
Khi đ ó đ ộ d ài l ớn nh ất c ủa x âu s ẽ nh ận gi á tr ị ng ầm đ ịnh l à 255.

2. C ác thao t ác x ử l ý x âu:
a) Ph ép gh ép x âu, k í hi ệu l à d ấu c ộng (+),đ ư ợc s ử d ụng đ ể gh ép nhi ều x âu th ành m ột. C ó th ể th ưc hi ện
ph ép gh ép x âu đ ối v ới c ác h ằng v à bi ến x âu.
v í d ụ:
ph ép gh ép x âu:
‘Ha’ +’Noi’+’-‘+’Viet Nam’
Cho x âu k ết qu ả l à ‘Ha Noi- Viet Nam’.
b) C ác ph ép so s ánh b ằng(=), kh ác(<>), nh ỏ h ơn(<), l ớn h ơn(>), nh ỏ h ơn h o ặc b ằng(<=), l ớn h ớn ho ặc b
ằng(>=) c ó th ứ t ự th ực hi ện th ấp h ơn ph ép gh ép x âu v à th ực hi ện vi ệc so s ánh hai x âu theo c ác quy t ắc
sau:
• X âu A l à l ớn h ơn x âu B n ếu nh ư k í t ự đ ầu ti ên kh ác nhau gi ữa ch úng k ể t ừ tr ái sang trong x âu
A c ó m ã ASCII l ớn h ơn.
• N ếu A v à B l à c ác x âu c ó đ ộ d ài kh ác nhau v à A l à đo ạn đ ầu c ủa B th ì A l à nh ỏ h ơn B.
Vídụ:
‘may tinh’ <’may tinh c ua toi’

Hai x âu đ ư ợc coi l à b ằng nhau n ếu nh ư ch úng gi ống nhau ho àn to àn.
v í d ụ:
‘tin hoc’ =’TIN HOC’
Đ ể x ử l í c ác x âu, c ó th ể s ử d ụng c ác th ủ t ục v à h àm chu ẩn d ư ới đ ây:
c) Th ủ t ục del ete(st,vt,n) th ực hi ện vi ệc xo á n k í t ự c ủa bi ến x âu st b ất đ ầu t ừ v ị tr í vt.
v í d ụ:
Gi á tr ị st:’song hong’ thao t ác del ete(st,1,5) . K ết qu ả: ‘hong’.

d) Th ủ t ục ins ert(s1,s2,vt) ch èn x âu s1 v ào x âu s2, b ắt đ ầu ở v ị tr í vt.
vídụ:
Gi á tr ị s1:’1’, gi á tr ị s2:’hinh.2’, thao t ác insert(s1,s2,6), k ết qu ả: ‘hinh1.2’.
e) H àm copy(s,vt,n) t ạo x âu g ồm n k í t ự li ên ti ếp b ắt đ ầu t ừ v ị tr í c ủa x âu s.
v í d ụ:
g ía tr ị s:’bai hoc th ứ 9’, bi ểu th ức: copy(s,9,5). K ết qu ả: ‘thu 9’.
f) H àm length(s) cho gi á tr ị l à đ ộ d ài x âu s.
v í d ụ:
Gi á tr ị s:’con đ ư ờng’ d ùng bi ểu th ức length(s), k ết qu ả: 9.
g) H àm p os(s1,s2) cho v ị tr í xu ất hi ện đ ầu ti ên c ủa x âu s1 trong x âu s2.
v í d ụ:
Gi á tr ị s2:’abcd ef’, p os(‘cd’,s2), k ết qu ả: 3.
h) H àm upc ase(ch) cho ch ữ c ái in hoa ứng v ới ch ữ c ái trong ch.
v í d ụ:
Gi á tr ị ch:’e’, upc ase(ch), k ết q u ả:’E’.
B ài 13. KI ỂU B ẢN GHI
D ữ li ệu ki ểu b ản ghi(rec ord) d ùng đ ể m ô t ả c ác đ ối t ư ợng c ó c ùng m ột s ố thu ộc t ính c ó th ể c ó c ác ki ểu d
ữ li ệu kh ác nhau.
v í d ụ:
b ảng k ết qu ả th ì g ồm th ông tin v ề c ác th í sinh nh ư h ọ v à t ên, ng ày sinh, gi ới t ính, đi ểm c ác m ôn
thi…m à nh ững th ông tin n ày thu ộc c ác ki ểu d ữ li ệu kh ác nhau.
1. Khai b áo:
C ác th ông tin c ần khai b áo g ồm t ên ki ểu b ản ghi, t ên c ác thu ộc t ính, ki ểu d ữ li ệu c ủa m ỗi thu ộc t ính.
Do d ữ li ệu ki ểu b ản ghi th ư ờng dung đ ể m ô t ả nhi ều đ ối t ư ợng n ên ta th ư ờng đ ịnh ngh ĩa m ột ki ểu b ản ghi
v à sau đ ó d ùng n ó đ ể khai b áo c ác bi ến li ên quan.
Ki ểu b ản ghi đ ư ợc đ ịnh ngh ĩa nh ư sau:
Type<t ên ki ểu b ản ghi>= rec ord
<t ên tr ư ờng 1>:<ki ểu tr ư ờng1>;
……………………………………
<t ên tr ư ờng n>:<ki ểu tr ư ờng n>;



0
1
2
3

End;
Sauk hi c ó ki ểu b ản ghi, bi ến ki ểu b ản ghi c ó th ể đ ư ợc khai b áo nh ư sau:
v ar
<t ên bi ến b ản ghi>:<t ên ki ểu b ản ghi>;
v í d ụ:
Đ ể x ử l í b ảng k ết qu ả thi n êu tr ên ta c ó th ể khai b áo Lop l à bi ến m ảng m ột chi ều, m ỗi ph ần t ử m
ảng l à m ột b ản ghi H ocSinh(d ữ li ệu v ề m ột h ọc sinh). M ỗi b ản ghi H ocSinh g ồm c ác th ông tin:HoTen, Ng
aySinh, GioiTinh, Đi ểm 7 m ôn thi: tin, toan l i, hoa, van, s ư, dia.
HoTen
string [30]
NgaySinh
string[10]
GioiTinh
Boolean
Tin
real
Toan
real
Li
real
Hoa
real
Van

real
Su
real
Dia
real
Trong ch ư ơng t r ình x ử l í k ết q u ả th ì c ó th ể s ử d ụng khai b áo sau đ ây:
c onst m ax=60; { gia thiet si so lop cao nhat l a 60}
type
H ocSinh =record
HoTen:
string[30];
NgaySinh:
string[10];
GioiTinh:
Boolean;
Tin,toan, li, hoa, van, su , dia:
real;
End;
Var
A,B: HocSinh;
Lop: array[1..max]of HocSinh;
N ếu A l à bi ến ki ểu b ản ghi v à X l à t ên m ột tr ư ờng c ủa A, th ì đ ể tham chi ếu đ ến tr ư ờng X, ta vi ết:
A.X
Đ ể tham chi ếu đ ến đi ểm tin h ọc c ủa m ột h ọc sinh trong v í d ụ tr ên ta vi ết:
A.tin
2. G án gi á tr ị:
C ó hai c ách đ ể g án gi á tr ị cho bi ến b ản ghi:
• D ùng l ệnh g án tr ực ti ếp: N ếu A v à 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 : A:=B;
• G án gi á tr ị cho t ừng tr ư ờng: c ó th ể th ực hi ện b ằng l ệnh g án ho ặc nh ập t ừ b àn ph ím.

v í d ụ:
m ột l ớp c ó N(N<=60) h ọc sinh.C ần qu ản l í h ọc sinh v ới c ác thu ộc t ính nh ư h ọ v à t ên, ng ày
sinh, đi ạ ch ỉ, đi ểm to án, v ăn , x ếp lo ại. Gi ả s ử vi ệc x ếp lo ại đ ư ợc x ác đ ịnh nh ư sau:
N ếu t ổng đi ểm to án v à v ăn l ớn h ơn ho ặc b ằng 19 th ì x ếp lo ại A.
N ếu t ổng đi ểm to án v à v ăn l ớn h ơn ho ặc b ằng 14 v à nh ỏ h ơn 19 th ì x ếp lo ại B.
N ếu t ổng đi ểm to án v à v ăn l ớn h ơn ho ặc b ằng 10 v à nh ỏ h ơn 14 th ì x ếp lo ại C.
N ếu t ổng đi ểm to án v à v ăn nh ỏ h ơn 10 th ì x ếp lo ại D.
Ch ú ý r ằng:
Trong c ác thu ộc t ính c ần qu ản l í, ch ỉ c ó n ăm thu ộc t ính đ ầu l à đ ộc l ập , c òn thu ộc t ính x ếp lo ại đ
ư ợc x ác đ ịnh d ựa v ào c ác đi ểm to án v à v ăn. Đ ể l ưu tr ữ th ông tin v ề h ọc sinh, ta d ùng ki ểu b ản ghi
v ới s áu tr ư ờng t ư ơng ứng v ới s áu thu ộc t ính c ần qu ản l í.
T ÓM T ẮT:
• Ki ểu d ữ li ệu c ó c ấu tr úc đ ư ợc x ây d ựng t ừ nh ững d ữ li ệu đ ã c ó theo quy t ắc, khu ôn d ạng do
ng ôn ng ữ l ập tr ình cung c ấp.
• M ảng m ột chi ều:
+ M ảng m ột chi ều l à d ãy h ữu h ạn c ác ph ần t ử c ùng ki ểu.
+Khai b áo : t ên m ảng, ki ểu ch ỉ s ố , ki ểu ph ần t ử.
+ Tham chi ếu ph ần t ử m ảng: t ên bi ến m ảng [ch ỉ s ố ph ần t ử ].
0 M ảng hai chi ều:
+ M ảng hai chi ều l à b ảng c ác ph ần t ử c ùng ki ểu.
+ Khai b áo: t ên m ảng, ki ểu ch ỉ s ố h àng, ki ểu ch ỉ s ố c ột, ki ểu ph ần t ử.
+ Tham chi ếu ph ần t ử m ảng: t ên bi ến m ảng [ch ỉ s ố h àng, ch ỉ s ố c ột ].
1
Ki ểu d ữ li ệu x âu:
+ X âu l à d ãy c ác k í t ự trong b ộ m ã ASCII.
+ C ác thao t ác x ử l í th ư ờng s ử d ụng:
- Ph ép gh ép x âu;
- Ph ép so s ánh;
- C ác th ủ t ục v à h àm chu ẩn x ử l í x âu.
0

Ki ểu b ản ghi:
+ Khai b áo: t ên b ản ghi, t ên v à ki ểu c ác tr ư ờng.
+ Tham chi ếu tr ư ờng c ảu b ản ghi: t ên bi ến b ản ghi, t ên tr ư ờng.