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

(Sáng kiến kinh nghiệm) giới thiệu một số bài tập khi học kiểu tệp

14 4 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 14
Dung lượng 117 KB

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

Nội dung

Kiểu dữ liệu mảng ban đầu còn khiến học sinh bỡ ngỡ thì khi chuyển sang kiểu dữ liệu xâu học sinh cũng làm quen dần, nhưng rồi chuyển sang tiếp kiểu dữ liệu tệp thì hầu như rất nhiều học

Trang 1

0

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc

TÊN ĐỀ TÀI GIỚI THIỆU MỘT SỐ BÀI TẬP KHI HỌC KIỂU TỆP

Quảng Bình, tháng 1 năm 2019

Trang 2

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc

TÊN ĐỀ TÀI GIỚI THIỆU MỘT SỐ BÀI TẬP KHI HỌC KIỂU TỆP

Quảng Bình, tháng 1 năm 2019

Trang 3

1 PHẦN MỞ ĐẦU

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

Môn Tin học lớp 11 là một chương trình khó đối với đại đa số học sinh Ở những lớp học sinh thiên về học tự nhiên thì có lẽ là có đỡ phần nào, còn những lớp học sinh thiên về học các môn xã hội thì mặc dù rất cố gắng, bản thân tôi trước khi lên lớp đã cố gắng tìm tòi các ví dụ liên quan đến bài giảng, ví dụ thấy

dễ hiểu và tìm tòi cách nào khiến học sinh hiểu bài nhất Tuy nhiên, việc để học sinh nắm bắt được bài học là cả một vấn đề

Từ khi bắt đầu học vào phần kiểu dữ liệu có cấu trúc, học sinh hầu như bắt đầu gặp khó khăn Kiểu dữ liệu mảng ban đầu còn khiến học sinh bỡ ngỡ thì khi chuyển sang kiểu dữ liệu xâu học sinh cũng làm quen dần, nhưng rồi chuyển sang tiếp kiểu dữ liệu tệp thì hầu như rất nhiều học sinh không còn theo kịp bài giảng, đặc biệt là khi các bài tập của kiểu tệp kết hợp với các kiểu dữ liệu khác Điều này có nhiều nguyên nhân: từ khách quan và bản thân giáo viên và cả chủ quan là chính bản thân học sinh

Giáo viên đã rất băn khoăn với nhiều năm giảng dạy tin học 11, khi học đến kiểu

dữ liệu tệp học sinh đã khó mà nắm bắt được kiến thức Đặc biệt là khi đây là một kiểu dữ liệu khó nhưng lại được ứng dụng nhiều trong quá trình lập trình

1.2 ĐIỂM MỚI CỦA ĐỀ TÀI

Với cách tiếp cận kiến thức phần kiểu dữ liệu tệp ở sách giáo khoa tin học

11 và đặc biệt sách giáo khoa chỉ đưa ra 2 ví dụ hay bài tập cho học sinh thì chắc rằng học sinh khó tiếp thu được kiến thức phần này Và những học sinh khá, giỏi

sẽ không nắm bắt được cái khó, cái hay trong kiểu dữ liệu tệp Ngoài những kiến thức liên quan đến phần kiến thức học sinh học thì tôi còn đưa thêm một số bài tập kiểu tệp liên kết với kiểu bản ghi mà học sinh không được học ở chương trình tin học 11 Với mục đích trên, giáo viên đã tìm hiểu và sưu tầm được các bài toán về kiểu dữ liệu tệp từ dễ đến khó nhằm giúp các đối tượng học sinh có thể tiếp cận dễ dàng hơn với kiểu dữ liệu tệp, trong đó có những bài được biên tập để dạy cho học sinh giỏi

- Đề tài là làm cho học sinh nhận thức rõ ràng, đầy đủ hơn về việc lĩnh hội kiến

thức kiểu dữ liệu tệp qua các bài tập

- Ngoài những kiến thức liên quan đến phần kiến thức học sinh học thì đề tài còn

đưa thêm một số bài tập kiểu tệp liên kết với kiểu bản ghi mà học sinh không được học ở chương trình tin học 11

- Đề tài đã đưa ra được các bài toán về kiểu dữ liệu tệp từ dễ đến khó nhằm giúp

các đối tượng học sinh có thể tiếp cận dễ dàng hơn với kiểu dữ liệu tệp, trong đó

có những bài được biên tập để dạy cho học sinh giỏi Điều này phù hợp hơn với các đối tượng học sinh (đặc biệt là ở trường THPT Hoàng Hoa Thám), giúp học sinh không cảm thấy quá ‘ngợp’ khi tiếp cận các bài tập trong phần kiểu tệp

- Tùy vào đối tượng học sinh, giáo viên có thể vận dụng cách dạy theo hướng

phát triển năng lực học sinh nhằm giúp học sinh tự tìm tòi ra phương pháp giải các bài tập và sau đó giáo viên giúp học sinh tổng hợp lại kiến thức

1

Trang 4

2 PHẦN NỘI DUNG

2.1 THỰC TRẠNG VẤN ĐỀ

*Về kiểu dữ liệu tệp:

Cách tổ chức tệp và nội dung các thao tác vào/ra tệp trong các ngôn ngữ lập trình

là khác nhau Tìm hiểu sâu sắc về vấn đề này không thuộc phạm vi của tin học phổ thông Với mục tiêu đặt ra ở trên, chỉ cần đặt ra trong phạm vi ngôn ngữ lập trình Pascal là đủ, bao gồm:

- Vai trò của kiểu tệp: Dữ liệu của kiểu tệp bao gồm nhiều điểm khác biệt so với các kiểu dữ liệu đã học ở các chương trước Dữ liệu kiểu tệp được lưu

dữ lâu dài ở bộ nhớ ngoài Đặc điểm này mở ra khả năng rộng lớn cho việc lưu trữ thông tin (chỉ tuỳ thuộc vào dung lượng của đĩa)

- Phân loại tệp: Sách giáo khoa giới thiệu hai kiểu phân loại tệp, theo cách

tổ chức dữ liệu của tệp trên bộ nhớ ngoài và theo cách thức truy cập tệp

*Phần dữ liệu kiểu tệp ở sách giáo khoa tin học 11 như sau:

a Khái niệm:

Tệp là kiểu dữ liệu có cấu trúc Kiểu dữ liệu này có ưu điểm so với các kiểu dữ liệu khác là:

+ Không mất thông tin khi tắt máy

+ Dung lượng dữ liệu được lưu trữ lớn

+ Có hai loại kiểu tệp: tệp có cấu trúc và tệp văn bản

b Khai báo:

- Cấu trúc chung của khai báo biến tệp:

Var <tên biến tệp>: Text ;

- Các thao tác xử lý tệp như: gán tên tệp, tạo tệp mới để ghi, mở tệp để đọc, đóng tệp

+ Assign(<tên biến tệp>, <tên tệp>);

+ Rewrite(<tên biến tệp>);

+ Reset(<tên biến tệp>);

+ Read/Readln(<tên biến tệp>,<ds tên biến>);

+ Write/writeln(<tên biến tệp>,<ds kết quả>);

+ Close(<tên biến tệp>);

- Các hàm sử dụng để đọc/ghi tệp văn bản:

+Hàm eof(biến tệp) và eoln(biến tệp)

Với phần kiến thức kiểu tệp, sách giáo khoa chỉ đưa ra ví dụ và là bài tập cho phần kiến thức này (ở bài 16 – Ví dụ làm việc với tệp) Điều này chắc chắn làm học sinh khó tiếp thu được kiểu dữ liệu tệp Và những học sinh khá, giỏi sẽ không nắm bắt được cái khó, cái hay trong kiểu dữ liệu tệp

2.2 BIỆN PHÁP GIẢI QUYẾT

Ngoài 2 bài được nêu ở bài 16 – SGK, để làm cho học sinh thấy được một số dạng bài toán quan trọng đối với kiểu dữ liệu tệp Sau đây ta xét các bài tập sau:

2.2.1 BÀI TẬP FILE VỚI KIỂU DỮ LIỆU ĐƠN GIẢN

BÀI TẬP 1 Viết chương trình ghi vào đĩa 100 số tự nhiên (Từ 1 đến 100).

Trang 5

PROGRAM GhiFile;

VAR f : text;

I : Integer;

BEGIN

Writeln(‘ CHUONG TRINH GHI TAP TIN VAO DIA:’);

Assign(f, ‘Snguyen.DAT’);

Rewrite(f);

