Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
187,61 KB
Nội dung
SÁNG KIẾN KINH NGHIỆM ĐỀ TÀI: "XÂY DỰNG MỘT SỐ BÀI TẬP THỰC HÀNH VỚI TỆP" LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com A PHẦN MỞ ĐẦU I LÝ DO CHỌN ĐỀ TÀI - Hiện phân phối chương trình Tin học THPT có thay đổi giảm tải việc học mơn Tin học Có lược bớt phần, mục có học sinh khơng phải học mà đọc tham khảo thêm Bên cạnh để đảm bảo đủ số tiết học nên có tiết bổ sung tiết tập tập thực hành, nhằm đảm bảo cho học sinh nắm rõ hơn, vững phần lý thuyết học Tuy nhiên với tiết tập tập thực hành sách giáo khoa, sách giáo viên chưa có hướng dẫn cụ thể để đạt chuẩn chung lý thuyết Thông thường giáo viên linh động dựa vào điều kiện sở vật chất nhà trường, đặc biệt tuỳ vào đối tượng học sinh để cung cấp cho học sinh tập nhằm củng cố cho học sinh kiến thức phần lý thuyết học - Tin học 11 modul chương trình tương đối khó hệ thống modul kiến thức Tin học khối THPT Ở học sinh làm việc với ngơn ngữ lập trình ngơn ngữ lập trình cụ thể, với thực tiễn sở vật chất trường THPT Đông Sơn sử dụng ngơn ngữ lập trình Pascal để làm việc với học sinh học phần Theo phân phối chương trình, chương 5: Tệp thao tác với tệp Tin học 11 có tiết lý thuyết tiết tập thực hành Phần lý thuyết, sách giáo khoa cung cấp đầy đủ dễ hiểu học sinh Tuy nhiên phần tập thực hành chưa có Với lý tơi mạnh dạn đề xuất "Một số tập thực hành cách làm việc với tệp" cho tiết 39, 40 nhằm giúp học sinh nắm vững cách làm việc với tệp Tuy dạy dựa vào đối tượng học sinh, vào trọng tâm kiến thức chương trình, cịn mang tính chất cá nhân đề xuất, mong góp ý bạn đọc đồng nghiệp để tiết học trở thành chuẩn chung phân phối chương trình II MỤC ĐÍCH CỦA ĐỀ TÀI Sử dụng toán cụ thể trước hết để học sinh nắm cú pháp, ý nghĩa thao tác xử lý tệp Và thơng qua ví dụ hướng dẩn học sinh sử dụng thục, linh động xử lý liệu tệp III NHIỆM VỤ CỦA ĐỀ TÀI LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đưa số tập tệp để học sinh thảo luận, làm việc qua nắm vững câu thao tác với tệp cách làm việc với tệp Hình thành học sinh kỹ phân tích, xử lý vấn đề liên quan đến kiểu liệu tệp trình lập trình IV ĐỐI TƯỢNG NGHIÊN CỨU Học sinh khối 11 trường THPT ĐÔNG SƠN Sử dụng máy tính để chạy chương trình thao tác với tệp V PHƯƠNG PHÁP NGHIÊN CỨU - Kết hợp thực tiễn giáo dục trường THPT ĐÔNG SƠN - Có tham khảo tài liệu ngơn ngữ lập trình Pascal tài liệu sáng kiến kinh nghiệm LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com B NỘI DUNG I CƠ SỞ LÝ LUẬN Khi học sinh học học Bài 14 - 15: Kiểu liệu tệp - Thao tác với tệp Học sinh có nhiều khó khăn, nhầm lẫn việc xác định thao tác xử lý tệp II NỘI DUNG VÀ GIẢI PHÁP THỰC HIỆN CÁC THAO TÁC VỚI TỆP * 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 :Text; * Mở tệp để ghi liệu: Để 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 dùng thủ tục WRITE(…), WRITELN(… ): Cách viết: WRITE(biến tệp, giá trị cần ghi vào tệp); WRITELN(biến tệp, giá trị cần ghi vào tệp); * Mở tệp để đọc liệu: Để 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); RESET(biến tệp); Trong đó: LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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’); RESET(f); Sau thủ tục trên, để tiến hành đọc liệu vào tệp ta dùng thủ tục READ(…), READLN(… ): Cách viết: READ(biến tệp, giá trị cần ghi vào tệp); READLN(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); BÀI TẬP Bài toán 1: Cho số nguyên dương n (n≤12) Yêu cầu: tính n! Dữ liệu vào từ file ‘BT01.INP’ chứa giá trị số nguyên dương n Kết ghi vào file ‘BT01.OUT’ kết n! Xác định toán: Input: giá trị n Output: kết n! Giáo viên liên tưởng cho học sinh: Trước học này: Input: giá trị n (dữ liệu vào) nhập từ bàn phím Output: kết (dữ liệu ra) in hình Đến này: Input: giá trị n (dữ liệu vào) lấy (đọc) từ file liệu LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Output: kết (dữ liệu ra) đưa (ghi) vào file kết Khi để giải tốn, người viết chương trình phải tương tác với file: File chương trình (nếu dùng Pascal có phần mở rộng PAS) File chứa liệu vào (thường người ta để phần mở rộng INP) File chứa liệu – ghi kết (thường người ta để phần mở rộng OUT) Quan hệ file toán BT01.IN P BT01.PAS var begin BT01.OU T n,i:byte; gt:longint; f:text; 120 assign(f,'BT01.INP'); reset(f); read(f,n); close(f); gt:=1; for i:=2 to n gt:=gt*i; assign(f,'BT01.OUT'); rewrite(f); writeln(f,gt); close(f); end Giải thích: liệu (giá trị n) lấy từ file ‘BT01.INP’ cho chương trình BT01.PAS, sau tính kết (n!) ta ghi kết vào file ‘BT01.OUT’ Mơ hình quan hệ chung LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com File Input File Output File Chương trình Giáo viên trình bày cách đọc ghi file Một toán mà liệu đọc ghi vào file thường có thao tác sau: Khai báo biến file Đọc liệu file Tính tốn để có kết Lấy kết ghi vào file Khai báo biến file: Var :text; Var f:text; Ý nghĩa: khai báo biến f có kiểu file văn Đọc liệu file: Assign(,);reset(); Read(,); Hoặc Readln(,); Close(); {dòng 1} assign(f,'BT01.INP');reset(f); {dòng 2} read(f,n); {dòng 3} close(f); Ý nghĩa: Dòng 1: Mở file ‘BT01.INP’ để đọc nội dung LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Dòng 2: Đọc giá trị số nguyên file ‘BT01.INP’ gán cho biến n Dịng 3: Đóng file ‘BT01.INP’ để an toàn liệu Ghi kết vào file: Assign(,);rewrite(); write(,); Hoặc writeln(,); Close(); {dòng 1} assign(f,'BT01.OUT');rewrite(f); {dòng 2} writeln(f,gt); {dòng 3} close(f); Ý nghĩa: Dòng 1: Mở file ‘BT01.OUT’ để ghi nội dung Dòng 2: Ghi giá trị gt vào file ‘BT01.OUT’ Dịng 3: Đóng file ‘BT01.OUT’ để an tồn liệu Một vài điều cần quan tâm: Cấu trúc file văn bản: Dữ liệu file văn ký tự (bảng mã ASCII) Có số hàm chuẩn thường dùng đọc/ghi tệp văn là: * Hàm EoLn() : Trả giá trị True trỏ tệp tới cuối dòng * Hàm Eof(): Trả giá trị True trỏ tệp tới cuối tệp Ví dụ hình ảnh mơ tả cấu trúc file văn (chữ in đậm file hiện) File văn Eoln Eoln Eoln Eof LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Thủ tục đọc file: Read(,) Với thủ tục này, ta hiểu sau: đầu đọc đọc giá trị file gán cho biến có danh sách biến thủ tục, sau đầu đọc khơng thực việc xuống đầu dòng Thủ tục đọc file: Readln(,) Giống thủ tục Read, điểm khác biệt sau thực đọc gán giá trị cho biến xong đầu đọc xuống đấu dòng Thủ tục ghi file: write(,); writeln(,); Trong thao tác với file giống việc in kết hình (chỉ khác thay ta thực in kết ghi thứ vào file vậy) Bài toán 2: Cho số số nguyên dương n (n≤12) Yêu cầu: tính n! số Dữ liệu vào từ file ‘BT02.INP’ chứa giá trị số số nguyên dương n Kết ghi vào file ‘BT02.OUT’ kết n! Mỗi dòng file liệu vào chứa giá trị n tương ứng với giá trị n có kết file liệu Cũng giống toán 1, dòng file liệu vào chứa giá trị n tương ứng với giá trị n có kết file liệu Bài giải tham khảo: var n,i:byte; gt:longint; f,g:text; {dùng biến file f g} LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com begin assign(f,'BT02.INP');reset(f); {biến file f để làm file đọc liệu} assign(g,'BT02.OUT');rewrite(g); {biến file g làm file ghi liệu} while( not Eof(f)) {đọc chưa kết thúc file} begin read(f,n); {hoặc readln(f,n) được} gt:=1; for i:=2 to n gt:=gt*i; writeln(g,gt); end; close(f); close(g); end Bài toán 3: Cho dãy số nguyên gồm n phần tử Yêu cầu: Tìm giá trị lớn Dữ liệu vào từ file ‘BT03.INP’ Dòng đầu giá trị n (n≤100) Dòng thứ hai ghi n phần tử dãy (mỗi phần tử có giá trị tuyệt đối khơng vượt q 30000, hai phần tử kế cách khoảng trắng) Kết ghi vào file ‘BT03.OUT’ ghi giá trị tìm Bài giải tham khảo: var a:array[1 100] of integer; n,i:byte; max:integer; 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com f:text; begin assign(f,'BT03.INP');reset(f); readln(f,n); {Đọc số lượng phần tử gán cho biến n đầu đọc xuống hàng} for i:=1 to n read(f,a[i]); close(f); max:=a[1]; for i:=2 to n if max