ÔNTẬP TIN HỌC 11 CHƯƠNG V: TỆP VÀ THAO TÁC VỚI TỆP I. LÝ THUYẾT .1. Kiểu dữ liệu tệp a. Vai trò của kiểu tệp Dữ liệu kiểu tệp có những đặc điểm sau: + Được lưu trữ lâu dài ở bộ nhớ ngoài (đĩa từ, CD, . . .) và không bị mất khi tắt nguồn điện vào máy + Lượng thông tin lưu trữ trên tệp có thể rất lớn và chỉ phụ thuộc vào dung lượng đĩa. b. Phân loại tệp và thao tác với tệp. Hai cách phân loại tệp: * Theo cách tổ chức dữ liệu - tệp văn bản - tệp có cấu trúc * Theo cách thức truy cập -tệp truy cập tuần tự -tệp truy cập trực tiếp 2. Thao tác với tệp( chủ yếu với tệp văn bản) a.Khai báo tệp văn bản : VAR <Tên biến tệp>: TEXT; Vd: Var f : text; b. .Gán tên tệp : ASSIGN(< Tên biến tệp>, <Tên tệp>); Vd1 MYFILE := 'DULIEU.DAT'; ASSIGN(F2,MYFILE); hoặc ASSIGN(F2,'DULIEU.DAT'); Vd2 MYFILE := 'C:\INP.DAT'; ASSIGN(F3,MYFILE); c.Mở tệp : Để đọc : RESET(<Tên biến tệp>); Ví dụ 2 Để đọc dữ liệu từ tệp DL.INP ta có thể mở tệp bằng : ASSIGN(F1, 'DL.INP'); RESET(F1); Để ghi : REWRITE(<Tên biến tệp>); Ví dụ 1 TF := 'C:\KQ.DAT'; ASSIGN(F3,TF); REWRITE(F3); d. .Đọc/ghi tệp : - Đọc : READ(<Tên biến tệp>,<danh sách biến>); Ví dụ 2: Lệnh đọc giá trị từ tệp gắn với biến tệp F1 và gán cho biến C : - Ghi : WRITE(<Tên biến tệp>, <danh sách kêt quả>); Ví dụ 1: Lệnh ghi giá trị biến A vào tệp gắn với biến tệp F3 : READ(F1,C); WRITE(F3,A); e. Đóng tệp CLOSE(<Tên biến tệp>); Ví dụ: CLOSE(F1); CLOSE(F3); * Một số hàm và thủ tục chuẩn thường dùng trong thao tác tệp Hàm lô gíc EOF(<Tên biến tệp>); Cho giá trị True nếu con trỏ tệp đang chỉ tới cuối tệp. Hàm lôgíc EOFLN(<Tên biến tệp>) Cho giá trị True nếu con trỏ tệp đang chỉ tới cuối dòng II. CÂU HỎI TRẮC NGHIỆM Câu 01. Số lượng phần tử trong tệp A. Không được lớn hơn 128; B. Không được lớn hơn 255; C. Phải được khai báo trước; D. Không bị giới hạn mà chỉ phụ thuộc vào dung lượng đĩa; Câu 02. Để gán tệp kq.txt cho biến tệp f1 ta sử dụng câu lệnh A. assign(‘f1,D:\kq.txt’); B. assign(‘kq.txt=f1’); C. assign(kq.txt,’D:\f1’); D. assign(f1,’D:\kq.txt’); Câu 03. Vị trí của con trỏ tệp sau lời gọi thủ tục reset A. nằm ở đầu tệp; B. nằm ở cuối tệp; C. nằm ở giữa tệp; D. nằm ngẩu nhiên bất kỳ vị trí nào; Câu 04. để ghi kết quả vào tệp văn bản ta có thể sử dụng thủ tục nào sau: A. read(<tên tệp>,<danh sách kết quả>); B. read(<tên biến tệp>,<danh sách kết quả>); C. write(<tên tệp>,<danh sách kết quả>); D. write(<tên biến tệp>,<danh sách kết quả>); Câu 05. để đọc dữ liệu từ tệp văn bản ta có thể sử dụng thủ tục nào sau: A. read(<tên tệp>,<danh sách kết quả>); B. read(<tên biến tệp>,<danh sách kết quả>); C. write(<tên tệp>,<danh sách kết quả>); D. write(<tên biến tệp>,<danh sách kết quả>); Câu 06: Cho chương trình sau: Var f: text; Begin Assign(f,’D:\Khoi11.txt'); Rewrite(f); Write(f,105+304-234); Close(f); End. Câu 7: Cho chương trình sau: Var g: text; Begin Sau khi thực hiện chương trình bên, tập tin 'Khoi11.txt' có nội dung như thế nào? A. 105+304-234 B. 105304234 C. 105 304 234 D. 175 Sau khi thực hiện chương trình bên, tập tin 'ky2.doc' có nội dung như thế nào? A. 510 702 792 B. 420 C. 510 + 702 - 792 D. 510702792 Assign(g,'D:\ky2.doc'); Rewrite(g); Write(g,'510+702-792'); Close(g); End. Câu 08. Dữ liệu kiểu tệp A. được lưu trữ trên ROM. B. được lưu trữ trên RAM. C. chỉ được lưu trữ trên đĩa cứng. D. được lưu trữ trên bộ nhớ ngoài Câu 09. Dữ liệu kiểu tệp A. sẽ bị mất hết khi tắt máy. C. sẽ bị mất hết khi tắt điện đột ngột. B. không bị mất khi tắt máy hoặc mất điện. D. cả A, B, C đều sai. Câu 10. Trong Pascal, để khai báo tệp văn bản ta sử dụng cú pháp A. var <tên tệp>:text; B. <tên biến tệp>:text; C. var <tên tệp>: String; D. var <tên biến tệp>: String; Câu 11. Trong Pascal để khai báo hai biến tệp văn bản f1, f2 ta viết như sau: A. var f1 f2:text; B. var f1;f2:text; C. var f1,f2:text; D. var f1:f2: text; Câu 12. Để thao tác với tệp A. ta có thể gán tên tệp cho tên biến tệp, hoặc sử dụng trực tiếp tên tệp cũng được; B. ta nhất thiết phải gán tên tệp cho tên biến tệp; C. ta nên sử dụng trực tiếp tên tệp trong chương trình; D. ta nhất thiết phải sử dụng trực tiếp tên tệp trong chương trình; Câu 13. Trong Pascal, mở tệp để đọc dữ liệu ta sủ dụng thủ tục: A. reset(<tên tệp>); B. reset(<tên biến tệp>); C. rewrite(<tên tệp>); D. rewrite(<tên biến tệp>); Câu 14. Trong Pascal để đóng tệp ta dùng thủ tục A. Close(<tên biến tệp>); B. Close(<tên tệp>); C. Stop(<tên biến tệp>); D. Stop(<tên tệp>); Câu 15: Tệp văn bản là tệp a. Có số dòng giới hạn b. Có số dòng, số kí tự không giới hạn c. Có số kí tự trên dòng giới hạn d. Không thể để trống Câu 16: Đoạn chương trình sau in ra tệp các giá trị là gì với f la biến tệp văn bản? For i:= 1 to 10 do Write (f, i); a. 12345678910 b. 1 2 3 4 5 6 7 8 9 10 c. 1 2 3 4 5 6 7 8 9 10 d. 10987654321 Câu 17: f là biến tệp văn bản, đoạn chương trình sau thực hiện công việc gì? Assign (f, ‘in.txt’); Rewrite(f); For i: = ‘A’ to ‘Z’ do write (f, i); A. Đưa ra màn hình các chữ cái in hoa trong bộ mã ASCII B. Đưa ra màn hình các số từ 1 dến 26 C. Ghi vào tệp in.txt các chữ cái in hoa từ A đến Z D. Ghi vào tệp in.txt cac số từ 1 đến 26 III. TỰ LUẬN Câu 1: Cho một tệp văn bản. Viết chương trình loại bỏ các khoảng trống thừa bên trong tệp Câu 2: Cho tệp văn bản. Viết chương trình đếm số từ của tệp văn bản trên . ÔN TẬP TIN HỌC 11 CHƯƠNG V: TỆP VÀ THAO TÁC VỚI TỆP I. LÝ THUYẾT .1. Kiểu dữ liệu tệp. 01. Số lượng phần tử trong tệp A. Không được lớn hơn 128; B. Không được lớn hơn 255; C. Phải được khai báo trước; D. Không bị giới hạn mà chỉ phụ thuộc vào