FOR i:=1 TO 100 DO

Write(f, i);

Close(f);

Readln;

END

BÀI TẬP 2 Viết chương trình đọc 100 số tự nhiên (ở bt1) từ đĩa vào bộ nhớ.

PROGRAM DocFile;

VAR f1 : text;

I : Integer;

Sophantu: Integer;

Tenfile: String[11];

BEGIN

Writeln(‘Cho biet ten tap tin:’);

Readln(Tenfile);

Assign(f1, Tenfile);

Reset(f1);

Sophantu := 0;

WHILE not EOF(f1) DO

BEGIN

Read(f1, i); {Đọc 1 phần tử vào biến 1}

Writeln( i); {Xuất ra màn hình}

Sophantu := Sophantu +1;

END;

Close(f1);

{Thông báo ra màn hình}

Write (‘ So phan tu cua tap tin:’ , Tenfile , ‘la’);

Writeln(Sophantu);

Readln;

END

BÀI TẬP 3 Viết chương trình nhập 1 xâu từ bàn phím Ghi xâu đó vào tệp XAU.TXT

PROGRAM Ghixau;

VAR f1 : text;

3

Trang 6

s : String;

Tenfile: String[11];

BEGIN

Writeln(‘Nhap xau tu ban phim:’);

Readln(s);

Writeln(‘Cho biet ten tap tin:’);

Readln(Tenfile);

Assign(f1, Tenfile);

Rewrite(f1);

Write(f1,s)

Close(f1);

END

BÀI TẬP 4 Viết chương trình đọc xâu từ tệp XAU.INP, chuẩn hóa xâu rồi ghi ra tệp XAU.OUT.

PROGRAM DocFile;

CONST fi=’XAU.INP’;

fo=’XAU.OUT’;

VAR f1,f2 : text;

s : String;

BEGIN

Assign(f1, fi);

Reset(f1);

Assign(f2, fo);

Reset(f2);

Read(f1,s);

{Chuẩn hóa xâu}

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

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

While pos(‘ ‘,s)<>0 do Delete (s,pos(‘ ’,s),1);

Write(f2,s);

Close(f1); close(f2);

END

BÀI TẬP 5: Viết chương trình kiểm tra xem một tập tin (file) nào đó đã được ghi vào đĩa hay chưa?

PROGRAM PhatHienFile;

VAR f : file;

Tenfile : String[20];

BEGIN

Write(‘ Hay cho biet ten tap tin:’);

Readln(Tenfile);

Reset(f);

Trang 7

IF IOResult=0 THEN

BEGIN

Write(‘ Co tap tin nay tren dia’);

Close(f);

END

ELSE

Writeln(‘ Khong co tap tin nay tren dia’);

Readln;

END

2.2.2 BÀI TẬP FILE VỚI KIỂU DỮ LIỆU CÓ CẤU TRÚC

BÀI TẬP 6 Viết chương trình nhập điểm các môn học Toán, Lý, Hóa của từng học sinh vào đĩa.

PROGRAM NhapDiem;

TYPE

Ten = String[20]

HocBa = RECORD

HoTen : Ten;

Toan,Ly,Hoa:Integer;

END;

fileHB = FILE OF HocBa;

VAR

HV : HocBa;

f : fileHB;

q : Boolean;

BEGIN

Assign (f, ‘LOPHOC.DaT’);

Rewrite(f);

Q : = True;

WHILE q Do

WITH HV DO

BEGIN

Write(‘* Ho va ten hoc sinh :’);

Readln(HoTen);

IF HoTen = ‘’ THEN

q : = False

ELSE

BEGIN

Write(‘-Diem Toan =’);

Readln(Toan);

Write(‘-DiemLy =’);

Readln(Ly);

Write(‘-Diem Hoa =’);

5

Trang 8

Readln(Hoa);

Write(f,HV)

END

END;

Close(f)

END

BÀI TẬP 7 Viết Chương trình nhập dữ liệu và ghi vào dĩa các thành phần HO,TEN,TUOI,CHUC VU,BAC LUONG Khi nào không muốn nhập nữa thì bấm phím Esc.

PRORAM NhapDuLieu;

USES CTR;

TYPE

BanGhi = RECORD;

Holot : String[20];

Ten : String[8];

Tuoi: 18 60;

