Bài 16. Ví dụ làm việc với tệp

Chia sẻ bởi Lê Thị Lan | Ngày 10/05/2019 | 78

Chia sẻ tài liệu: Bài 16. Ví dụ làm việc với tệp thuộc Tin học 11

Nội dung tài liệu:

4/20/2010
1
Chào mừng các thầy cô giáo
và các em học sinh lớp 11B4
4/20/2010
2
Bài 16
Ví dụ làm việc với tệp
Giáo án điện tử tin học lớp 11
4/20/2010
3
Kiểm tra bài cũ
Hãy hoàn thành sơ đồ sau để có các thao tác làm việc với tệp
Gán tên tệp (1)
Mở tệp để ghi (2)
Mở tệp để đọc(4)
Đọc dữ liệu từ tệp(5)
Đóng tệp(6)
Ghi dữ liệu ra tệp(3)
Reset()
b. Rewrite()
c. Close()
f. write(,)
e. Read(,)
d. Assign(,)
Reset()
b. Rewrite()
d. Assign(,)
f. write(,)
e. Read(,)
c. Close()
4/20/2010
4
Ví dụ 1:
Một trường THPT tổ chức cho giáo viên và học sinh của trường đi cắm trại. Để lên lịch đến thăm khu trại các lớp, thầy Hiệu trưởng cần biết khoảng cách từ trại của mình ( ở vị trí có tọa độ (0,0)) đến trại của các lớp. Mỗi lớp có một khu trại, vị trí trại của mỗi lớp đều có tọa độ nguyên (x,y) được ghi trong tệp văn bản TRAI.TXT. Tệp TRAI.TXT chứa các cặp số nguyên cách nhau bởi dấu cách.
Viết chương trình đọc các cặp tọa độ từ tệp TRAI.TXT, tính rồi đưa ra màn hình khoảng cách giữa trại của mỗi lớp đến trại của thầy Hiệu trưởng.
4/20/2010
5
VÍ DỤ 1:
HT
O(0,0)
B(x,y)
C(x,y)
A(x,y)
D(x,y)
d := sqrt (x*x + y*y);
Hãy nêu công thức tính khoảng cách từ A đến O?
4/20/2010
6
Tìm hiểu bài toán
Trong Vd trên, ta mở tệp để đọc hay để ghi. Dùng thủ tục nào để mở.
Dữ liệu sẽ xuất ra đâu?
Trả lời : Mở tệp để đọc Reset
Dữ liệu sẽ xuất ra màn hình
4/20/2010
7
- Khai bỏo;
1. program Khoang_cach;
2. var d: real;
f: text;
x,y: integer;
- Gán tên tệp;
3. Begin

- Mở tệp ra để đọc;
CÁC BƯỚC:
THỂ HIỆN BẰNG PASCAL
4. assign(f,’TRAI.TXT’);
6. while not eof(f) do
7. begin
8. read(f,x,y);
9. d:=sqrt(x*x+y*y);
- Dóy khụng bi?t bao nhiờu s?, nhung v?n d?c ra du?c b?ng cỏch dựng h�m EOF(tờn bi?n t?p);
12. close(f);
13. readln;
14. end.
- Đóng tệp.
- Xuất kết quả ra màn hình
5. Reset(f);
10. writeln(‘Khoang cach: ’,d:10:2);
11. end;
4/20/2010
8
Ví dụ 2: Tính điện trở tương đương
Cho ba điện trở R1, R2, R3. Sử dụng cả ba điện trở để tạo ra năm mạch điện có điện trở tương đương khác nhau bằng cách mắc theo sơ đồ:
Cho tệp văn bản RESIST.DAT gồm nhiều dòng, mỗi dòng chứa ba số thực R1, R2, R3, các số cách nhau một dấu cách , 0Viết chương trình đọc dữ liệu từ tệp RESIST.DAT, tính các điện trở tương đương và ghi kết quả ra tệp văn bản RESIST.EQU, mỗi dòng ghi 5 điện trở tương đương của ba điện trở ở dòng dữ liệu vào tương ứng.
4/20/2010
9
VÍ DỤ 2:
4/20/2010
10
Tìm hiểu bài toán
Trong Vd trên, ta mở tệp để đọc hay để ghi. Dùng thủ tục nào để mở.
Dùng kiểu dữ liệu nào để lưu trữ 5 điện trở tương đương.
Trả lời : Trong VD trên chúng ta phải mở 2 tệp RESIST.DAT là để đọc Reset và tệp RESIST.EQU là để ghi dữ liệu vào Rewrite
- Có thểdùng 5 biến kiểu thực hoặc dùng mảng A gồm 5 phần tử số thực để lưu các điện trở tương đương.
4/20/2010
11
C: hao giang GVGPackage - dientrodientro.exe
4/20/2010
12
Program Dientro; (1)
Var A: Array[1..5] of real; (2)
R1,R2,R3:Real; I;Integer; (3)
f1,f2:text; (4)
Begin (5)
Assign(f1,’Resist.dat’); Reset(f1); (6) (7)
Assign(f2,’resist.equ’); Rewrite(f2); (8) (9)
While Not Eof(f1) Do (10)
Begin (11)
Readln(f1,R1,r2,r3); (12)
A[1]:=R1*r2*r3/(r1*r2+r1*r3+R2*r3); (13)
A[2]:=r1*r2/(r1+r2)+r3; A[3]:=r1*r3/(r1+r3)+r2; (14) (15)
A[4]:=r2*r3/(r2+r3)+r1; A[5]:=r1+r2+r3; (16) (17)
For i:=1 to 5 do (18)
write(f2,a[i]:9:3,’ ‘); (19)
Writeln(f2); (20)
End; (21)
Close(f1); Close(f2); (22)(23)
End. (24)
4/20/2010
13
Bài tập nhóm
Hãy viết lại chương trình của Ví dụ 1 nhưng khoảng cách được lưu vào tệp có tên là K_Cach.OUT
4/20/2010
14
- Khai bỏo;
program Khoang_cach;
var d: real;
f1,f2: text;
x,y: integer;
- Gán tên tệp; Mở tệp để đọc;
Begin

