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

17 478 4
Bai 15 - Tệp và xử lý tệ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

Tất cả các kiểu dữ liệu đã xét : Lưu trữ ở đâu tồn tại đến khi nào ? Ở bộ nhớ trong (RAM) 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ử nhiều lần 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)  Đặc điểm dữ liệu kiểu tệp Được lưu trữ lâu dài ở ngoài (đĩa từ, CD, …) 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 chỉ phụ thuộc vào dung lượng đĩa.  Khái niệm 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 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ệpTệ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) … Ghi Đọc 2. Xử tệp Có 4 nhóm thao tác với tệp Gán tên Mở Đọc / ghi Đóng Sơ đồ làm việc với tệp 2. Xử 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 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 : 2. Xử 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 : 2. Xử 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 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) 2. Xử 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 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. 2. Xử tệp e) Một số hàm 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). [...]... biến, biểu thức (số học, quan hệ hoặc logic) hoặc hằng xâu back 2 Xử tệp g) Đọc/ghi tệp văn bản Ví dụ 1: Giả thiết trong chương trình có khai báo: VAR FA, FB : TEXT; 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,... CLOSE(F) END back 2 Xử tệp g) Đọc/ghi tệp văn bản  Thủ tục đọc Read Cú pháp : READ ( , ); ( , ); READLN 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  Thủ tục ghi Write Cú pháp : WRITE ( , ); WRITELN ( , );...2 Xử tệp f) Ví dụ áp dụng 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... 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 back 2 Xử tệp f) Ví dụ áp dụng 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... 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 độ các đỉnh có tọa độ nguyên Đường gấp khúc 16 đỉnh Ví dụ 2: 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 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... REWRITE(F); FOR I:= 1 TO N DO BEGIN WRITE(‘ X, Y : ’); READLN(X,Y); WRITELN(F, X, ‘ ’, Y); END; CLOSE(F); END 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 đư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, . 2. Xử lý tệp Có 4 nhóm thao tác với tệp Gán tên Mở Đọc / ghi Đóng Sơ đồ làm việc với tệp 2. Xử lý tệp a) Gán tên ASSIGN (<Tên biến tệp& gt;, <Tên tệp& gt;);. pháp : 2. Xử lý tệp c) Đọc/ghi tệp định kiểu READ (<Tên biến tệp& gt;, <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

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan