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:... Các lệnh[r]
Trang 1ĐỀ 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;
Trang 2C 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
Trang 3Bà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:
Trang 41 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)
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
function tenham(ds tham so): kieutrave;
Ví dụ:
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;
Thủ tục là một số thao tác
procedure tenthutuc(danh sách tham so);
Ví dụ:
procedure InSoLe(N :integer);
i : integer;
begin for i:= 1 to N do
if A[i] mod 2 <> 0 then writeln(A[i]);
end;
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);
Trang 5B- 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; C Type mang1c = array (1 100) of byte;
B Type mang1c = array [1-100] of byte; D 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 quả gì:
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
Câu 7: Trong Pascal, để xuất các phần tử của mảng 1 chiều ta dùng mấy vòng For?
Câu 8: Trong Pascal, để xuất các phần tử của mảng 2 chiều ta dùng mấy vòng For?
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 C Tính tổng các phần tử của mảng A
Câu 10: 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 ?
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);
Trang 6Câ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à:
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 toá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à :
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à :
Câu 23: Cho xâu S:= ‘tien hoc le hau hoc van’ hàm Copy(S,6,3) kết quả là :
Câu 24: Cho a:='tan ke' Khi tham chiếu đến ký tự 'k' ta viết như thế nào?
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à:
B Tập hợp các chữ cái và chữ số D Dãy các kí tự trong bảng mã ASCII
Câu 27: Cách khai báo xâu nào là đúng?
A s : array[1 255] of char; C s : char[256];
Câu 28: Một xâu có tối đa bao nhiêu kí tự?
Câu 29: Xâu không có kí tự nào gọi là:
Câu 30: Phần tử đầu tiên của xâu là phần tử thứ:
B Do người lập trình khai báo D Không có chỉ số
Câu 31: 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;
Trang 7Câ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
Trang 8Cho đ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à:
Câu 47: Tham số hình thức của chương trình trên là:
Câu 48: : Trong chương trình trên
Câu 49: Biến toàn cục của chương trình trên là:
Câu 50: Lời gọi chương trình con trong chương trình trên là:
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à:
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à:
C-TỰ LUẬN
Nội dung bài thực hành số 4, 5 ,6,7 skg
HẾT