Có hai loại tệp thường dùng : Tệp có cấu trúc Tệp văn bản Là tệp mà các phần tử của nó được tổ chức theo một cấu trúc nhất định Gồm các kí tự được phân chia thành một hoặc nhiều dòng.. T
Trang 1Mất điện rùi?
Dữ liệu
đang làm
việccòn
không?
Trang 31 Vai trò kiểu tệp
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 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.
Trang 4Có hai loại tệp thường dùng :
Tệp có cấu trúc
Tệp văn bản
Là tệp mà các phần tử của nó được tổ chức theo một cấu trúc nhất định
Gồm các kí tự được phân chia thành một hoặc
nhiều dòng
Phân loại tệp
Trang 52 Khai báo tệp văn bản Var < Tên biến tệp> : TEXT;
Ví dụ:
Var f : Text;
Program vd1;
Uses crt;
Var
f: TEXT;
Trang 63 Thao tác với tệp
Ghi dữ liệu vào tệp Đọc dữ liệu từ tệp
Gán tên tệp
Đóng tệp
Trang 7Ghi dữ liệu vào tệp
• Mở tệp để ghi dữ liệu
• Đóng tệp
• Gán tên tệp
Write (<biến tệp>,<DS kquả>);
Close(<biến tệp>);
Rewrite (<biến tệp>);
• Ghi dữ liệu ra tệp
Assign(<biến tệp>,<tên tệp>); Assign(f, ‘DL.dat’);
Rewrite (f);
Write (f,hoten);
Close(f);
Ví dụ
Trang 8Program vd1;
Uses crt;
Var f: text;
Hoten: string[20];
Begin
Assign (f,’d:\danhsach.txt’); Rewrite (f);
Hoten := ‘Nguyen Van A’; Writeln (f, hoten);
close (f);
Writeln (hoten);
Readln
End.
Trang 9Đọc dữ liệu từ tệp
• Mở tệp để đọc dữ liệu
• Đóng tệp
• Gán tên tệp
Readln (<biến tệp>,<DS kquả>);
Reset (<biến tệp>);
• Đọc dữ liệu từ tệp
Reset (f);
Readln (f,hoten);
Ví dụ
Assign(<biến tệp>,<tên tệp>); Assign(f, ‘DL.dat’);
Trang 10Program vd1;
Uses crt;
Var f: text;
Hoten: string[20];
Begin
Assign (f,’d:\danhsach.txt’); Reset (f);
Readln (f, hoten);
close (f);
Writeln (hoten);
Readln
End.
Trang 11Sơ đồ thao tác với tệp
Gán tên tệp
Đóng tệp
Assign(<biến tệp>,<tên tệp>);
Reset(<biến tệp>);
Rewite(<biến tệp>);
writeln(<biến tệp>,<DS kquả>); Readln(<biến tệp>,<DS kquả>);
Close(<biến tệp>);
Assign(<biến tệp>,<tên tệp>);
Close(<biến tệp>);
Trang 12f Một số hàm chuẩn thường dùng trong
Hàm EOF (End Of File) :
Cho giá trị đúng nếu con trỏ đang chỉ tới cuối tệp.
EOF(<biến tệp>);
Cho giá trị đúng nếu con trỏ đang chỉ tới cuối tệp.
EOLN(<biến tệp>);
Trang 13Câu hỏi 1:
Nêu một số trường hợp cần phải dùng tệp.
Giải đáp:
Một số trường hợp cần phải dùng tệp:
•Khối lượng dữ liệu lớn
•Sử dụng lại nhiều lần và lâu dài…
Trang 14Câu hỏi 2:
Khi cần nhập (ghi) dữ liệu từ tệp phải dùng những thao tác nào?
Giải đáp:
Khi cần nhập dữ liệu từ tệp phải dùng những
thao tác :
•Gán tên tệp
•Mở tệp để ghi
•Ghi dữ liệu vào tệp
•Đóng tệp
Trang 15Câu hỏi 3:
Tại sao cần phải có câu lệnh mở tệp trước khi
đọc/ghi?
Giải đáp:
Trước khi sử dụng tệp phải có câu lệnh mở tệp
để trình dịch biết mục đích mở tệp để đọc hay ghi, đồng thời đặt con trỏ vào vị trí thích hợp.
Trang 16Câu hỏi 4:
Tại sao cần phải có câu lệnh đóng tệp sau khi đã
đã kết thúc ghi dữ liệu vào tệp?
Giải đáp:
Dùng câu lệnh đóng tệp sau khi kết thúc ghi
dữ liệu vào tệp để hệ thống hoàn tất việc ghi
dữ liệu ra tệp.
Trang 17Câu hỏi 5:
Tệp vd.txt chỉ có dòng chữ abcdefghik1234.
Xét đoạn chương trình:
Var f:text;
s: string[9];
x:longint;
Begin Assign(f, ‘vd.txt’); reset(f);
Read(f,s,x);
Writeln(s); writeln(x);Readln End.
Chương trình này mắc lỗi “invailid numberic format”.
s: string[10];