You are on page 1of 3

PHIẾU BÀI TẬP

CHƯƠNG 5: TỆP (FILE) VÀ THAO TÁC VỚI TỆP


I. Lý thuyết:
Câu 1: Ưu điểm của việc sử dụng FILE.
Ưu điểm của việc sự dụng File là:
- Với một số bài toán khối lượng lớn, có yêu cầu lưu trữ để xử lí nhiều lần, cần có kiểu dữ liệu tệp (file)
- Dữ liệu kiểu tệp đượ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
- Lượng dữ liệu lưu trữ trên tệp có thể rất lớn và chỉ phụ thuộc vào dung lượng đĩa
Câu 2: Có những loại FILE nào?
- Xét theo tổ chức dữ liệu có thể phân tệp thành 2 loại :
+ Tệp văn bản là tệp mà dữ liệu được ghi dưới dạng các kí tự theo mã ASCII. Trong tệp văn bản, dãy
kí tự kết thúc bởi kí tự xuống dòng hay kí tự kết thúc tệp tạo thành một dòng.
+ Tệp có cấu trúc là tệp mà các thành phần của nó được tổ chức theo một cấu trúc nhất định. Tệp nhị
phân là một trường hợp riêng của tệp có cấu trúc. Dữ liệu ảnh, âm thanh,... thường được lưu trữ dưới
dạng tệp có cấu trúc
- Xét theo cách thức truy cập, có thể phân tệp thành 2 loại:
+ Tệp truy cập tuần tự: cho phép truy cập đến một dữ liệu nào đó trong tệp chỉ bằng cách bắt đầu từ
đầu tệp và đi qua lần lượt tất cả các dữ liệu trước nó.
+ Tệp truy cập trực tiếp: cho phép tham chiếu đến dữ liệu cần truy cập bằng cách xác định vị trí của dữ
liệu đó.
Câu 3: Quy trình sử dụng biến kiểu FILE trong lập trình?
- Khác với mảng, số lượng phần tử của tệp không xác định trước.
- Hai thao tác cơ bản đối với tệp là ghi dữ liệu vào tệp và đọc dữ liệu từ tệp.
- Thao tác đọc/ghi với tệp được thực hiện với từng phần tử của tệp.
- Để có thể thao tác với kiểu dữ liệu tệp, người lập trình cần tìm hiểu cách thức mà ngôn ngữ lập trình
cung cấp cách:
+ Khai báo biến tệp;
+ Mở tệp;
+ Đọc/ghi dữ liệu;
+ Đóng tệp.
Câu 4: Các khai báo biến kiểu FILE.
* Khai báo
- Để làm việc với dữ liệu kiểu tệp ta phải sử dụng biến tệp.
- Khai báo biến tệp văn bản có dạng:
var < tên biến tệp > : text;
* Thao tác với tệp
- Gắn tên tệp
Thủ tục gắn tên tệp với biến tệp:
assign(< biến tệp >, < tên tệp >);
- Mở tệp
Tệp có thể dùng để chứa kết quả ra hoặc dữ liệu vào.
Trước khi mở tệp, biến tệp phải được gắn tên tệp bằng thủ tục assign.
- Đọc/ghi tệp văn bản
Việc đọc tệp văn bản được thực hiện giống như nhập từ bàn phím.
Việc ghi dữ liệu ra tệp văn bản giống như ghi ra màn hình.
Dữ liệu trong tệp văn bản được chia thành các dòng.
- Đóng tệp
Sau khi làm việc xong với tệp cần phải đóng tệp.
Việc đóng tệp là đặc biệt quan trọng sau khi ghi dữ liệu, khi đó hệ thống mới thực sự hoàn tất việc ghi
dữ liệu ra tệp.
Sau khi đóng một tệp vẫn có thể được mở lại.
Khi mở lại tệp, nếu vẫn dùng biến tệp cũ thì không cần phải dùng thủ tục assign gắn lại tên tệp.
Cú pháp: close( < tên biến tệp > );

Câu 5: Nối cột A với cột B sao cho đúng với ý nghĩa của câu lệnh
Cột A Cột B
a) assign(<tên biến tệp>, <tên tệp>); 1. Mở tệp nhưng không cho phép ghi nội dung vào tệp
b) Reset(<tên biến tệp>); 2. Đọc dữ liệu từ tệp
c) Rewrite(<tên biến tệp>); 3. Ghi dữ liệu vào tệp
d) Readln(<tên biến tệp>,<tên biến>); 4. Đóng tệp
e) Writeln(<tên biến tệp>, <tên biến>); 5. Gán tên tệp cho biến tệp
f) Close(<tên biến tệp>); 6. Mở tệp cho phép ghi nội dung vào tệp
F–4
E–3
D–2
B–1
C–6
A–5
II. Thực hành:
Câu 1: Điền khuyết chương trình sau: Viết chương trình nhập 2 số từ tệp baitap1.inp vào chương trình,
tính tổng của 2 số đó và ghi kết quả vào tệp baitap1.out.
Program CT_File1;
Uses CRT;
Var fi, fo: …………; //Khai báo biến tệp
a, b, s : integer;
BEGIN
………….(fi, ………..);
…………..(fi);
Readln(fi, a);
Readln(….., ….);
Close(fi);
S := a + b;
………….(fo, ………..);
…………..(fo);
Writeln(….., ….);
Close(fo);
Readln;
END.
Câu 2: Sửa lỗi sai trong chương trình sau:
Chương trình Sửa lỗi
(1) Program CT_File2; (1) .................................................................
(2) Uses CRT; (2) .................................................................
(3) Var a, kq : integer; (3) .................................................................
(4) fi, fo : real; (4) .................................................................
(5) BEGIN (5) .................................................................
(6) Reset(fi,’Baitap2.inp’), (6) .................................................................
(7) Assign(fi); (7) .................................................................
(8) Readln(a, fi); (8) .................................................................
(9) Close(a); (9) .................................................................
(10) If a > 0 then (10)................................................................
(11) kq := ‘a la so duong’; (11)................................................................
(12) else (12)................................................................
(13) kq := ‘a la so am’; (13)................................................................
(14) Assing(‘Baitap2.out’, fo); (14)................................................................
(15) Reset(fo); (15)................................................................
(16) Writeln(kq,fo); (16)................................................................
(17) Close(fo); (17)................................................................
(18) Readln; (18)................................................................
(19)END. (19)................................................................

You might also like