Chucvu: string[15]

Bacluong: 200 500;

END;

VAR

f: FILE OF BanGhi;

NV: BanGhi;

Ans: Char;

BEGIN

ClrScr;

assign( f, LUONG.DTA’);

Rewrite(f);

REPEAT

WITH NV DO

BEGIN

Write(‘* Ho dem =’);

Readln (Holot);

Write(‘* Ten =’);

Readln( Ten);

Write(‘* Tuoi =’); {$R+}

Readln( Tuoi);

Write( Chuc vu =’);

Readln( Chucvu);

Write(‘* Bac luong =’);

Readln(Bacluong);

Write(f, NV)

END

Trang 9

BÀI TẬP 8 Khi trên đĩa đã có file LUONG.DTA Hãy viết chương trình để

bổ sung thêm dữ liệu.

PROGRAM BosungDulieu;

USES CR

TYPE

Bangghi = RECORD

Holot: String[20];

Ten: String[8];

Tuoi: 18 60;

Chucvu: String[15];

Bacluong: 200 500;

END;

VAR

f: FILE OF Banghi;

NV: Banghi;

ans: Char;

BEGIN

ClrScr;

Assign (f, ‘LUONG.DTA’);

Reset (f);

Seek( f, filesize (f)); { Dinh vi o cuoi }

REPEAT

WITH NV DO

BEGIN Write(‘* HO dem =’);

Readln(Holot);

Write(‘* Ten =’) Readln( Ten);

Write(‘* Tuoi =’); {$R+}

Readln( Tuoi);

Write(‘* Chuc vu =’);

Readln( Chucvu);

Write (‘* Bac luong =’);

Readln ( Bacluong);

Write(f, NV) END

2.2.3 BÀI TẬP FILE VỚI CÁC THUỘC TÍNH TRONG THƯ VIỆN DOS BÀI TẬP 10 Sử dụng thủ tục SetFAttr trong Unit DOS, viết chương trình lập thộc tính chỉ đọc (Reds Only) và lưu trữ (Archive) cho file

AUTOEXEC.BAT.

PROGRAM Datthuoctinh;

7

Trang 10

USES DOS;

VAR

f: file;

BEGIN

Assign (f,’AUTOEXEC.BAT’);

SetFAttr(f, Read only); {Dat thuoc tinh chi dọc}

Readln;

SetFAttr(f, archive) {dat thuoc tinh luu tru}

END

BÀI TẬP 11 Viết thủ tục ghi mảng hai chiều lên đĩa với khai báo:

CONST MatrixSize = 3;

TYPE MatrixTYPE = ARRAY [1 MatrixSize,1 MatrixSize] OF Real;

PROCEDURE CatMang(VAR A: MatrixType);

USES Crt;

VAR

F: FILE OF Real;

i : Integer;

BEGIN

TextColor(yellow);

TextBackGround(Red);

CrtScr;

GotoXY(10,10);

Write(‘Chotenfile…’);

Readln(tenfile);

Assign(f,tenfile);

ReWrite(f);

FOR i: =1 TO MatrixSize DO

FOR j: =1 TO MatrixSize DO

Write (f,A[i,j]);

Close(f);

Writeln(‘Da ghi xong’);

Readln;

END

BÀI TẬP 12 Viết thủ tục đọc dữ liệu từ tập tin vào mảng hai chiều.

PROCEDURE DocVaoMang(VAR A: MatrixType);

USES Crt;

VAR

F: FILE OF Real;

Tenfile: String[11] ;

I,j : Integer;

BEGIN

CrtScr;

TextColor(White);

Trang 11

GotoXY(10,10);

Write(‘Chotenfile…’)

Readln(tenfile);

Assign(f,fenfile);

Reset(f);

FOR i: =1 TO MatrixSize DO

FOR i: =1 TO MatrixSize DO

Read(f,A[i,j]);

Writeln(‘Da Nap Xong’);

Readln;

Close(f)

END

2.3 KHẢ NĂNG ÁP DỤNG

