Nội dung của Bài 15: Thao tác với tệp dưới đây, các em sẽ được tìm hiểu về cách khai báo tệp, các thao tác cơ bản với tệp văn bản và cách sử dụng một số hàm và thủ tục chuẩn làm việc với tệp. Mời các em cùng theo dõi nội dung dưới đây.
Để làm việc với dữ liệu kiểu tệp ta phải sử dụng biến tệp.
Khai báo biến tệp văn bản có dạng:
var < tên biến tệp > : text;
Ví dụ 1: var tep1,tep2: text;
Khai báo trên xác định hai biến tệp văn bản tep1 và tep2.
Thủ tục gắn tên tệp với biến tệp:
assign(< biến tệp >, < tên tệp >);
Hình 1. Minh họa thao tác gắn tên tệp
rewrite(tep3);
Khi thực hiện thủ tục rewrite(tep3), nếu trên thư mục gốc của đĩa C chưa có tệp KQ.DAT, thì tệp sẽ được tạo với nội dung rỗng. Nếu đã có, thì nội dung cũ sẽ bị xóa để chuẩn bị ghi dữ liệu mới.
tentep:= 'DL.INP';
assign(tep1,tentep);
reset(tep1);
hoặc
assign(tep1, 'DL.INP');
reset(tep1);
Cú pháp: read( < biến tệp >,< danh sách biến > );
hoặc
readln( < tên biến tệp >,< danh sách biến >);
Trong đó:
Cú pháp: write(< biến tệp >,< danh sách kết quả >);
hoặc
writeln( < biến tệp >,< danh sách kết quả > );
Trong đó:
Giả sử trong chương trình có khai báo:
var tepA, tepB: text;
và tệp tepA được mở để đọc dữ liệu, còn tệp tepB dùng để ghi dữ liệu.
write(tepB,' A = ', A,' B = ',B,' C = ',C);
writeln(tepB,' X1 = ',(-B – SQRT(B*B- 4*A*C))/(2*A):8:3);
Sau khi đóng một tệp vẫn có thể được mở lại.
Khi mở lại tệp, nếu vẫn dùng biến tệp cũ thì không cần phải dùng thủ tục assign gắn lại tên tệp.
Sau khi học xong Bài 15: Thao tác với tệp, các em có thể thao tác với tệp được mô tả trong hình 1 dưới đây:
Hình 1. Thao tác với tệp
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 11 Bài 15 cực hay có đáp án và lời giải chi tiết.
Trong NNLT Pascal, cú pháp để khai báo biến tệp văn bản là:
Để có thể thao tác với tệp dữ liệu trên đĩa thông qua biến tệp cho trước thì bước đầu tiên chúng ta phải làm gì?
Trong NNLT Pascal, cú pháp để gắn tên tệp cho biến tệp là:
Câu 4-10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 11 DapAnHay
Trong NNLT Pascal, cú pháp để khai báo biến tệp văn bản là:
Để có thể thao tác với tệp dữ liệu trên đĩa thông qua biến tệp cho trước thì bước đầu tiên chúng ta phải làm gì?
Trong NNLT Pascal, cú pháp để gắn tên tệp cho biến tệp là:
Trong NNLT Pascal, cú pháp để mở tệp ở chế độ đọc dữ liệu từ tệp là:
Cú pháp của thủ tục đọc dữ liệu từ tệp văn bản là:
Cú pháp của thủ tục ghi dữ liệu vào tệp văn bản là:
Hàm eof() trả về giá trị TRUE khi nào?
Hàm eoln() trả về giá trị TRUE khi nào?
Trong NNLT Pascal, sau khi làm việc với tệp cần phải đóng tệp. Cú pháp để đóng tệp là:
Trong một chương trình Pascal, sau khi đã đóng tệp bằng thủ tục đóng tệp thì có thể mở lại tệp đó hay không?
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Câu trả lời của bạn
const fi='vao.inp';
fo='ra.out';
var n,i,s:integer;
f1,f2:text;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
s:=0;
for i:=1 to n do
s:=s+i;
writeln(f2,s);
close(f1);
close(f2);
end.
Câu trả lời của bạn
uses crt;
const fo='mang_chan.out';
var f1:text;
a:array[1..100]of integer;
n,i:integer;
begin
clrscr;
assign(f1,fo); rewrite(f1);
write('n='); readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i]);
end;
for i:=1 to n do
if a[i] mod 2=0 then write(f1,a[i]:4);
close(f1);
readln;
end.
Câu trả lời của bạn
uses crt;
const fo='songuyen.txt';
var f1:text;
a:array[1..10]of integer;
i,n:integer;
begin
clrscr;
assign(f1,fo); rewrite(f1);
repeat
write('n='); readln(n);
if (0>=n) or (n>10) then write('vui long nhap lai n');
until (0<n) and (n<=10);
for i:=1 to n do
begin
repeat
write('a[',i,']='); readln(a[i]);
if (-4>a[i]) or (5<a[i]) then write('vui long nhap lai a[',i,']');
until (-4<=a[i]) and (a[i]<=5);
end;
for i:=1 to n do
writeln(f1,a[i]);
close(f1);
readln;
end.
Câu trả lời của bạn
const fi1='nguyen1.txt';
fi2='nguyen2.txt';
fo='nguyen12.txt';
var f1,f2,f3:txt;
a,b:integer;
begin
assign(f1,fi1); reset(f1);
assign(f2,fi2); reset(f2);
assign(f3,fo); rewrite(f3);
readln(f1,a);
readln(f2,b);
writeln(f3,a+b);
close(f1);
close(f2);
close(f3);
end.
Câu trả lời của bạn
uses crt;
var s,k,tam:string;
dem,i:integer;
begin
clrscr;
write('nhap xau S:'); readln(s);
dem:= 1;
for i:=2 to length(s) do
begin
if s[i]=s[i-1] then inc(dem);
if s[i]<>s[i-1] then
begin
str(dem,tam);
if dem>1 then k:=k+tam+s[i-1]
else k:=k+ s[i-1];
dem:= 1;
end;
if i=length(s) then
begin
str(dem,tam);
if dem >1 then k:=k+tam+s[i]
else k:=k+s[i];
end;
end;
for i:=1 to length(k) do
write(k[i]);
readln;
end.
Program giaiptbac1;
Var f1,f2: text;
a, b: integer;
x : real;
Begin
assign(f1 ,' input.txt'); reset(f1);
assign(f2 ,' output.txt); rewrite(f2);
while not eof(f1) do
Begin
read(f1,a,b);
x:=-b/a;
writeln(f2,' nghiem la:' , x:7:1);
End;
Close(f1);
Close(f2);
End.
a, ct sử dụng bao nhiêu tệp, biến tệp, kể tên
b, Tệp input.txt, output.txt được gắn cho những biến tệp nào? Nó dùng để đọc hay ghi dữ liệu?
c, chỉ ra câu lệnh gắn tên tệp, mở tệp của tệp input.txt và output.txt. Câu lệnh đọc tệp? Câu lệnh ghi tệp?
d, điều kiện để tham chiếu đến tất cả các cặp số nguyên trong tệp input.txt
e, ct sử dụng bao nhiêu câu lệnh đóng tệp? Không đóng tệp được không? Vì sao?
Câu trả lời của bạn
a) Chương trình có 2 tệp và 2 biến tệp
- 2 tệp đó là : input.txt và output.txt
- 2 biến tệp đó là: f1 và f2
b)
- Tệp input.txt được gắn cho biến tệp là f1 .Nó dùng để đọc dữ liệu
-Tệp output.txt được gắn cho biết tệp là f2. Nó dùng để ghi dữ liệu
c)
Câu lệnh gắn tập và mở tệp của input.txt và output.txt là : assign(f1 ,' input.txt'); và assign(f2 ,' output.txt);
Câu lệnh đọc tệp là: reset(f1);
Câu lệnh để ghi tệp là: rewrite(f2);
d) Điều kiện để tham chiếu đến tất cả các cặp số nguyên trong tệp input.txt là phải có biến tệp f1 ở trước mọi câu lệnh đọc dữ liệu.
e) Chương trình có 2 lệnh đóng tệp. Không thể không đóng tệp , vì nếu không đóng thì dữ liệu đã thực hiện không thể lưu lại .
+ Dòng 1 ghi giá trị S
+ Dòng 2 ghi giá trị C
Câu trả lời của bạn
uses crt;
const fi='duongtron.out';
var r,s,c:real;
begin
clrscr;
assign(f1,fi); rewrite(f1);
write('nhap r='); readln(r);
s:=sqr(r)*pi;
writeln(f1,s:4:2);
c:=2*r*pi;
writeln(f1,c:4:2);
close(f1);
readln;
end.
Câu trả lời của bạn
uses crt;
const fi='mang.txt';
var f1:text;
a,b:array[1..100]of integer;
i,n,dem,t:integer;
begin
clrscr;
assign(f1,fi); rewrite(f1);
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
for i:=1 to n do
write(f1,a[i]:4);
dem:=0;
while not eof(f1) do
begin
inc(dem);
read(f1,b[dem]);
end;
t:=0;
for i:=1 to dem do
if b[i] mod 2=0 then t:=t+b[i];
writeln('Tong cac so chan co trong mang la: ',t);
close(f1);
readln;
end.
Câu trả lời của bạn
Program hotrotinhoc_hoc24;
const fi='ketqua.txt';
var a,b: integer;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,a,b);
close(f);
end;
BEGIN
ip;
END.
Câu trả lời của bạn
uses crt;
const fi='bt.txt';
var f1:text;
a:array[1..100]of integer;
i,n,t:integer;
begin
clrscr;
assign(f1,fi); reset(f1);
n:=0;
while not eoln(f1) do
begin
inc(n);
read(f1,a[n]);
end;
writeln('Day so la: ');
for i:=1 to n do
write(a[i]:4);
writeln;
t:=0;
for i:=1 to n do
t:=t+a[i];
writeln('Tong cua day so la: ',t);
close(f1);
readln;
end.
Câu trả lời của bạn
Program hotrotinhoc_hoc24;
const fi='dulieu.txt';
fo='ketqua.txt';
var f: text;
a,b,c : integer;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,a,b,c);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
if (a+b>c) and (a+c>b) and (b+c>a) then write(f,a+b+c);
close(f);
end;
begin
ip;
out;
end.
Câu trả lời của bạn
Program hotrotinhoc_hoc24;
const fi='dulieu.txt';
var a,b: integer;
f: text;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,a,b);
close(f);
end;
begin
ip;
writeln('Tong la : ',a+b);
write('Hieu la : ',a-b);
readln
end.
Ví dụ: Trên màn hình chạy dòng 19 số: 1 0 2 0 0 3 1 1 1 0 2 1 0 0 2 1 2 0 1. Kết quả trả lời đúng là: tổng các số mỗi dãy con là 3, số dãy con nhiều nhất là 6, bao gồm các dãy con là: 1 0 2, 0 0 3, 1 1 1, 0 2 1, 0 0 2 1, 2 0 1
+Dữ liệu vào: File văn bản GAMESHOW.INP
- Dòng 1 chứa số nguyên dương N.
- Dòng 2 chứa N số chạy trên màn hình, các số cách nhau bởi dấu cách.
+ Dữ liệu ra: Ghi ra file văn bản GAMESHOW.OUT
- Dòng 1 là tổng các số của một dãy con.
- Dòng 2 là số K (số dãy con nhiều nhất chia được).
- Dòng 3 là các vị trí cuối cùng của từng dãy con, các số vị trí này cách nhau bởi dấu cách.
Ví dụ:
GAMESHOW.INP | GAMESHOW.OUT |
19 1 0 2 0 0 3 1 1 1 0 2 1 0 0 2 1 2 0 1 | 3 6 3 6 9 12 16 19 |
Câu trả lời của bạn
const fi='gameshow.inp';
fo='gameshow.out';
var f1,f2:text;
a,b:array[1..100]of integer;
n,i,tg,d,s,x,j,vtd,vt:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
{----------------------xu-ly------------------}
tg:=0;
for i:=1 to n do
tg:=tg+a[i];
for i:=n downto 1 do
if tg mod i=0 then
begin
d:=0;
s:=0;
x:=tg div i;
for j:=1 to n do
begin
s:=s+a[j];
if s=x then
begin
vt:=j;
inc(d);
b[d]:=vt;
s:=0;
end;
end;
if s=0 then
begin
b[d]:=n;
break;
end;
end;
writeln(f2,x);
writeln(f2,d);
for i:=1 to d do
write(f2,b[i],' ');
close(f1);
close(f2);
end.
Câu trả lời của bạn
uses crt;
const fi='bai5.inp';
var f1:text;
a:array[1..100]of integer;
i,n:integer;
begin
clrscr;
assign(f1,fi); reset(f1);
n:=0;
while not eof(f1) do
begin
n:=n+1;
read(f1,a[n]);
end;
{----------xu-ly---------------}
writeln('cac so chan co trong tep la: ');
for i:=1 to n do
if a[i] mod 2=0 then write(a[i]:4);
close(f1);
readln;
end.
INPUT.TXT 2 3
OUTPUT.TXT 6
Câu trả lời của bạn
const fi='input.txt';
fo='output.txt';
var f1,f2:text;
a,b,s:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,a,b);
s:=a*b;
writeln(f2,s);
close(f1);
close(f2);
end.
Câu trả lời của bạn
const fi='vb.txt';
fo='kq.txt';
var f1,f2:text;
a,b,c,t,s:real;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,a,b,c);
t:=a+b+c;
s:=a*b*c;
writeln(f2,'tong la: ',t:4:2);
writeln(f2,'tich la: ',s:4:2);
close(f1);
close(f2);
end.
Câu trả lời của bạn
Program hotrotinhoc;
const fi='XAU.inp';
fo='XAU.out';
var f: text;
a,b: string;
procedure ip;
begin
assign(f,fi);
reset(f);
readln(f,a);
read(f,b);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
if length(a)>length(b) then write(f,'Xau a dai hon');
if length(b)>length(a) then write(f,'Xau b dai hon');
if length(a)=length(b) then write(f,'Xau nhap sau');
close(f);
end;
begin
ip;
out;
end.
Câu trả lời của bạn
const fi='dulieu.txt';
fo='ketqua.txt';
var f1,f2:text;
a,b,c,t,s:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,a,b,c);
t:=a+b+c;
s:=a*b*c;
writeln(f2,t);
writeln(f2,s);
close(f1);
close(f2);
end.
D:\DULIEU.TXT 2 3
D:\KETQUA.TXT 3
Câu trả lời của bạn
const fi='dulieu.txt';
fo='ketqua.txt';
var f1,f2:text;
a,b:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,a,b);
if a>b then writeln(f2,a)
else if b>a then writeln(f2,b)
else writeln(f2,' khong co so lon nhat trong hai so');
close(f1);
close(f2);
end.
Câu trả lời của bạn
const fi='songuyen.txt';
fo='gtln.txt';
var f, g: text;
max, x: longint;
i, j: byte;
begin
assign(f, fi);
reset(f);
assign(g, fo);
rewrite(g);
max:=minlongint;
for i:=1 to 5 do
for j:=1 to 4 do
begin
read(f, x);
if x>max then max:=x;
if j=4 then readln(f);
end;
write(g, max);
close(f);
close(g);
end.
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *