Violet.vn/hailan2008
ĐỀ CƯƠNG ƠN TẬP HỌC KỲ II
A-NỘI DUNG LÍ THUYẾT CẦN NHỚ TRONG CÁC BÀI SAU:
Xem kỹ các phần sau:
Bài 11: Kiểu mảng
1. Cú pháp khai báo mảng 1 chiều trực tiếp và gián tiếp.
Cú pháp khai báo mãng 1 chiều:
Trực tiếp:
Var A : array[1..100] of integer;
Var A : array[–100..0] of real; sai A[10]
Var A : array[–100..100] of byte;
Var A : array[–100..100] of char ;
Var A : array[–20..–10] of word; sai A[-10] := -9
Khai báo gián tiếp:
Type MangInt = array[1..100] of integer;
Var A : MangInt;
2. Tham chiếu tới phần tử mảng.
Có thể gọi trực tiếp thơng qua tên mảng và chỉ số của phần tử:
A[10]; A[–10]; A[0]; A[10];
Var A : array[1..100] of integer;
Tham chiếu đến các phần tử của mảng: A: 5 66 22 8 1
A[1]:=5;
A[2]:=66;
A[3]:=22;
A[4]:=8;
A[5]:=1;
In giá trị của phần tử A[3]:
Writeln( A[3] ); >> kết quả: 22
Gán số 59 cho phần tử A[-1]
A[-1] := 59 ;
Cho mảng X có khai báo Var X : Array[1..10] of Byte;. Phép gán nào sau đây đúng?
A. X[-10]:=-10;
B. X[10]:=10;
C. X[1]:=-256;
D. X[1]:=256;
Bài 12 Kiểu xâu:
1. Khái niệm xâu.
Là một dãy các ký tự
Chú ý: mỗi ký tự trong xâu có một chỉ số
Ví dụ
St1:= 'Truong THPT Binh Chanh' ;
>> St1[10] sẽ là chữ gì?
2. Khai báo xâu.
Var St1 : string[50]; Xâu St1 có thể chứa tối đa 50 ký tự
Var St2 : string; Xâu St2 có thể chứa tối đa 255 ký tự
Var st3 : string[1000]; báo lỗi
3. Ghép xâu.
St1 := ‘Tin hoc 11';
St2 := ‘Lap trinh Pascal’;
St := St1 + st2; >> St sẽ có giá trị? ‘Tin hoc 11Lap trinh Pascal’
St := St1 + ' ' + st2; >> St sẽ có giá trị? ‘Tin hoc 11 Lap trinh Pascal’
4. So sánh xâu.
St1 > St2; kết quả trả về của phép so sánh này là TRUE hay FALSE?
TRUE vì…
5. Cách sử dụng các thủ tục và hàm: delete(); insert(); copy(); length(); pos().
Pos(’n’,’bai tap on tap hoc ky II’)>>
bai tap on tap hoc ky II
Delete (’bai tap on tap hoc ky II’,9, 7) >> bai tap hoc ky II
St1 := ‘aaaaaaaa’;
St2 := ‘xxx’;
aaaaaxxxaaa
Insert(ST2,ST1,5);//?
Hàm copy tự xem
Bài 14: Kiểu dữ liệu tệp:
1. Phân loại tệp (2 cách phân loại).
Bài 15: Thao tác tệp:
Không khai thác dữ liệu trực tiếp các tập tin trên đĩa mà khai thác thông qua biến tệp, mỗi biến tệp
sẽ đại diện cho một tập tin có thật trên ổ đĩa
1. Khai báo tệp.
Var taptin1, taptin2 : text;
2. Gắn tên tệp.
Assign(taptin1, 'input.txt'); nếu khơng có đường dẫn thì tập tin input.txt sẽ được đặt trong cùng thư
mục với chương trình
Assign(taptin2, 'C:\output.txt');
3. Mở tệp ghi.
Rewrite(taptin2); //chú ý nếu tập tin 'C:\output.txt' có dữ liệu sử dụng lệnh này dữ liệu cũ sẽ mất đi
hoàn toàn để ghi dữ liệu mới
4. Mở tệp để đọc.
Reset(taptin1);
5. Ghi tệp.
write(taptin2, 5, 6, 7); output.txt sẽ có 567
write(taptin2, 'A', 'B', 'C'); output.txt sẽ có 3 chữ ABC
write (taptin2, x, y, z); output.txt sẽ có giá trị của các biến x,y,z
write(taptin2, 5, 6, 7);
6. Đọc tệp.
Nếu tập tin input.txt có 4 chữ số (viết cách nhau bởi 1 dấu khoảng cách) : 5 7 22 99
Lệnh lấy dữ liệu của các số và gán cho 3 biến x, y, z
read(taptin1, x, y, z);
Sau câu lệnh này biến y sẽ có giá trị bao nhiêu?
Chú ý: Kết thúc một tập tin có một ký hiệu: eof
Một số chương trình dùng vịng lặp để đọc dữ liệu của tập tin
7. Đóng tệp.
Thao tác đóng tệp thực hiện khi kết thúc chương trình hoặc khơng cần làm việc với tập tin đó nữa,
Nếu khơng đóng tệp chương trình khơng báo lỗi nhưng sẽ xảy ra một số rủi ro:
1. Các lệnh ghi dữ liệu vào tập tin sẽ khơng được thực hiện
2. Tập tin trên ổ đĩa có thể bị hỏng dữ liệu
Lệnh đóng tệp: close(<biến tệp>);
VD:
Close( taptin1 );
Close( taptin2 );
Bài 18: Ví dụ về cách viết và sử dụng chương trình con.
1. Cách viết và sử dụng thủ tục, khai báo phần đầu của thủ tục (trang97)
2. Cách viết và sử dụng hàm,khai báo phần đầu của hàm (trang 101)
Hàm (function)
Thủ tục (procedure)
Thực hiện một số thao tác và trả về một giá trị thông
qua tên gọi của nó.
Thực hiện một số thao tác nhưng khơng trả về giá trị
nào
Vì hàm có giá trị trả về nên cần xác định kiểu giá trị
trả về và giá trị cần trả về: nên sẽ có khai báo
Thủ tục là một số thao tác
function tenham(ds tham so): kieutrave;
Ví dụ:
procedure tenthutuc(danh sách tham so);
function LuyThua(a, b :integer):
integer;
var i, gt : integer;
begin
gt:=1;
for i:= 1 to b do
gt:= gt*a;
LuyThua := gt;
end;
Ví dụ:
Chú ý: vì hàm có giá trị trả về nên cần có biến để
nhận giá trị của nó hoặc giá trị của nó phải ở trong
một biểu thức nào đó
VD:Lt1 := LuyThua(4, 5);
TongLt := LuyThua(3,2) + LuyThua(4,5);
procedure InSoLe(N :integer);
i : integer;
begin
for i:= 1 to N do
if A[i] mod 2 <> 0 then
writeln(A[i]);
end;
B- HỌC SINH VỀ NHÀ TỰ ÔN TÂP 60 CÂU TRẮC NGHIỆM
Câu 1:
Với khai báo: var A:Array[1..100] of Byte; nhóm lệnh nào dùng để in giá trị của A
ra màn hình?
A. for i:=1 to 100 do readln(A[i]);
C. for i:=1 to 100 do writeln(i:5);
B. for i:=1 to 100 do writeln(A[i]:5);
D. for i:=1 to 100 do readln(A[1]);
Câu 2:
Khai báo mảng một chiều số nguyên nào sau đây đúng?
A. var A : array[1..100] of real;
C. var A = array[1..100] of word;
B. var A : array[1..100] of word;
D. var A = array[1..100] of real;
Câu 3:
Câu lệnh nào đúng(Với A là mảng một chiều gồm N phần tử số nguyên)?
A. write(A);
B. readln(A[i] :5);
C. readln(A);
D. writeln(A[i] :5);
Câu 4:
: Các khẳng định nào không đúng đối với mảng 1 chiều?
A. Các phần tử trong mảng phân biệt bằng chỉ số
B. Mảng có số phần tử đếm được
C. Các phần tử trong mảng có thể khác kiểu
D. Mảng chỉ có 1 tên là tên mảng
Câu 5: Khai báo nào sau đây là đúng cú pháp
A. Type 1mang = array [1..100] of byte;
B. Type mang1c = array [1-100] of byte;
Câu 6: Đoạn chương trình sau khi thực hiện cho kết
Var a:array[1..3] of byte; i:byte;
Begin
For i:=1 to 3 do a[i]:=i;
For i:=1 to 3 do
If a[i] mod 2 = 0 then Write(a[i]);
End.
A. 2
B. 1
Câu 7: Trong Pascal, để xuất các phần tử của mảng
A. 0
B. 1
Câu 8: Trong Pascal, để xuất các phần tử của mảng
A. 3
B. 2
Câu 9: Đoạn chương trình sau làm gi?
S:=0;
For i:=1 to n do S:=S+a[i];
A. Đếm số phần tử của mảng A
B. In ra mảng A
Câu 10:
C. Type mang1c = array (1..100) of byte;
D. Type mang1c = array [1..100] of byte;
quả gì:
C. 1 2 3
D. 3
1 chiều ta dùng mấy vòng For?
C. 2
D. 3
2 chiều ta dùng mấy vịng For?
C. 1
D. 0
C. Tính tổng các phần tử của mảng A
D. Nhập mảng A
Cho khai báo mảng như sau : Var A : array[0..10] of integer ;
Phương án nào dưới đây chỉ phần tử thứ 10 của mảng ?
A. a(10);
B. a(9);
C. a[10];
D. a[9];
Câu 11:
Điền nội dung còn thiếu trong đoạn sau:
for i:= 1 to n do
begin write(‘a[’ ,i, ‘]=’); ……………….; end;
A. readln(a[i])
B. readln(a[i]:5)
C. write(a[i])
D. write(a[i]:5)
Câu 12:
Chương trình sau sẽ viết ra cái gì?
For i:=1 to n do
If a[i] mod 2 =1 then Write(a[i]);
A. Viết ra tổng của mảng a
C. Viết ra tất cả các số của mảng a
B. Viết ra các số lẻ của mảng a
D. Viết ra các số chẳn của mảng a
Câu 13:
Cho mảng một chiều A gồm n phần tử, muốn xuất giá trị của mảng A ra màn hình ta
dùng lệnh nào?
A. For i := 1 to n do read(A[i]:5);
C. For i := 1 to n do write(A[i]:5);
B. For i := 1 to n do write(A(i):5);
D. write(A[i]:5);
Câu 14:
Mảng A gồm N = 7 phần tử: 1 2 3 4 5 6 7. Các lệnh sau: T := 0; For i := 1 to
N do T := T + A[i]; cho kết quả là:
A. T = 0
C. T = 20.
B. T = 7
D. T = 28
Câu 15:
Đoạn chương trình sau làm gì?
k:=0;
For i:=1 to length(a) do
If a[i]='a' then k:=k+1;
A. Đếm số kí tự a trong xâu a
C. Đếm số kí tự trắng trong xâu a
B. Đếm số kí tự số trong xâu a
D. Đếm số kí tự trong xâu a
Câu 16:
Trong ngơn ngữ lập trình Pascal, xâu kí tự là?
A. Tập hợp các chữ cái và các chữ số trong bảng chữ cái tiếng Anh;
B. Mảng các kí tự;
C. Tập hợp các chữ cái trong bảng chữ cái tiếng Anh;
D. Dãy các kí tự trong bảng mã ASCII;
Câu 17:
Trong ngơn ngữ lập trình Pascal, với xâu kí tự có các phép tốn là?
A. Phép cộng và phép trừ.
B. Phép ghép xâu và phép so sánh.
C. Phép cộng, trừ, nhân, chia.
D. Chỉ có phép cộng.
Câu 18: Đoạn chương trình sau làm gì?
For i:=length(a) downto 1 do write(a[i]);
A. Viết ra kí tự đầu của a
C. Viết xâu a theo thứ tự ngược
B. Viết ra kí tự cuối của a
D. Viết xâu a theo thứ tự
Câu 19:
Cho 2 xâu S1:= ‘abcd’ và S2:= ‘ABC’; khi đó S1 + S2 cho kế quả nào?
A. 'ABC abcd'
B. 'abcd ABC'
C. 'ABCabcd'
D. 'abcdABC'
Câu 20:
Cho xâu S= ‘tien hoc le’ . hàm length(S) kết quả là :
A. 11
B. 9
C. 13
D. 15
Câu 21:
In xâu đảo ngược xâu a, ta viết x:= length(a); for i:= x downto 1 do ………..;
A. Readln(a[i])
B. Readln(a)
C. Write(a)
D. Write(a[i])
Câu 22:
Cho xâu S=‘tien hoc le hau hoc van’ hàm Pos(‘hoc’,S) kết quả là :
A. 4
B. 5
C. 6
D. 17
Câu 23:
Cho xâu S:= ‘tien hoc le hau hoc van’ . hàm Copy(S,6,3) kết quả là :
A. 'hoc'
B. 'en ho'
C. 'hoc le'
D. 'van'
Câu 24:
Cho a:='tan ke' . Khi tham chiếu đến ký tự 'k' ta viết như thế nào?
A. a[4]
B. a(4)
C. a(5)
D. a[5]
Câu 25:
cho 2 xâu: a:='anh hai' và xâu b:='hoc tot' , thủ tục insert(a,b,1) cho kết quả:
A. 'anh haihoc tot'
B. 'hoc totanh hai'
C. 'anh hai hoc tot'
D. 'hoc tot anh hai'
Câu 26: Trong ngôn ngữ Pascal, xâu là:
A. Mảng các kí tự
B. Tập hợp các chữ cái và chữ số
Câu 27: Cách khai báo xâu nào là đúng?
A. s : array[1..255] of char;
B. s : File of String;
Câu 28: Một xâu có tối đa bao nhiêu kí tự?
A. 64
B. 255
Câu 29: Xâu khơng có kí tự nào gọi là:
A. Xâu khơng
B. Xâu chứa khoảng trắng
Câu 30: Phần tử đầu tiên của xâu là phần tử thứ:
A. 1
B. Do người lập trình khai báo
Câu 31:
C. Tập hợp các chữ cái từ A đến Z
D. Dãy các kí tự trong bảng mã ASCII
C. s : char[256];
D. s : string[30];
C. 128
D. 256
C. Xâu rỗng
D. Khơng có loại xâu này
C. 0
D. Khơng có chỉ số
Khi khai báo tệp ta khai báo sau:
A.Var tep1 : string;
B.Var tep1 : integer
C.Var tep1: string[30]; D. Var tep1 : text;
Câu 32:
Giả sử tệp F1 đã được gán tên là ‘VD.DAT’. Dùng thủ tục nào sau đây để mở
tệp F1 ra để đọc?
A Reset(‘VD.DAT’);
B Rewwrite(‘VD.DAT’); C Reset(F1);
D Rewwrite(F1);
Câu 33:
Tệp mà dữ liệu trong nó được ghi dưới dạng các kí tự theo mã ASCII được gọi
là tệp gì?
A Tệp truy cập trực tiếp B Tệp có cấu trúc
C Tệp văn bản
D Tệp truy cập tuần tự
Câu 34:
Nếu hàm EOLN(<tên biến tệp>) cho giá trị bằng TRUE thì con trỏ tệp nằm ở vị
trí:
A. Đầu dịng
B. Cuối tệp
C. Cuối dịng.
D. Đầu tệp
Câu 35:
Khai báo nào sau đây là đúng:
A. CLOSE (biến tệp, tên tệp);
C. CLOSE (tên tệp; biến tệp);
B. CLOSE (biến tệp);
D. CLOSE (biến tệp 1, biến tệp 2, …, biến tệp n);
Câu 36:
Số lượng phần tử của tệp
A. Không bị giới hạn mà chỉ phụ thuộc vào dung lượng đĩa
C. Không được lớn hơn 255
B. Không được lớn hơn 128
D. Phải được khai báo trước.
Câu 37:
Biến cục bộ là gì?
A. Biến được khai báo trong CTC nhưng được sử dụng trong chương trình chính
B. Biến được khai báo trong chương trình chính nhưng chỉ được sử dụng cho CTC
C. Biến được khai báo trong chương trình con
D. Biến tự do khơng cần khai báo
Câu 38:
Để gán một tệp có tên là HOCKY2.INT cho biến tệp K2, ta phải gõ lệnh:
A. Assign(K2, HOCKY2.INT);
C. Assign(K2, ‘HOCKY2.INT’);
B. Assign(HOCKY2.INT, K2);
D. Assign(‘HOCKY2.INT’, K2);
Câu 39:
Dữ liệu kiểu tệp:
A. được lưu trữ trên RAM
C. chỉ được lưu trữ trên đĩa cứng
B. được lưu trữ trên ROM
D. được lưu trữ trên bộ nhớ ngoài.
Câu 40:
Trong các khai báo sau khai báo nào là sai:
A. Procedure P (n:integer ; k:real);
C. Procedure M (n:integer ; k:real);
B. Procedure P (h:char ; n:integer);
D. Procedure KT (M: Array[1..10] of Byte);
Câu 41:
Muốn khai báo x, y là tham trị, z là tham biến. Khai báo nào sau đây đúng ?
A. Procedure thamso (x : byte ; var y : byte; var z : byte );
B. Procedure thamso (x : byte ; var z , y : byte);
C. Procedure thamso (x : byte ; y : byte; var z : byte );
D. Procedure thamso (var x : byte ; var y : byte; var z : byte );
Câu 42:
Chỉ ra câu đúng trong phần đầu của thủ tục :
A. Procedure <tên thủ tục>:<kiểu dữ liệu>;
B. Procedure<tên thủ tục>[<danh sách tham số>]:<kiểu dữ liệu>;
C. Procedure <tên hàm>[<danh sách tham số>]:<kiểu dữ liệu>;
D. Procedure<tên thủ tục>[<danh sách tham số>] ;
Câu 43:
Phần nào có thể khơng có trong một chương trình con? Chọn câu trả lời đúng:
A Phần thân
B Phần khai báo C Phần đầu
D Phải có đủ 3 phần
Câu 44:
Tham số hình thức của Hàm có mấy loại:
A. Không phân loại.
B. 1 loại.
C. 2 loại.
D. 3 loại.
Câu 45:
Sự khác nhau giữa tham trị và tham biến trong khai báo chương trình con là:
A. Tham trị phải được định nghĩa sau từ khóa Type
B. Tham trị phải khai báo sau từ khóa Var
C. Khơng khác nhau
D. Tham biến phải có từ khóa Var đứng trước
Cho đoạn chương trình sau: (Áp dụng cho các câu 46->52)
Program thi_hk_2;
Var a,b,c : real;
Procedure vidu (Var x: integer; y,z: real ):real;
Var tong: real;
Begin
x:= x+1; y:=y - x; z:=z + y; tong:=x+y+z;
Writeln(x,’ ‘,y,’ ‘,z,’ ‘,tong);
End;
BEGIN
a:=3; b:=4; c:=5; vidu(a,b,c);
Writeln(a,’ ‘,b,’ ‘,c);
Readln
END.
Câu 46:
Chương trình trên có 1 lỗi là:
A. Biến “tong” khai báo sai kiểu
B. Thủ tục khơng có kiểu dữ liệu
C. Khơng xuất kết quả ra màn hình
D. Khơng có lệnh gọi chương trình con
Câu 47:
Tham số hình thức của chương trình trên là:
A. tong
B. a, b, c
C.x, y, z
D. 3, 4, 5
Câu 48:
: Trong chương trình trên
A. x là tham trị, y, z là tham biến
B. x là tham biến, y, z là tham trị
C. x, y là tham trị, z là tham biến
D. x, y là tham biến, z là tham trị
Câu 49:
Biến tồn cục của chương trình trên là:
A. Readln
B. Writeln(a,’ ‘,b,’ ‘,c);
C. a:=3; b:=4; c:=5;
D. Vidu(a,b,c);
Câu 50:
Lời gọi chương trình con trong chương trình trên là:
A. tong
B. a, b, c
C.x, y, z
D. vidu
Câu 51:
Nếu bỏ qua lỗi của chương trình thì kết quả xuất ra màn hình là:
A. (4, 0, 5, 9)
B. (4, 4, 5, 13)
C.(4, 4, 5, 9)
D. (4, 0, 5, 13)
Câu 52:
Nếu nhập a:= 6, b:= 9, c:= 10 thì kết quả xuất ra màn hình là:
A. (7, 9, 10, 21)
B. (7, 2, 12, 21)
C.(7, 2, 10, 19)
D. (6, 2, 12, 20)
C- TỰ LUẬN
Nội dung bài thực hành số 4, 5 ,6,7 skg
HẾT