Te_Dien

New Member

Download miễn phí Pascal - Dữ liệu kiểu tập tin





Ðọc tuần tự các phần tử của tập tin từ vị trí hiện thời của con trỏ tập tin và
gán cho các biến b1, b2, ., bN. Kiểu dữ liệu của các biến b1, b2, ., bN phải
cùng kiểu với các phần tử của tập tin. Mỗi khi đọc xong một phần tử, con trỏ
tập tin tự động dời đếnphần tử tiếp theo.
Ví dụ:
Lệnh Read(F1, i, j); đọc hai số nguyên trong tập tin DLIEU.DAT ( kể từ vị
trí hiện thời) và gán cho các biến nguyên i, j .
Lệnh Read(F3, X); đọc bản ghi hiện thời của tập tin QLSV.DAT và gán cho
biến bản ghi X.



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

DỮ LIỆU KIỂU TẬP TIN
15.2.1. Khái niệm :
Nhập và xuất dữ liệu là hai công việc rất phổ biến khi thực hiện một
chương trình. Cho đến nay, ta mới chỉ nhập dữ liệu từ bàn phím và xuất dữ
liệu ra màn hình. Các dữ liệu này được tổ chức trong bộ nhớ của máy, chúng
tồn tại khi chương trình đang chạy và bị xóa khi chương trình kết thúc.
Muốn lưu trữ các dữ liệu lâu dài để sử dụng nhiều lần thì phải ghi chúng lên
đĩa thành các tập tin.
Tập tin (file) trong Pascal là một kiểu dữ liệu có cấu trúc. Mỗi tập tin là
một tập hợp các phần tử có cùng chung một kiểu dữ liệu được nhóm lại
thành một dãy và được ghi trên đĩa dưới một cái tên chung. Khái niệm tập
tin và mảng có những điểm rất gần nhau. Song tập tin khác mảng ở những
điểm sau đây:
Mảng được tổ chức trong bộ nhớ còn tập tin chủ yếu được tổ chức trên đĩa.
Số phần tử của mảng được xác định ngay khi khai báo, còn số phần tử của
tập tin thì không. Các tập tin được kết thúc bằng một dấu hiệu đặc biệt gọi là
EOF ( End Of File).
Các phần tử của mảng được truy xuất thông qua chỉ số. Các phần tử của
tập tin được truy xuất nhờ một biến trung gian chỉ điểm vào vị trí của chúng
trên đĩa, gọi là con trỏ tệp. Tại mỗi thời điểm, con trỏ sẽ chỉ vào một vị trí
nào đó trong tập tin, gọi là vị trí hiện thời.
Dưới đây sẽ trình bày hai loại tập tin thường gặp là tập tin có định kiểu
và tập tin văn bản.
15.2.2. Tập tin có định kiểu:
Tập tin mà các phần tử của nó có cùng một kiểu dữ liệu gọi là tập tin có
định kiểu. Kiểu dữ liệu của các phần tử của tập tin có thể là kiểu đơn giản (
nguyên, thực, ký tự , lô gic, chuỗi ký tự...) hay kiểu có cấu trúc ( mảng, bản
ghi).
Cách khai báo kiểu tập tin như sau:
Type
TênkiểuTtin = File of Kiểuphầntử ;
Ví dụ:
Type
Ksvien = Record
Ten: String[20];
Namsinh : Integer;
DTB : Real;
end;
KieuT1 = File of Integer;
KieuT2 = File of String[20];
KieuT3 = File of Ksvien ;
Theo khai báo trên thì KieuT1 là tập tin có các phần tử kiểu nguyên (
Integer ), KieuT2 là tập tin có các phần tử là các chuỗi ký tự ( String[20] ),
còn KieuT3 là tập tin có các phần tử là các bản ghi kiểu Ksvien.
Khi đã có kiểu tập tin, ta có thể khai báo các biến tập tin :
Var
F1 : KieuT1;
F2 : KieuT2;
F3 : KieuT3;
F1, F2, F3 là các biến kiểu tập tin, một loại biến đặc biệt, không dùng
để gán gía trị như các biến nguyên, thực hay chuỗi. Mỗi biến này thay mặt
cho một tập tin mà thông qua các biến đó ta có thể thực hiện các thao tác
trên tập tin như : tạo tập tin, mở, đóng, xóa tập tin, ghi dữ liệu vào tập tin và
đọc dữ liệu từ tập tin, ...
Ngoài cách khai báo các biến F1, F2, F3 thông qua việc địng nghĩa các
kiểu dữ liệu mới như trên, Pascal còn cho phép khai báo trực tiếp các biến
tập tin như sau:
Var
TênbiếnTtin : File of Kiểuphầntử ;
Ví dụ: có thể khai báo ba biến F1, F2, F3 nói trên theo cách sau :
Type
Ksvien = Record
Ten: String[20];
Namsinh : Integer;
DTB : Real;
end;
Var
F1 : File of Integer;
F2 : File of String[20];
F3 : File of Ksvien ;
15.2.2.1. Các thủ tục chuẩn:
1) Thủ tục ASSIGN( biếntậptin, têntậptin) :
Gán tên tập tin cho biến tập tin. Ở đây tên tập tin là một biểu thức kiểu
chuỗi là tên thực sự của tập tin. Ví dụ :
Assign(F1, ‘DLIEU.DAT’);
Assign(F3, ‘QLSV.DAT’);
Sau hai lệnh này, biến F1 đồng nhất với tập tin DLIEU.DAT, mọi thao tác
trên biến F1 chính là thao tác trên tập tin DLIEU.DAT. Tương tự, biến F3
đồng nhất với tập tin QLSV.DAT
2) Thủ tục REWRITE( biếntậptin) :
Khởi tạo tập tin mới, nếu tập tin đã có trên đĩa thì nó xóa đi và tạo mới. Ví
dụ :
Rewrite(F1) ; khởi tạo tập tin DLIEU.DAT
Rewrite(F3) ; khởi tạo tập tin QLSV.DAT
3) Thủ tục RESET(biếntậptin):
Mở tập tin đã có để sử dụng. Con trỏ tập tin trỏ vào phần tử đầu tiên (có số
thứ tự là 0) của tập tin .
Ví dụ : Reset ( F3); mở tập tin QLSV.DAT
4) Thủ tục WRITE( biếntậptin, b1, b2, ..., bN):
Tuần tự ghi vào tập tin các gía trị của các biến b1, b2, ..., bN. Các biến b1,
..., bN phải cùng kiểu dữ liệu với các phần tử của tập tin.
Ví dụ:
- Cho i, j, k là các biến kiểu Integer và i=10, j=20, k=100, khi đó lệnh :
Write(F1, i, j, k ) ;
sẽ ghi lần lượt các gía trị 10, 20, 100 vào tập tin DLIEU.DAT
-Cho khai báo:
Var
X : Ksvien;
Các lệnh sau gán gía trị cho X và ghi X vào tập tin QLSV.DAT:
X.Ten:=’Ng Van An’;
X.Namsinh :=1980 ;
X.DTB :=6.5;
Write(F3, X);
Sau khi ghi X vào tập tin QLSV.DAT, con trỏ tập tin tự động dời đến vị
trí của phần tử tiếp theo.
5) Thủ tục READ( biếntậptin, b1, b2, ..., bN) :
Ðọc tuần tự các phần tử của tập tin từ vị trí hiện thời của con trỏ tập tin và
gán cho các biến b1, b2, ..., bN. Kiểu dữ liệu của các biến b1, b2, ..., bN phải
cùng kiểu với các phần tử của tập tin. Mỗi khi đọc xong một phần tử, con trỏ
tập tin tự động dời đến phần tử tiếp theo.
Ví dụ:
Lệnh Read(F1, i, j); đọc hai số nguyên trong tập tin DLIEU.DAT ( kể từ vị
trí hiện thời) và gán cho các biến nguyên i, j .
Lệnh Read(F3, X); đọc bản ghi hiện thời của tập tin QLSV.DAT và gán cho
biến bản ghi X.
6) Thủ tục CLOSE( biếntậptin) : Ðóng tập tin .
7) Thủ tục SEEK( biếntậptin, k ) :
Ðặt con trỏ tập tin vào phần tử thứ k trong tập tin. Thủ tục này cho phép
truy xuất trực tiếp một phần tử của tập tin mà không phải thực hiện tuần tự
từ đầu tập tin.
Ví dụ: đọc phần tử thứ 10 của tập tin DLIEU.DAT và gán cho biến
nguyên i rồi in gía trị của i :
Seek(F1, 10);
Read(F1, i);
Write(i);
8) Thủ tục ERASE( biếntậptin) : Xóa tập tin trên đĩa
9) Thủ tục RENAME( biếntậptin, tênmới ) : Ðổi tên tập tin .
Yêu cầu là tập tin phải đang đóng thì mới xóa hay đổi tên được.
15.2.2.2. Các hàm chuẩn:
1) Hàm EOF(biếntậptin):
Cho kết qủa True khi con trỏ tập tin đang ở cuối tệp, trong các trường hợp
khác hàm cho gía trị False.
2) Hàm FILESIZE(biếntậptin) :
Cho số phần tử của tập tin. Nếu tập tin rỗng thì số phần tử bằng 0.
3) Hàm FILEPOS(biếntậptin) :
Cho vị trí hiện thời của con trỏ tập tin. Phần tử đầu tiên có số thứ tự là 0.
Phần tử cuối cùng có số thứ tự bằng FileSize -1.
Ví dụ : Ghi số 100 vào cuối tập tin DLIEU.DAT, dùng các lệnh:
i:=100;
Seek( F1, FileSize(F1) ) ; {Ðặt trỏ vào cuối tập tin}
Write(F1, i); { Ghi gía trị của i vào cuối tệp}
Ví dụ 15.4:
Nhập một danh sách sinh viên gồm Họ tên, điểm Toán, Lý, tính điểm
trung bình rồi lưu vào tập tin HOSO.DAT. Sau đó đọc dữ liệu tập tin này và
in ra màn hình. Trong chương trình , chỗ nào có dấu ~ thì thay bằng một ký
tự trắng.
PROGRAM VIDU15_4;
Uses CRT;
Const Tenttin = ‘HOSO.DAT’;
Type
Ksvien= Record
Hoten: String[20];
Toan, Ly, Dtb : Real;
end;
KieuTtin = File of Ksvien ;
Var
F : KieuTtin ;
X : Ksvien ;
i: Integer;
Procedure Hienthi ( Var F : KieuTtin);
begin
Clrscr;
Writeln(#32 :5, ‘HỌ VÀ TÊN’, #32:6 ,
‘ÐTOÁN~~~ÐLÝ~~~~DTB’);
Reset(F);
While Not Eof(F) do
begin
Read(F, X);
Writeln(X.Hoten, #32:20-Length(X.Hoten),
X.Toan:4:1,#32:3, X.Ly:4:1, #32:3, X.DTb:4:1);
end;
end; {Hết hiển thị}
BEGIN
Clrscr;
Assign(F, TenTtin);
Rewrite(F);
i:=0;
Repeat
Clrscr;
Gotoxy(10,4);
...
 

Các chủ đề có liên quan khác

Top