Thái độ: - Học sinh thấy được sự cần thiết và tiện lợi của kiểu dữ liệu lưu trữ dưới dạng tệp.. gọi một học sinh xung phong lên bảng và học sinh khác nhận xét, hỏi thêm hai phần tử bất k
Trang 1Giáo án Tin học 11
KIỂU DỮ LIỆU TỆP THAO TÁC VỚI TỆP
I Mục tiêu:
1 Kiến thức:
- Khái niệm tệp
- Kiểu tệp
- Các thủ tục và hàm thao tác trên tệp
2 Kĩ năng:
- Học sinh biết cách lấy dữ liệu từ tệp hoặc lưu trữ dưới dạng tệp
- Học sinh ghi nhớ, biết cách sử dụng các thủ tục và hàm thao tác trên tệp
3 Thái độ:
- Học sinh thấy được sự cần thiết và tiện lợi của kiểu dữ liệu lưu trữ dưới dạng tệp
- Học sinh có ý thức lưu trữ dữ liệu một cách khoa học, phòng chống mất mát và nhiễm virus
- Học sinh ý thức tôn trọng bản quyền, không sữa chữa vô ý thức các phần mềm chưa mua bản quyền
II Dự kiến phương pháp và phương tiện giảng dạy:
1 Phương pháp:
- Hỏi đáp
- Giải quyết vấn đề
Trang 22 Phương tiện:
- Bảng đen, phấn
- Chương trình minh hoạ
III Tiến trình lên lớp:
1 Ổn định tình hình lớp:(2 phút)
- Sỹ số: có mặt: vắng mặt:
- ổn định trật tự lớp
Giới thiệu giấo viên dự giờ
2 Kiểm tra bài cũ: (5phút)
- Câu hỏi:
Hãy khai báo 2 mảng có n phần tử ( 1 n) trong đó mảng A có kiểu phần tử là xâu (string) và mảng B có kiểu phần tử là kí tự (Char)
(gọi một học sinh xung phong lên bảng và học sinh khác nhận xét, hỏi thêm hai phần tử bất kì của 2 mảng trên có gán giá trị cho nhau được không)
- Trả lời:
* VAR A: ARRAY 1 n] OF STRING;
B: ARRAY[1 n] OF CHAR;
* không thể gán được vì chúng không cùng một kiểu dữ liệu
3 Nội dung bài mới:
Đặt vấn đề: (1’)
Trang 30 1 2 3 4 …
Dấu hiệu cuối tệp Cửa sổ tệp
Ta đã biết các kiểu dữ liệu đã học được lưu trữ trong bộ nhớ RAM mang tính chất tạm thời phục vụ cho quá trình xử lí thông tin Vì vậy mà khi dừng
chương trình hoặc mất điện thì các giá trị của chúng sẽ bị mất đi Đối với
những bài toán trong đó dữ liệu được lưu trữ để xử lí nhiều lần và với khối
lượng lớn thì cần có kiểu dữ liệu khác với các kiểu dữ liệu đã học Trong
Turbo Pascal đó là kiểu dữ liệu tệp
T
G
Hoạt động của
HS
Hoạt động của GV Nội dung ghi bảng
5’
- HS: Đĩa mềm,
đĩa cứng, đĩa
CD…
Không bị mất
khi tắt nguồn,
lâu dài
Các em có thể hình dung thực tế tệp giống như một cuốn phim Trong một cuốn phim gồm nhiêù ảnh Khi ta không muốn xem ảnh nữa thì các ảnh trong cuốn phim vẫn không bị mất đi; hoặc
ta có thể xem cuốn phim đó nhiều lần Và tệp cũng như vậy
?Nhắc lại các thiết bị ngoài
Tệp được lưu trữ ở thiết bị ngoài vậy tệp có ưu điểm gì?
Tại mỗi thời điểm tất cả các
ô bị che chỉ trừ một ô gọi là cửa sổ tệp Nhờ cửa sổ tệp
Bài 14: KIỂU TỆP.
1 Khái niệm tệp:
Tệp là một tập hợp các dữ liệu cùng kiểu được nhóm với nhau và thường được lưu trữ ở thiết bị ngoài với một tên nào đó
lâu dài, không mất đdùng khi không có nguồn điện, với khối lượng lớn
* Cấu trúc của tệp:
… EOF
Trang 4Giống: dãy gồm
các phần tử
cùng kiểu
Khác: số phần
tử không xác
định trước, lưu
trữ ở thiết bị
ngoài…
Biến tệp f1
chứa các số
nguyên
Var sothuc: file
of real;
có thể đọc ghi dữ liệu vào tệp vị trí sau thành phần cuối cùng của tệp là dấu hiệu cuối tệp
So sánh với mảng?
Để làm việc với biến tệp trước hết chúng ta phải biết cách khai báo một biến kiểu tệp
Giải thích vd1?
Khai báo một biến sothuc chứa các số thực?
Khi khai báo var x: integer
2 Khai báo biến kiểu tệp:
Có hai cách:
+ Gián tiếp:
TYPE <kiểutệp> = FILE OF
<kiểuphầntử>;
VAR biếntệp: kiểutệp;
+ Trực tiếp
VAR biếntệp: FILE OF
<kiểuphầntử>;
Trong đó:
<kiểutệp>: là biến kiểu tệp
<kiểuphầntử>: là kiểu của phần tử của tệp
ví dụ1:
var f1: file of integer;
vd2
3 Các hàm và thủ tục thao tác trên tệp:
Trang 55’
Hoặc Type
thuc= FILE OF
REAL;
Var
sothuc:thuc;
thì giá trị của nó chưa được xác định, phải dùng lệnh gán chẳng hạn x:= 7 hoặc bằng thủ tục Read(x) để nhập giá trị cho x từ bàn phím Cũng như khi khai báo var f : file of integer thi
f mới chỉ là một biến tệp các số nguyên và nó chưa tương ứng với 1 tệp thực sự nào Để gán tên cho biến tệp f ta phải sử dụng thủ tục : Mọi thao tác trên tệp đều thông qua <tênbiếntệp>
Vì vậy muốn làm các thao tác khác trên tệp trước tiên phải sử dụng thủ tục này
Vd1: giả sử có biến xâu s
và cần gán biến tệp f với tệp có tên là dulieu.dat
Cần gán biến tệp f1 với tệp
có tên solieu.dat tại thư mục gốc của ổ đĩa C?
Muốn thao tác trên tệp thì
ta phải mở tệp ra để đọc dữ
a Thủ tục gán tên cho biến tệp:
cú pháp: ASSIGN(tênbiếntệp, têntệp);
chức năng: gán <têntệp> cho
<tênbiếntệp> Trong đó <têntệp>
là biến kiểu xâu hoặc hằng xâu;
<tênbiếntệp> đặt tên theo qui tắc của Turbo Pascal
Vd1:
S:= ‘dulieu.dat’; ASSIGN(f, s); Hoặc ASSIGN(f, ‘dulieu.dat’);
b Thủ tục mở tệp:
* Mở tệp mới:
cú pháp:
ASSIGN(tênbiếntệp, têntệp); REWRITE(tênbiếntệp);
chức năng: tạo một tệp mới vd1:
ASSIGN(f, ‘dulieu.dat’);
REWRITE(f);
Trang 65’
Giải thích ví dụ
Học sinh lên
bảng
Học sinh giải
thích
Học sinh lên
bảng
liệu từ tệp hoặc ta có thể tạo ra một tệp mới
Giải thích ví dụ?
Muốn tạo 1 tệp mới có tên lop11vp.dat tại thư mục khoi11 của ổ đĩa C?
Giải thích ví dụ?
Muốn mở tệp quochoc.dat tại thư mục hiện hành để
Chú ý:
- Nếu <têntệp> đã tồn tại thì nội dung của tệp này sẽ bị xoá sạch và tạo thành tệp mới có kích thước 0 byte
- Nếu <têntệp> không có đường dẫn thì tệp mới sẽ được tạo tại thư mục hiện hành
Vd2:
* Mở tệp đã có sẵn:
cú pháp:
ASSIGN(tênbiếntệp, têntệp); RESET(tênbiếntệp);
chức năng: mở 1 tệp có tên đã gán cho <tênbiếntệp> trước đó để sẵn sàng truy xuất (đọc/ ghi) dữ liệu của tệp
Vd:
Assign(f,’solieu.dat’);
Reset(f);
c Thủ tục ghi dữ liệu:
cú pháp:
Trang 75’
Học sinh trả lời
Read(x): nhập
giá trị cho x từ
bàn phím còn
read(f,x) là đọc
dữ liệu từ tệp
có tên gán cho
biến tệp f và
gán cho biến x
đọc
Khi chúng ta mở tệp mới tức là tạo một tệp như vậy chúng cần phải ghi dữ liệu vào tệp
Chúng ta đã biết cách ghi
dữ liệu vào tệp, làm thế nào
để đọc dữ liệu từ tệp ra?
đọc giá trị từ tệp gắn cho biến tệp f1 và gán cho biến a?
Sự khác nhau giữa Read(x)
và Read(f,x)?
WRITE(tênbiếntệp, bt1,bt2, ,btn);
chức năng:lần lượt ghi giá trị của bt1,bt2, ,btn vào tệp bắt đầu tại vị trí cửa sổ tệp
Vd: write(f,a);
Chú ý: các biểu thức phải cùng kiểu dữ liệu với thành phần của tệp
d Thủ tục đọc dữ liệu từ tệp:
cú pháp:
READ(tênbiếntệp, biến1,biến 2, ,biếnn);
chức năng:lần lượt đọc các giá trị của tệp bắt đầu từ vị trí cửa sổ tệp
và gán cho các biến tương ứng Vd1: read(f,a);
Vd2: read(f,a,b,c);
Chú ý: các biểu thức phải cùng kiểu dữ liệu với thành phần của tệp
0 1 2 3 4
Trang 8Assign((tênbiếntệp, têntệp);
Rewrite(tênbiếntệp); Rewrite(tênbiếntệp);
Write(tênbiếntệp, bthức); Read(tênbiếntệp, biến);
5’
3 -31 410 32 -33
Sau khi chúng ta làm việcvới tệp xong chúng ta phải đóng tệp lại để tránh mất mát thông tin
d Thủ tục Seek:
cú pháp: SEEK(tênbiếntệp, biếnnguyên);
Chức năng:đưa cửa sổ tệp về vị trí
phần tử có số thứ tự xác định bởi giá trị <biếnnguyên>
vd: seek(f1,4);
e Thủ tục đóng tệp:
cú pháp: CLOSE(tênbiếntệp);
f Một số hàm:
- Hàm EOF(tênbiếntệp): có giá
trị True nếu cửa sổ tệp đang ở cuối tệp và cho giá trị False nếu ngược lại
- Hàm FILESIZE(tênbiếntệp):
cho biết kích thước của tệp
4 Củng cố kiến thức (2’):
- Các thủ tục và hàm thao tác trên tệp
Trang 9- Sự khác nhau giữa read(x) và read(f,x).