Giá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.
9I/ 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.
Record.
Ví dụ:
Type
Lilich = Record
Hovaten : String [40];
Namsinh : integer;
Noisinh : String [50];
Diachi : String [50];
Tencha : String [40];
Tenme : String [40];
End;
FileLilich = FiLE OF Lilich;
Var
Hocsinh : Lilich;
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
Đượ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
ASSiGN (F, Tenfile);
3. Lệnh mở file
a/ Mở file để đọc
RESET (F);
b/ Mở file để ghi
Assign(F1, ‘Hocsinh.LL’);
Reset(F1);
Read(F1, x, y);
……
……
x.Hovaten sẽ là ‘Nguyễn Thành An’
x.Namsinh sẽ là 1990
……
……
y.Hovaten sẽ là ‘Phan Thanh Bình’
y.Namsinh sẽ là 1991
……
……
Lệnh Write(Bienfile, Cacbien)
Giả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
đến phần tử kế tiếp.
Ví dụ:
……
……
Write(‘Ban cho biet ten file: ‘);
Readln(Tenfile);
Assign(F1, Tenfile);
Rewrite(F1);
x.Hovaten := ‘Thanh Văn Anh’;
x.Namsinh := 1990;
x.Noisinh := ‘Saigon’;
……
……
y.Hovaten := ‘Phan Văn Bình’;
TÓM LƯỢC
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:
Type
<Tenkieufile> = FiLE OF Kieuphantu;
Var
<Tenbienfile> : (Tenkieufile>;
Hoặc có thể khai báo trực tiếp như sau:
Var
<Tenbienfile> : FiLE OF Kieuphantu;
Khai báo biến file không định kiểu:
CD : real;
TD : real;
Nhac : real;
Ve : real;
End;
FilePhieudiem = FiLE OF Phieudiem;
Var
HS : Phieudiem;
F : FilePhieudiem;
DK : Boolean;
Begin
Assign(F, ‘Lop’);
Rewrite(F);
DK := True;
While DK do
With HS do
Begin
Writeln(‘Ban de trong vung ho ten neu khong nhap
tiep, go Enter.’);
Write(‘Ho va ten hoc sinh: ‘);
Readln(HotenHS);
if HotenHS = ‘ ‘ then DK:= False
Else
Begin
Write(‘Diem Van : ‘); Readln(Van);
Write(‘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);
hiện ra màn hình các thông tin vừa nhập. Bạn thay đổi
chương trình một chút như sau:
Program Vaodiem;
Type
Phieudiem = Record
HotenHs : String[40];
Van : real;
Toan : real;
Ngoaingu : real;
Ly : real;
Hoa : real;
Sinh : real;
Kythuat : real;
Su : real;
Dia : real;
CD : real;
TD : real;
Nhac : real;
Ve : real;
End;
FilePhieudiem = FiLE OF Phieudiem;
Var
HS : Phieudiem;
F : FilePhieudiem;
DK : Boolean;
Begin
Assign(F, ‘Lop’);
Rewrite(F);
DK := True;
While DK do
Begin
Read(F, HS);
Begin
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);
End;
End;
Close(F);
Readln;
End.
Phần đầu của chương trình cũng giống như bài trên.
Để đọc File, chúng ta dùng lệnh Reset.
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
DK := True;
While DK do
With HS do
Begin
Writeln(‘Ban de trong vung ho ten neu khong
nhap tiep, go Enter.’);
Write(‘Ho va ten hoc sinh: ‘);
Readln(HotenHS);
if HotenHS = ‘ ‘ then DK:= False
Else
Begin
Write(‘Diem Van : ‘); Readln(Van);
Write(‘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);
Write(‘Diem Ve : ‘); Readln(Ve);
Write(F, HS);
End;
End;
Close(F);