Thủ tục mở tệp để ghi dữ liệu: Rewrite; {mở ra để ghi dữ liệu vào} Khi gäi thñ tôc nµy th× tÖp cha cã tªn th× tÖp sÏ được tạo ra với nội dung rỗng còn nếu đã có tên thì néi dung cò sÏ b[r]
(1)Chương V Tệp và thao tác với tệp Bµi 14+15: KiÓu d÷ liÖu tÖp vµ thao t¸c víi tÖp I Mục đích yêu cầu KiÕn thøc - Häc sinh biÕt ®îc vai trß cña kiÓu d÷ liÖu tÖp - Häc sinh biÕt ®îc cã c¸ch ph©n lo¹i tÖp - Häc sinh biÕt khai b¸o biÕn tÖp vµ thao t¸c c¬ b¶n víi tÖp v¨n b¶n Kü n¨ng DÇn dÇn h×nh thµnh kü n¨ng vÒ thao t¸c víi tÖp v¨n b¶n Thái độ - RÌn luyÖn cho häc sinh cã ý thøc lu tr÷ d÷ liÖu mét c¸ch khoa häc, phßng chèng mÊt m¸t th«ng tin hoÆc nhiÔm vi rót II Phương pháp, dụng cụ - Sử dụng thuyết trình, giảng giải, gợi ý nêu vấn đề - Dïng b¶ng in s½n hinhg 16 SHK vµ chuÈn bÞ m¸y chiÕu III Néi dung Nội dung - Hoạt động giáo viên Hoạt động học sinh HĐ1: Đặt vấn đề HS: Chó y nghe gi¶ng Trong các thực hành đã học, sau chạy chương trình ta thấy kết in trên màn hình, nhiên muốn sử dụng kết đó sau thì không ®îc (nã kh«ng lu tr÷ l©u dµi ®îc) §Ó kh¾c phôc nhược điểm đó ta nghiên cứu liệu kiểu tệp Vai trß cña tÖp C_hái: Trong m¸y tÝnh cã nh÷ng lo¹i bé nhí nµo ? Hs Tr¶ lêi lo¹i bé nhí nµo kh«ng bÞ mÊt d÷ liÖu t¾t m¸y ? C_hỏi 2: Vậy theo em thì có các kiểu liệu đã học ®îc lu tr÷ ë bé nhí nµo ? C-Hái 3: Bé nhí hay bé nhí ngoµi cã dung lượng lớn ? Gv: Chèt l¹i: D÷ liÖu kiÓu tÖp ®îc lu tr÷ l©u dµi ë bé nhí ngoµi (§Üa tõ, CD, vµ kh«ng bÞ mÊt t¾t nguån ®iÖn Lượng liệu lưu trữ liệu trên tệp có thể lớn và phụ thuộc vào dung lượng đĩa Ph©n lo¹i tÖp vµ thao t¸c víi tÖp Gv: Giíi thiÖu cho häc sinh cã lo¹i tÖp ( kh«ng TÖp d÷ liÖu d¹ng v¨n b¶n xuÊt đòi hỏi học sinh hiểu cặn kẽ loại tệp) hiÖn ë d¹ng ë ®©u ? - Theo c¸ch tæ chøc d÷ liÖu: Tệp văn là tệp ghi dạng các kí tự theo b¶ng m· ASCII Trong tÖp v¨n b¶n d·y kÝ tù kÕt thóc bëi kÝ tù xuèng dßng hay kÝ tù kÕt thóc tÖp VÝ dô: TÖp h×nh ¶nh, ©m thanh… t¹o thµnh mét dßng TÖp d÷ liÖu cã cÊu tróc lµ tÖp mµ c¸c thµnh phÇn nó tổ chức theo cấu trúc định Lop11.com (2) - Theo c¸ch thøc truy cËp TÖp truy cËp tuÇn tù: B»ng c¸ch ®i tõ ®Çu tÖp vµ ®i qua các liệu đến vị trí cần truy cập Tệp truy cập trực tiếp: Cho phép tham chiếu đến liệu cần truy cập cách xác định trực tiếp vị trí liệu đó GV Có thao tác tệp là đọc và ghi d÷ liÖu ta xem xÐt ng«n ng÷ lËp tr×nh Pascal các thao tác đó đựơc thể nào tÖp v¨n b¶n ? Khai b¸o: Khai b¸o biÕn tÖp v¨n b¶n cã d¹ng Var <tªn biÕn tÖp> : Text; Vd: Var tep1,tep2:text; Thao t¸c víi tÖp a G¾n tªn tÖp Gv: Gi¶i thÝch cho häc sinh t¹i ph¶i g¾n tªn tÖp cho biÕn tÖp, råi ®a thñ tôc Để truy cập đến tệp ta thông qua tên tệp Tên tệp là biÕn x©u hoÆc h»ng x©u vÝ dô: 'Dulieu.dat' Trong lËp tr×nh ta kh«ng thao t¸c trùc tiÕp trªn tÖp mµ th«ng qua biÕn tÖp BiÕn tÖp ®îc NNLT sö dụng làm đại diện cho tệp Do để thao tác với tệp trước hết ta phải gắn tên tÖp cho biÕn tÖp b»ng thñ tôc Assign(<biÕn tÖp>, <tªn tÖp>); Trong đó: Biến tệp là biến khai báo mục Tªn tÖp lµ biÕn x©u hoÆc h»ng x©u VÝ dô: tªn tÖp:='Kq.txt' Tªn tÖp:='C:\TP\BaiTap\dulieu.int' VÝ dô g¾n tªn tÖp vµo biÕn: Assign(tep1,'kq.txt'); assign(tep2,'C;\Tp\baitap\dulieu.int'); b.Më tÖp XÐt t×nh huèng: em cÇn më më tin häc ra: Më để đọc và mở để ghi Thủ tục mở tệp để ghi liệu: Rewrite(<biến tệp>); {mở để ghi liệu vào} Khi gäi thñ tôc nµy th× tÖp cha cã tªn th× tÖp sÏ tạo với nội dung rỗng còn đã có tên thì néi dung cò sÏ bÞ xo¸ vµ chuÈn bÞ ghi d÷ liÖu míi vÝ dô: assign(tep1,'kq.txt'); Rewrite(tep1); Thủ tục mở tệp để đọc liệu Reset(<biến tệp>); {mở để đọc liệu vào} vÝ dô assign(<tep2,'c:\tp\baitap\dulieu.int'); reset(tep2); Nhấn mạnh trước sử dụng thủ tục trên ta phải gắn tên tệp cho biến tệp đồng thời biến tệp Lop11.com Häc sinh lÊy vÝ dô minh ho¹ Häc sinh chó ý nghe vµ ghi Hs tù ®a c¸ch khai b¸o tªn tÖp NÕu häc sinh kh¸ giái ta cã thÓt đưa thêm lệnh {$I-} trước lệnh Reset(bien tÖp); Hµm IoResult =0 nÕu më thµnh c«ng vµ kh¸c nÕu cã tÖp tån t¹i Tương tự với lệnh Rewrite Häc sinh ghi chÐp (3) phải khai báo từ trước c §äc, ghi tÖp v¨n b¶n Gv: Để nhập liệu từ bàn phím và để in liệu lªn mµn h×nh ta dïng thñ tôc g× ? Gv: Giới thiệu các thủ tục đọc liệu từ tệp và ghi Häc sinh tù lÊy vÝ dô d÷ liÖu vµo tÖp Thủ tục đọc liệu từ tệp: Read(<tªn biÕn tÖp>,< danh s¸ch biÕn>); HoÆc Hs tr¶ lêi c©u hái Readln(<tªn biÕn tÖp>,< danh s¸ch biÕn>); Ghi d÷ liÖu vµ tÖp: Write(<tªn biÕn tÖp>,< danh s¸ch kÕt qu¶>); HoÆc Writeln(<tªn biÕn tÖp>,< danh s¸ch kÕt qu¶>); VÝ dô ta khai b¸o nh sau: Var tep1, tep2:text; begin Hs ghi vµ tr¶ lêi sù kh¸c assign(tep1,'Dulieu.int'); gi÷a thñ tôc nhËp vµo tõ b¶n reset(tep1); phÝm vµ thñ tôc nhËp, vµ ghi d÷ assign(tep2,'Dulieu.out'); liÖu vµo tÖp rewrite(tep2); { có thủ tục đọc tệp: tep1 và ghi tệp: tep2 sau:} read(tep1,a,b); readln(tep1,a,b,c); write(tep2,c,d); writeln(tep2,a,c,(-b+sqrt(delta))/(2*a):5:2); * Một số hàm thường dùng tệp văn Hµm eof(<biÕn tÖp>); Trả kết true cuối tệp và ngược lại Hµm eoln(<biÕn tÖp>); Tr¶ vµ kÕt qu¶ true trá v¨n b¶n ®ang ë cuèi dßng d §ãng tÖp Đưa lý phải đóng tệp Vì không đóng tệp với việc ghi liệu không tån t¹i d÷ liÖu ë tÖp C©u lÖnh : Close(<biÕn tÖp>); vÝ dô: Close(tep1); Close(tep2); IV Cñng cè - Gäi häc sinh kh¸i qu¸t l¹i vai trß cña tÖp vµ ph©n lo¹i tÖp - Học sinh khái quát lại các thao tác phải thực đọc và ghi liệu từ tệp - Cho häc sinh lµm mét sè bµi tËp tr¾c nghiÖm kh¸ch quan Lop11.com (4) Hãy khoanh tròn vào đáp đúng câu hỏi sau: C©u 1: §Ó g¸n tÖp cho biÕn tÖp ta dïng thñ tôc a assign(<Tªn tÖp>,<biÕn tÖp>); b assign(<biÕn tÖp>,<tªn tÖp>); c assign(<biÕn tÖp>;<tªn tÖp>); b assign(<Tªn tÖp>.<biÕn tÖp>); Câu 2: Sau gán tên tệp cho biến tệp ta mở tệp để ghi liệu vào tệp ta dùng thñ tôc: a Reset(<biÕn tÖp>); b Reset(<tªn tÖp>); c Rewrite(<biÕn tÖp>); d Rewrite(<tªn tÖp>); Câu 3: Để đọc liệu từ tệp biến ta dùng thủ tục a Read(<tªn tÖp>,<danh s¸ch biÕn>); b Read(<biÕn tÖp>,<danh s¸ch biÕn>); c Write(<biÕn tÖp>,<danh s¸ch biÕn>); d writeln(<biÕn tÖp>,<danh s¸ch biÕn>); C©u4: D÷ liÖu kiÓu tÖp ®îc lu tr÷ a Trªn Rom b Chỉ trên đĩa cứng c §îc lu tr÷ trªn Ram d Trªn bé nhí ngoµi Câu Trong Pascal để khai báo biến tệp văn ta sử dụng cú pháp a Var < Tªn tÖp>: Text; b Var <tªn tÖp> : String; c Var < Tªn biÕn tÖp>: Text; c Var < tªn biÕn tÖp> : String; C©u6: §Ó thao t¸c víi tÖp a Ta cã thÓ g¸n tªn tÖp cho biÕn tÖp, hoÆc sö dông trùc tiÕp tªn tÖp còng ®îc b Ta nhÊt thiÕt ph¶i g¸n tªn tÖp cho tªn biÕn tÖp c Ta sử dụng trực tiếp tên tệp chương trình d Ta thiết phải sử dụng trực tiếp tên tệp chương trình Lop11.com (5)