1. Trang chủ
  2. » Luận Văn - Báo Cáo

skkn một số bài tập thực hành về cách làm việc với tệp – tiết 39; 40

24 967 1

Đ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 24
Dung lượng 106,5 KB

Nội dung

Ở đây học sinh được làmviệc với ngôn ngữ lập trình và một ngôn ngữ lập trình cụ thể, với thựctiễn cơ sở vật chất của trường THPT Đông Sơn 1 chúng tôi sử dụngngôn ngữ lập trình Pascal để

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT ĐÔNG SƠN I

SÁNG KIẾN KINH NGHIỆM

MỘT SỐ BÀI TẬP THỰC HÀNH VỀ CÁCH LÀM VIỆC VỚI TỆP

Người thực hiện: Nguyễn Thị Ngọc Lan Chức vụ: Giáo viên

SKKN môn: Tin học.

THANH HOÁ NĂM 2013

Trang 2

A PHẦN MỞ ĐẦU

I LÝ DO CHỌN ĐỀ TÀI

- Hiện nay trong phân phối chương trình Tin học THPT có sựthay đổi giảm tải đối với việc học môn Tin học Có những bài đượclược bớt đi 1 phần, một mục hoặc có bài học sinh không phải học màchỉ đọc tham khảo thêm Bên cạnh đó để đảm bảo đủ số tiết học nên

có những tiết được bổ sung như tiết bài tập hoặc bài tập thực hành,nhằm đảm bảo cho học sinh nắm rõ hơn, vững hơn những phần lýthuyết đã được học Tuy nhiên với những tiết bài tập hoặc bài tập thựchành này sách giáo khoa, cũng như sách giáo viên chưa có nhữnghướng dẫn cụ thể để đạt được một cái chuẩn chung như những bài lýthuyết Thông thường giáo viên sẽ linh động dựa vào điều kiện cơ sởvật chất của nhà trường, đặc biệt là tuỳ vào đối tượng học sinh củamình để cung cấp cho học sinh những bài tập nhằm củng cố cho họcsinh những kiến thức ở phần lý thuyết đã học

- Tin học 11 là một modul chương trình tương đối khó trong hệthống modul kiến thức Tin học khối THPT Ở đây học sinh được làmviệc với ngôn ngữ lập trình và một ngôn ngữ lập trình cụ thể, với thựctiễn cơ sở vật chất của trường THPT Đông Sơn 1 chúng tôi sử dụngngôn ngữ lập trình Pascal để cùng làm việc với học sinh trong họcphần này

Theo phân phối chương trình, ở chương 5: Tệp và thao tác vớitệp của Tin học 11 có 2 tiết lý thuyết và 2 tiết bài tập thực hành Phần

lý thuyết, sách giáo khoa cung cấp đã khá đầy đủ và dễ hiểu đối vớihọc sinh Tuy nhiên phần bài tập thực hành thì chưa có

Trang 3

Với lý do trên tôi mạnh dạn đề xuất " Một số bài tập thực hành

về cách làm việc với tệp" cho 2 tiết 39, 40 nhằm giúp học sinh nắm

vững hơn về cách làm việc với tệp

Tuy giờ dạy đã dựa vào đối tượng học sinh, vào trọng tâm kiếnthức chương trình, nhưng vẫn còn mang tính chất cá nhân đề xuất,mong được sự góp ý của bạn đọc và đồng nghiệp để tiết học trở thànhchuẩn chung trong phân phối chương trình

II MỤC ĐÍCH CỦA ĐỀ TÀI

Sử dụng các bài toán cụ thể trước hết để học sinh nắm được cú

pháp, ý nghĩa của các thao tác xử lý tệp Và thông qua các ví dụ đóhướng dẩn học sinh sử dụng thuần thục, linh động khi xử lý các dữliệu trong tệp

III NHIỆM VỤ CỦA ĐỀ TÀI

Đưa ra một số bài tập về tệp để học sinh thảo luận, làm việc qua

đó nắm vững câu các thao tác với tệp và cách làm việc với tệp Hìnhthành ở học sinh kỹ năng phân tích, xử lý các vấn đề liên quan đếnkiểu dữ liệu tệp trong quá trình lập trình

IV ĐỐI TƯỢNG NGHIÊN CỨU

Học sinh khối 11 tại trường THPT ĐÔNG SƠN 1

Sử dụng máy tính để chạy các chương trình về 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 1

- Có tham khảo các tài liệu về ngôn ngữ lập trình Pascal và tàiliệu về sáng kiến kinh nghiệm

Trang 4

B NỘI DUNG

I CƠ SỞ LÝ LUẬN

Khi học sinh học bài học Bài 14 - 15: Kiểu dữ liệu tệp - Thao tácvới tệp Học sinh đã có rất nhiều khó khăn, nhầm lẫn trong việc xácđịnh các thao tác xử lý tệp

II NỘI DUNG VÀ GIẢI PHÁP THỰC HIỆN

1 CÁC THAO TÁC VỚI TỆP

* Khai báo tệp văn bản:

Tệp văn bản được khai báo trực tiếp trong phần khai báo biến:

Biến tệp: là tên biến tệp đã khai báo sau từ khóa VAR

Tên tệp: Là tên do ta chọn để ghi dữ liệu vào đĩa

Ví dụ : ASSIGN(f, ‘a:\baitap.txt’);

REWRITE(f); {khởi tạo tệp rỗng}

Sau 2 thủ tục trên, để tiến hành ghi dữ liệu vào tệp ta dùng thủtục WRITE(…), hoặc WRITELN(… ):

Cách viết:

WRITE(biến tệp, các giá trị cần ghi vào tệp);

Trang 5

WRITELN(biến tệp, các giá trị cần ghi vào tệp);

Biến tệp: là tên biến tệp đã khai báo sau từ khóa VAR

Tên tệp: Là tên do ta chọn để ghi dữ liệu vào đĩa

READ(biến tệp, các giá trị cần ghi vào tệp);

READLN(biến tệp, các giá trị cần ghi vào tệp);

* Cuối cùng, ta phải đóng tệp bằng thủ tục:

CLOSE(biến tệp);

2 BÀI TẬP

Bài toán 1:

Cho số nguyên dương n (n≤12).

Yêu cầu: hãy tính n!

Dữ liệu vào từ file ‘BT01.INP’ chứa giá trị của số nguyên dương n.

Kết quả ghi vào file ‘BT01.OUT’ là kết quả của n!

Trang 6

Xác định bài toán:

Input: giá trị của n

Output: kết quả của n!

Giáo viên liên tưởng cho học sinh:

Trước khi học bài này:

Input: giá trị của n (dữ liệu vào)  được nhập từ bàn phím

Output: kết quả (dữ liệu ra)  được in ra màn hình

Đến bài này:

Input: giá trị của n (dữ liệu vào)  được lấy (đọc) từ file dữ liệu

Output: kết quả (dữ liệu ra)  được đưa (ghi) vào file kết quả

Khi đó để giải 1 bài toán, người viết chương trình phải tương tác với

3 file:

File chương trình (nếu dùng Pascal thì có phần mở rộng là PAS)

File chứa dữ liệu vào (thường người ta để phần mở rộng là INP)

File chứa dữ liệu ra – ghi kết quả (thường người ta để phần mở rộng

BT01.INP

120 BT01.OUT

Trang 7

Giải thích: dữ liệu (giá trị của n) được lấy từ file ‘BT01.INP’ cho

chương trình BT01.PAS, sau khi tính được kết quả (n!) ta ghi kết quả

đó vào file ‘BT01.OUT’

Mô hình quan hệ chung

Giáo viên trình bày cách đọc và ghi file

Một bài toán mà dữ liệu được đọc và ghi vào file thường có các thao tác chính như sau:

Khai báo biến file

Đọc dữ liệu trong file

Tính toán để có kết quả

Lấy kết quả ghi vào file

Khai báo biến file:

Var f:text;

Ý nghĩa: khai báo biến f có kiểu file văn bản.

Đọc dữ liệu trong file:

Var <tên biến file>:text;

Assign(<biến file>,<tên file>);reset(<biến file>);

Read(<biến file>,<danh sách biến>);

Hoặc Readln(<biến file>,<danh sách biến>);

Close(<biến file>);

Trang 8

{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

Dòng 2: Đọc 1 giá trị số nguyên trong file ‘BT01.INP’ gán cho biến n

Dòng 3: Đóng file ‘BT01.INP’ để an toàn dữ liệu

Ghi kết quả vào file:

{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ị của gt vào file ‘BT01.OUT’

Dòng 3: Đóng file ‘BT01.OUT’ để an toàn dữ liệu

Cấu trúc của file văn bản:

Assign(<biến file>,<tên file>);rewrite(<biến file>);

write(<biến file>,<danh sách biến hay kết quả>);

Hoặc writeln(<biến file>,<danh sách biến hay kết quả>);

Close(<biến file>);

Trang 9

Dữ liệu trong file văn bản là các ký tự (bảng mã ASCII) Có một

số hàm chuẩn thường dùng trong khi đọc/ghi tệp văn bản là:

* Hàm EoLn(<biến file>) : Trả về giá trị True nếu con trỏ tệpđang chỉ tới cuối dòng

* Hàm Eof(<biến file>): Trả về giá trị True nếu con trỏ tệp đangchỉ tới cuối tệp

Ví dụ về hình ảnh mô tả cấu trúc 1 file văn bản (chữ in đậm trong

file sẽ không được thể hiện)

Thủ tục đọc file: Read(<biến file>,<danh sách các biến>)

Với thủ tục này, ta có thể hiểu như sau: đầu đọc sẽ đọc lần lượtcác giá trị trong file gán tuần tự cho các biến có trong danh sách biếncủa thủ tục, sau đó đầu đọc không thực hiện việc xuống đầu dòng tiếptheo

Thủ tục đọc file: Readln(<biến file>,<danh sách các biến>)

Giống như thủ tục Read, nhưng điểm khác biệt là sau khi thựchiện đọc và gán giá trị cho biến xong thì đầu đọc sẽ xuống đấu dòngtiếp theo

Thủ tục ghi file: write(<biến file>,<danh sách biến hay kết quả>);

hoặc writeln(<biến file>,<danh sách biến hay kết quả>);

Trong thao tác với file giống như việc in kết quả ra màn hình (chỉkhác là thay vì ta thực hiện in kết quả ra màn hình như thế nào thì sẽghi mọi thứ vào file như vậy)

5 Eoln

7 3 8 6 9 Eoln

4 5 6 7 9 Eoln

Eof File văn bản

Trang 10

Cũng giống như bài toán 1, nhưng mỗi dòng trong file dữ liệu vàochứa một giá trị của n và tương ứng với mỗi giá trị của n sẽ có một kếtquả trong file dữ liệu ra.

Bài giải tham khảo:

while( not Eof(f)) do {đọc trong khi chưa kết thúc file}

Bài toán 2: Cho một số số nguyên dương n (n≤12).

Yêu cầu: hãy tính n! của mỗi số.

Dữ liệu vào từ file ‘BT02.INP’ chứa giá trị của một số số nguyên dương n Kết quả ghi vào file ‘BT02.OUT’ là kết quả của n! Mỗi dòng trong file dữ liệu

vào chứa một giá trị của n và tương ứng với mỗi giá trị của n sẽ có một kết quả trong file dữ liệu ra.

Trang 11

Cho một dãy số nguyên gồm n phần tử

Yêu cầu: Tìm giá trị lớn nhất

Dữ liệu vào từ file ‘BT03.INP’

Dòng đầu là giá trị của n (n≤100).

Dòng thứ hai ghi n phần tử của dãy (mỗi phần tử có giá trị tuyệt đối không vượt quá 30000, hai phần tử kế nhau cách ít nhất một khoảng trắng)

Kết quả ghi vào file ‘BT03.OUT’ ghi giá trị tìm được.

Bài giải tham khảo:

var a:array[1 100] of integer;

Trang 12

Yêu cầu: Tìm giá trị lớn nhất của mỗi dãy.

Dữ liệu vào từ file ‘BT04.INP’ Với mỗi bộ 2 dòng:

Dòng đầu là giá trị của n (n≤100).

Dòng thứ hai ghi n phần tử của dãy (mỗi phần tử có giá trị tuyệt đối không vượt quá 30000, hai phần tử kế nhau cách ít nhất một khoảng trắng)

Kết quả ghi vào file ‘BT04.OUT’ ghi giá trị tìm được Tương ứng một dãy số

sẽ có một kết quả ghi trên mỗi dòng khác nhau trong file dữ liệu ra.

Bài giải tham khảo:

var a:array[1 100] of integer;

Trang 13

Cho n dãy số nguyên.

Yêu cầu: tìm tổng của các phần tử của từng dãy

Dữ liệu vào từ file ‘BT05.INP’ gồm n dòng, mỗi dòng là một dãy số (mỗi dãy

có tối đa 100 phần tử và mỗi phần tử có giá trị tuyệt đối không quá 30000; hai

phần tử đứng kế nhau cách nhau ít nhất một khoảng trắng).

Kết quả ghi vào file ‘BT05.OUT’ gồm n dòng mỗi dòng là một kết quả tìm

được tương ứng với dữ liệu trong file input.

Bài giải tham khảo:

var a:array[1 100] of integer;

Trang 14

Cho một chuỗi ký tự có tối đa 255 ký tự.

Yêu cầu: hãy cho biết có bao nhiêu ký tự ‘a’.

Dữ liệu vào từ file ‘BT06.INP’ chứa chuỗi ký tự đã cho.

Kết quả ghi vào file ‘BT06.OUT’ ghi số lượng ký tự ‘a’ tìm được

Trang 16

Bài giải tham khảo:

Bài toán 7: Cho một chuỗi ký tự.

Yêu cầu: hãy cho biết có bao nhiêu ký tự ‘a’.

Dữ liệu vào từ file ‘BT07.INP’ chứa chuỗi ký tự đã cho.

Kết quả ghi vào file ‘BT07.OUT’ ghi số lượng ký tự ‘a’ tìm được

Trang 17

for i:=2 to trunc(sqrt(x)) do

Bài toán 8:

Cho dãy số nguyên.

Yêu cầu: Hãy cho biết dãy số đó có số nguyên tố nào hay không?

Dữ liệu vào từ file ‘BT08.INP’ mỗi dòng là một dãy số (có tối đa 100 phần

tử; mỗi phần tử có giá trị tuyệt đối không quá 10 9 ; hai phần tử cách nhau

một khoảng trắng).

Kết quả ghi vào file ‘BT08.OUT’ tương ứng một dãy số trong file input là

một dòng ghi số 1 nếu dãy đó có số nguyên tố, ngược lại ghi 0.

Trang 18

if (x mod i=0) then

Cho hai số nguyên dương a và b

Yêu cầu: Hãy tìm ước chung lớn nhất của hai số đó!

Dữ liệu vào từ file ‘BT09.INP’ gồm nhiều dòng, mỗi dòng chứa một cặp

giá trị của a và b (a, b≤10 9 ; hai số cách nhau một khoảng trắng).

Kết quả ghi vào file ‘BT09.OUT’ tương ứng với mỗi dòng trong file input

Trang 19

Bài toán 10:

Cho số nguyên dương n

Yêu cầu: Hãy đếm số lượng chữ số 0 tận cùng của n!

Dữ liệu vào từ file ‘BT10.INP’ gồm nhiều dòng, mỗi dòng chứa một giá trị

if (a>b) then a:=a-b;

if (a<b) then b:=b-a;

Trang 21

3 KẾT QUẢ THU ĐƯỢC.

Trong quá trình trao đổi, thảo luận, trình bày học sinh đã thấysáng tỏ và dễ dàng nhận ra cách làm việc khoa học của tệp, các em tỏ

ra hăng hái làm việc, chủ động viết chương trình thực hiện các bàitoán làm việc với tệp mà giáo viên đưa ra

Số liệu cụ thể khi thực hiện đề tài :

Kết quả của lớp 11A8 ( sĩ số 42)

Số HS làm đúng Số HS làm sai Số HS không có lời giải

Kết quả của lớp 11A6( sĩ số 45)

Số HS làm đúng Số HS làm sai Số HS không có lời giải

Trang 22

C KẾT LUẬN VÀ ĐỀ XUẤT

I KẾT LUẬN

Ngôn ngữ lập trình nói chung đóng vai trò rất quan trọng trongviệc xây dựng các chương trình ứng dụng để phục vụ cho cuộc sống.Nhờ sự phát triển của tin học trong đó các nhà lập trình chuyên nghiệpđóng vai trò không nhỏ mà hiện nay hầu hết các lĩnh vực trong xã hội

đã ứng dụng được tin học để giải quyết công viêc nhanh, hiệu quả vàchính xác hơn

Hiện nay, ngôn ngữ lập trình Pascal đã trở thành ngôn ngữ lậptrình phổ biến nhất trên thế giới sử dụng trong lĩnh vực giảng dạy

Đề tài này mang tính thực tiễn rất cao cụ thể là: trong tiết học bàitập các em học sinh đã chủ động để tìm, nắm vững cách làm việc vớitệp qua đó tiếp tục giải quyết được các bài toán lập trình tiếp theo Các

em đã khá rõ ràng về sự độc lập dữ liệu, độc lập chương trình (Code),độc lập kết quả

Kết quả là có rất nhiều em đã dễ dàng vận dụng các thao tác vớitệp để làm việc với tệp để giải các bài toán tệp tiếp theo

Trang 24

D TÀI LIỆU THAM KHẢO

1.Sách giáo khoa tin học 11 Hồ Sĩ Đàm chủ biên

2 Sách giáo viên tin học 11 Hồ Sĩ Đàm chủ biên

3 Lý thuyết và Bài tập lập trình Pascal 5.5-6.0 Nguyễn Thị KiềuDuyên

4 Một số sáng kiến kinh nghiệm và ý kiến của đồng nghiệp

Ngày đăng: 17/07/2014, 16:37

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w