Tải bản đầy đủ
Chú ý: Thủ tục Seek và các hàm FileSize, FilePos không dùng cho tệp văn bản.

Chú ý: Thủ tục Seek và các hàm FileSize, FilePos không dùng cho tệp văn bản.

Tải bản đầy đủ

Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam

.

.

Ví dụ 7.76: Cho tệp văn bản tên là T2.TXT và có nội dung là:
dong=6
cot =7
0 8 8 -2 6 11 1
8020702
8 2 0 11 12 9 3
-2 0 11 0 -7 9 4
6 7 12 -7 0 6 5
11 0 9 9 6 0 6
Hãy đọc tệp này đưa vào một ma trận A và in ma trận A lên màn hình. Số dòng và số cột của
ma trận A được ghi ở hai dòng đầu tiên trong tệp T2.TXT.
Program VIDU_7_76;
{ vi du ve File Van ban }
uses

crt;

Type

MANG = array[1..20,1..20] of integer ;

Var

A : MANG;
N, M : integer;
F : Text;

Procedure Nhap;
Var

i,j : Byte;
st: string[5];

Begin
Assign(F, 'T2.TXT');
Reset(F);
Readln(F, St, N);
Readln(F, St, M);
For i:=1 to N do
begin
For j:=1 to M do
Read(F, A[i,j]);
Readln(F);
end;
Close(F);
End;
Giáo trình Tin học đại cương

190

Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam

.

.

Procedure
Var

InMatran;

i, j : Integer;

Begin
For i:=1 to N do
begin
for j:=1 to M do
write( A[i,j]:4);
writeln;
end;
End;
BEGIN
Clrscr;
Nhap;
InMatran;
Readln;
END.
Ví dụ 7.77 : Lập bảng lượng giác từ 10 đến 890 và ghi ra tệp BLGIAC.DAT
Program

Bang_Luong_Giac;

CONST

g='|';

Var

F : Text;
k : Integer;
Rad,S,C,T,CT : Real;

{-------------------------------}
Function

taobansao(Dong:Char; T:Integer):String;

{Chương trình con này tạo đoạn thẳng bởi các dấu bằng =}
Var j : Integer;
Tam :String[80];
Begin
Tam := ' ';
For j := 1 To T

Do

Tam := Tam + Dong;
Replicate := Tam;
End;
{-------------------------------}
Giáo trình Tin học đại cương

191

Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam

.

.

BEGIN
Assign(f,'BLGIAC.DAT');
Rewrite(f);
Writeln(f,'

* BANG LUONG GIAC *');

Writeln(f);
Writeln(f,taobansao(#61,58));
Writeln(f,g,' DO ',g,' RADIAN ',g,' SIN
g,'

TAN

',g,'

COTANG

',g,'

COSIN

',

',g);

Writeln(f,taobansao(#61,58));{tạo đoạn thẳng}
For k := 1 To 89 Do
Begin
Rad := k * Pi /180;
S := Sin(Rad);
C := Cos(Rad);
T := S/C;
CT := 1/t;
writeln(f,g,k:2,g,Rad:10:8,g,S:10:8,g,C:10:8,g,
T:10:6,g,CT:10:6,g);
End;
Writeln(f,taobansao(#61,58));
Close(f);
END.
{Hãy mở tệp 'BLGIAC.DAT' trong thư mục hiện hành để xem kết quả hoặc để tiện quan sát bạn
có thể thêm phần ghi ra màn hình}

 Tệp không định kiểu
* Tệp không định kiểu:
Tệp không định kiểu - Untyped File - là tệp không định rõ kiểu của phần tử khi khai báo,
coi dữ liệu chính là các mã nhị phân 0,1 không cần biết nó biểu thị cái gì. Đơn vị xử lý là từng
khối bít, có kích thước do ta quy định, gọi là các Record. Lưu ý rằng record ở đây không phải là
kiểu bản ghi như đã biết.
Tệp không định kiểu chủ yếu dùng để tăng tốc độ thao tác vào ra dữ liệu.
* Cú pháp
Khai báo: dùng từ khoá FILE
Var biến tệp : File ;

Giáo trình Tin học đại cương

192

Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam

.

.

Truy cập: Các thủ tục Reset, Rewrite đối với tệp không định kiểu cần có thêm tham trị
kich thước Rec. Tham trị kích thước Rec là một số nguyên (kiểu Word) để ấn định kích thước
của khối dữ liệu đơn vị (record) trong các thao tác tệp. Kích thước này tính theo byte.
Reset ( biến tệp , kích thước Rec );
Rewrite ( biến tệp , kích thước Rec );
Ví dụ 7.78:
Reset(F,4);

đọc ra từng khối 4 byte một.

Rewrite(F,2);

viết vào từng khối 2 byte một.

Nếu tham số này không có mặt thì record có kích thước mặc định là 128 byte.
* Các hàm, thủ tục khác.
Ngoài ra, để tăng nhanh tốc độ xuất nhập dữ liệu, còn có hai thủ tục dành riêng cho tệp
không định kiểu là BlockRead và BlockWrite.
BlockRead( biến tệp , vùng đệm , số Rec , kết quả );
Vùng đệm: vùng đệm trong bộ nhớ, là một tham biến, nơi chứa dữ liệu đọc vào
Sô Rec : tham trị kiểu Word, là số khối dự định đọc.
Kết quả : tham biến kiểu Word, là số khối thực đọc được.
Tác dụng.
BlockRead đọc một lượng số Rec khối bit từ tệp ứng với biến tệp rồi ghi vào bộ nhớ, bắt
đầu từ byte thứ nhất của Vùng đệm. Số khối bit thực sự đọc được được trả về trong biến kết
qủa. Lưu ý rằng số khối bít thực sự đọc được có thể bé hơn sô Rec dự định đọc nếu đã đến cuối
tệp.
Nếu không có tham biến kết qủa thì khi số khối thực sự đọc được không bằng số Rec sẽ
có lỗi I/O xảy ra.
Số byte đọc được nhiều nhất là số Rec * kích thước Rec, ở đây kích thước Rec là kích
thước của khối. Kích thước khối là số lượng byte trong một khối, được ấn định khi mở tệp như
đã trình bày ở trên.
Nếu số Rec * kích thước Rec > 65,535 (64K) thì sẽ có lỗi.
BlockWrite( biến tệp , vùng đệm , số Rec , kết quả );
Vùng đệm: vùng đệm trong bộ nhớ, là một tham biến, nơi chứa dữ liệu để xuất ra.
Sô Rec : tham trị kiểu Word, là số khối dự định xuất ra.
Kết quả : tham biến kiểu Word, là số khối thực sự xuất ra được.

Ý nghĩa của các tham số và công dụng của BlockWrite cũng tương tự như BlockRead ở trên.
Chỉ có thao tác truy cập ở đây là viết từ bộ nhớ ra tệp.
193
Giáo trình Tin học đại cương