Về kiến thức : - Học sinh nắm được về kiểu dữ liệu tệp: tệp định kiểu, tệp văn bản.. - Học sinh thao tác xử lí được với kiểu dữ liệu tệp.. - Giúp học sinh hiểu thêm kiểu dữ liệu tệp, giả
Trang 1Bài 15:TỆP VÀ XỬ LÍ TỆP
A Mục đích yêu cầu:
1 Về kiến thức :
- Học sinh nắm được về kiểu dữ liệu tệp: tệp định kiểu, tệp văn bản
- Học sinh thao tác xử lí được với kiểu dữ liệu tệp
2 Về tư tưởng và tình cảm
- Nhấn mạnh nội dung kiến thức của bài học trước: khai báo tệp, xử lí tệp
- Giúp học sinh hiểu thêm kiểu dữ liệu tệp, giải được các bài toán liên quan tới kiểu dữ liệu tệp Học sinh thêm hứng thú với bài học
B Phương pháp, phương tiện
1.Phương pháp:
- Kết hợp các phương pháp giảng dạy: thuyết trình, vấn đáp, hướng dẫn,giải thích,trình chiếu
2 Phương tiện dạy học:
- Sách giáo khoa lớp 11
- Sách tham khảo (nếu có)
- Vở ghi lí thuyết
C Tiến trình lên lớp, nội dung bài giảng
I Ổn định lớp(1')
- Yêu cầu lớp trưởng báo cáo sĩ số
II Kiểm tra bài cũ và gợi động cơ (5')
Trang 2-Tóm tắt nội dung bài học hôm trước: Bài học hôm trước chúng ta đã được
làm quen với kiểu dữ liệu tệp Các em đã biết cách khai báo một biến tệp và các
thao tác với với tệp: gán tên tệp, mở tệp, vào ra dữ liệu, đóng tệp
- Câu hỏi kiểm tra bài cũ :
+ Cho biết sự khác biệt giữa tệp định kiểu và tệp văn bản?
+ Các câu lệnh, các hàm và thủ tục khi thao tác với tệp?
=> Các thao tác với tệp:
- Giới thiệu nội dung bài học: Sau đây, chúng ta sẽ vận dụng các kiến thức đã học từ bài học trước để đi làm một vài ví dụ về tệp định kiểu và tìm hiểu về cách
đọc và ghi với tệp văn bản
III Nội dung bài giảng
TT Nội dung Hoạt động của thầy và trò T.gian
1 - VD1: Chương trình nhập từ bàn phím
số học sinh của một lớp và kết của kiểm
tra môn tin học của các học sinh trong
lớp Ghi kết quả ra tệp KQ.DAT, mỗi
-Hỏi:Cách khai báo biến tệp?
Thuyết trình:
+ Phần tử của tệp là một bản ghi:
Tyte Banghi= record
7'
Trang 3phần tử của tệp là một bản ghi bao
gồmhọ và tên (xâu không quá 28 kí tự)
và điểm môn tin học (kiểu BYTE)
-Chương trình:
Program KQ_Tin;
Uses Crt;
Tyte Banghi = record
hoten : string[28];
diem : byte;
end;
var bg: Banghi;
f : file of Banghi;
n,i : Intrger;
tentep : string [10];
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
hoten : string[28];
diem : byte;
end;
var bg: Banghi;
+ Biến tệp:
F : file of Banghi;
- assign(f,tentep): gán tên tệp là
KQ.DAT cho biến tệp f
- rewrite(f): Mở tệp f để ghi, nếu
chưa có thì sẽ được tạo, còn có rồi thì nội dung sẽ bị xoá
- write(f,bg): ghi giá trị của biến
bg vào tệp f
- Chú ý: close(f): sau khi ghi
xong thì nhớ phải đóng tệp
2 - VD2: Chương trình đọc tệp KQ.DAT
ở VD1, tính và đưa ra màn hình điểm
trung bình môn Tin học của lớp (chính
xác đến chữ số thập thứ nhất)
- Chuơng trình:
Program Vidu2;
Uses crt;
Tyte Banghi = record
hoten : string[28];
-Hỏi: cách khai báo? giống VD1 Thuyết trình:
- assign(f,tentep): gán tên tệp là
KQ.DAT cho biến tệp f
- reset(f): đọc dữ liệu từ tệp f
- not eof(f): Khi con trỏ tệp chưa trỏ tới cuối tệp
- Chú ý: close(f): sau khi đọc
xong thì nhớ phải đóng tệp
6'
Trang 4diem : byte;
end;
var bg: Banghi;
f : file of Banghi;
n,tg : Intrger;
tentep : string [10];
dtb : 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;
dtb := tg/n;
writeln(' diem trung binh cua lop:
',dtb:4:1);
close(f);
END
3 - Đọc/ghi tệp văn bản:
+ Thủ tục đọc có dạng:
read(<Tên biến tệp>,<Danh sách
biến>);
hoặc:
readln(<Tên biến tệp>,<Danh sách
biến>)
+ Thủ tục ghi có dạng:
Write(<Tên biến tệp văn bản>,<Danh
- Danh sách biến: là một hoặc
nhiều biến, trong trường hợp nhiều biến thì tên các biến cách nhau bởi dấu phẩy
- Danh sách kết quả: gồm một
hoặc nhiều phần tử,trong trường hợp nhiều phần tử thì các phần
tử cách nhau bởi dấu phẩy Phần
tử có thể là tên biến, biểu thức
5'
Trang 5sách kết quả>)
Hoặc:
Write(<Tên biến tệp văn bản>,<Danh
sách kết quả>)
(số học ,quan hệ, logic) hoặc hằng xâu
4 VD1: Giả thiết cho chương trình có khai
báo:
var FA,FB : Text;
và tệp FA mở để đọc, còn tệp FB mở để
ghi Khi đó:
+ Có thể có các thủ tục đọc tệp như sau:
read (FA,A,B,C);
hoặc:
readln (FA,A,B,C);
+ Có thể có các thủ tục ghi tệp như sau:
write(FB,'A=',A,'B=',B,'C=',C);
hoặc
writeln(FB,'A=',A,'B=',B,'C=',C);
Thuyết trình:
- FA,FB: tên biến tệp văn bản
- A,B,C: các biến
=>Các biến có thể khác kiểu
3'
5 - VD2: Xét đường khép kín không tự cắt
N đỉnh trong mặt phẳng, các cạnh song
song với trục toạ độ và các đỉnh có tạo
độ nghiêng
- Chương trình thực hiện: Nhập từ bàn
phím số N, toạ độ các đỉnh liên tiếp của
đường gấp khúc và ghi toạ độ các đỉnh
ra tệp văn bản GAPKHUC.INP, mỗi
dòng chứa 2 số nguyên là toạ độ một
Thuyết trình:
- readln(n): nhập n từ bàn phím
- assign(f,tf): gán tên tệp là
"GAPKHUC.INP" cho biến tệp
f
- rewrite(f): mở tệp f ra để ghi
- readln(x,y): toạ độ x,y của các
đỉnh nhập từ bàn phím
- writeln(f,x,' ',y): ghi vào file f
6'
Trang 6đỉnh Các số trên một dòng cách nhau
một dấu cách
- Chương trình:
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
toạ độ x,y của các đỉnh
-Chú ý close(f): đóng tệp
*(Lần lượt vừa hỏi vừa giải thích các lệnh trong chương trình)
6 - VD3: Chương trình đọc tệp dữ liệu của
VD2 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"
- Chương trình:
Program VD3;
Uses crt;
var fa,fb : text;
Hỏi: Em hãy giải thích các lệnh trong chương trình?
Thuyết trình:
- assign(fa,'GAPKHUC.INP'):
gán tên tệp 'GAPKHUC.INP'
cho biến tệp fa
- reset(fa): mở tệp fa để đọc
- readln(fa,x,y): đọc từ tệp fa toạ
độ x,y của đỉnh
8'
Trang 7l : longint;
x0,y0,x1,y1,x,y : integer;
Begin
clrscr;
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);
assgin(fb,GAPKHUC.OUT'');
rewrite(fb);
writeln(fb,'chu vi: ',l);
close(fb);
end
- not eof(fa): Khi con trỏ tệp chưa trỏ tới cuối tệp
- assgin(fb,GAPKHUC.OUT'');
rewrite(fb): gán tên tệp
'GAPKHUC.OUT' cho biến tệp
fb
- writeln(fb,'chu vi: ',l): ghi vào
tệp fb biến l
-Chú ý: close(fa), close(fb): sau
khi đọc xong thì nhớ phải đóng tệp
IV Củng cố bài:(2’)
Hôm nay, chúng ta đã đi làm một vài ví dụ về tệp định kiểu và tìm hiểu về cách đọc và ghi với tệp văn bản
=>Chúng ta cần nắm vững các thao tác xử lí đối với kiểu dữ liệu tệp, đặc biệt
là cách đọc và ghi hai loại tệp: tệp định kiểu và tệp văn bản
V Bài tập về nhà(1’)
- Làm bài tập 4 và 5 sách giáo khoa
- Tóm tắt kiểu dữ liệu tệp
- Nghiên cứu nội dung bài tiếp theo (chương mới)
VI Nhận xét và rút kinh nghiệm giờ giảng(1’)
………
………
………
Trang 8………
………