Biết cấu trúc của 3 loại FILE, File văn bản, File định kiểu và không định kiểu.. Khái niệm Kiểu File tập tin trong Pascal là một cấu trúc dữ liệu gồm nhiều phần tử cùng kiểu được chứ
Trang 1Giáo án tin học 9
BÀI KIỂU DỮ LIỆU CÓ CẤU TRÚC FILE
KIẾN THỨC YÊU CẦU:
Biết khi nào cần sử dụng đến FILE
Biết cách khai báo và sử dụng
Biết nắm vững các hàm và các câu lệnh dùng trong FILE
KIẾN THỨC ĐẠT ĐƯỢC
Biết các khái niệm về FILE trong Pascal
Biết cấu trúc của 3 loại FILE, File văn bản, File định kiểu
và không định kiểu
Biết cách khai báo biến File, gán tên File, mở File để đọc,
để ghi và đóng File
Biết nắm vững biến toàn cục và biến địa phương, đặc biệt
là tầm vực hoạt động của các biến loại này
Biết sử dụng thành thạo các lệnh, thủ tục và hàm trong File
9
Trang 2I/ Khái niệm về File
1 Khái niệm
Kiểu File (tập tin) trong Pascal là một cấu trúc dữ liệu gồm nhiều phần tử cùng kiểu được chứa trong thiết bị ngoài như đĩa cứng hay đĩa mềm, số lượng phần tử không hạn chế, biến kiểu file dùng để thiết lập với các thiết bị ngoài như máy
in, màn hình …
File dùng để lưu trữ dữ liệu trong một thời gian dài, ngay cả khi chương trình đã kết thúc
Chứa với khối lượng lớn
Để cung cấp cho một hay nhiều chương trình hoạt động ở nhiều thời điểm
2 Cấu trúc và phân loại file
File là kiểu dữ liệu rất là quan trọng Mọi dữ liệu cần lưu trữ trên đĩa mềm, đĩa cứng đều phải dùng đến kiểu file Chúng ta có 3 loại file
File văn bản (text)
File có định kiểu
File không định kiểu
Trang 3II/ File
1 Cách khai báo biến file
a Khai báo file văn bản
Được khai báo với từ khoá Text Tập tin văn bản được dùng phổ biến và một số thiết bị ngoại vi như màn hình, bàn phím, máy in …Bạn khai báo như sau:
Var
<Tenbienfile> : Text;
Trong đó kiểu Text được định nghĩa trước
b Khai báo file có định kiểu
Được khai báo với từ khoá FiLE OF Kiểu phần
tử, bạn khai báo như sau:
Trang 4Có thể hiểu các phần tử của file có định kiểu là các Record
Ví dụ:
Type Lilich = Record Hovaten : String [40];
F1, F2 : FileLilich;
(Từ Type đến End; là cấu trúc kiểu Record)
c/ Khai báo file không định kiểu
Trang 5Được khai báo với từ khoá chỉ có mỗi một chữ FiLE Bạn khai báo như sau:
Var
<Tenbienfile> : FiLE;
Với cả 3 kiểu file như trên, ta phải dùng các thủ tục sau
để gán tên file, mở file và đóng file
2 Lệnh gán tên file cho biến file đại diện
Trang 6Ví dụ:
Trang 8Giải thích như lệnh read, ở đây các biến sẽ được ghi lên Bienfile, sau mỗi lần ghi thì con trỏ của file sẽ tự động đưa
Trang 9……
Write(F1,x, y);
Close(F1);
b Với File văn bản
Ngoài Read(F, ch); hoặc Write(F, ch); được dùng để đọc, ghi từng ký tự, tập tin văn bản còn có các lệnh ghi, đọc theo dòng văn bản
Readln(F, Cacbien);
Writeln(F, Cacbien);
c Với File không định kiểu
Dùng các lệnh đọc ghi theo từng khối, do đó sẽ có tốc
độ nhanh
BlockRead và BlockWrite
Ngoài ra còn có một số thủ tục và hàm xử lý File thông dụng như sau:
Hàm EOF(F): Cho giá trị True nếu con trỏ file đã ở vị
trí kết thúc file Thủ tục này được dùng mỗi khi cần đọc dữ liệu
Trang 10 Hàm EOLN(F): Cho giá trị True nếu con trỏ file ở vị trí
kết thúc dòng của file văn bản, thủ tục này chỉ được dùng với file văn bản
Hàm SEEK(F, i): Đặt vị trí con trỏ file vào vị trí
RECORD thứ i (i được đếm từ 0) SEEK chỉ áp dụng cho file
có định kiểu
Thủ tục EARSE(F): Xoá file trên đĩa
Thủ tục RENAME(F): Đổi tên file
TÓM LƯỢC
Trang 11 Kiểu File là một cấu trúc dữ liệu gồm nhiều phần tử cùng kiểu được chứa trong thiết bị ngoài như đĩa cứng hay đĩa mềm
File dùng để lưu trữ dữ liệu trong một thời gian dài, ngay cả khi chương trình đã kết thúc
Chứa với khối lượng lớn
Để cung cấp cho một hay nhiều chương trình hoạt động ở nhiều thời điểm
Chúng ta có 3 loại file File văn bản (text) File có định kiểu File không định kiểu
Khai báo biến file văn bản:
Var <Tenbienfile> : Text;
Khai báo biến file định kiểu:
Trang 12<Tenbienfile> : FiLE OF Kieuphantu;
Khai báo biến file không định kiểu:
Trang 15Write(‘Diem Toan : ‘); Readln(Toan);
Write(‘Diem Ngoai ngu : ‘); Readln(Ngoaingu); Write(‘Diem Ly : ‘); Readln(Ly);
Write(‘Diem Hoa : ‘); Readln(Hoa);
Write(‘Diem Sinh : ‘); Readln(Sinh);
Write(‘Diem Ky thuat : ‘); Readln(Kythuat); Write(‘Diem Su : ‘); Readln(Su);
Write(‘Diem Dia : ‘); Readln(Dia);
Write(‘Diem Cong dan : ‘); Readln(CD);
Write(‘Diem The duc : ‘); Readln(TD);
Write(‘Diem Nhac : ‘); Readln(Nhac);
Trang 16 Trong chương trình trên, đầu tiên bạn khai báo Phieudiem
có kiểu Record gồm 13 phần tử
Thành phần HotenHS có kiểu chuỗi, các thành phần còn lại đều có kiểu số thực
Khai báo File có định kiểu
Khai báo biến HS có kiểu Phieudiem
Khai báo biến F có kiểu FilePhieudiem
Biến DK có kiểu Boolean, dùng làm điều kiện trong vòng lặp
Vì dùng kiểu File, đầu tiên bạn phải dùng lệnh gán Assign, theo điều kiện bạn phải dùng lệnh mở file để ghi Rewrite
Vòng lặp While để nhập các thông tin trong Phieudiem khi
Program Vaodiem;
Trang 18Write(‘Diem Van : ‘); Readln(Van);
Write(‘Diem Toan : ‘); Readln(Toan);
Trang 19Write(‘Diem Ngoai ngu : ‘); Readln(Ngoaingu);
Write(‘Diem Ly : ‘); Readln(Ly);
Write(‘Diem Hoa : ‘); Readln(Hoa);
Write(‘Diem Sinh : ‘); Readln(Sinh);
Write(‘Diem Ky thuat : ‘); Readln(Kythuat);
Write(‘Diem Su : ‘); Readln(Su);
Write(‘Diem Dia : ‘); Readln(Dia);
Write(‘Diem Cong dan : ‘); Readln(CD); Write(‘Diem The duc : ‘); Readln(TD); Write(‘Diem Nhac : ‘); Readln(Nhac); Write(‘Diem Ve : ‘); Readln(Ve);
Trang 20Writeln(‘Diem Van: ‘, HS.Van);
Writeln(‘Diem Toan: ‘, HS.Toan);
Writeln(‘Diem Ngoai ngu: ‘, HS.Ngoaingu); Writeln(‘Diem Ly: ‘, HS.Ly);
Writeln(‘Diem Hoa: ‘, HS.Hoa);
Writeln(‘Diem Sinh: ‘, HS.Sinh);
Writeln(‘Diem Ky thuat: ‘, HS.Kythuat); Writeln(‘Diem Su: ‘, HS.Su);
Writeln(‘Diem Dia: ‘, HS.Dia);
Writeln(‘Diem Cong dan: ‘, HS.CD);
Writeln(‘Diem The duc: ‘, HS.TD);
Writeln(‘Diem Nhac: ‘, HS.Nhac);
Writeln(‘Diem Ve: ‘, HS.Ve);
End;
Trang 21 Vòng lặp While sẽ in thông tin ra màn hình khi không phải
là EOF (cuối tập tin)
Khi thực hiện chương trình, sẽ in ra một lần tất cả các học sinh mà bạn vừa nhập, nếu có quá nhiều học sinh, chúng ta chỉ thấy được màn hình cuối cùng, để thấy mỗi lần những thông tin của một học sinh mà thôi và cho biết đây là học sinh thứ mấy, bạn thêm một vài lệnh (những lệnh đậm)
Trang 23Write(‘Diem Van : ‘); Readln(Van);
Write(‘Diem Toan : ‘); Readln(Toan); Write(‘Diem Ngoai ngu : ‘); Readln(Ngoaingu);
Write(‘Diem Ly : ‘); Readln(Ly);
Trang 24Write(‘Diem Hoa : ‘); Readln(Hoa);
Write(‘Diem Sinh : ‘); Readln(Sinh);
Write(‘Diem Ky thuat : ‘); Readln(Kythuat);
Write(‘Diem Su : ‘); Readln(Su);
Write(‘Diem Dia : ‘); Readln(Dia);
Write(‘Diem Cong dan : ‘); Readln(CD); Write(‘Diem The duc : ‘); Readln(TD); Write(‘Diem Nhac : ‘); Readln(Nhac); Write(‘Diem Ve : ‘); Readln(Ve);
Trang 25Begin
Writeln(‘Day la hoc sinh thu: ‘,N);
Writeln(‘Ho va ten hoc sinh: ‘, HS.HotenHS);
Writeln(‘Diem Van: ‘, HS.Van);
Writeln(‘Diem Toan: ‘, HS.Toan);
Writeln(‘Diem Ngoai ngu: ‘, HS.Ngoaingu); Writeln(‘Diem Ly: ‘, HS.Ly);
Writeln(‘Diem Hoa: ‘, HS.Hoa);
Writeln(‘Diem Sinh: ‘, HS.Sinh);
Writeln(‘Diem Ky thuat: ‘, HS.Kythuat); Writeln(‘Diem Su: ‘, HS.Su);
Writeln(‘Diem Dia: ‘, HS.Dia);
Writeln(‘Diem Cong dan: ‘, HS.CD);
Writeln(‘Diem The duc: ‘, HS.TD);
Writeln(‘Diem Nhac: ‘, HS.Nhac);
Writeln(‘Diem Ve: ‘, HS.Ve);
N;= N + 1;
Readln;
Trang 274 Viết chương trình dự đoán giải bóng đá Sea games 22, in kết quả dự đoán lên một file Cách dự đoán: cho điểm từng đội bóng theo các mục sau:
Điểm huấn luyện viên tối đa 30 điểm
Điểm thủ môn tối đa 15
Điểm hậu vệ tối đa 30
Điểm các cầu thủ khác tối đa 50
Điểm thuận lợi sân bãi tối đa 20
Sau đó tính tổng điểm của mỗi đội