1. Trang chủ
  2. » Giáo án - Bài giảng

Bai 15 - Tệp và xử lý tệp

17 478 4
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài 15 - Tệp và Xử Lý Tệp
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài giảng
Thành phố Hồ Chí Minh
Định dạng
Số trang 17
Dung lượng 529 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ở bộ nhớ trong RAM và sẽ bị mất khi tắt máy Với những bài toán trong đó dữ liệu cần được lưu trữ để xử lý nhiều lần và với khối lượng lớn thì sao?.  Khái niệm và phân loại • Khái n

Trang 2

Tất cả các kiểu dữ liệu đã xét :

Lưu trữ ở đâu và tồn

tại đến khi nào ?

Ở bộ nhớ trong (RAM)

và sẽ bị mất khi tắt máy

Với những bài toán

trong đó dữ liệu cần

được lưu trữ để xử lý

nhiều lần và với khối

lượng lớn thì sao ?

Ta cần có kiểu dữ liệu khác.

Trong TP đó là kiểu tệp (file)

Trang 3

Đặc điểm dữ liệu kiểu tệp

Được lưu trữ lâu dài ở ngoài (đĩa từ, CD, …) và không bị mất khi tắt nguồn điện vào máy.

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

Khái niệm và phân loại

Khái niệm

Tệp (file) là tập hợp dữ liệu được lưu trữ trên bộ nhớ ngoài (đĩa mềm, đĩa cứng )

Phân loại

Tệp định kiểu

Tệp văn bản

Có 2 loại tệp trong Pascal

là tệp mà các phần tử có cùng một kiểu

gồm các kí tự được phân chia thành một hoặc nhiều dòng

• Cấu trúc

Trang 4

1 Khai báo biến tệp

Ví dụ:

F1 : FILE OF CHAR;

F2 : FILE OF INTEGER;

F3 : FILE OF REAL;

F4 : TEXT;

VAR <Tên biến tệp> : FILE OF <Kiểu phần tử tệp>;

Để làm việc với kiểu dữ liệu tệp ta phải khai báo biến tệp

 Tệp định kiểu

 Tệp văn bản

VAR <Tên biến tệp> : TEXT;

Các kiểu phần tử tệp: integer (kiểu số nguyên), real (kiểu số thực),

char (kiểu kí tự), array (kiểu mảng), text (kiểu văn bản) …

Trang 5

Ghi Đọc

2 Xử lý tệp

Có 4 nhóm thao tác với tệp

Sơ đồ làm việc với tệp

Trang 6

2 Xử lý tệp

a) Gán tên

ASSIGN (<Tên biến tệp>, <Tên tệp>);

Ví dụ 1:

Giả thiết có biến xâu MYFILE và cần gán biến tệp F2 với tệp

có tên DULIEU.DAT Việc gán tên tệp được thực hiện như

sau :

MYFILE := ‘DULIEU.DAT ’;

ASSIGN (F2, MYFILE);

hoặc ASSIGN (F2, ‘DULIEU.DAT ’);

Ví dụ 2:

Để chuẩn bị thao tác với tệp có tên là INP.DAT trên thư mục

gốc đĩa C: , ta gắn nó với biếp tệp F3 như sau :

MYFILE : = ‘C:\INP.DAT’ ; ASSIGN (F3, MYFILE);

back

Sử dụng thủ tục Assign để gán tên của một tệp cho biến tệp

Cú pháp :

Trang 7

2 Xử lý tệp

b) Mở tệp

REWRITE (<Tên biến

tệp>);

Ví dụ 1:

TF : = ‘C:\ KQ.DAT

’ ; ASSIGN (F3, TF);

REWRITE (F3);

back

 Sử dụng thủ tục Rewrite để ghi kết quả

Cú pháp :

RESET (<Tên biến tệp>);

Ví dụ 2:

TF : = ‘DL.INP ’ ; ASSIGN (F1, TF);

RESET (F1);

hoặc ASSIGN (F1, ‘DL.INP’);

RESET (F1);

 Sử dụng thủ tục Reset để mở đọc 1 file đã tồn tại

