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; 

1

 


 

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

1

 


 

 

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,

1

 


 

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(

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

 

 

1

 


 

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.

A. 2

C. 1 2 3

B. 1

D. 3

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?

A. 0

C. 2

B. 1

D. 3

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?

A. 3

C. 1

B. 2

D. 0

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

B. In ra mảng A

D. Nhập 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 ?

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

1

 


 

A.    For i := 1 to n do write(A(i):5); D. write(A[i]:5);

 

Câu 2:        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 3:    Đ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 4:        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 5:        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 6:         Đ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 7:        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 8:        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 9:        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 10:   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 11:   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 12:   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 13:   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 14:  Trong ngôn ngữ Pascal, xâu là:

A. Mảng các kí tự

C. Tập hợp các chữ cái từ A đến Z

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 15:  Cách khai báo xâu nào là đúng?

A. s : array[1..255] of char;

C. s : char[256];

B. s : File of String;

D. s : string[30];

Câu 16:  Một xâu có tối đa bao nhiêu kí tự?

A. 64

C. 128

B. 255

D. 256

Câu 17:  Xâu không có kí tự nào gọi là:

A. Xâu không

C. Xâu rỗng

B. Xâu chứa khoảng trắng

D. Không có loại xâu này

Câu 18:  Phần tử đầu tiên của xâu là phần tử thứ:

A. 1

C. 0

B. Do người lập trình khai báo

D. Không có chỉ số

Câu 19:   Khi khai báo tệp ta khai báo sau:

1

 


 

A.Var tep1 : string;       B.Var tep1 : integer      C.Var tep1: string[30];   D. Var tep1  : text;

Câu 1:        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 2:        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 3:        Nếu hàm EOLN(

A. Đầu dòng  B. Cuối tệp    C. Cuối dòng.     D. Đầu tệp

Câu 4:        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 5:        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 6:        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 7:        Để 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 8:        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 9:        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 10:   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 11:   Chỉ ra câu đúng trong phần đầu của thủ tục :

A. Procedure          

B. Procedure

C. Procedure  

D. Procedure

Câu 12:   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 Phần khai báo     C  Phần đầu D  Phải có đủ 3 phần

Câu 13:   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 14:   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 

 

1

 


 

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 1:          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 2:          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 3:     : 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 4:          Biến toà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 5:          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 6:          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 7:          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)

 

A-    TỰ LUẬN

Nội dung bài thực hành số 4, 5 ,6,7 skg

 

HẾT

1

 

nguon VI OLET