Kiểu FILE trong Turbo Pascal - Phạm Đăng Long

Tệp là gói dữ liệu được đặt tên và lưu trữ ở bộ nhớ ngoài (Đĩa cứng/Mềm/Quang,… Thẻ nhớ, Băng từ).

Các tệp có thể chia thành 3 loại tệp tùy theo cấu trúc và nhu cầu xử lý.

Sau đây ta xem cách thức TP làm việc với Tệp như thế nào?-(Các Thủ tục, Hàm và Biến có sẵn)

Loại 1:
Tệp các phần tử có định kiểu, thường để quản lý
Loại 2:
Tệp văn bản, dùng để đọc ghi công văn, thi HSG
Loại 3:
Tệp không định kiều, dùng để copy dữ liệu, không quan tâm dạng dữ liệu
F:file of <kiểu phần tử>;
Chỉ số của các phần tử tính từ 0 trở đi!
Khi ghi/đọc xong một phần tử đầu đọc/ghi tự động nhích sang phần tử kế tiếp!
F:Text;
Không có chỉ số!
Khi ghi/đọc xong một dòng đầu đọc/ghi tự động sang dòng tiếp!
Gần như File of char.
Khác nhau ở chỗ file có định dạng char.
F:File;
Không có chỉ số!
Assign(F,<TênTệp>);
Đặt/Gọi tên tệp
Rewrite(F);
Mở tệp để ghi từ đầu
Assign(F,<TênTệp>);
Đặt/Gọi tên tệp
Rewrite(F);
Mở tệp để ghi từ đầu
Append(F);
Mở tệp để ghi tiếp
Assign(F,<TênTệp>);
Đặt/Gọi tên tệp
Rewrite(F);
Mở tệp để ghi từ đầu
Write(F,a);
Ghi giá trị biến a vào tệp.
Từ đây: a là một biến <kiểu phần tử>
Write(F,S);
Ghi giá trị biến S vào tệp chưa ghi dấu kết thúc dòng.
Writeln(F,S);
Ghi giá trị biến S vào tệp và ghi dấu kết thúc dòng.
Từ đây: S là biến/hằng xâu kí tự, kí tự hay số, mệnh đề
Có thể thay S bằng danh sách nhiều biến, hằng nhiều kiểu cho phép.
BlockWrite(F,Buffer,n);
Ghi n khối Buffer vào tệp, không kiểm tra.
BlockWrite(F,Buffer,n,Result);
Ghi n khối Buffer vào tệp, có kiểm tra lỗi.
Từ đây: Buffer là một biến tùy ý, thường là kiểu array[1..128] of Byte hoặc
array[1..512] of Byte.
Result là biến nguyên chứa mã lỗi khi thực hiện thủ tục.
Reset(F);
Mở tệp để đọc dữ liệu ra bộ nhớ
Reset(F);
Mở tệp để đọc dữ liệu ra bộ nhớ
Reset(F);
Mở tệp để đọc dữ liệu ra bộ nhớ
Close(F);
Đóng tệp
Close(F);
Đóng tệp
Close(F);
Đóng tệp
Read(F,a);
Đọc giá trị phần tử mà đầu đọc đang chỉ vào, và gán cho biến a.
Read(F,S);
Đọc giá trị phần tử mà đầu đọc đang chỉ vào, và gán cho biến S.
Readln(F,S);
Đọc dòng  mà đầu đọc đang chỉ vào, và gán cho S S có thể là một dãy các biến có kiểu khác nhau!
BlockRead(F,Buffer,n);
Đọc dữ liệu ra n khối Buffer từ tệp, không kiểm tra lỗi.
BlockRead(F,Buffer,n,result);
Đọc dữ liệu ra n khối Buffer từ tệp, có kiểm tra lỗi.
FileSize(F);
Cỡ tệp tức số lượng phần tử của tệp.
FilePos(F);
Chỉ số tệp (tính từ 0) mà đầu dọc/ghi đang trỏ vào.
Không có FilePos, FileSize  
Seek(F,k);
Đưa đầu đọc/ghi đến phần tử có chỉ số là k.
Không có thủ tục Seek.  
EOF(F);
Mệnh đề “Hết tệp” tức là đầu đọc/ghi đã chỉ vào dấu hiệu chấm hết tệp.
EOF(F);
--- giống Loại 1 ---
EOLN(F);
Mệnh đề “Hết dòng” tức là đầu đọc/ghi đã chỉ vào dấu hiệu hết dòng văn bản.
 
Rename(F,<TênMới>);
Đổi tên tệp thành TênMới.
Rename(F,<TênMới>);
--- giống Loại 1 ---
Rename(F,<TênMới>);
--- giống Loại 1 ---
Erase(F);
Xóa tệp trên đĩa.
Erase(F);
--- giống Loại 1 ---
Erase(F);
--- giống Loại 1 ---
{$I-}
Chỉ thị chương trình dịch gặp lỗi vào/ra tệp thì đừng báo lối mà đưa mã lỗi vào biến IOResult để lập trình viên chủ động xử lý.
IOResult
Biến có sẵn chứa mã lỗi. (=0 nếu không có lỗi gì cả)
{$I+}
Chỉ thị chương trình dịch gặp lỗi vào/ra tệp thì lại  báo lối bình thường.
{$I-}
IOResult
{$I+}
--- giống Loại 1 ---
{$I-}
IOResult
{$I+}
--- giống Loại 1 ---
 

Tên  tệp chuẩn:
’PRN’
Máy in
’CON’,
Bàn phím
Biến tệp chuẩn:
Ouput
Màn hình
Input
Bàn phím

Lst

Máy in

 

 
Bài tập 1.
Lập Chương trình 1 tạo ra Tệp số nguyên tố nhỏ hơn 255 trên đĩa mang tên SNT.DAT. Sau khi chạy chương trình 1 thì lập Chương trình 2 sử dụng tệp SNT.DAT đã có để:
a)      Xuất ra số nguyên tố thứ n theo yêu cầu của người sử dụng nhập từ bàn phím.
b)      Dùng tệp số nguyên tố này để giản ước phân số p/q nhập từ bàn phím.
c)      Dùng tệp số nguyên tố này để rút gọn căn bậc 2 của một số tự nhiên m nhập từ bàn phím.
Bạn có thể lập một chương trình duy nhất làm mọi việc, thông qua một Thủ tục Menu…
 
Bài tập 2.
Lập trình bịa ra tệp văn bản HESO.IN gồm n+1 dòng: Dòng đầu là số n, n dòng tiếp theo mỗi dòng có 3 số nguyên ngắn a, b, c. Lập một chương trình khác đọc tệp HESO.IN ra các dòng: dòng nào có 3 số a, b, c thì giải phương trình ax2+bx+c=0. Chương trình xuất kết quả ra tệp văn bản NGHIEMSO.OUT gồm n+1 dòng: Dòng đầu là số n, mỗi dòng sau là số nghiệm và nghiệm cụ thể nếu có của phương trình tương ứng với các dòng của bộ hệ số của tệp HESO.IN.
 
Bài tập 3.
Lập một chương trình: Đọc các cặp Tần số và Thời gian của một bản nhạc dạng Text (SONSON.TXT)
Rồi thực hiện theo menu: Chơi nhạc, Sửa nhạc, Thêm nốt, Bớt nốt nhạc.
Chú ý: Sử dụng các thủ tục quen biết sau: Sound(<TânSố>); Delay(<ThờiGian>); NoSound;
Chú ý:
Nếu tự mình mày mò mãi không lập được hoặc chạy không được thì tuần sau sẽ xem đáp án chi tiết.
Chúc các bạn thành công!

Thông tin du học

Thư viện khoa học

© 2009, Trường Đại Học Tổng Hợp Hà Nội - Khối Phổ Thông Chuyên Toán (Khối A0)