Tin học 11 Bài 16: Ví dụ làm việc với tệp

Cùng eLib tìm hiểu nội dung bài học 16 ví dụ làm việc với tệp thuộc chương trình SGK Tin học 11 bên dưới đây thông qua các phần: Tóm tắt lý thuyết, bài tập minh họa và luyện tập để cùng tìm hiểu một số thao tác cơ bản làm việc với tệp. Chúc các em học tập thật tốt!

Tin học 11 Bài 16: Ví dụ làm việc với tệp

1. Tóm tắt lý thuyết

1.1. Ví dụ 1

Một trường trung học phổ thông tổ chức cho giáo viên và học sinh của trường đi cắm trại, sinh hoạt ngoài trời ở vườn quốc gia Cúc Phương. Để 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 giáo viên chủ nhiệm. Mỗi lớp có một khu trại, vị trí trại của mỗi giáo viên chủ nhiệm đều có tọa độ nguyên (x,y) được ghi trong tệp văn bản TRAI.TXT (như vậy tệp TRAI.TXT chứa liên tiếp các cặp số nguyên, các số cách nhau bởi dấu cách và không kết thúc bằng kí tự xuống dòng).

Chương trình sau sẽ đọc từ tệp TRAI.TXT các cặp toạ độ, tính và đưa ra màn hình khoảng cách (với độ chính xác hai chữ số sau dấu chấm thập phân) từ trại mỗi giáo viên chủ nhiệm lớp đến trại của thầy hiệu trưởng.

Hướng dẫn giải

program Khoang_Cach;

var d:real;

    f:text;

    x,y:integer;

begin

   assign(f,’TR¹I.TXT’); 

   reset(f);

   while not eof(f) do

         begin

               read(f,x,y);

               d:=sqrt(x*x+y*y);

               writeln('Khoang cach:' d:10:2)

         end;

   close(f);

end.

1.2. Ví dụ 2

Cho ba điện trở R1, R2, R3. Sử dụng cả ba điện trở ta có thể tạo ra năm điện trở tương đương bằng cách mắc các sơ đồ nêu ở hình 17 dưới đây:

Mỗi cách mắc sẽ cho một điện trở tương đương khác nhau. Ví dụ:

- Nếu mắc theo sơ đồ I thì điện trở tương đương sẽ là:

\(R=\frac{R1^{*}R2^{*}R3}{R1^{*}R2+R1^{*}R3+R2^{*}R3}\)

- Nếu mắc theo sơ đồ V thì R = R1 + R2 +R3.

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 và R3, các số cách nhau một dấu cách, 0 < R1, R2, R3 \(\leq\) 105.

Chương trình sau đọ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 năm điện trở tương đương của ba điện trở ở dòng dữ liệu vào tương ứng.

Hướng dẫn giải

Cài đặt chương trình:

program Dientro;

var a:array[1..5] of real;

     r1,r2,r3:real;

    i:integer;

    f1,f2:text;

begin

  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.

2. Bài tập minh họa

Bài 1: Hãy viết lệnh tính điện trở tương đương Rtd  cho sơ đồ mạch điện gồm 3 điện trở R1, R2, R3 mắc song song với nhau?

Hướng dẫn giải

Công thức tính điện trở tương đương Rtd  cho sơ đồ mạch điện gồm 3 điện trở R1, R2, R3 mắc song song là: 1/Rtd = 1/R1 + 1/ R2 + 1/R3

→ Rtd= R1 x R2 x R3/(R1 x R2 + R2 x R3 + R3 x R1); 

Vậy lệnh tính điện trở tương đương trong Pascal là:

Rtd := R1*R2*R3/(R1*R2 + R2*R3 + R3*R1);

Bài 2: Trong mặt phẳng hệ tọa độ Descartes vuông góc, cho 2 điểm M(x1,y1) và N(x2,y2). Hãy viết câu lệnh tính khoảng cách d từ điểm M đến N?

Hướng dẫn giải

Trong mặt phẳng hệ tọa độ Descartes vuông góc, cho 2 điểm M(x1,y1) và N(x2,y2). Công thức tính khoảng cách d từ điểm M đến N là:

\(d: = \sqrt {{{({x_1} - {x_2})}^2} + {{({y_1} - {y_2})}^2}} {\rm{ }}\)

Câu lệnh tính d là: d := sqrt(sqr(x1 – x2) + sqr(y1 – y2));

Với hàm Sqrt là hàm căn bậc hai, sqr là hàm bình phương.                  

3. Luyện tập

3.1. Bài tập tự luận

Câu 1: Trong mặt phẳng hệ tọa độ Descartes vuông góc, cho điểm M(x, y). Hãy viết câu lệnh tính khoảng cách d từ điểm M đến gốc tọa độ O?