Bằng thực nghiệm của bản thân, tôi nhận thấy đây là một sáng kiến kinh nghiệm đem lại hiệu quả cao trong dạy học tin học 11 ở trường THPT Hoàng Hoa Thám Đề tài đã áp dụng trên 3 lớp học và thấy rõ hiệu quả khi áp dụng các bài tập này trước hay đan xen với Bài 16 được giới thiệu trong SGK Tin học 11 Hơn nữa, có thể dễ dàng sử dụng trong điều kiện hiện nay của các nhà trường Vì vậy, có thể áp dụng rộng rãi cho toàn bộ các lớp khối 11 Một số bài tập mở rộng, nâng cao có thể sử dụng để dạy bồi dưỡng học sinh giỏi khối 11, 12 Tuy nhiên tùy thuộc vào từng đối tượng học sinh mà giáo viên lựa chọn sử dụng các bài tập hợp lí thì hiệu quả sẽ cao hơn

2.4 KẾT QUẢ ĐẠT ĐƯỢC

Giới thiệu các bài tập từ dễ đến khó, trước hay đan xen với bài 16 – SGK Tin học 11 mang lại sự hứng thú cho học sinh, giúp cho học sinh cảm thấy dễ dàng hơn khi học Tin học lớp 11 nói chung và kiểu dữ liệu tệp nói riêng, làm cho học sinh yêu thích môn học hơn

Với kết quả thực nghiệm khi giảng dạy có sử dụng các bài tập kiểu tệp như sau: Điểm trên 8 tăng 8,1% lên 9,3%; điểm 6,5-8 tăng từ 40,5% lên 43,4% ; 5- 6,5 điểm giảm từ 41,4% còn 40,3%; điểm dưới 5 giảm 10% còn 7%

9

Trang 12

3 KẾT LUẬN

Trên cơ sở những kinh nghiệm thu nhận được trong quá trình giảng dạy tin học 11 ở trường THPT Hoàng Hoa Thám, chúng tôi cố gắng sao cho học sinh 11 thấy không quá bỡ ngỡ khi học môn tin học nói chung và phần kiến thức về kiểu

dữ liệu tệp nói chung Tạo điều kiện cho các em thấy môn tin học 11 có những điểm gần gũi với thực tế

Đề tài tuy được làm công phu, cẩn thận và nhiều tâm huyết của người làm tuy nhiên với số năm kinh nghiệm giảng dạy tin học 11 không phải là nhiều, với đặc thù môn tin học là một môn học khá mới ở trường phổ thông, và kiến thức phần kiểu dữ liệu tệp rất rộng (đặc biệt khi kết hợp với các kiểu dữ liệu khác) chắc chắn không tránh khỏi nhiều sai sót Kính mong được sự quan tâm, giúp đỡ, đóng góp ý kiến để bài viết của chúng tôi hoàn thiện hơn Chúng tôi sẽ xem đó như là một hướng mới để phát triển đề tài của mình

Chúng tôi xin chân thành cảm ơn

Trang 13

MỤC LỤC

1 PHẦN MỞ ĐẦU 1

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

1.2 ĐIỂM MỚI CỦA ĐỀ TÀI 1

2 PHẦN NỘI DUNG 2

2.1 THỰC TRẠNG VẤN ĐỀ 2

2.2 BIỆN PHÁP GIẢI QUYẾT 2

2.2.1 BÀI TẬP FILE VỚI KIỂU DỮ LIỆU ĐƠN GIẢN 2

2.2.2 BÀI TẬP FILE VỚI KIỂU DỮ LIỆU CÓ CẤU TRÚC 5

2.2.3 BÀI TẬP FILE VỚI CÁC THUỘC TÍNH TRONG THƯ VIỆN DOS 7

2.3 KHẢ NĂNG ÁP DỤNG 9

2.4 KẾT QUẢ ĐẠT ĐƯỢC 9

3 KẾT LUẬN 10

11

Trang 14

TÀI LIỆU THAM KHẢO

1 Ngôn ngữ lập trình Pascal – Quách Tuấn Ngọc

2 Tin học đại cương – Nguyễn Mậu Hân

3 Tin học đại cương – Võ Văn Tiến Dũng – Nguyễn Gia Định

4 Cấu trúc dữ liệu và giải thuật – Lê Minh Hoàng

http://www.cs.princeton.edu/courses/archive/fall05/cos318/docs/pc-arch.html http://developer.intel.com/design/archives/processors/pro/#datasheets

http://www.hardwarecentral.com/hardwarecentral/tutorials/25/1/

Ngày đăng: 15/06/2021, 14:38

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