skkn GIÚP dạy tốt bài KIỂU dữ LIỆU tệp

16 623 0
skkn GIÚP dạy tốt bài KIỂU dữ LIỆU tệp

Đ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

GV:Phan Thị Tài Trường THPT Ngơ Quyền 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Ổ: TỐN-TIN Năm 2012 SƠ LƯC LÝ LỊCH KHOA HỌC GV:Phan Thị Tài I Trường THPT Ngơ Quyền THÔNG TIN CHUNG VỀ CÁ NHÂN Họ tên: Phan Thị Tài Ngày tháng năm sinh: 20-06-1983 Giới tính: Nữ Đòa chỉ:20/2-Tổ 12-Khu phố 1_P Tân Hiệp-TP Biên Hòa Điện thoại: 0909790083 Email: phanthitai@gmail.com Chức vụ: Giáo viên Đơ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: Lónh vực chuyên môn có kinh nghiệm: Giảng dạy môn Tin Số năm giảng dạy: GV:Phan Thị Tài Trường THPT Ngơ Quyền LÍ DO CHỌN ĐỀ TÀI 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 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 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ó, Với nội dung phong phú, gần gũi với thực tế giúp HS nắm bắt dễ dàng mà khơng cảm thấy q khó hay trừu tượng Tơi tin với nội dung cách dạy hứng thú đem lại tiết học thành cơng cho Thầy lẫ trò GV:Phan Thị Tài Trường THPT Ngơ Quyền 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ớ ngồi 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 ( khơng phải 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 MSN=Array[1 100] of integer; {định nghĩa mảng 100 số ngun} GV:Phan Thị Tài Trường THPT Ngơ Quyền TSN= File of MSN; {định nghĩa tệp TSN có phần tử mảng số ngun} 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; 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 * Tệp truy nhập tuần tự: để truy nhập vào phần tử đó, ta bắt buộc phải qua phần tử trước Nếu muốn thêm phần tử vào tệp thêm vào cuối tệp GV:Phan Thị Tài Trường THPT Ngơ Quyền * 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 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; b Truy nhập vào tệp: GV:Phan Thị Tài Trường THPT Ngơ Quyền 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ớ ngồ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); GV:Phan Thị Tài Trường THPT Ngơ Quyền Close(T1); 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 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: For i:=1 to filesize(Bientep) GV:Phan Thị Tài Trường THPT Ngơ Quyền Begin 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; Write(‘cho biet ten tep’); readln(ten); GV:Phan Thị Tài Trường THPT Ngơ Quyền Assign(f,ten); 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) 10 GV:Phan Thị Tài Trường THPT Ngơ Quyền Begin Readln(f,hoten); Readln(f,heso); Readln(f,socon); Writeln(‘|’,ten:19,’|’,heso:4:2,’|’,socon:4,’|’,heso*540000:10:2,’|’); End; Readln; End 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 11 GV:Phan Thị Tài Trường THPT Ngơ Quyền c Các hàm xử lý tệp: * Filesize(bientep) cho biết số phần tử có tệp * FilePos(bientep) cho biết vị trí thời trỏ tệp * 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ố ngun} Reset(bt); Writeln(‘Du lieu luu tru tep TEPCK.DAT’); While not eof(BT) Begin Read(bt,i); write(i:5); End; Writeln; 12 GV:Phan Thị Tài Trường THPT Ngơ Quyền Seek(bt,3); {định vị trỏ phần tử thứ 4} Textcolor(magenta); Read(bt,i); 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 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: 13 GV:Phan Thị Tài Trường THPT Ngơ Quyền Assign(bientep, tentep); Reset(bientep, n); Với n độ lớn tính theo Byte c Đọc ghi tệp khơng định kiểu: * Đọ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 14 GV:Phan Thị Tài Trường THPT Ngơ Quyền Hoten:string[15]; Diem:real; End; Var 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); 15 GV:Phan Thị Tài Trường THPT Ngơ Quyền with k writeln(hoten.’ ‘,diem:5:2); end; ose(bt); Readln; End 16 [...]... Writeln(‘|’,ten:19,’|’,heso:4:2,’|’,socon:4,’|’,heso*540000:10:2,’|’); End; Readln; End 2 Tệp có kiểu: a Đọc và ghi : - Ghi lên tệp: Write(bientep,bien1,bien2,…); bien1,bien2,…là các biến cùng 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 và đọc tệp có kiểu không sử dụng các lệnh Writeln hoặc readln nghĩa là tệp có kiểu không ghi dữ liệu thành các dòng Các phần tử của tệp có kiểu được ghi liên tục trong các... đã đượ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 * i: là số phần tử quy định cho mỗi lần đọc * j: là biến kiểu Word, dùng để ghi lại số phần tử thực sự đã đượ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 cũng được truy nhập như tệp có kiểu nghĩa là cũng dùng... 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 mới để ghi: Assign(bientep, tentep); Rewrite(bientep, n); * Mở tệp để đọc dữ liệu: 13 GV:Phan Thị Tài Trường THPT Ngô Quyền Assign(bientep, tentep); Reset(bientep, n); Với n là độ lớn tính theo Byte c Đọc và ghi tệp không định kiểu: * Đọc tệp không định kiểu: BlockRead(bientep,biennho,i,j);... hiệu kết thúc tệp EOF Khi chúng ta đọc hoặc ghi xong một phần tử thì con trỏ tệp sẽ tự động chuyển đến vị trí kế tiếp b Truy nhập vào tệp: Seek(bientep,i); i=0,1,2,… Thủ tục seek sẽ định vị con trỏ tại vị trí thứ i của tệp 11 GV:Phan Thị Tài Trường THPT Ngô Quyền c Các hàm xử lý tệp: * Filesize(bientep) cho biết số phần tử có trong tệp * FilePos(bientep) cho biết vị trí hiện thời của con trỏ tệp * Eof(Bientep)... con trỏ tệp * Eof(Bientep) cho giá trị là True nếu con trỏ tệp ở vị trí cuối tệp, ngược lại cho giá trị False Ví dụ 2.9: Tạo một tệp lấy tên là TEPCK.DAT để vừa ghi vừa sửa dữ 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 5 do write(bt,i); {ghi vào tệp 5 số nguyên} Reset(bt); Writeln(‘Du lieu luu tru trong tep... Seek(bientep,n) để truy nhập vào phần tử thứ n+1 của tệp Lưu ý là với tệp không kiểu, mỗi lần con trỏ dịch chuyển nó sẽ dịch chuyển một số byte đúng bằng số byte đã quy định trong lệnh Rewrite() hoặc Reset() Ví dụ 2.10 Nhập vào tệp các phần tử là record và sau đó viết chúng ra màn hình Trong phần khai báo record chọn Hoten là string[15] và Diem thuộc kiểu Real Program tep_khong_kieu; Uses Crt; Type hs=record ... ghi vào tệp văn cần Byte ( khơng phải 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... 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. .. Ngơ Quyền 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ớ ngồi 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

Ngày đăng: 03/12/2015, 22:08

Từ khóa liên quan

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

Tài liệu liên quan