Cú pháp :

Trang 8

2 Xử lý tệp

c) Đọc/ghi tệp định kiểu

READ (<Tên biến tệp>, <Tên biến);

Ví dụ 1:

Thủ tục đọc giá trị từ tệp gắn với biến tệp F1 và gán cho biến C :

READ (F1 , C)

back

 Thủ tục Read đọc một (hay nhiều) phần tử của tệp tương

ứng gán vào một (hay nhiều) biến cùng kiểu với phần tử tệp

Cú pháp :

Cú pháp :

 Thủ tục Write ghi giá trị một (hay nhiều) biến vào một (hay

nhiều) phần tử tệp Các biến phải cùng kiểu với phần tử tệp

WRITE (<Tên biến tệp>, <Tên biến);

Ví dụ 2:

Thủ tục ghi giá trị biến A vào tệp gắn với biến tệp F3 :

WRITE (F3 , A)

Trang 9

2 Xử lý tệp

d) Đóng tệp

CLOSE (<Tên biến tệp>);

Ví dụ 1:

Thủ tục đọc giá trị từ tệp gắn với biến tệp F1 và gán cho biến C :

CLOSE (F1) CLOSE (F3)

back

 Thủ tục Close đóng một tệp đang mở

Cú pháp :

Lưu ý: Một tệp, sau khi đóng có thể 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 thiết phải dùng thủ tục ASSIGN gán lại

tên tệp

Trang 10

2 Xử lý tệp

e) Một số hàm và thủ tục chuẩn thường dùng trong

thao tác tệp

back

Hàm logic

EOF(<Tên biến tệp>);

cho giá trị TRUE nếu con trỏ tệp đang chỉ tới cuối tệp.

Thủ tục

SEEK(<Tên biến tệp>,<Biến nguyên>);

đưa con trỏ tệp về vị trí phần tử có số thứ tự xác định bởi giá trị Biến

nguyên (Các phần tử của tệp được đánh số thứ tự bắt đầu từ 0).

Trang 11

2 Xử lý tệp

f) Ví dụ áp dụng

back

Ví dụ 1: (Sach Giao Khoa trang 92)

PROGRAM KQ_TIN;

USES CRT;

TYPE BANGHI = RECORD

HOTEN : STRING[28];

DIEM : BYTE;

END;

VAR N : INTEGER;

BG : BANGHI;

F : FILE OF BANGHI;

TENTEP : STRING[10];

I : INTEGER;

BEGIN

CLRSCR;

WRITE( ‘So hoc sinh :’);

READLN(N);

TENTEP := ‘KQ.DAT’;

ASSIGN(F,TENTEP);

REWRITE(F);

FOR I:= 1 TO N DO BEGIN

WRITE(‘Ho va Ten :’);

READLN(BG.HOTEN);

WRITE(‘DIEM :’);

READLN(BG.DIEM);

WRITE(F,BG);

END;

CLOSE(F);

END

Trang 12

2 Xử lý tệp

f) Ví dụ áp dụng

back

Ví dụ 2 (Sach Giao Khoa trang 94)

PROGRAM VIDU_2;

USES CRT;

TYPE BANGHI = RECORD

HOTEN : STRING[28];

DIEM : BYTE;

END;

VAR F : FILE OF BANGHI;

N, TG : INTEGER;

BG : BANGHI;

TENTEP : STRING[10];

DIEM_TB : REAL;

BEGIN

CLRSCR;

N := 0; TG := 0;

TENTEP := ‘KQ.DAT’;

ASSIGN(F,TENTEP);

RESET(F);

WHILE NOT EOF(F) DO BEGIN

READ(F,BG);

TG := TG + BG.DIEM;

N := N + 1;

END;

DIEM_TB := TG/N;

WRITELN(‘Diem trung binh cua lop: ‘, DIEM_TB:4:1);

CLOSE(F) END

Trang 13

2 Xử lý tệp

g) Đọc/ghi tệp văn bản

READ (<Tên biến tệp>, <Danh sách biến>);

back

 Thủ tục đọc Read

Cú pháp :

 Thủ tục ghi Write