Câu 2: Cho biết f1 là biến tệp văn bản và tệp ketqua.txt có nội dung đang lưu trữ là: Tich 2 so la: 20. Hãy cho biết sau khi thực hiện đoạn lệnh sau:

a := 10; b :=2;

assign(f1, 'ketqua.txt');

rewrite(f1);

writeln(f1, 'Thuong 2 so la: ', a/b);

thì tệp ketqua.txt có nội dung gì?

Câu 3: Cho trước tệp văn bản BT_TD gồm hai dòng như sau :

TRAN MINH HAI 9 8 7

NGUYEN QUANG VINH 10 5 9

ProgramThi_Du ;

Uses crt ;

Const fi = BT_TD ;

Var f : text ;       s : string ;        t, l, h : integer ;

Begin

          Assign(f, ‘fi’) ;                Reset(f) ;

While not eof(f) do

          Begin

                   Readln(f, s, t, l, h) ;

                   Writeln(s, ‘  ’, t, ‘  ’, l, ‘  ’, h) ;

                   End ;

          Close(f) ;

          Readln

End.

Khi thực hiện chương trình Thi_Du  sẽ cho kết quả nào?

Câu 4: Trong PASCAL, để khai báo hai biến tệp văn bản f1, f2 ta viết

3.2. Bài tập trắc nghiệm

Câu 1: Hãy viết lệnh tính điện trở tương đương Rtd cho sơ đồ mạch điện gồm 3 điện trở R1, R2, R3 mắc nối tiếp với nhau là:

A. Rtd := R1*R2*R3/(R1*R2 + R2*R3 + R3*R1); 

B. Rtd := R1*R2/(R1 + R2) + R3; 

C. Rtd := R1*R2*R3/(R1 + R2 + R3);

D. Rtd := R1 + R2 + R3;

Câu 2: Trong Pascal, thực hiện chương trình VD_bt1_txt dưới đây sẽ ghi kết quả nào trong các kết quả cho dưới đây vào tệp văn bản BT1.TXT ?

ProgramVD_bt1_txt;

Uses crt ;

Var f : text ;

Begin

          Clrscr;

          Assign(f, BT1.TXT ’) ;

          Rewrite(f) ;

Write(f, 123 + 456) ;

Close(f) ;

End .

A. 123 + 456

B. 123456

C. 579

D. 123 456

Câu 3: Trong Pascal, cho trước tệp văn bản BT2.TXT chỉ có một dòng, chứa dòng chữ: CHAO MUNG BAN DEN VOI LAP TRINH ngay ở đầu dòng. Thực hiện chương trình VD_bt2_txt dưới đây, trên màn hình sẽ hiện kết quả nào trong các kết quả cho dưới đây ?

ProgramVD_bt2_txt;

Uses crt ;

Var f : text ;

S : string[13] ;

Begin

          Clrscr;

          Assign(f, BT2.TXT ) ;

          Reset(f) ;

         Read(f, S) ;

Write(S) ;

Close(f) ;

End .

A. CHAO MUNG BAN DEN VOI LAP TRINH

B. CHAO MUNG BAN

C. CHAO MUNG BAN DEN VOI

D. CHAO MUNG

Câu 4: Phát biểu nào sau đây là đúng với chương trình Vi_Du ?

Program Vi_Du ;

Uses crt ;

Var   f : text ; ch : char ; tenfile : string[30] ;

Begin

          Write(‘ Nhap ten file : ’) ; readln(tenfile) ;

          Assign(f, ‘tenfile’) ; Reset(f) ;

Whilenot eof(f) do

          Begin

                   Read(f, ch) ;

                   Write(ch) ;  

          End ;

Close(f) ;

End.

A. Chương trình dùng để mở đọc một tệp đã có và hiện nội dung trong tệp này lên màn hình.

B. Chương trình dùng để tạo một tệp mới và ghi nội dung nhập từ bàn phím vào trong tệp.

C. Chương trình dùng để mở đọc một tệp đã có và cho phép nhìn thấy toàn bộ kí tự có trong tệp này lên màn hình.

D. Cả 3 khẳng định trên đều sai.

3.3. Trắc nghiệm Online

Các em hãy luyện tập bài trắc nghiệm Ví dụ làm việc với tệp Tin học 11 sau để nắm rõ thêm kiến thức bài học.

Trắc Nghiệm

4. Kết luận

Sau khi học xong bài ví dụ làm việc với tệp các em nắm được các nội dung trọng tâm sau đây:

  • Củng cố lại kiến thức đã học về tệp trong chương 5 thông qua ví dụ.
  • 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.
  • Sử dụng kiểu tệp để lập trình các chương trình yêu thích.
  • Biết tôn trọng bản quyền chương trình, không thay đổi sửa chữa phần mềm bản quyền.
Ngày:11/09/2020 Chia sẻ bởi:Hoang Oanh Nguyen

CÓ THỂ BẠN QUAN TÂM