1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Hệ thống một số vấn đề giúp học sinh giải quyết tốt thực hành kiểu tệp tin học 11

22 35 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 149 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Năm học này được chuyển về trườngTHPT Hậu Lộc 4, với điều kiện phòng máy nhà trường hiện có nên tôi cố gắng tìm hiểu về kiểu dữ liệu tệp, xây dựng và áp dụng sáng kiến kinh nghiệm “Hệ th

Trang 1

MỤC LỤC

1.MỞ ĐẦU 2

1.1 Lí do chọn đề tài 2

1.2 Mục đích và nhiệm vụ nghiên cứu 2

1.3 Đối tượng và phạm vi nghiên cứu 2

1.4 Phương pháp nghiên cứu 2

1.5 Tính mới của đề tài 2

2 NỘI DUNG 3

2.1 Cơ sở lí luận của sáng kiến kinh nghiệm 3

2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm 6

2.3 Các sáng kiến kinh nghiệm đã sử dụng để giải quyết vấn đề 7

2.4 Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản thân, với đồng nghiệp và nhà trường 15

3 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

Trang 2

1 MỞ ĐẦU

1.1 Lí do chọn đề tài

Hơn 12 năm tôi dạy ở trường cũ là trường THPT Lê Viết Tạo, tôi nhận thấy đa sốhọc sinh đều cho rằng tin học 11 là môn học khó vì nó liên quan đến việc lập trình đểgiải quyết một bài toán Nó đòi hỏi các em phải có tư duy về toán học, có cách giảiquyết để đưa ra thuật toán của bài toán Đặc biệt là ở chương V- Tệp và thao tác vớitệp, khi dạy đến phần này tôi thấy học sinh còn mơ hồ Hơn nữa ở phần này trongsách giáo khoa không có bài thực hành nên học sinh còn nhiều vướng mắc khi giảimột bài toán liên quan đến kiểu dữ liệu tệp Năm học này được chuyển về trườngTHPT Hậu Lộc 4, với điều kiện phòng máy nhà trường hiện có nên tôi cố gắng tìm

hiểu về kiểu dữ liệu tệp, xây dựng và áp dụng sáng kiến kinh nghiệm “Hệ thống một số vấn đề giúp học sinh giải quyết tốt thực hành kiểu tệp tin học 11”

1.2 Mục đích và nhiệm vụ nghiên cứu

Mục đích của đề tài tôi muốn hướng đến là giúp học sinh có thể thực thực hành mộtcách hiệu quả các bài tập cơ bản về kiểu tệp văn bản mà cụ thể là có thể viết chươngtrình trên máy tính để ghi dữ liệu vào tệp, đọc dữ liệu từ tệp

Nhiệm vụ của đề tài là hướng dẫn người học giải quyết được các vấn đề xung quanhviệc dùng Pascal để: Khởi tạo một tệp, ghi dữ liệu của các lần thực hiện chươngtrình vào tệp, ghi thêm dữ liệu vào tệp đã có nội dung, đọc dữ liệu kiểu xâu trên mộtdòng, đọc dữ liệu kiểu số, đọc dữ liệu từ tệp có nội dung là kiểu xâu và kiểu số,…

1.3 Đối tượng nghiên cứu

Đề tài nghiên cứu về các thao tác đọc/ghi kiểu tệp văn bản trong Pascal của chươngtrình tin học 11 nên đối tượng khảo sát là học sinh khối 11 và các em ở đội tuyểntỉnh

1.4 Phương pháp nghiên cứu

Ở mỗi vấn đề được nghiên cứu tôi đã sử dụng phương pháp phân tích để làm rõ nộidung Phương pháp phân tích là đặc biệt quan trọng và đó chính là chìa khóa để mở

ra những kiến thức mới nhưng dễ tiếp thu hơn

1.5 Tính mới của đề tài

Đề tài nhằm hướng dẫn học sinh lớp thực hành các bài tập đơn giản về kiểu tệp vănbản trên Pascal, giúp các em giải quyết được 2 thao tác cơ bản đối với tệp là đọc vàghi tệp Những điều này sách giáo khoa chỉ nói chung chung, chưa cụ thể rõ ràng vàcũng không hướng dẫn học sinh thực hành bài tập về kiểu tệp (cách khởi tạo một tệp

để đọc, ghi thêm dữ liệu vào tệp, ghi tất cả input và output của các lần

thực hiện chương trình vào tệp, cách để kiểm tra kết quả đọc được từ tệp hay kiểmtra kết quả ghi tệp,…) Những vấn đề trên sẽ được trình bày trong đề tài này

2

Trang 3

2 NỘI DUNG

2.1 Cơ sở lí luận

Pascal và kiểu tệp văn bản

Trong chương trình tin học 11 học sinh được làm quen với Pascal Trong đó kiểutệp văn bản là một trong những nội dung được đề cập đến Tệp văn bản là tệp mà dữliệu được ghi dưới dạng các kí tự theo mã ASCII Trong tệp văn bản, dãy kí tự đượckết thúc bởi kí tự xuống dòng hay kí tự kết thúc tệp tạo thành một dòng Tất cả các

dữ liệu thuộc các kiểu dữ liệu mà học sinh đã được học đều được lưu trữ trên bộ nhớtrong (RAM) và do đó dữ liệu sẽ bị mất khi tắt máy Với một số bài toán có khốilượng dữ liệu lớn, có yêu cầu lưu trữ để xử lí nhiều lần, cần có kiểu dữ liệu tệp (file).Với lợi ích của kiểu tệp được đề cập ở trên thì việc sử dụng được kiểu tệp một cáchthành thạo trong quá trình lập trình là một điểu thật sự quan trọng và cần thiết

Thao tác với tệp

Qua quá 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 và một

số tài liệu trên mạng tôi xin trình bày những kiến thức cơ bản về kiểu tệp văn bản để

hỗ trợ cho học sinh trong quá trình giải (thực hành) các bài toán đơn giản về kiểu dữliệu này

Khai báo kiểu tệp văn bản

Khai báo biến tệp để sau đó có thể thực hiện các thao tác với tệp thông qua biếntệp

Cú pháp khai báo: var <biến tệp>: text;

<ổ đĩa>:\<tên thư mục>\<tên thư mục>\ \<tên thư mục>\<tên tệp>

Độ dài lớn nhất của tên tệp là 79 kí tự Đặc biệt khi tên tệp là xâu rỗng (độ dài xâubằng 0) thì biến tệp được gắn cho tên tệp vào/ra chuẩn Các tệp vào ra chuẩn đượcquy định tương ứng với thiết bị nào là tùy thuộc vào sự mở rộng của mỗi chươngtrình dịch Pascal, nhưng thường quy định tệp input chuẩn là bàn phím, tệp output

3

Trang 4

Ví dụ: assign(f,‟e:\tong2so.doc‟);

rewrite(f);

Ghi dữ liệu vào tệp

Việc ghi dữ liệu vào tệp giống như ghi dữ liệu ra màn hình Câu lệnh dùng thủ tục ghi có dạng:

Write(<biến tệp>,<danh sách kết quả>);

4

Trang 5

Writeln(<biến tệp>,<danh sách kết quả>);

Trong đó, danh sách kết quả gồm một hoặc nhiều phần tử Phần tử là biếnđơn hoặc biểu thức (số học, quan hệ hoặc lôgic) hoặc hằng xâu Trường hợp cónhiều phần tử thì các phần tử được ngăn cách bởi dấu phẩy Khi hai kết quả liềnnhau cùng là kiểu số thì thì cần xen vào giữa hai kết quả này một kết quả trung gian

là hằng kí tự dấu cách Ví dụ, write(f, x,„ „,y) Trong đó f là biến tệp, x và y là haibiểu thức số Trước khi gọi thủ tục này, tệp tương ứng với biến tệp phải là đang mở.Thủ tục write sẽ ghi lần lượt các kết quả theo danh sách kết quả vào tệp kể từ vị tríhiện thời của con trỏ tệp

Ghi thêm dữ liệu vào tệp đã có nội dung

Đây là một nội dung mới không được đề cập trong chương trình sách giáo khoa

nhưng tôi nghĩ nó thật sự cần thiết trong nhiều tình huống cụ thể

Để ghi thêm dữ liệu vào tệp đã có nội dung ta dùng thủ tục append có cú

pháp:

append(<biến tệp>);

Ví dụ: append(f);

Sau khi gọi thủ tục append thì tệp sẽ sẵn sàng để ghi dữ liệu mới vào

Lưu ý: Trong cùng một chương trình nếu muốn ghi thêm dữ liệu thì không thể đồng thời sử dụng thủ tục rewrite và append vì khi dùng rewite nội dungtệp sẽ bị xóa (nếu tệp đã có nội dung) Vì vậy mục đích ghi thêm dữ liệumới vào sẽ không được thực hiện như ý muốn

5

Trang 6

Readln(<biến tệp>, <danh sách biến>);

Ví dụ: read(f, x, y); hoặc readln(f, x, y);

Thủ tục read ghi xong con trỏ tệp không xuống dòng tiếp theo, thủ tục readln ghixong con trỏ tệp xuống đầu dòng tiếp theo

Danh sách biến là một hoặc nhiều tên biến đơn Trong trường hợp nhiều biếnthì các biến cách nhau bằng dấu phẩy Các dữ liệu cần đọc trong tệp gán vào danhsách biến phải lần lượt có kiểu tương ứng với kiểu của biến trong danh sách biến.Nếu sai kiểu thì chương trình mắc lỗi Lỗi này thường gặp khi biến có kiểu số, dữliệu đọc được lại là kiểu xâu

Ví dụ: tệp docdulieu.txt chỉ có một dòng là tin hoc 11

Chương trình mắc lỗi “Invalid numberic format” vì sau khi đọc được s = “tinho‟, tiếp theo đọc dữ liệu cho x thì mắc lỗi thì mắc lỗi vì, “c‟ không là dạng số Nếuthay lại khai báo s:string[7] hoặc string[8] thì chương trình không mắc lỗi khi thựchiện đọc tệp, kết quả trên màn hình là

Trang 7

Với biến kiểu xâu, thủ tục read sẽ đọc các kí tự trên một dòng vào biến (loại trừcác kí tự đánh dấu hết dòng hoặc hết tệp) Số kí tự đọc vào biến xâu bằng độ dài đãkhai báo của xâu.

Với biến kiểu nguyên hoặc thực, thủ tục read sẽ không đọc dấu cách, dấu tab hoặcdấ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 củabiến tương ứng thì xuất hiện lỗi vào/ra (I/O) Trong trường hợp ngược lại, giá trịkiểu số tương ứng của xâu chữ số sẽ được gán cho biến Lệnh read tiếp theo sẽ đượcbắt đầu bằng dấu cách, dấu tab, hoặc kí tự hết dòng và chúng cũng lại được bỏ qua.Những dấu này vạch định cho các xâu chữ số

Đóng tệp

Cú pháp: close(<biến tệp>);

Trong cú pháp, biến tệp đã được gắn với một tệp đang mở bằng reset, rewrite hoặcappend ở thời điểm trước đó để mở tệp Sau lệnh close, tệp gắn với biến tệp đượchoàn thành cập nhật và sau đó được đóng lại Chương trình trả lại quyền quản lí tệpcho hệ điều hành Nếu thực hiện ghi dữ liệu vào tệp mà không đóng tệp thì không có

dữ liệu nào được ghi hoặc chỉ ghi được một phần vào tệp, nguyên nhân do các dữliệu chứa trong bộ nhớ đệm chưa chuyển kịp vào đĩa thì chương trình đã bị ngắt

Một số hàm và thủ tục chuẩn thường dùng trong thao tác tệp

Hàm EOF: trả lại giá trị true nếu con trỏ tệp ở vị trí cuối tệp, ngược lại trả giá trịfalse

Hàm EOL: nếu con trỏ tệp ở vị trí cuối dòng thì trả về giá trị true, ngược lại trả giátrị false

Vì vậy nếu muốn đọc dữ liệu của cả một dòng hay của cả tệp ta sẽ cần dùng đếnmột trong hai hàm này Việc áp dụng sẽ được trình bày trong phần đọc dữ liệu từ tệptrong đề tài này

2.2.Thực trạng vấn đề nghiên cứu

Trường THPT Hậu lộc 4 là một ngôi trường thuộc vùng nông thôn của 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 tại phòng máy của nhà trường Điều này ít nhiều ảnh hưởngđến khả năng tự rèn luyện cũng như kiến thức về tin học của các em Bên cạnh đóđối với học sinh 11 việc học Pascal là một nỗi “nhọc nhằn” với đa số học sinh củatrường

Qua khảo sát các lớp tôi đã từng dạy qua nội dung mà đề tài đang nghiên cứu thì có

đa số học sinh không biết viết một chương trình đơn giản để ghi dữ liệu vào một tệp

và đọc dữ liệu từ tệp đó rồi ghi kết quả đọc được ra màn hình Các em chỉ biết cúpháp khai báo, gắn tên tệp, các thao tác với tệp cùng các ví dụ riêng lẻ mà không hệthống lại được thành một chương trình hoàn chỉnh được

Nguyên nhân là do:

Trang 8

- 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 và thực hành ngay sau đó;

- Nội dung sách giáo khoa không có bài tập thực hành cho nội dung nàyđồng thời cũng không nêu ra các yếu tố để một chương trình có sử dụng kiểu tệpchạy được trên máy;

- Phần mở rộng của các tệp ghi trong sách giáo khoa xa lạ với học sinh Do

đó, nếu chạy được chương trình thì không biết cách để kiểm tra kết quả;

- Thiếu kiến thức căn bản để viết mộ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 quyết vấn đề

Sau khi trình bày xong phần lý thuyết ở phần cơ sở lí luận, giáo viên phát cho mỗihọc sinh một phiếu bài tập thực hành kiểu tệp văn bản Cụ thể biện pháp tiến hànhhướng dẫn thực hành các bài tập như sau:

Ghi dữ liệu vào tệp

So sánh thủ tục ghi dữ liệu ra màn hình và thủ tục ghi tệp

Học sinh có thể dễ dàng trả lời thông qua việc so sánh cú pháp giữa 2 thủ tục này.Giống nhau: đều dùng tên thủ tục là write hoặc writeln, các phần tử của danh sáchkế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: nếu muốn ghi dữ liệuvào tệp trên nhiều hàng thì 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 này tương tự như ghi dữ liệu ra mànhình

Để làm rõ những nội dung về gắn tên tệp, so sánh việc ghi dữ liệu ra màn hình vàghi tệp tôi đã đưa ra vài tập ví dụ 1 như sau:

Ví dụ1 : Hãy viết chương trình trên Pascal tính tổng của 2 số (ghi kết quả ra màn

hình đồng thời ghi 2 số nhập từ bàn phím và tổng của chúng vào tệp “e:\ tong2so.doc”).

Giáo viên yêu cầu học sinh viết một chương trình nhập 2 số từ bàn phím,tính tổng của chúng và xuất kết quả ra màn hình Sau đó mới bổ sung vào các câulệnh để ghi giá trị của 2 biến đã nhập, kết quả tổng của 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

sự được ghi vào tệp chưa (tệp ở đây là tong2so.doc) đồng thời yêu cầu các em sosánh nội dung đã được ghi trên tệp này và nội dung được ghi ra màn hình

Chương trình trên Pascal:

Trang 9

Kết quả sau khi thực hiện chương trình

Nội dung được ghi vào tệp “e:\tong2so.doc‟

Như vậy, nếu muốn ghi nhiều dòng dữ liệu vào tệp thì cứ thêm thủ tụcWriteln(<biến tệp>,<danh sách kết quả>);

Ghi vào tệp tất cả dữ liệu của các lần thực hiện chương trình

Do đó tôi nhận thấy giải quyết vấn đề này là thực sự cần thiết

Câu hỏi thứ nhất học sinh có thể trả lời được như sau: tệp chỉ ghi kết quảcủa lần thực hiện chương trình sau cùng Vì sau mỗi lần thực hiện chương trình thủtục rewrite(f) lại được gọi, điều đó có nghĩa là nội dung đã ghi trên tệp sẽ được xóa

để sẵn sàng cho việc ghi dữ liệu mới

Câu hỏi thứ hai mới là một vấn đề quan trọng cần được làm rõ bởi ta dùngkiểu tệp để lưu lại nội dung của các lần thực hiện chương trình để có thể sử dụng về

Trang 10

sau nhưng với kiến thức mà sác giáo khoa cung cấp không đủ để giải quyết vấn đềnày nên sẽ cần sự trợ giúp của giáo viên Để có thể ghi thêm nội dung vào tệp ta sửdụng thủ tục append(<biến tệp>) Thủ tục này sẽ thay thế cho thủ tục rewrite(<biếntệp>) trong chương trình Chú ý rằng thủ tục append(<biến tệp>) chỉ thay thế thủtục rewrite(<biến tệp>) khi ta đã thực hiện chương trình có rewrite(<biến tệp>) ítnhất một lần để máy tính khởi tạo tệp cần ghi.

Ví dụ 2 Ghi tất cả dữ liệu của các lần thực hiện chương trình ở ví dụ 1 vào

Trang 11

'nha

p

2 so: ')

; re

Trang 12

Kết quả thực hiện chương trình ở lần muốn ghi thêm dữ liệu:

Kết quả ghi tệp (sau 2 lần thực hiện chương trình):

Kể từ đây nếu muốn ghi thêm thì chỉ cần thực hiện chương trình thêm một lần nữa.Với kiến thức vừa nêu chúng ta có thể ghi được input, outut của các bài tập trướcđây vào tệp Ví dụ như bài toán giải phương trình bậc nhất, bậc hai,…

Ghi thêm dữ liệu vào tệp đã được khởi tạo trước đó

Nếu ta đã khởi tạo một tệp trên đĩa và nhập nội dung trực tiếp từ chươngtrình ứng dụng tạo tệp hoặc khởi tạo một tệp rỗng thì việc ghi thêm dữ liệu vào nó

sẽ được thực hiện như thế nào?

Câu trả lời là chỉ cần dùng thủ tục append sau thủ tục assign rồi dùng thủtục write(<biến tệp>, <danh sách kết quả>) để ghi dữ liệu vào tệp

Ví dụ 3 Ghi thêm dữ liệu vào tệp, dữ liệu này độc lập với dữ liệu đã khởi tạo trước

đó.

Nội dung tệp đã được khởi tạo trước đó bằng cách nhập trực tiếp trên Notepad (hoặc khởi tạo một tệp rỗng):

Vd: dữ liệu ban đầu có: GV Hoang Thi Xinh

Truong THPH Hau Loc 4

Chương trình sử dụng thủ tục ghi thêm append(<biến tệp>):

Nội dung tệp đã được ghi thêm:

Trang 13

GV Hoang Thi Xinh

Truong THPH Hau Loc 4

To TD, QP- Tin

Đọc dữ liệu từ tệp

Đọc dữ liệu kiểu xâu trên một dòng vào một biến

Với biến xâu thủ tục read sẽ đọc các kí tự trên một dòng vào biến (loại trừ các kí tựđánh dấu hết dòng hoặc hết tệp) Số kí tự đọc vào biến xâu tối đa bằng độ dài đãkhai báo của biến xâu

Đọc dữ liệu kiểu số

Với biến kiểu nguyên hoặc thực, thủ tục read sẽ không đọc dấu cách, dấu tab hoặcdấ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 củabiến thì sẽ xuất hiện lỗi vào/ra (I/O) Trong trường hợp ngược lại, giá trị kiểu sốtương ứng của xâu chữ số sẽ được gán cho biến Lệnh read tiếp theo sẽ được bắt đầubằng dấu cách, dấu tab hoặc kí tự hết dòng và chúng cũng lại được bỏ qua Nhữngdấu này vạch định cho các xâu chữ số Ví dụ sau sẽ làm rõ vấn đề này

Ví dụ 4 Đọc xâu chữ số từ tệp vd4.txt có nội dung là các số 2 5 3 6 7 rồi ghi kết quả đọc được ra màn hình:

assign(f,'e:\vd4.txt'); {gan ten tep}

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 ra man hinh}

readln

end

Cách 2.

program vd4_2;

Ngày đăng: 13/07/2020, 18:24

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w