hoặc READLN (<Tên biến tệp>, <Danh sách biến>);

WRITE (<Tên biến tệp>, <Danh sách biến>);

Cú pháp :

hoặc WRITELN (<Tên biến tệp>, <Danh sách biến>);

Trong đó : Danh sách biến là một hoặc nhiều tên biến Trong trường hợp

nhiều biến thì các tên cách nhau bởi dấu phẩy.

Trong đó : Danh sách kết quả gồm một hoặc nhiều phần tử Trường hợp

có nhiều phần tử thì các phần tử này cách nhau một dấu phẩy Phần tử có

thể là tên biến, biểu thức (số học, quan hệ hoặc logic) hoặc hằng xâu

Trang 14

2 Xử lý tệp

g) Đọc/ghi tệp văn bản

back

Ví dụ 1:

Giả thiết trong chương trình có khai báo:

VAR FA, FB : TEXT;

và tệp FA được mở để đọc, còn tệp FB để ghi Khi đó:

– Có thể có các thủ tục đọc tệp FA như sau:

READ (FA,A,B,C);

hoặc READLN(FA,A,B,C);

Có thể có các thủ tục ghi ra tệp FB như sau:

WRITE(FB, ‘A= ’, A, ‘B= ‘, B, ‘C= ‘, C);

WRITELN(FB, ‘X1=’, (–B – SQRT(B*B – 4*A*C))/(2*A):8:3);

Trang 15

Ví dụ 2:

Xét đường gấp khúc khép kín không tự cắt N đỉnh trong mặt phẳng, có các cạnh song song với trục tọa

độ và các đỉnh có tọa độ nguyên

Đường gấp khúc 16 đỉnh

Trang 16

Chương trình sau thực hiện :

Nhập từ bàn phím số N, tọa độ các đỉnh liên tiếp của đường gấp khúc

và ghi tọa độ các đỉnh ra tệp văn bản GAPKHUC.INP, mỗi dòng chứa

2 số nguyên là tọa độ một đỉnh Các số trên một dòng cách nhau một dấu cách

Chương trinh

Ví dụ 2:

PROGRAM GAPKHUC;

USES CRT;

VAR F : TEXT

I, N, X, Y : INTEGER;

TF : STRING[80];

BEGIN

CLRSCR;

WRITE(‘ N = ‘); READLN(N);

TF := ‘GAPKHUC.INP’;

ASSIGN(F,TF);

REWRITE(F);

FOR I:= 1 TO N DO BEGIN

WRITE(‘ X, Y : ’); READLN(X,Y); WRITELN(F, X, ‘ ’, Y);

END;

CLOSE(F);

END

Trang 17

Ví dụ 3:

Chương trình sau đọc dữ liệu của ví dụ 2 chứa ở tệp GAPKHUC.INP, tính chu vi hình giới hạn bởi đường gấp khúc và đưa kết quả ra tệp văn bản GAPKHUC.OUT

PROGRAM VI_DU3;

USES CRT;

VAR FA, FB : TEXT;

L : LONGINT;

X0, Y0, X1, Y1, X, Y : INTEGER;

BEGIN

ASSIGN (FA, ‘GAPKHUC.INP’);

RESET(FA);

READLN(FA, X, Y);

X0 := X; Y0 := Y; L := 0;

WHILE NOT EOF(FA) DO BEGIN

X1 := X; Y1:= Y; READLN(FA,X,Y); L:= L + ABS(X – X1) + ABS(Y – Y1); END;

L := L + ABS (X – X0) + ABS(Y – Y0);

CLOSE(FA);

ASSIGN(FB, ‘GAPKHUC.OUT’);

REWRITE(FB);

WRITELN(FB, ‘Chu vi : ‘, L);

CLOSE(FB) END.

Ngày đăng: 29/05/2013, 23:19

HÌNH ẢNH LIÊN QUAN

Sơ đồ làm việc với tệp - Bai 15 - Tệp và xử lý tệp
Sơ đồ l àm việc với tệp (Trang 5)

TỪ KHÓA LIÊN QUAN

w