conduongcoxua welcome to my blog

16 4 0
conduongcoxua  welcome to my blog

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

* biennho: là biến đã được khai báo cùng kiểu với các phần tử của tệp, biến nhớ đóng vai trò vùng nhớ đệm để lưu trữ dữ liệu đọc từ phần tử của tệp ra. * j: là biến kiểu Word, dùng để gh[r]

(1)

Sở GD&ĐT Đồng Nai Trường THPT Ngô Quyền

SÁNG KIẾN KINH NGHIỆM

GIÚP DẠY TỐT BÀI “KIỂU DỮ LIỆU TỆP”

GV: PHAN THỊ TÀI TỔ: TOÁN-TIN Năm 2012

(2)

I. THÔNG TIN CHUNG VỀ CÁ NHÂN

1 Họ teân: Phan Thị Tài

2 Ngày tháng năm sinh: 20-06-1983 Giới tính: Nữ

4 Địa chỉ:20/2-Tổ 12-Khu phố 1_P Tân Hiệp-TP Biên Hịa Điện thoại: 0909790083

6 Email: info@123doc.org

7 Chức vụ: Giáo viên

8 Đơn vị công tác: Trường THPT Ngô Quyền – Biên Hòa –

Đồng Nai.

II. TRÌNH ĐỘ ĐÀO TẠO:

 Học vị cao nhất: Cử nhân  Năm nhận : 2006

 Chuyên ngành đào tạo : Đại học sư phạm Tin

III KINH NGHIỆM KHOA HỌC:

1 Lĩnh vực chun mơn có kinh nghiệm: Giảng dạy mơn Tin Số năm giảng dạy:

(3)

Hiện nay, với chương trình giảng dạy theo SGK làm học sinh cảm thấy chương trình học Tin học 11 thật khó hiểu Cụ thể đến “Kiểu dữ liệu tệp”, học sinh cảm thấy thật mơ hồ nhập nhằng.

Trước thực trạng đó, tơi nghĩ nên chọn cách dạy cho đầy đủ dễ hiểu cho học sinh Giúp cho học sinh cảm thấy gần gũi, nhận việc học lập trình thật thú vị.

Khi học lớp 10, em học “Tệp thư mục”, em được làm quen với tệp, dạng tệp Trong ta tiếp tục nhắc dạng cho em thấy với dạng muốn ghi liệu, muốn đọc liệu muốn mở để ghi tiếp liệu có,

(4)

KIỂU DỮ LIỆU TỆP I Khái niệm tệp:

Tệp dãy phần tử kiểu xếp cách Tệp liệu lưu trữ nhớ tên

Tệp tập hợp số phần tử liệu có cấu trúc giống mảng khác mảng số phần tử tệp chưa xác định

Trong Pascal có loại tệp sử dụng là: Tệp có kiểu:

Tệp có kiểu tệp mà phần tử có độ dài kiểu liệu

Tệp văn bản:

Dùng để lưu trữ liệu dạng ký tự bảng mã ASCII, ký tự lưu thành dòng, độ dài dịng khác Ví dụ 2008 (kiểu word) ghi vào tệp văn cần Byte ( Byte)

Tệp không kiểu:

Tệp không kiểu loại tệp không cần quan tâm đến kiểu liệu ghi tệp Dữ liệu ghi vào tệp không cần chuyển đổi

Tác dụng lớn kiểu liệu tệp ta lưu trữ liệu nhập vào từ bàn phím kết xử lý nhớ RAM tệp để dùng nhiều lần

Khai báo:

* Định nghĩa kiểu tệp với từ khóa FILE OF phần mô tả kiểu sau từ TYPE, khai báo biến tệp phần khai báo biến

Ví dụ 2.6: Type

(5)

