VAI TRÒ CỦA KIỂU TỆP Kiểu dữ liệu tệp có những đặc điểm sau: - Dữ liệu kiểu tệp được lưu trữ lâu dài ở bộ nhớ ngoài đĩa từ, đĩa CD,… và không bị mất khi tắt nguồn điện.. - Lượng dữ liệu
Trang 1TIẾT 36
BÀI 14
KIỂU DỮ LIỆU TỆP
Trang 21 VAI TRÒ CỦA KIỂU TỆP
Kiểu dữ liệu tệp có những đặc điểm sau:
- Dữ liệu kiểu tệp được lưu trữ lâu dài ở bộ nhớ ngoài (đĩa từ, đĩa 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.
Trang 32 PHÂN LOẠI TỆP VÀ THAO TÁC VỚI TỆP
Xét theo cách tổ chức dự liệu:
- Tệp văn bản: dữ liệu được ghi dưới dạng các kí tự theo mã ASCII
Ví dụ: sách, tài liệu, bài học, chương trình nguồn viết bằng ngôn ngữ bậc cao
- Tệp có cấu trúc: các thành phần của tệp được tổ chức theo một cấu trúc nhất định
Ví dụ: dữ liệu ảnh, âm thanh
Trang 42 PHÂN LOẠI TỆP VÀ THAO TÁC VỚI TỆP
Xét theo cách thức truy cập:
- 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 trực tiếp vị trí (thường là số hiệu) của dữ liệu đó
Khác với mảng, số lượng phần tử của tệp không cần 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
Trang 5Các thao tác với kiểu tệp:
Khai báo biến tệp
Mở tệp
Đọc/ghi dữ liệu
Đóng tệp
Trang 6BÀI 15
THAO TÁC VỚI TỆP
Trang 71 KHAI BÁO
var <tên biến tệp> : text
Ví dụ:
var tep1, tep2 : text
Trang 82 THAO TÁC VỚI TỆP
a Gắn tên tệp:
- Mỗi tệp dữ liệu đều có một tên để tham chiếu
- Tên tệp là biến xâu hoặc hằng xâu
Ví dụ: ‘DuLieu1.DAT’
‘Luu.DAT’
- Biến tệp: được ngôn ngữ lập trình sử dụng như đại diện cho tệp
Trang 92 THAO TÁC VỚI TỆP
a Gắn tên tệp:
* Gắn tên tệp với biến tệp
assign( <biến tệp> , <tên tệp> );
Ví dụ1: Giả sử có biến tệp tên file1 cần gắn với tệp có tên Luu.DAT , ta thực hiện như sau:
assign( file1 , ‘Luu.DAT’ );
Ví dụ1: Để có thể đọc dữ liệu từ tệp DuLieu1.DAT trên thư mục gốc của đĩa D, ta cần gắn tệp đó với 1 biến tệp
là file2 bởi thủ tục sau:
assign( file2 , ‘Dulieu1.DAT’ );
Trang 102 THAO TÁC VỚI TỆP
b 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
- Thủ tục mở tệp để ghi dữ liệu
rewrite( <biến tệp> );
Ví dụ 1: assign( file3 , ‘D:\KetQua.DAT’ );
rewrite( file3 );
Khi thực hiện thủ tục rewrite( file3 ) , nếu trên thư mục D:\ chưa có tệp KetQua.DAT , thì tệp sẽ được tạo với nội dung rỗng Nếu tệp KetQua.DAT đã có thì nội dung cũ sẽ bị xóa để chuẩn bị ghi dữ liệu mới.
Trang 112 THAO TÁC VỚI TỆP
b Mở tệp:
- Thủ tục mở tệp để đọc dữ liệu:
reset( <biến tệp> );
Ví dụ 2: Để đọc dữ liệu từ tệp DuLieu1.DAT , ta có thể
mở tệp bằng các thủ tục sau:
assign( tep1 , ‘DuLieu1.DAT’ );
reset( tep1 );
hoặc
tentep := ‘DuLieu1.DAT’;
assign( tep1 , tentep );
reset( tep1 );
Trang 122 THAO TÁC VỚI TỆP
c Đọc/ghi tệp văn bản:
- Thủ tục đọc tệp
read( <biến tệp>, <danh sách biến> );
hoặc
readln( <biến tệp>, <danh sách biến> );
Trong đó, danh sách biến là 1 hay nhiều tên biến đơn Trường hợp có nhiều biến thì các biến được phân cách bởi dấu phẩy.
Trang 132 THAO TÁC VỚI TỆP
c Đọc/ghi tệp văn bản:
- Thủ tục ghi tệp
write( <biến tệp>, <danh sách kết quả> );
hoặc
writeln( <biến tệp>, <danh sách kết quả > );
Trong đó, danh sách kết quả gồm 1 hay nhiều phần tử Phần tử có thể là biến đơn hoặc biểu thức (số học, quan
hệ hoặc lôgíc) hoặc hằng xâu Trường hợp có nhiều phần tử thì các phần tử được phân cách bởi dấu phẩy.
Trang 142 THAO TÁC VỚI TỆP
Ví dụ:
Var tepDoc, tepGhi : text;
- Đọc dữ liệu từ tệp tepDoc
read( tepDoc, A, B, C );
hoặc
readln( tepDoc, A, B, C );
- Ghi dữ liệu vào tệp tepGhi
write( tepGhi, ‘A= ‘, A, ‘B= ‘, B,’C= ‘,C );
Trang 152 THAO TÁC VỚI TỆP
Một số hàm chuẩn thường dùng trong khi đọc ghi tệp văn bản
- Hàm eof(<biến tệp>) : trả về giá trị true nếu con trỏ tệp đang chỉ tới cuối tệp
- Hàm eoln(<biến tệp>) : trả về giá trị true nếu con trỏ tệp đang chỉ tới cuối dòng
Trang 162 THAO TÁC VỚI TỆP
c Đóng tệp:
- Thủ tục đóng tệp
close( <biến tệp> );
Ví dụ
close( <tep1> );
close( <file2> );
- Sau khi đóng tệp, một tệp 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