- Gán tên tệp; Mở tệp để ghi;
CÁC BƯỚC:
THỂ HIỆN BẰNG PASCAL
assign(f1,’TRAI.TXT’); Reset(f1);
while not eof(f1) do
begin
read(f1,x,y);
d:=sqrt(x*x+y*y);
close(f1); close(f2);
end.
- Đóng tệp.
- Ghi kết quả vào tệp
Assign(f2,’K_cach.out’); Rewrite(f2);
writeln(f2, ‘Khoang cach: ’,d:10:2);
end;
4/20/2010
15
Package - bttracnghiemttracnghiem.exe
4/20/2010
16
Củng cố kiến thức
Việc trao đổi dữ liệu với bộ nhớ ngoài được thực hiện thông qua kiểu dữ liệu tệp
Để có thể làm việc với tệp cần phải khai báo biến tệp.
Mỗi ngôn ngữ lập trình đều có các hàm, thủ tục chuẩn để làm việc với tệp.
Các thao tác với tệp văn bản :
Khai báo biến, mở tệp, đóng tệp.
Đoc/ghi : tương tự như làm việc với bàn phím và màn hình.
4/20/2010
17
MỘT SỐ BÀI TOÁN VỚI TỆP
Bài 1: Đọc vào từ bàn phím một dãy n số nguyên (n<=100), ghi dãy số đó vào tệp có tên BAITAP.INP
- Khai bỏo;
Program bai1;
Uses crt;
Var
tep2: TEXT;
A:ARRAY[1 .. 100] of Integer;
i,n:Integer;
- Gán tên tệp;
Begin
Clrscr;
ASSIGN(tep2, ‘D:TPBAITAP.INP’);
- Mở tệp ra để ghi;
REWRITE (tep2);
CÁC BƯỚC:
THỂ HIỆN BẰNG PASCAL
4/20/2010
18
- Nhập số lượng phần tử trong mảng;
For i:=1 to n do
Begin
Write(`Doc so thu `,i,`=`);
Readln(A[i]);
Write(tep2,A[i]);
End;
Write(‘Nhap n = `);Readln(n);
- Đọc vào mảng;
- Ghi ra tệp DULIEU.INP;
- Đóng tệp.
Close(tep2);
Readln;
END.
4/20/2010
19
4/20/2010
20
Nhap vao bao nhieu so :
6
Nhap so thu 1 =
5
Nhap so thu 2 =
7
Nhap so thu 3 =
20
Nhap so thu 4 =
15
Nhap so thu 5 =
1
Nhap so thu 6 =
8
-
4/20/2010
21
Nhấn F3 để mở tệp BAITAP.INP xem nội dung.
Nội dung tệp BAITAP.INP
4/20/2010
22
Bài tập về nhà:

Cho hai tệp văn bản NGUYEN1.TXT và NGUYEN2.TXT, mỗi dòng của hai tệp chứa một số nguyên.
Hãy lập trình tạo tệp văn bản NGUYEN12.TXT, những dòng đầu tiên là các dòng của tệp NGUYEN1.TXT, những dòng còn lại là các dòng của tệp NGUYEN2.TXT.
4/20/2010
23
- Khai báo;
Program Bai2;
Uses crt;
Var
tep: TEXT;
A:ARRAY[1 .. 100] of Integer;
S,i,n:Integer;
- Gán tên tệp;
Begin
Clrscr;
ASSIGN(tep, `D:TPBAITAP.INP’);
- Mở tệp ra để đọc;
RESET(tep);
B�i 2: M? t?p BAITAP.INP, in dóy s? trong t?p ra m�n hỡnh. Tớnh t?ng c?a dóy s? dú.
CÁC BƯỚC:
THỂ HIỆN BẰNG PASCAL
4/20/2010
24
- Gỏn t?ng c?a dóy = 0;
Write(A[i]:5);
S:=S+A[i];
End;
S:=0;
- Dóy s? nguyờn khụng bi?t bao nhiờu s?, nhung v?n d?c ra du?c b?ng cỏch dựng h�m EOF(tờn bi?n t?p);
- Đóng tệp.
Close(tep);
Readln;
END.
- D?c d? li?u t? file BAITAP.INP;
- In ra m�n hỡnh dóy s?;
- Tớnh t?ng;
Writeln(`Tong cua day so la : `,S);
WHILE NOT(EOF(tep)) DO
Begin
Readln(tep,A[i]);
Writeln;
4/20/2010
25
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Lê Thị Lan
Dung lượng: | Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)