Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
149 KB
Nội dung
MỤC LỤC 1.MỞ ĐẦU 1.1 Lí chọn đề tài 1.2 Mục đích nhiệm vụ nghiên cứu 1.3 Đối tượng phạm vi nghiên cứu 1.4 Phương pháp nghiên cứu 1.5 Tính đề tài .2 NỘI DUNG 2.1 Cơ sở lí luận sáng kiến kinh nghiệm 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm 2.3 Các sáng kiến kinh nghiệm sử dụng để giải vấn đề 2.4 Hiệu sáng kiến kinh nghiệm hoạt động giáo dục, với thân, với đồng nghiệp nhà trường 15 KẾT LUẬN, KIẾN NGHỊ 16 3.1 Kết luận .16 3.2 Kiến nghị 16 TÀI LIỆU THAM KHẢO 18 1 MỞ ĐẦU 1.1 Lí chọn đề tài Hơn 12 năm dạy trường cũ trường THPT Lê Viết Tạo, nhận thấy đa số học sinh cho tin học 11 môn học khó liên quan đến việc lập trình để giải tốn Nó địi hỏi em phải có tư tốn học, có cách giải để đưa thuật toán toán Đặc biệt chương V- Tệp thao tác với tệp, dạy đến phần thấy học sinh mơ hồ Hơn phần sách giáo khoa khơng có thực hành nên học sinh cịn nhiều vướng mắc giải tốn liên quan đến kiểu liệu tệp Năm học chuyển trường THPT Hậu Lộc 4, với điều kiện phịng máy nhà trường có nên tơi cố gắng tìm hiểu kiểu liệu tệp, xây dựng áp dụng sáng kiến kinh nghiệm “Hệ thống số vấn đề giúp học sinh giải tốt thực hành kiểu tệp tin học 11” 1.2 Mục đích nhiệm vụ nghiên cứu Mục đích đề tài tơi muốn hướng đến giúp học sinh thực thực hành cách hiệu tập kiểu tệp văn mà cụ thể viết chương trình máy tính để ghi liệu vào tệp, đọc liệu từ tệp Nhiệm vụ đề tài hướng dẫn người học giải vấn đề xung quanh việc dùng Pascal để: Khởi tạo tệp, ghi liệu lần thực chương trình vào tệp, ghi thêm liệu vào tệp có nội dung, đọc liệu kiểu xâu dòng, đọc liệu kiểu số, đọc liệu từ tệp có nội dung kiểu xâu kiểu số,… 1.3 Đối tượng nghiên cứu Đề tài nghiên cứu thao tác đọc/ghi kiểu tệp văn Pascal chương trình tin học 11 nên đối tượng khảo sát học sinh khối 11 em đội tuyển tỉnh 1.4 Phương pháp nghiên cứu Ở vấn đề nghiên cứu tơi sử dụng phương pháp phân tích để làm rõ nội dung Phương pháp phân tích đặc biệt quan trọng chìa khóa để mở kiến thức dễ tiếp thu 1.5 Tính đề tài Đề tài nhằm hướng dẫn học sinh lớp thực hành tập đơn giản kiểu tệp văn Pascal, giúp em giải thao tác tệp đọc ghi tệp Những điều sách giáo khoa nói chung chung, chưa cụ thể rõ ràng không hướng dẫn học sinh thực hành tập kiểu tệp (cách khởi tạo tệp để đọc, ghi thêm liệu vào tệp, ghi tất input output lần thực chương trình vào tệp, cách để kiểm tra kết đọc từ tệp hay kiểm tra kết ghi tệp,…) Những vấn đề trình bày đề tài 2 NỘI DUNG 2.1 Cơ sở lí luận Pascal kiểu tệp văn Trong chương trình tin học 11 học sinh làm quen với Pascal Trong kiểu tệp văn nội dung đề cập đến Tệp văn tệp mà liệu ghi dạng kí tự theo mã ASCII Trong tệp văn bản, dãy kí tự kết thúc kí tự xuống dịng hay kí tự kết thúc tệp tạo thành dịng Tất liệu thuộc kiểu liệu mà học sinh học lưu trữ nhớ (RAM) liệu bị tắt máy Với số tốn có khối lượng liệu lớn, có u cầu lưu trữ để xử lí nhiều lần, cần có kiểu liệu tệp (file) Với lợi ích kiểu tệp đề cập việc sử dụng kiểu tệp cách thành thạo trình lập trình điểu thật quan trọng cần thiết Thao tác với tệp Qua trình tìm hiểu từ sách giáo khoa tin học 11, sách giáo viên tin học 11 số tài liệu mạng tơi xin trình bày kiến thức kiểu tệp văn để hỗ trợ cho học sinh q trình giải (thực hành) tốn đơn giản kiểu liệu Khai báo kiểu tệp văn Khai báo biến tệp để sau thực thao tác với tệp thông qua biến tệp Cú pháp khai báo: var : text; Ví dụ: var f: text; Gắn tên tệp Trong lập trình ta khơng thao tác trực tiếp với tệp liệu đĩa mà thông qua biến tệp Gắn tên tệp với biến tệp thực chất tạo tham chiếu tệp đĩa biến tệp chương trình, làm cho biến tệp trở thành đại diện cho tệp Cú pháp: assign(, ); VD: assign(f, “E:\kieutep.doc‟); Giáo viên cần phân tích cho học sinh thấy rõ cần thiết phải gắn tên tệp Trong cú pháp, tên tệp xâu kí tự giá trị biểu thức kiểu xâu kí tự (để hệ điều hành xác định tệp) Tất phép toán biến tệp tác động tới tệp Sau gọi thủ tục asign, liên kết biến tệp tệp kết thúc có lời gọi asign khác thực biến tệp (nghĩa lúc biến tệp chuyển sang gắn cho tên tệp khác) Tên tệp đường dẫn chứa ổ đĩa, danh sách thư mục liên tiếp cách dấu đường dẫn (\), cuối tên tệp: :\\\ \\ Độ dài lớn tên tệp 79 kí tự Đặc biệt tên tệp xâu rỗng (độ dài xâu 0) biến tệp gắn cho tên tệp vào/ra chuẩn Các tệp vào chuẩn quy định tương ứng với thiết bị tùy thuộc vào mở rộng chương trình dịch Pascal, thường quy định tệp input chuẩn bàn phím, tệp output chuẩn hình Mở tệp để ghi Trước ghi liệu vào tệp ta phải dùng thủ tục mở tệp để ghi Thủ tục gọi sau gắn tên tệp Cú pháp sau: rewrite(); Khi thực thủ tục rewrite(), thư mục gốc ổ đĩa chưa có tệp cần ghi liệu tệp tạo với nội dung rỗng (tên tệp xác định thủ tục gắn tên tệp Nếu có, nội dung cũ bị xóa để chuẩn bị ghi liệu vào Ví dụ: assign(f,‟e:\tong2so.doc‟); rewrite(f); Ghi liệu vào tệp Việc ghi liệu vào tệp giống ghi liệu hình Câu lệnh dùng thủ tục ghi có dạng: Write(,); Writeln(,); Trong đó, danh sách kết gồm nhiều phần tử Phần tử biến đơn biểu thức (số học, quan hệ lôgic) xâu Trường hợp có nhiều phần tử phần tử ngăn cách dấu phẩy Khi hai kết liền kiểu số thì cần xen vào hai kết kết trung gian kí tự dấu cách Ví dụ, write(f, x,„ „,y) Trong f biến tệp, x y hai biểu thức số Trước gọi thủ tục này, tệp tương ứng với biến tệp phải mở Thủ tục write ghi kết theo danh sách kết vào tệp kể từ vị trí thời trỏ tệp Ghi thêm liệu vào tệp có nội dung Đây nội dung không đề cập chương trình sách giáo khoa tơi nghĩ thật cần thiết nhiều tình cụ thể Để ghi thêm liệu vào tệp có nội dung ta dùng thủ tục append có cú pháp: append(); Ví dụ: append(f); Sau gọi thủ tục append tệp sẵn sàng để ghi liệu vào Lưu ý: Trong chương trình muốn ghi thêm liệu khơng thể đồng thời sử dụng thủ tục rewrite append dùng rewite nội dung tệp bị xóa (nếu tệp có nội dung) Vì mục đích ghi thêm liệu vào không thực ý muốn Mở tệp để đọc Câu lệnh sử dụng thủ tục reset mở tệp văn tồn để đọc liệu Cú pháp: reset(); Ví dụ: reset(f); Trong cú pháp, biến tệp phải gắn với tên tệp (dùng asign) Nếu tệp khơng tồn thực reset gặp lỗi Nếu tệp mở đóng lại sau mở lại Vị trí trỏ tệp sau lời gọi reset đầu tệp Đọc liệu từ tệp Cú pháp đọc tệp văn bản: Read(, ); Hoặc Readln(, ); Ví dụ: read(f, x, y); readln(f, x, y); Thủ tục read ghi xong trỏ tệp khơng xuống dịng tiếp theo, thủ tục readln ghi xong trỏ tệp xuống đầu dòng Danh sách biến nhiều tên biến đơn Trong trường hợp nhiều biến biến cách dấu phẩy Các liệu cần đọc tệp gán vào danh sách biến phải có kiểu tương ứng với kiểu biến danh sách biến Nếu sai kiểu chương trình mắc lỗi Lỗi thường gặp biến có kiểu số, liệu đọc lại kiểu xâu Ví dụ: tệp docdulieu.txt có dịng tin hoc 11 Xét chương trình Var f: text; s: string[6]; x: longint; begin assign(f,‘docdulieu.txt’); reset(f); read(f, s, x); writeln(s); writeln(x); readln end Chương trình mắc lỗi “Invalid numberic format” sau đọc s = “tin ho‟, đọc liệu cho x mắc lỗi mắc lỗi vì, “c‟ không dạng số Nếu thay lại khai báo s:string[7] string[8] chương trình khơng mắc lỗi thực đọc tệp, kết hình Với biến kiểu xâu, thủ tục read đọc kí tự dịng vào biến (loại trừ kí tự đánh dấu hết dịng hết tệp) Số kí tự đọc vào biến xâu độ dài khai báo xâu Với biến kiểu nguyên thực, thủ tục read không đọc dấu cách, dấu tab dấu xuống dòng đứng trước xâu chữ số Nếu xâu chữ số không phù hợp với kiểu biến tương ứng xuất lỗi vào/ra (I/O) Trong trường hợp ngược lại, giá trị kiểu số tương ứng xâu chữ số gán cho biến Lệnh read bắt đầu dấu cách, dấu tab, kí tự hết dịng chúng lại bỏ qua Những dấu vạch định cho xâu chữ số Đóng tệp Cú pháp: close(); Trong cú pháp, biến tệp gắn với tệp mở reset, rewrite append thời điểm trước để mở tệp Sau lệnh close, tệp gắn với biến tệp hoàn thành cập nhật sau đóng lại Chương trình trả lại quyền quản lí tệp cho hệ điều hành Nếu thực ghi liệu vào tệp mà khơng đóng tệp khơng có liệu ghi ghi phần vào tệp, nguyên nhân liệu chứa nhớ đệm chưa chuyển kịp vào đĩa chương trình bị ngắt Một số hàm thủ tục chuẩn thường dùng thao tác tệp Hàm EOF: trả lại giá trị true trỏ tệp vị trí cuối tệp, ngược lại trả giá trị false Hàm EOL: trỏ tệp vị trí cuối dịng trả giá trị true, ngược lại trả giá trị false Vì muốn đọc liệu dòng hay tệp ta cần dùng đến hai hàm Việc áp dụng trình bày phần đọc liệu từ tệp đề tài 2.2.Thực trạng vấn đề nghiên cứu Trường THPT Hậu lộc trường thuộc vùng nông thôn huyện, nhiều học sinh khơng có máy tính cá nhân để hỗ trợ cho việc học nên học sinh chủ yếu thực hành tin học phòng máy nhà trường Điều nhiều ảnh hưởng đến khả tự rèn luyện kiến thức tin học em Bên cạnh học sinh 11 việc học Pascal nỗi “nhọc nhằn” với đa số học sinh trường Qua khảo sát lớp dạy qua nội dung mà đề tài nghiên cứu có đa số học sinh khơng biết viết chương trình đơn giản để ghi liệu vào tệp đọc liệu từ tệp ghi kết đọc hình Các em biết cú pháp khai báo, gắn tên tệp, thao tác với tệp ví dụ riêng lẻ mà khơng hệ thống lại thành chương trình hoàn chỉnh Nguyên nhân do: - Thời lượng phân phối chương trình khơng đủ để vừa cho học sinh học lý thuyết thực hành sau đó; - Nội dung sách giáo khoa khơng có tập thực hành cho nội dung đồng thời không nêu yếu tố để chương trình có sử dụng kiểu tệp chạy máy; - Phần mở rộng tệp ghi sách giáo khoa xa lạ với học sinh Do đó, chạy chương trình khơng biết cách để kiểm tra kết quả; - Thiếu kiến thức để viết chương trình đơn giản; - Khơng có niềm đam mê dành cho môn học 2.3 Các sáng kiến kinh nghiệm sử dụng để giải vấn đề Sau trình bày xong phần lý thuyết phần sở lí luận, giáo viên phát cho học sinh phiếu tập thực hành kiểu tệp văn Cụ thể biện pháp tiến hành hướng dẫn thực hành tập sau: Ghi liệu vào tệp So sánh thủ tục ghi liệu hình thủ tục ghi tệp Học sinh dễ dàng trả lời thông qua việc so sánh cú pháp thủ tục Giống nhau: dùng tên thủ tục write writeln, phần tử danh sách kết quả; khác nhau: thủ tục ghi tệp có thêm biến tệp Tuy nhiên giáo viên cần nhấn mạnh cho học sinh nội dung sau: muốn ghi liệu vào tệp nhiều hàng cần dùng thủ tục writeln (ghi xong xuống dòng để chuẩn bị ghi tiếp dòng sau) Điều tương tự ghi liệu hình Để làm rõ nội dung gắn tên tệp, so sánh việc ghi liệu hình ghi tệp tơi đưa vài tập ví dụ sau: Ví dụ1 : Hãy viết chương trình Pascal tính tổng số (ghi kết hình đồng thời ghi số nhập từ bàn phím tổng chúng vào tệp “e:\tong2so.doc”) Giáo viên yêu cầu học sinh viết chương trình nhập số từ bàn phím, tính tổng chúng xuất kết hình Sau bổ sung vào câu lệnh để ghi giá trị biến nhập, kết tổng chúng Sau đó, giáo viên cần mở tệp ghi xem nội dung cần ghi vào tệp có thực ghi vào tệp chưa (tệp tong2so.doc) đồng thời yêu cầu em so sánh nội dung ghi tệp nội dung ghi hình Chương trình Pascal: program tong2so; uses crt; var f:text; x, a, b:integer; begin clrscr; write('nhap so: '); readln(a, b); x:=a+b; writeln('tong cua so da nhap: ',x); assign(f,'e:\tong2so.doc'); rewrite(f); writeln(f,'a= ',a,' b= ',b); writeln(f,'tong cua so da nhap: ',x); close(f); readln end Kết sau thực chương trình Nội dung ghi vào tệp “e:\tong2so.doc‟ Như vậy, muốn ghi nhiều dịng liệu vào tệp thêm thủ tục Writeln(,); Ghi vào tệp tất liệu lần thực chương trình GV đặt cho em vấn đề sau: - Nội dung cần ghi lần thực chương trình có ghi vào tệp khơng? Tại sao? - Làm để ghi tất liệu (kết thực chương trình) lần thực chương trình? Điều sách giáo khoa hồn tồn khơng đề cập tới khơng tìm lời giải đáp cho HS khơng thể làm cho học sinh hiểu rõ ghi tệp Do tơi nhận thấy giải vấn đề thực cần thiết Câu hỏi thứ học sinh trả lời sau: tệp ghi kết lần thực chương trình sau Vì sau lần thực chương trình thủ tục rewrite(f) lại gọi, điều có nghĩa nội dung ghi tệp xóa để sẵn sàng cho việc ghi liệu Câu hỏi thứ hai vấn đề quan trọng cần làm rõ ta dùng kiểu tệp để lưu lại nội dung lần thực chương trình để sử dụng sau với kiến thức mà sác giáo khoa cung cấp không đủ để giải vấn đề nên cần trợ giúp giáo viên Để ghi thêm nội dung vào tệp ta sử dụng thủ tục append() Thủ tục thay cho thủ tục rewrite() chương trình Chú ý thủ tục append() thay thủ tục rewrite() ta thực chương trình có rewrite() lần để máy tính khởi tạo tệp cần ghi Ví dụ Ghi tất liệu lần thực chương trình ví dụ vào p r o g r a m t o n g s o n h a p t h e m ; u s e s c r t ; v a r f : te xt ; adln(a, b); x:=a+b; writeln('tong cua so da nhap: ',x); assign(f,'e:\tong2so.doc'); apappend(f); writeln(f,'a= ',a,' b= ',b); writeln; writeln(f,'tong cua so da nhap: ',x); close(f); readln x , a , b : i n t e g e r ; End b e g i n cl rs cr ; wr it e( 'n p so : ') ; re Kết thực chương trình lần muốn ghi thêm liệu: Kết ghi tệp (sau lần thực chương trình): Kể từ muốn ghi thêm cần thực chương trình thêm lần Với kiến thức vừa nêu ghi input, outut tập trước vào tệp Ví dụ tốn giải phương trình bậc nhất, bậc hai,… Ghi thêm liệu vào tệp khởi tạo trước Nếu ta khởi tạo tệp đĩa nhập nội dung trực tiếp từ chương trình ứng dụng tạo tệp khởi tạo tệp rỗng việc ghi thêm liệu vào thực nào? Câu trả lời cần dùng thủ tục append sau thủ tục assign dùng thủ tục write(, ) để ghi liệu vào tệp Ví dụ Ghi thêm liệu vào tệp, liệu độc lập với liệu khởi tạo trước Nội dung tệp khởi tạo trước cách nhập trực tiếp Notepad (hoặc khởi tạo tệp rỗng): Vd: liệu ban đầu có: GV Hoang Thi Xinh Truong THPH Hau Loc Chương trình sử dụng thủ tục ghi thêm append(): Program nhap_them; Uses crt; Begin Clrscr; Assign(f,’e:\gv.txt’); append(f); writeln(f); writeln(f,’to TD,QP - Tin’); close(f); readln end Nội dung tệp ghi thêm: GV Hoang Thi Xinh Truong THPH Hau Loc To TD, QP- Tin Đọc liệu từ tệp Đọc liệu kiểu xâu dòng vào biến Với biến xâu thủ tục read đọc kí tự dịng vào biến (loại trừ kí tự đánh dấu hết dịng hết tệp) Số kí tự đọc vào biến xâu tối đa độ dài khai báo biến xâu Đọc liệu kiểu số Với biến kiểu nguyên thực, thủ tục read không đọc dấu cách, dấu tab dấu xuống dòng đứng trước xâu chữ số Nếu xâu chữ số không phù hợp với kiểu biến xuất lỗi vào/ra (I/O) Trong trường hợp ngược lại, giá trị kiểu số tương ứng xâu chữ số gán cho biến Lệnh read bắt đầu dấu cách, dấu tab kí tự hết dịng chúng lại bỏ qua Những dấu vạch định cho xâu chữ số Ví dụ sau làm rõ vấn đề Ví dụ Đọc xâu chữ số từ tệp vd4.txt có nội dung số ghi kết đọc hình: Những cách thực hiện: Cách program vd4_1; uses crt; var f:text; {khai bao bien tep f} x,y,z,t,v:integer; begin clrscr; assign(f,'e:\vd4.txt'); {gan ten tep} reset(f); {mo tep de doc} read(f, x,y,z,t,v); {lan luot doc du lieu vao cac bien} write(x,y,z,t,v); {xuat ket qua doc duoc man hinh} close(f); {dong tep} readln end Cách program vd4_2; uses crt; var f:text; x:integer; {khai bao bien tep f} {khai bao bien x co kieu nguyen} begin clrscr; assign(f,'e:\vd4.txt'); {gan ten tep} reset(f); {mo tep de doc} while not eof(f) {trong tro tep chua tro toi cuoi tep thi lam cong viec sau} begin read(f,x); write(x); {doc du lieu vao bien x} {ghi ket qua doc duoc man hinh} end; close(f); {dong tep} readln end Cách program vd4_3; uses crt; var f:text; {khai bao bien tep f} A:array[1 10] of integer;{khai bao bien A co kieu mang} begin clrscr; assign(f,'e:\vd4.txt'); {gan ten tep} reset(f); {mo tep de doc} while not eof(f) {trong tro tep chua tro toi cuoi tep thi lam cong viec sau} b e g i n e n d r e a d ( f , A [ i ] ) ; { d o c i ] } { g h i k e t q u a l i e u d o c v a o d u o c t u A [ end; w close(f); r readln i t e ( A [ i ] ) ; d u p h a n h} r a m a n h i n {dong tep} Cả cách cho kết sau: Bài tập vận dụng: Sau số tập vận dụng kiến thức đọc ghi liệu để giải toán đơn giản mà em gặp qua khác sử dụng kiểu tệp văn Các tập giúp em hiểu rõ tác dụng kiểu tệp Pascal giúp em rèn luyện kỹ để viết chương trình có sử dụng việc đọc ghi tệp Bài Cho tệp mang.txt có nội dung số nguyên sau: Hãy viết chương trình đọc liệu từ tệp Tính tổng giá trị đọc Ghi giá trị đọc từ tệp mang.txt tổng vào tệp tong.txt Chương trình giải tốn Pascal sau: program BT1; uses crt; var f1,f2:text; A:array[1 10] of integer; Tong:integer; i:byte; begin clrscr; assign(f1,'e:\mang.txt'); assign(f2,'e:\tong.txt'); reset(f1); rewrite(f2); tong:=0; for i:=1 to begin read(f1,A[i]); write(f2,A[i]); tong:=tong+A[i]; end; writeln(f2); write(f2,tong); close(f1); close(f2); readln end Bài Viết chương trình thực công việc sau: - Đọc số a, b, c từ tệp ptb2.txt - Giải phương trình bậc hai với hệ số a, b, c vừa đọc - Ghi kết giải phương trình bậc hai vào tệp ketqua.txt Chương trình giải tốn Pascal: program giaiptb2; uses crt; var f1,f2:text; a, b, c:real; d, x1, x2:real; begin assign(f1,'e:\ptb2.txt'); assign(f2,'e:\ketqua.txt'); reset(f1); rewrite(f2); read(f1, a, b, c); d:=b*b-4*a*c; if d