I. Ổn định tổ chức (1p)
Lớp 11B5 11B6 11B7 11B8
Vắng II. Kiểm tra bài cũ III. Bài mới
1. Đặt vấn đề (1p)
- Các em đã được học các kiểu dữ liệu có cấu trúc như kiểu mảng, kiểu xâu và kiểu bản ghi. Hôm nay thầy giới thiệu các em một kiểu dữ liệu có cấu trúc mới. Đó là kiểu tệp.
2. Triển khai bài
Hoạt động của giáo viên và học sinh Nội dung kiến thức
Hoạt động 1: (chung cả lớp) (10p)
GV: Em hãy cho biết dữ liệu trong các kiểu dữ liệu từ trước đến nay ta sử dụng được lưu trữ ở loại bộ nhớ nào khi thực hiện chương trình?
HS: Bộ nhớ RAM
GV: Vì sao em biết điều đó? HS: Mất dữ liệu ki mất điện.
GV: Diễn giải: Để lưu giữ được dữ liệu, ta phải lưu nó ở bộ nhớ ngoài thong qua kiểu dữ liệu tệp. Mọi ngôn ngữ lập trình đều có các thao tác:khai báo biến tệp, mở tệp, đọc/ghi dữ liệu, đóng tệp.
- Yêu cầu học sinh nghiên cứu SGK và cho biết đặc điểm của kiểu tệp? Có mấy loại tệp?
HS; Nghiên cứu và trả lời.
GV: Yêu cầu học sinh trình bày khái niệm tệp có cấu trúc và tệp văn bản.
HS: Nghiên cứu SGK và trả lời.
§14 Kiểu dữ liệu tệp
1. Vai tró của kiểu dữ liệu tệp
- Dữ liệu được lưu trữ ở bộ nhớ ngoài và không bị mất khi tắt nguồn điện.
- Lượng dữ liệu lưu trữ trên tệp lớn. 2. Phân loại tệp và thao tác với tệp a. Phân loại tệp
* Theo cách tổ chức dữ liệu:
- Có hai loại kiểu tệp: tệp có cấu trúc và tệp văn bản.
+ Tệp có cấu trúc: là loại tệp mà các thành phần của nó được tổ chức theo một cấu trúc nhất định.
+ Tệp văn bản: là tệp mà dữ liệu được ghi dưới dạng các kí tự theo mã ASCII.
GV: Đối với kiểu dữ liệu tệp có những thao tác cơ bản nào?
HS: Trả lời.
- Có hai loại kiểu tệp: tệp truy cập tuần tự và tệp truy cập trực tiếp.
+ Tệp truy cập tuần tự: cho phép truy cập một dữ liệu nào đó trong tệp chỉ bằng cách bắt đầu từ đầu tệp và đi qua lần lượt tất cả các dữ liệu trước nó.
+ tệp truy cập trực tiếp: cho phép tham chiếu đến dữ liệu cần truy cập bằng cách xác định trực tiếp vị trí dữ liệu của nó.
b. Thao tác với tệp
- Ghi dữ liệu vào tệp và đọc dữ liệu từ tệp được thực hiện với từng phần tử của tệp. Hoạt động 2: (theo từng nhóm) (7p)
GV: Yêu cầu học sinh nghiên cứu SGK cho biết cú pháp khai báo kiểu tệp. Nêu ví dụ cụ thể.
HS: Nghiên cứu và trả lời
§15 Thao tác với tệp 1. Khai báo
a. Cú pháp
Var <tên biến tệp>:text; b. Ví dụ
Var tep1, tep2: text; Hoạt động 3: (theo từng nhóm) (20p)
GV: Giới thiệu các thao tác gắn tên tệp, mở tệp, đọc/ghi tệp văn bản, đóng tệp. Đối với mỗi thao tác yêu cầu học sinh lấy ví dụ cụ thể.
HS: Assign(tep2, ‘C:\INP.DAT’);
HS: Assign(tep3,’C:\KQ.DAT’); Rewrite(tep3);
HS: Assign(tep1, ‘KQ.DAT’); Reset(tep1);
HS: Readln(<biến tệp>, <danh sách biến>);
2. Thao tác với tệp a. Gắn tên tệp
* Cú pháp: Assign(<biến tệp>, <tên tệp>); Trong đó tên tệp là biến xâu hoặc hằng xâu. * Ví dụ: Assign(tep1, ‘DULIEU.DAT’); Assign(tep2, ‘C:\INP.DAT’); b. Mở tệp * Mở tệp để ghi: Rewrite(<biến tệp>); * Ví dụ: Assign(tep3,’C:\KQ.DAT’); Rewrite(tep3);
- Chú ý: Nếu trên thư mục gốc của ổ đĩa C đã có tệp KQ.DAT thì nội dung cũ sẻ bị xóa, nếu không thì tệp sẽ được tạo mới với nội dung rỗng.
* Mở tệp để đọc: Reset(<biến tệp>); * Ví dụ: tentep:= ‘KQ.DAT’;
Assign(tep1, tentep); Reset(tep1);
Hoặc: Assign(tep1, ‘KQ.DAT’); Reset(tep1);
c. Đọc/ghi tệp văn bản * Đọc:
Read(<biến tệp>, <danh sách biến>); Hoặc:
Readln(<biến tệp>, <danh sách biến>); * Ghi:
Write(<biến tệp>,<danh sách kết quả>); Hoặc:
HS: Writeln(<biến tệp>,<danh sách kết quả>);
HS: Close(tep3);
GV: Sử dụng máy chiếu chiếu chương trình ví dụ tổng hợp lên bảng để học sinh quan sát. Yêu cầu học sinh đọc hiểu chương trình.
* Ví dụ: SGK
* Một số hàm chuẩn thường dùng trong khi đọc/ghi tệp văn bản:
- eof: trả về giá trị true nếu con trỏ tệp đang chỉ tới cuối tệp.
- eoln: trả về giá trị true nếu con trỏ tệp đang chỉ tới cuối dòng.
d. Đóng tệp
* Cú pháp: Close(<biến tệp>); * Ví dụ: Close(tep1);
IV. Củng cố (5p)
- Nêu vai trò và phân loại tệp?
- Đọc hiểu và phân biệt được các hàm, thủ tục, ý nghĩa của chương trình mẫu GV đưa ra. V. Dặn dò (1p)
- Các em về nhà ôn lại nội dung của bài. Xem trước nội dung bài 16.
Tiết: 37 Ngày soạn: 12/02/2008
Bài 16: Ví dụ làm việc với tệp
A. MỤC TIÊU
1. Kiến thức: Củng cố lại kiến thức đã học về tệp trong chương 5 thông qua ví dụ. 2. Kỹ năng: Sử dụng được các hàm và thủ tục liên quan để giải quyết các bài tập. 3. Thái độ: - Thấy được sự cần thiết và tiện lợi của kiểu dữ liệu tệp.
- Có ý thức lưu trữ dữ liệu một cách khoa học. B. PHƯƠNG PHÁP
- Thuyết trình và giảng giải, kết hợp các hình ảnh trực quan. - Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời C. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH
2. Học sinh: SGK, vở. D. TIẾN TRÌNH LÊN LỚP
I. Ổn định tổ chức (1p)
II. Kiểm tra bài cũ (5p)
* Câu hỏi: Sắp xếp các bảng dưới đây theo thứ tự các bước mở tệp để ghi và để đọc?
Assign(<biến tệp>, <tên tệp>); Rewrite(<biến tệp>); Reset(<biến tệp>); + Read(<biến tệp>, <danh sách biến>); Write(<biến tệp>, <danh sách kết quả>); Close(<biến tệp>);
* Đáp án:
- Mở để ghi: + Assign(<biến tệp>, <tên tệp>); Rewrite(<biến tệp>); Write(<biến tệp>, <danh sách kết quả>); Close(<biến tệp>);
- Mở để đọc: + Assign(<biến tệp>, <tên tệp>); Reset(<biến tệp>); Read(<biến tệp>, <danh sách biến>); Close(<biến tệp>);
III. Bài mới 1. Đặt vấn đề (1p)
- Bài học trước các em đã được làm quen với một kiểu dữ liệu mới đó là kiểu dữ liệu tệp, để các em nắm chắc hơn phần kiến thức lí thuyết đã học, bài học hôm nay chúng ta sẽ đi vào tìm hiểu một số ví dụ cụ thể.
2. Triển khai bài
Hoạt động của giáo viên và học sinh Nội dung kiến thức
Hoạt động 1: (chung cả lớp) (10p) GV: Giới thiệu nội dung đề bài.
- Chiếu chương trình ví dụ lên bảng gợi ý học sinh tìm hiểu chương trình.
- Hàm eof(f) có chức năng gì?
HS: Trả về giá trị true nếu con trỏ tệp định vị ở vị trí kết thúc tệp.
GV: Có thể sử dụng cấu trúc FOR thay cho WHILE được không?
HS: Không, vì không biết số lượng phần tử của tệp.
GV: Chương trình này thực hiện công việc gì? Vì sao?
HS: Tính và đưa ra màn hình khoảng cách từ trại của thầy hiệu trưởng đến trại của mỗi giáo viên.
GV: Giới thiệu cho HS cách tạo file TRAI.TXT. Thực hiện chương trình để học sinh thấy kết quả.
§16 Ví dụ làm việc với tệp 1. Ví dụ 1 (SGK, trang 87)
Progam Khoang_cach;
Var d: real; f :text; x, y: integer; Begin
Assign(f, ‘TRAI.TXT’); Reset(f);
While not eof(f) do Begin Read(f,x,y); D:= sqrt(x*x+y*y); Write(‘Khoang cach: ‘,d:10:2); End; Close(f); End. Hoạt động 2: (theo từng nhóm) (7p)
GV: Chiếu tranh mô phỏng kết nối các điện trở, hình 17, trang 88 SGK. Hãy cho biết công thức tính điện trở của sơ đồ II, III, IV?
2. Ví dụ 2 (SGK, trang 87) Program Dien_tro;
Var a: array[1..5] of real;
R1, R2, R3: real; f1,f2 :text; i: integer; Begin
Lớp 11B5 11B6 11B7 11B8
HS: Nghiên cứu và trả lời
GV: Chiếu chương trình ví dụ lên bảng. Hỏi mảng A dùng để lưu trữ giá trị nào? HS: Lưu trữ giá trị điện trỡ tương đương theo 5 cách ghép nối như trong sơ đồ. GV: Cho một file dữ liệu vào gồm 2 hàng. Yêu cầu học sinh tính kết quả.
HS: Tính kết quả của 5 điện trở tương đương.
GV: Thực hiện chương trình đọc file dữ liệu vào trên để học sinh đối chiếu kết quả. HS: Quan sát kết quả của chương trình và so sánh với kết quả tính được. Nhận xét về tính chính xác và thời gian thực hiện của chương trình.
Assign(f1, ‘RESIST.DAT’); Reset(f1);
Assign(f2, ‘RESIST.EQU’); Rewrite(f2);
While not eof(f1) do Begin Readln(f1,R1,R2,R3); a[1]:=R1*R2*R3/ (R1*R2+R1*R3+R2*R3); a[2]:=R1*R2/(R1+R2)+R3; a[3]:=R1*R3/(R1+R3)+R2; a[4]:=R2*R3/(R2+R3)+R1; a[5]:=R1+R2+R3;
For i:=1 to 5 do write(f2, a[i]:9:3,’ ‘); Writeln(f2);
End;
Close(f1); Close(f2); End.
Hoạt động 3: (Chung cả lớp) (p)
GV: Cung cấp cho HS một số kiến thức mở rộng.
- Giới thiệu cho HS một thủ tục mở file để ghi thêm dữ liệu vào file?
HS: Quan sát và ghi bài.
GV: Giới thiệu hàm kiểm tra sự tồn tại của một file.
- Ý nghĩa: hàm trả về giá trị TRUE nếu tập tin cần mở có trên đĩa, ngược lại cho giá trị False.
- Lồng hàm trên vào ví dụ 2 cho HS kiểm chứng.
* Thủ tục: APPEND(biến tệp);
* Ý nghĩa: Thủ tục này dùng để mở tập tin có tên đã được gán cho biến tệp bởi thủ tục Assign trước đó. Khi tệp được mở thì cửa sổ tệp định vị ở vị trí kết thúc tệp. Từ đó có thể tuần tự ghi thêm dữ liệu vào cuối tệp. FUNCTION FileExists (tên_file: String):Boolean; Var F: FILE;
Begin {$I-}
Assign (f, tên_file); Reset (f); Close (f); {$I+}
FileExists:= (IOResult=0); End;
IV. Củng cố (5p)
- Nêu các thao tác với tệp văn bản? V. Dặn dò (1p)
- Bài tập:
1. Viết chương trình đọc và hiển thị ra màn hình nội dung một tập tin dạng văn bản, với tên tập tin được nhập từ bàn phím (có kiểm tra sự tồn tại của tập tin).
Tiết 38 Ngày soạn: 20/02/2009
Bài tậpA. MỤC TIÊU A. MỤC TIÊU
1. Kiến thức: Củng cố lại cho học sinh các kiến thức cơ bản của chương 2. Kỹ năng:
• Nâng cao kĩ năng sử dụng một số lệnh kiểu dữ liệu tệp.
• + Gắn tên tệp; + Mở tệp; + Đóng tệp;
• Biết giải một số bài toán cụ thể thường gặp.
3. Thái độ: Góp phần rèn luyện tác phong, tư duy lập trình: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm kiến thức.
• Thuyết trình và giảng giải, kết hợp với hình ảnh trực quan.
• Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời
C. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH
1. Giáo viên: Giáo án, một số bài tập và đáp án.
2. Học sinh: SGK, sách bài tập và bài tập đã làm ở nhà.