TSN= File of MSN; {định nghĩa tệp TSN có phần tử mảng số nguyên} TCV=File of String[80]; {định nghĩa tệp TCV có phần tử chuỗi có độ dài 80 ký tự

Bangdiem= Record ……

End;

TBD= File of Bangdiem;

Var:

Tep1: TSN; Tep2: TCV; Tep3: TBD;

* Định nghĩa trực tiếp biến kiểu tệp phần khai báo biến Var

Tep4:File of Array[1 5] of String[80]; Tep5: File of Bangdiem;

2 Truy nhập vào tệp:

Turbo Pascal xử lý loại tệp : Tệp truy nhập tệp truy nhập trực tiếp

(6)

* Tệp truy nhập trực tiếp: tệp truy nhập vào phần tử tệp Muốn truy nhập trực tiếp phải dùng thủ tục Seek (số hiệu phần tử)

* Mở tệp:

Để mở tệp chuẩn bị lưu trữ liệu, ta sử dụng thủ tục chuẩn sau đây: ASSIGN(biến tệp, tên tệp);

REWRITE(biến tệp); Trong đó:

Biến tệp: tên biến tệp khai báo sau từ khóa VAR Tên tệp: Là tên ta chọn để ghi liệu vào đĩa Ví dụ : ASSIGN(f, ‘a:\baitap.txt’);

REWRITE(f); {khởi tạo tệp rỗng}

Sau thủ tục trên, để tiến hành ghi liệu vào tệp ta lại dùng thủ tục WRITE(…):

Cách viết:

WRITE(biến tệp, giá trị cần ghi vào tệp); Cuối cùng, ta phải đóng tệp thủ tục:

CLOSE(biến tệp); II Các loại tệp

1 Tệp văn bản:

a Khai báo tệp văn bản:

Tệp văn khai báo trực tiếp phần khai báo biến: Var Bientep:Text;

(7)

Truy nhập vào tệp hiểu nhập liệu vào tệp, ghi lại liệu thiết bị nhớ ngoài, đọc liệu hình máy in xử lý

* Mở tệp để ghi:

Assign(bientep, tentep); Rewrite(bientep);

* Mở tệp có để ghi thêm: Assign(bientep, tentep); Append(bientep);

* Mở tệp để đọc liệu: Assign(bientep, tentep); Reset(bientep);

c Ghi liệu vào tệp

Sau mở tệp dùng thủ tục Write Writeln để ghi liệu vào tệp

Ví dụ 2.7:

Var T1:Text; Begin

Assign(T1,’Dulieu.dat’); Rewrite(T1);

Writeln(T1,’Tep van ban’); Write(T1,123);

Write(T1,’ ’,123.45); Writeln(T1);

(8)

End

Dữ liệu ghi vào tệp sau: Tep van ban

123 1.234500000E+02 Dòng trống

d Đọc liệu từ tệp văn bản

Sau tiến hành mở tệp, trỏ tệp đặt dòng đầu.Ta dùng thủ tục Read Readln để đọc liệu từ dòng thời gán vào biến tương ứng, viết biến hình máy in

Để viết tồn liệu từ tệp văn thiết bị ngồi thì, lệnh đọc viết phải lặp lặp lại từ dòng đến dòng cuối cùng, nghĩa phải sử dụng vòng lặp:

While not eof(Bientep) Begin

Readln(Bientep, Dong); {biến Dong phải khai báo trước, kiểu String}

Write(Dong); End;

Hoặc:

(9)

Readln(Bientep,Dong); Write(Dong);

End;

Lưu ý: Muốn lấy lại kiểu liệu nhập vào tệp văn biến phải nhập dịng

Ví dụ 2.8:

Xây dựng chương trình đơn giản để quản lý công chức Dữ liệu nhập bao gồm: Họ tên, Hệ số lương số Dữ liệu xuất hình bao gồm Họ tên, Hệ số lương, Số Lương tháng ( tính theo quy định nhà nước = heso*540000)

Chương trình đặt hai khả lựa chọn:

Nếu tệp liệu tồn nhập thêm người Nếu tệp chưa có mở tệp

Trong trường hợp cho biết số người cần nhập Dữ liệu in dạng bảng

Program Quan_ly_can_bo; Uses Crt;

Var f:Text; hoten:String[20]; c1, heso:real; c2,i,n,socon:byte; Ten:string[12];

Begin

Clrscr;

(10)

Reset(f);

If IOResult=0 then Append(f); Else Rewrite(f);

Write(‘nhap bao nhieu nguoi’); readln(n); For i:=1 to n

Begin

Write(‘Hoten’); Readln(hoten); Write(‘He so’); Readln(heso); Write(‘So con’); Readln(socon); Writeln(f,hoten);

Writeln(f,heso:4:2); Writeln(f,socon); End;

Close(f); Assign(f,ten); Reset(f);

Writeln(‘ -‘); Writeln (‘| Ho va ten | Hs | socon | Luong |’);

Writeln(‘ -‘) While not eof(f)

Begin

(11)

Readln(f,heso); Readln(f,socon);

Writeln(‘|’,ten:19,’|’,heso:4:2,’|’,socon:4,’|’,heso*540000:10:2,’|’); End;

Readln; End

2 Tệp có kiểu: a Đọc ghi :

- Ghi lên tệp: Write(bientep,bien1,bien2,…); bien1,bien2,…là biến kiểu với biến tệp - Đọc tệp: Read(bientep,bien1,bien2,…);

Chú ý:

Khác với tệp văn bản, việc ghi đọc tệp có kiểu khơng sử dụng lệnh Writeln readln nghĩa tệp có kiểu khơng ghi liệu thành dòng Các phần tử tệp có kiểu ghi liên tục nhớ có ký hiệu kết thúc tệp EOF

Khi đọc ghi xong phần tử trỏ tệp tự động chuyển đến vị trí

b Truy nhập vào tệp: Seek(bientep,i); i=0,1,2,… Thủ tục seek định vị trỏ vị trí thứ i tệp c Các hàm xử lý tệp:

* Filesize(bientep) cho biết số phần tử có tệp

(12)

* Eof(Bientep) cho giá trị True trỏ tệp vị trí cuối tệp, ngược lại cho giá trị False

Ví dụ 2.9:

Tạo tệp lấy tên TEPCK.DAT để vừa ghi vừa sửa liệu:

Program Tep_co_kieu: Uses crt;

Var bt:file of byte; i:byte; n:real; Begin

Clrscr;

Assign(bt,’ TEPCK.DAT’); Rewrite(bt);

For i:=0 to write(bt,i); {ghi vào tệp số nguyên} Reset(bt);

Writeln(‘Du lieu luu tru tep TEPCK.DAT’); While not eof(BT)

Begin

Read(bt,i); write(i:5); End;

Writeln;

Seek(bt,3); {định vị trỏ phần tử thứ 4} Textcolor(magenta);

(13)

Writeln (‘So tep o vi trí thu 4:’,i); i:=33;

seek(bt,3); write(bt,i);

seek(bt,3); read(bt,i);

writeln(‘So moi tep o vi tri 4:,i);

writeln(‘vi tri hien thoi cua tro:’, filepos(bt)); readln;

close(bt); end

3 Tệp không kiểu: a Khai báo biến tệp:

Var Bientep:File; b Mở tệp để ghi-đọc: * Mở tệp để ghi:

Assign(bientep, tentep); Rewrite(bientep, n); * Mở tệp để đọc liệu:

Assign(bientep, tentep); Reset(bientep, n);

(14)

* Đọc tệp không định kiểu: BlockRead(bientep,biennho,i,j);

* biennho: biến khai báo kiểu với phần tử tệp, biến nhớ đóng vai trị vùng nhớ đệm để lưu trữ liệu đọc từ phần tử tệp * i: số phần tử quy định cho lần đọc

* j: biến kiểu Word, dùng để ghi lại số phần tử thực đọc * Ghi tệp không định kiểu:

BlockWrite(bientep,biennho,i); d Truy nhập tệp không định kiểu

Tệp không kiểu truy nhập tệp có kiểu nghĩa dùng thủ tục Seek(bientep,n) để truy nhập vào phần tử thứ n+1 tệp

Lưu ý với tệp không kiểu, lần trỏ dịch chuyển dịch chuyển số byte số byte quy định lệnh Rewrite() Reset()

Ví dụ 2.10

Nhập vào tệp phần tử record sau viết chúng hình Trong phần khai báo record chọn Hoten string[15] Diem thuộc kiểu Real

Program tep_khong_kieu; Uses Crt;

Type hs=record

Hoten:string[15]; Diem:real;

(15)

bt:file; k,nguoi:hs; i,j:byte; begin

clrscr;

assign(bt,’tep0kieu.dat’); rewrite(bt,22);

write(‘Nhap bao nhieu nguoi?’); readln(n);

for i:=1 to n with nguoi begin

write(‘ Ho va ten:’); readln(hoten); write(“Diem tong:’); readln(diem); blockwrite(bt,nguoi,1);

end;

for i:=1 to n-1 begin

seek(bt,i);

blockread(bt,k,1); textcolor(red);

with k writeln(hoten.’ ‘,diem:5:2); end;

(16)

Ngày đăng: 01/02/2021, 08:38

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan