1. Trang chủ
  2. » Tất cả

skkn mot so kinh nghiem BDHSG phan tep tin

17 4 0
Tài liệu đã được kiểm tra trùng lặp

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

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

Nội dung

Bản thân tôi là một giáo viên có kinh nghiệm 3 năm về việc bồi dưỡng học sinh thi tin học trẻ THCS cấp huyện và cấp tỉnh tôi nhận thấy: - Nội dung thi tin học trẻ cấp huyện ở huyện IaPa

Trang 1

TRƯỜNG THCS PHAN BỘI CHÂU

SÁNG KIẾN KINH NGHIỆM

ĐỀ TÀI : BỒI DƯỠNG HỌC SINH THI TIN HỌC TRẺ THCS ”PHẦN TỆP TIN”

Họ và tên: Nguyễn Thị Ngọc Mai Ngày sinh: 20/07/1989

Tổ: Toán – Tin – Nhạc – Họa Chức vụ: Giáo viên

Iapa, 28/03/2019

Trang 2

PHẦN I ĐẶT VẤN ĐỀ.

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

Môn Tin học ở trường phổ thông trang bị cho học sinh những hiểu biết cơ bản về công nghệ thông tin và vai trò của nó trong xã hội hiện đại Môn học này giúp học sinh bước đầu làm quen với phương pháp giải quyết vấn đề theo quy trình công nghệ và kỹ năng sử dụng máy tính phục vụ học tập và cuộc sống Tin học có ý nghĩa to lớn đối với sự phát triển trí tuệ, tư duy thuật toán, góp phần hính thành học vấn phổ thông cho học sinh

Ngoài việc tổ chức thi học sinh giỏi cấp huyện 8 môn: Toán, lý, hóa, sinh,

sử, địa, anh văn, ngữ văn thì vài năm trở lại đây phòng GD & ĐT Ia Pa còn tổ chức hội thi Tin học trẻ cấp huyện, nhằm tạo sân chơi bổ ích cho các em học sinh cũng như lấy nguồn để tham gia cuộc thi Tin học trẻ cấp Tỉnh

Mục tiêu bồi dưỡng học sinh môn lập trình Pascal không phải là để tạo ra các nhà lập trình chuyên nghiệp, mà mục tiêu chính của công tác này là bồi

dưỡng khả năng tư duy, sáng tạo và lập luận, phân tích, thiết kế của học sinh

Bản thân tôi là một giáo viên có kinh nghiệm 3 năm về việc bồi dưỡng học sinh thi tin học trẻ THCS cấp huyện và cấp tỉnh tôi nhận thấy:

- Nội dung thi tin học trẻ cấp huyện ở huyện IaPa phần lập trình khác xa

so với kiến thức các em được học trên lớp, đa số kiến thức không có trong

chương trình học như: Kiểu xâu kí tự, kiếu tập tin,…mà đa số nội dung thi là kiến thức của 2 phần này

- Phần Tệp tin là phần mới, không có trong chương trình học trên lớp của các em, vì vậy giáo viên cần cung cấp kiến thức từ đầu, có hệ thống câu hỏi, bài tập hợp lý, tuy nhiên cũng cần đáp ứng được yêu cầu, để học sinh làm được các bài tập từ đơn giản đến nâng cao

- Hiện nay có rất nhiều sách nâng cao và các tài liệu tham khảo, internet, song chương trình bồi dưỡng chưa có sách hướng dẫn chi tiết, cụ thể từng tiết, từng buổi học như trong chương trình chính khoá Việc soạn thảo chương trình

Trang 3

bồi dưỡng là một việc làm hết sức quan trọng và rất khó khăn, nếu không có sự tham khảo, tìm tòi và chọn lọc tốt

Như vậy, để bồi dưỡng tốt ”phần tệp tin” thì việc soạn chương trình và bồi dưỡng cho học sinh như thế nào là việc hết sức quan trọng

Từ những lý do trên tôi chọn đề tài: ”Bồi dưỡng học sinh thi Tin học trẻ THCS phần tệp tin” Đưa ra 1 số bài tập để học sinh thảo luận qua đó nắm vững được

kiểu dữ liệu có cấu trúc: kiểu tệp tin, và hình thành ở học sinh kỹ năng phân tích,

sử lý các vấn đề liên quan đến bài tập kiểu tệp tin, sử dụng thành thạo vòng lặp biết trước, thủ tục chuẩn vào/ra đơn giản bước đầu làm quen với 1 số chương trình con dạng thủ tục tạo điều kiện thuận lợi cho việc tiếp thu kiến thức về cách viết chương trình có cấu trúc Tôi muốn các em học sinh tiếp thu kiến thức lập trình dễ dàng hơn, được luyện tập nhiều hơn và yêu thích lập trình cũng như hiểu được ý nghĩa của lập trình trong cuộc sống, đạt được kết quả cao trong các kì thi Tôi rất mong được sự đóng góp ý kiến của quý thầy cô cũng như của đồng nghiệp cho đề tài của tôi được hoàn chỉnh

II PHẠM VI ỨNG DỤNG ĐỀ TÀI

Trong phạm vi của Sáng kiến kinh nghiệm với đề tài: ”Bồi dưỡng học sinh thi Tin học trẻ THCS phần tệp tin” Tôi chỉ trình bày những kiến thức cơ bản, một

số bài tập liên quan đến phần tệp tin cũng như một số phương pháp khi lên lớp với học sinh nhằm giúp các em dễ hiểu, cũng như nhanh chóng tiếp thu và làm được các bài tập từ cơ bản đến nâng cao

III ĐỐI TƯỢNG, KẾ HOẠCH VÀ PHẠM VI NGHIÊN CỨU.

- Đối tượng nghiên cứu: Đội tuyển ôn thi tin học trẻ cấp huyện tại trường THCS Phan Bội Châu

- Kế hoạch nghiên cứu: trực tiếp qua các tiết dạy bồi dưỡng

- Phạm vi nghiên cứu: Các kiến thức liên quan đến phần tập tin trong lập trình bằng Pascal

Trang 4

PHẦN II NỘI DUNG

I THỰC TRẠNG BỒI DƯỠNG TIN HỌC TRẺ NÓI CHUNG VÀ BỒI DƯỠNG PHẦN TỆP TIN (FILE) NÓI RIÊNG Ở TRƯỜNG THCS PHAN BỘI CHÂU.

- Môn tin học lớp 8 nói chung và lập trình Pascal nói riêng là một môn mới đối với học sinh THCS

- Qua thực tế giảng dạy ở trường THCS Phan Bội Châu các năm qua, tôi nhận thấy: đối với học sinh nói chung thì Lập trình là một môn học khó, mới

mẻ, khó hiểu, khó tiếp thu và đối với học sinh ở vùng khó khăn như huyện Ia Pa thì nó càng khó khăn hơn nữa

- Đa số các em đều mới tiếp xúc với Lập trình, vì vậy việc tiếp thu còn gặp nhiều khó khăn vì vậy giáo viên cần có phương pháp truyền đạt tốt cũng như nội dung kiến thức phù hợp với các em

- Phần Tệp tin là phần mới, không có trong chương trình học trên lớp của các em, vì vậy giáo viên cần cung cấp kiến thức từ đầu, có hệ thống câu hỏi, bài tập hợp lý, tuy nhiên cũng cần đáp ứng được yêu cầu, để học sinh làm được các bài tập từ đơn giản đến nâng cao

- Trước khi áp dụng đề tài này số học sinh đạt giải tin học trẻ cấp huyện của trường rất ít, có năm không có học sinh đạt giải

II NỘI DUNG MỘT SỐ GIẢI PHÁP GIÚP NÂNG CAO CHẤT LƯỢNG BỒI DƯỠNG HỌC SINH PHẦN TỆP TIN (FILE).

1 CHUẨN BỊ TÀI LIỆU VÀ CHỌN BÀI TẬP HỢP LÝ.

Đầu tiên giáo viên đưa ra những kiến thức cơ bản về kiểu tệp tin cho học sinh hiểu, sau đó là các bài tập để học sinh làm quen và rèn luyện

1.1 KIẾN THỨC CƠ BẢN

1.1.1 KHAI BÁO

Type <Tên kiểu File> = File of <Kiểu phần tử>;

Var <Tên biến File> : <Tên kiểu File>;

hoặc khai báo trực tiếp:

Trang 5

Var <Tên biến File> : File of <Kiểu phần tử>;

Ví dụ:

Type SanPham = File of Record

Ten: String[20];

SoHieu: Byte;

End;

Var f,g: SanPham;

hoặc khai báo trực tiếp:

Var f,g: File of Record

Ten: String[20];

SoHieu: Byte;

End;

1.1.2 CÁC THỦ TỤC VÀ HÀM CHUẨN

a Các thủ tục chuẩn

* Gán tên file

Cú pháp: Assign(F, Filename);

Chức năng: Gán một file trên đĩa có tên là Filename cho biến file F, mọi truy xuất trên file cụ thể được thực hiện thông qua biến file này

Chú ý:

Filename bao gồm cả tên ổ đĩa và đường dẫn nếu file không nằm trong ổ

đĩa, thư mục hiện thời

* Mở file mới

Cú pháp: Rewrite(F);

Chức năng: Tạo file mới có tên đã gán cho biến file F Nếu file đã có trên đĩa thì mọi dữ liệu trên đó sẽ bị xoá và con trỏ file trỏ ở vị trí đầu tiên của file

* Mở file đã có trên đĩa

Cú pháp: Reset(F);

Chức năng: Mở file có tên đã gán cho biến file F Nếu file chưa có trên đĩa thì chương trình sẽ dừng vì gặp lỗi xuất/nhập

Trang 6

* Đọc dữ liệu từ file

Cú pháp: Read(F, x);

Chức năng: Đọc một phần tử dữ liệu từ file F ở vị trí con trỏ file và gán cho các biến x

* Ghi dữ liệu lên file

Cú pháp: Write(F, Value);

Chức năng: Ghi giá trị Value vào file F tại vị trí hiện thời của con trỏ file

* Di chuyển con trỏ file

Cú pháp: Seek(F, n);

Chức năng: Di chuyển con trỏ file đến phần tử thứ n (phần tử đầu tiên có thứ tự là 0)

* Đóng file

Cú pháp: Close(F);

Chức năng: Cập nhật mọi sửa đổi trên file F và kết thúc mọi thao tác trên file này

* Xoá file

Cú pháp: Erase(F);

Chức năng: Xoá file trên đĩa có tên gán đã được gán cho biến file F (file cần xoá là file đang đóng)

* Đổi tên file

Cú pháp: Rename(F, NewFile);

Chức năng: Đổi tên của file đang gán cho biến file F thành tên file mới là NewFile

b Các hàm chuẩn

* Hàm trả về vị trí con trỏ file

Cú pháp: Filepos(F);

Chú ý: Con trỏ ở đầu file tương ứng vị trí 0.

* Hàm kiểm tra cuối file

Cú pháp: EOF(F);

Trang 7

Chức năng: Hàm trả về giá trị True nếu con trỏ file đang ở cuối file, ngược lại hàm trả về giá trị False.

* Hàm trả về kích thước của file

Cú pháp: FileSize(F);

Chức năng: Hàm trả về số lượng phần tử có trong file.

1.1.3 FILE VĂN BẢN (TEXT FILE)

Thành phần cơ bản là ký tự, song có thể được cấu trúc thành các dòng, mỗi dòng được kết thúc bởi CR và LF, CR có mã ASCII là 13 và LF có mã 10 Cuối file sẽ có dấu kết thúc file Ctrl-Z có mã là 26

Do các dòng có độ dài thay đổi nên không tính trước được vị trí của một dòng trong file Vì vậy file dạng Text chỉ có thể đệoc xử lý một cách tuần tự

a Khai báo

Var <Tên biến file>: Text;

b Các thủ tục và hàm chỉ tác động trên file dạng text

* Thủ tục Append

Cú pháp: Append(F);

Chức năng: Mở file đã tồn tại để bổ sung nội dung vào cuối file

* Thủ tục Readln

Cú pháp: Readln(F,x);

Chức năng: Đọc một dòng từ vị trí con trỏ file và gán cho biến x Thực hiện xong, con trỏ file sẽ chuyển về đầu dòng tiếp theo Biến x có thể nhận các

kiểu: Char, String hoặc kiểu số

* Thủ tục Writeln

Cú pháp: Writeln(F, x);

Chức năng: Ghi giá trị x vào file ở vị trí con trỏ file Kết thúc thủ tục, con trỏ file sẽ chuyển về đầu dòng sau

* Hàm EOLn

Cú pháp: EOLn(F);

Trang 8

Chức năng: Hàm trả về giá trị True nếu con trỏ đang ở cuối một dòng, ngược lại hàm trả về giá trị False.

Chú ý:

Các thủ tục và hàm không sử dụng được đối với file dạng text: Seek, FilePos, FileSize.

Sau đây là các thao tác cơ bản khi xuất nhập file:

Ghi dữ liệu vào file Đọc dữ liệu từ file

ASSIGN(f,FileName);

REWRITE(f);

WRITE(f,value);

CLOSE(f);

ASSIGN(f,FileName);

RESET(f);

While Not EOF(f) Do Begin

READ(f,x);

End;

CLOSE(f);

1.2 BÀI TẬP

Giáo viên đưa ra các bài tập cho học sinh từ đơn giản đến phức tạp, dưới đây là một số bài tập giáo viên có thể giao cho học sinh:

Bài tập 1 Một file văn bản trên đĩa có tên là SON.INF chứa đúng một dòng bao

gồm hai số tự nhiên n, m được viết

cách nhau một dấu cách Sau đây là một ví dụ về file này:4 5 Em hãy viết đoạn chương trình đọc hai số này từ file trên và in kết quả ra màn hình

Program bt1;

Var f:text;

m,n:integer;

Begin

Trang 9

Assign(f,'son.inf'); Reset(f);

Readln(f,m,n);

Close(f);

Writeln(m:4,n:4);

Readln;

End

Bài tập 2 Một file văn bản trên đĩa có tên là SOD.INF chứa đúng hai dòng, mỗi

dòng bao gồm đúng một số tự nhiên là n, m Sau đây là một ví dụ về file này:

4

5

Em hãy viết đoạn chương trình đọc hai số này từ file trên và in kết quả ra màn hình

Program bt2;

Var f:text;

m,n:integer;

Begin

assign(f,'sod.inf');reset(f);

Readln(f,m);

Readln(f,n);

close(f);

Writeln(m);

Writeln(n);

Readln;

End

Bài tập 3 Một file văn bản có tên DATA.TXT lưu trữ số liệu của một mảng n số

và có dạng sau:

- Dòng đầu tiên của DATA ghi số n

- Dòng tiếp theo của file ghi n số, các số cách nhau bởi tối thiểu một dấu cách Viết chương trình nhập số liệu của dãy trên vào một mảng và in ra dữ liệu của

Trang 10

mảng trên.

Program bt4;

Var f:text;

n,i:integer;

a:array[1 100] of integer;

Begin

assign(f,'data.txt'); reset(f);

Readln(f,n);

For i:=1 to n do Read(f,a[i]);

For i:=1 to n do Write(a[i]:5);

Readln;

End

Bài tập 4 Một file văn bản có tên DATA.TXT lưu trữ số liệu của một mảng n số

và có dạng sau:

- Dòng đầu tiên của DATA ghi số n

- n dòng tiếp theo của file ghi n số, mỗi số trên một dòng

Viết chương trình nhập số liệu của dãy trên vào một mảng và in ra dữ liệu của mảng trên sau khi đã sắp lại theo thứ tự tăng dần

Program bt3;

Var f: text;

n, i, j,tg: integer;

a: array[1 100] of integer;

Begin

assign(f, 'data.txt'); reset(f);

Readln(f, n);

For i:=1 to n do Readln(f,a[i]);

close(f);

For i:=1 to n-1 do

Trang 11

Begin

For j:=i+1 to n do

If (a[j]<a[i]) then

begin tg:=a[i];

a[i]:=a[j];

a[j]:=tg;

end;

End;

For i:=1 to n do Writeln(a[i]);

Readln;

End

Bài tập 5: Cho một file text Hãy viết chương trình đếm xem file text trên chứa

bao nhiêu từ (Chú ý: theo quy định, các từ cách nhau bởi một hay nhiều dấu cách)

Uses Crt;

Const fi = 'hoten.txt';

Var f: text;

s: string;

dem: word;

BEGIN

Clrscr;

dem:=0;

Assign(f,fi); Reset(f);

While not Eof(f) do

Begin

Readln(f,s);

Trang 12

While s[1]=' ' do Delete(s,1,1);

While length(s)>0 do

Begin

Case s[1] of

' ': While (s[1]=' ')and(length(s)>0) do Delete(s,1,1);

Else

Begin

inc(dem);

While (s[1]<>' ')and(length(s)>0) do Delete(s,1,1);

End;

End;

End;

End;

Close(f);

Write(' So tu co trong file hoten.txt la: ',dem);

Readln;

END.

Bài tập 6 Một file văn bản ghi số liệu của học sinh có dạng sau:

4

Nguyen Van Hung 15 G

Bui Quang Than 14 K

Tran Minh Quang 16 G

Le Van Minh 15 T

Dữ liệu ghi trong file này có ý nghĩa như sau:

- Dòng đầu tiên ghi đúng một số n chỉ số lượng học sinh trong lớp

- n dòng tiếp theo mỗi dòng ghi dữ liệu của một học sinh

- Mỗi học sinh được ghi các dữ liệu sau:

Họ và tên: 20 ký tự; Tuổi: 3 ký tự; Xếp loại: 1 ký tự

Trang 13

Hãy viết chương trình nhập dữ liệu học sinh từ file trên và đưa vào các mảng dữ liệu tương ứng, tên file cũng được đọc từ bàn phím

Uses crt;

Var f: text;

fn: string;

n, i: integer;

ht: array[1 100] of string[20];

t: array[1 100] of string[3];

xl: array[1 100] of char;

Begin

Clrscr;

Write('Ten file can doc: '); Readln(fn);

assign(f,fn); reset(f);

Readln(f,n);

For i:=1 to n do

Readln(f, ht[i], t[i], xl[i]);

close(f);

For i:=1 to n do

Writeln(ht[i],t[i]:4,xl[i]:3);

Readln;

End

Bài tập 7 Một danh sách lớp được ghi trong một File văn bản có dạng sau:

Nguyen Van Minh Nam

Nguyen Tung Chau Nu

Tran Quang Thu Nam

Bui Van Ngo Nam

Trong đó họ và tên học sinh được ghi trên độ dài 20 ký tự, 3 ký tự tiếp theo sẽ ghi Nam hoặc Nu chỉ giới tính của học sinh đó Số dòng của file này sẽ bằng số học sinh trong lớp

Trang 14

Em hãy viết chương trình thực hiện các công việc sau:

Nhập tên File số liệu từ bàn phím, sau đó nhập dữ liệu từ File vào bộ nhớ máy tính

Thực hiện việc sắp xếp lại danh sách học sinh trong lớp sao cho các bạn Nữ lên trước, các bạn Nam sau

Nhập tên File kết quả từ bàn phím và ghi danh sách lớp sau khi đã sắp xếp lại ra File đó theo mẫu giống như lúc đọc vào

Uses crt;

Var tfin, tfou: string;

fin, fou: text;

n, i, j: integer;

a: array[1 100] of string[23];

atg: string[23];

Begin

Clrscr;

Write('Doc du lieu tu file:'); Readln(tfin);

assign(fin, tfin); reset(fin);

i:=1;

While not(seekeof(fin)) do

Begin

Readln(fin,a[i]);

inc(i);

End;

n:=i-1;

For i:=1 to n-1 do

If (copy(a[i],21,3)='Nam') then

For j:=i to n do

If (copy(a[j],21,3)>='Nu') then

Begin atg:=a[i]; a[i]:=a[j]; a[j]:=atg; End;

Trang 15

Write('Ghi du lieu ra file: '); Readln(tfou);

assign(fou,tfou); rewrite(fou);

For i:=1 to n do Writeln(fou, a[i]);

close(fou);

assign(fou,tfou); reset(fou);

For i:=1 to n do

Begin Readln(fou,atg); Writeln(atg); End;

close(fou);

Readln;

End

* Lưu ý: Do phạm vi đề tài có hạn nên tôi chỉ đưa ra 7 bài tập mẫu, quý thầy cô

và các em có thể tìm thêm những bài tập khác về xâu kí tự trên Intenet và một số sách Bài tập Pascal cơ bản, nâng cao khác

2 PHƯƠNG PHÁP

- Đối với phần lý thuyết Giáo viên dành khoảng một đến hai tiết để truyền đạt kiến thức phần lý thuyết cho các em, trong quá trình học sinh làm bài tập nếu gặp phải thì giáo viên gợi ý và giải thích thêm

- Gợi ý để học sinh chủ động tìm ra vấn đề trong bài bằng hệ thống câu hỏi, không nên hướng dẫn quá chi tiết vì học sinh sẽ bị thụ động, ỷ lại vào giáo viên

- Nêu bài làm của học sinh có lỗi, hãy để học sinh tự tìm lỗi và sửa lỗi của mình nếu được

- Chấp nhận các bài làm có đáp án đúng của học sinh, tuy nhiên vẫn hướng dẫn thêm cho học sinh cách làm hay hơn, tiết kiệm bộ nhớ hơn

- Đối với một số bài tập giáo viên nên cho học sinh tự chạy chương trình bằng tay để học sinh hiểu sâu hơn

- Phần bài tập giáo viên có thể ra thêm các bài tập về ”Tệp tin” cho học sinh làm, có thể tham khảo trên Internet hoặc một số sách chuyên về lập trình

Ngày đăng: 25/03/2020, 13:15

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