Tải bản đầy đủ (.doc) (23 trang)

Phương pháp dạy học sinh cách viết chương trình sử dụng kiểu dữ liệu tệp văn bản

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (224.41 KB, 23 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ
TRƯỜNG THPT HÀ TRUNG

SÁNG KIẾN KINH NGHIỆM

PHƯƠNG PHÁP DẠY HỌC SINH CÁCH VIẾT CHƯƠNG TRÌNH
SỬ DỤNG KIỂU DỮ LIỆU TỆP VĂN BẢN

Người thực hiện: Lê Thùy Giang
Chức vụ: Giáo viên
SKKN thuộc lĩnh mực (môn): Tin học

THANH HOÁ NĂM 2016

1


A. MỞ ĐẦU
1. Lý do chọn đề tài.
Nhận thấy đối với một số bài toán có khối lượng dữ liệu lớn, có yêu cầu lưu
trữ lại để xử lý nhiều lần thì cần phải có kiểu dữ liệu tệp (File) do kiểu dữ liệu
tệp có 2 đặc điểm lớn:
Thứ nhất: được lưu trữ lâu dài ở bộ nhớ ngoài (đĩa từ, đĩa CD…) nên dữ liệu
không bị mất khi tắt nguồn điện.
Thứ hai: Lượng dữ liệu trên tệp có thể rất lớn chỉ phụ thuộc vào dung lượng
đĩa.
Nhưng điều làm tôi băn khoăn nhất là khi học sinh mới bắt đầu tiếp cận
(học) với kiểu dữ liệu tệp thì học sinh không hiểu gì về bản chất, cách sử dụng
tệp trong khi viết chương trình nên tôi không khỏi băn khoăn suy nghĩ là làm thế
nào để học sinh có thể hiểu, nắm bắt được bản chất kiểu dữ liệu tệp (cụ thể trong
chương trình tin học 11 dạy tệp văn bản) và viết được chương trình tốt hơn khi


sử dụng kiểu dữ liệu tệp văn bản. Sau một thời gian giảng dạy, ôn thi học sinh
giỏi, miệt mài nghiên cứu cũng như tham khảo ý kiến đồng nghiệp tôi xin mạnh
dạn trình bày vấn đề này trong đề tài: “PHƯƠNG PHÁP DẠY HỌC SINH
CÁCH VIẾT CHƯƠNG TRÌNH SỬ DỤNG KIỂU DỮ LIỆU TỆP VĂN
BẢN”.
2. Mục đích nghiên cứu.
Nhận thấy việc viết chương trình giải các bài toán có sử dụng kiểu dữ liệu
tệp văn bản bằng ngôn ngữ lập trình nào đó (hiện nay học sinh phổ thông đang
sử dụng ngôn ngữ lập trình Pascal nên các ví dụ và bài tập tôi sử dụng ngôn ngữ
Pascal để minh họa) là rất cần thiết đặc biệt là đối tượng học sinh mới bước đầu
làm quen với cách viết chương trình có sử dụng kiểu dữ liệu tệp văn bản hoặc
đối tượng là học sinh yếu kém trong trường. Hệ thống lại các kiến thức về tệp và
các thao tác với tệp.
Vì thế, mục đích cuối cùng là muốn phần lớn đa số các học sinh viết được
chương trình sử dụng kiểu dữ liệu tệp văn bản nên tôi đã từng bước dạy học sinh
cách viết chương trình giải quyết bài toán chuyển đổi dần dần từ chương trình
không sử dụng kiểu dữ liệu tệp văn bản sang chương trình sử dụng một phần
kiểu dữ liệu tệp văn bản đến chương trình hoàn toàn sử dụng kiểu dữ liệu tệp
văn bản bằng các ví dụ cụ thể minh họa.
3. Đối tượng nghiên cứu.
- Học sinh khối 11 trường THPT Hà Trung.
- Cách viết chương trình để giải quyết các bài toán trên kiểu dữ liệu tệp văn
bản.
4. Phương pháp nghiên cứu.
Để hoàn thành SKKN này tôi đã sử dụng phối kết hợp nhiều phương pháp
trong đó phương pháp chủ yếu là nghiên cứu xây dựng cơ sở lý thuyết, phương
pháp điều tra thực tế học sinh, thu thập thông tin, phương pháp dạy học đổi mới.
2



Xây dựng một số ví dụ từ đơn giản đến nâng cao dần.

3


B. NỘI DUNG
1. Cơ sở lý luận của sáng kiến kinh nghiệm.
Thứ nhất: Khi học sinh bước sang học kỳ II môn tin học lớp 11 thì phần lớn
các em chưa hiểu cách viết chương trình sử dụng kiểu dữ liệu tệp.
Thứ hai: Hiện nay trong các cuộc thi học sinh giỏi môn tin THPT thì tất cả
các bài toán đều giải quyết trên kiểu dữ liệu tệp.
Vì thế phần này là một phần vô cùng quan trọng đối với học sinh kể cả học
sinh yếu kém và khá giỏi
2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm.
Thực tế sau nhiều năm giảng dạy bộ môn tin học 11, đặc biệt là trong năm
học 2015 - 2016 này tôi được nhà trường phân công giảng dạy toàn bộ khối
11(gồm 9 lớp) nên tôi đã có cái nhìn toàn diện hơn, bao quát hơn, khách quan
hơn về khả năng học và tiếp thu của học sinh đối với môn tin học 11, cách đánh
giá học sinh cụ thể hơn là đa số các em học sinh không hiểu gì về kiểu dữ liệu
tệp hoặc hiểu rất mơ hồ, thậm chí không biết viết chương trình có sử dụng kiểu
dữ liệu tệp, viết chương trình thì viết máy móc, dập khuôn theo SGK, sách tham
khảo hoặc theo bài mẫu của giáo viên mà không hề hiểu bản chất và cách xử lý
trong kiểu dữ liệu tệp.
Trường THPT Hà Trung nằm trên địa bàn xã Hà Bình huyện Hà Trung là
một xã nông thôn của huyện, có khoảng hơn 80% học sinh trong trường là con
em nhà làm nông nghiệp nên chưa có đủ điều kiện kinh tế cho phép mỗi gia đình
có một chiếc máy vi tính phục vụ việc học tập của các em.
Mặc dù về điều kiện cơ sở vật chất của trường tôi tương đối tốt, trong năm
học 2015 – 2016 nhà trường được cấp thêm một phòng máy nên trường đã có 03
phòng máy hoạt động tốt và liên tục đáp ứng, phục vụ cho việc học tập và thực

hành của học sinh, bên cạnh đó nhà trường có đội ngũ giáo viên trẻ nhiệt tình và
tâm huyết với nghề, Nhưng chủ yếu là do ý thức và trình độ năng lực của các em
chưa cao nên dẫn đến trình trạng như trên.
3. Các giải pháp đã sử dụng để giải quyết vẫn đề đặt ra.
3.1. Phần lý thuyết.
Muốn học sinh viết được chương trình có sử dụng kiểu dữ tệp văn bản thì
việc đầu tiên là học sinh phải hiểu rõ và nắm vững bản chất của kiểu dữ liệu tệp
văn bản và các thao tác với tệp.
3.1.1 Khai báo tệp
Tệp văn bản là một kiểu tệp được Turbo Pascal định nghĩa sẵn với từ khóa
TEXT.
Cách khai báo biến tệp văn bản có dạng:
Var <tên biến tệp>: text;
Trong đó: - Tên biến tệp: do người lập trình tự đặt và tuân theo quy tắc đặt
tên của Pascal.
- text: kiểu dữ liệu tệp văn bản.

4


Chú ý: để cho gọn tên biến tệp còn được gọi là biến tệp. 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ến tệp. Cần phân biệt
tên biến tệp khác với tên tệp.
Ví dụ:
Var
f1, f2: text;
3.1.2. Thao tác với tệp.
a, Gắn tên tệp với biến tệp
Gắn tên tệp với biến tệp thực chất là tạo một tham chiếu giữa tệp trên đĩa
(do tên tệp và đường dẫn tương ứng được HĐH xác định) và biến tệp trong

chương trình, làm cho biến tệp trở thành đại diện cho tệp. Biến tệp trở thành đối
tượng trực tiếp trong chương trình để nhận các thao tác đối với tệp trên đĩa.
Gắn tên tệp bằng thủ tục:
Assign(<biến tệp>, <tên tệp>);
Trong đó: - Tên tệp là hằng xâu hoặc biến xâu.
- Tên tệp có thể là đường dẫn chứa ổ đĩa, danh sách các thư mục
liên tiếp cách nhau bởi dấu đường dẫn( \ ), cuối cùng là tên tệp:
<ổ đĩa>: \<tên thư mục>\<tên thư mục>\…\<tên thư mục><tên tệp>
Ví dụ 1: Gắn biến tệp f1với tên tệp Bai1.inp bằng thủ tục:
Assign(f1, ‘Bai1.inp’);
Ví dụ 2: Để có thể đọc dữ liệu từ tệp Nguyento.inp trên thư mục gốc ổ đĩa D
với biến tệp f2 bằng thủ tục:
Assign(f2, ‘D:\TP\Nguyento.inp’);
b, Mở tệp.
Tệp có thể dùng để chứa dữ liệu vào hoặc kết quả ra
Trước khi mở tệp , biến tệp phải được gắn tên tệp bằng thủ tục assign.
+ Mở tệp văn bản dùng để đọc dữ liệu ra bằng thủ tục: Reset (<biến tệp>);
Ví dụ:
assign(tep1, ‘vidu.inp’);
Reset(tep1);
+ Mở tệp văn bản dùng để ghi dữ dữ liệu bằng thủ tục: Rewrite(<biến tệp>);
Ví dụ:
assign(tep2, ‘vidu.out’);
Rewrite(tep2);
c, Đọc/ ghi tệp văn bản.
+ Đọc dữ liệu trong tệp văn bản bằng thủ tục:
Read(<biến tệp>, <danh sách biến>);
Hoặc
Readln(<biến tệp>, <danh sách biến>);
Trong đó: danh sách biến là một hoặc nhiều tên biến đơn, nếu nhiều biến thì

các biến phân cách nhau bởi dấu phẩy.
Chú ý: Các dữ liệu cần đọc trong tệp gán vào danh sách biến phải lần lượt
có kiểu tương ứng với kiểu của biến trong dánh sách biến.
Ví dụ:
Read(tep1, x, y, z);
Readln(f1, N);
+ Ghi dữ liệu vào tệp văn bản bằng thủ tục:
Write(<biến tệp>, <dánh sách kết quả>);
Hoặc
Writeln(<biến tệp>, <dánh sách kết quả>);
5


Trong đó: danh sách kết quả gốm một hoặc nhiều phần tử. phần tử có thể là
biến đơn hoặc biểu thức (số học, quan hệ, logic) hoặc hằng xâu. Trường hợp có
nhiều phần tử thì các phần tử được phân cách bởi dấu phẩy.
Ví dụ:
write(tep2, min);
Hoặc
write(f2,X1, ‘ ‘,X2);
d, Đóng tệp
Đóng tệp bằng thủ tục: Close(<biến tệp>);
Chú ý: Thủ tục Close(<biến tệp>): chuyển nội dung trong bộ nhớ vào tệp
trên đĩa đồng thời đóng tệp lại giải tỏa bộ nhớ dành cho biến tệp. Các tệp khi đã
mở mà không đóng lại thì sẽ mất các dữ liệu truy xuất trên biến tệp.
Ví dụ:
Close(f1); Close(tep1);
Close(f2); Close(tep2);
* Các hàm chuẩn thường dùng trong tệp.
- Hàm EOF: Trả về giá trị TRUE khi con trỏ tệp ở vị trí cuối tệp.

Vị trí cuối tệp là vị trí ngay sau vị trí dữ liệu cuối cùng của tệp. Tại vị trí
cuối tệp là một kí tự điều khiển (mã số 26).
Việc đọc một phần tử của tệp còn cần có một điều kiện: phải thử xem tệp có
còn phần tử không, tức là con trỏ chưa trỏ đến EOF. Hàm chuẩn EOF sẽ báo cho
biết: nếu con trỏ trỏ vào cuối tệp thì EOF (<biến tệp>) = True, còn nếu con trỏ
trỏ vào phần tử của tệp thì EOF (<biến tệp>) = False. Do vậy trước khi làm một
thao tác gì để đọc tệp gán cho biến X, cần phải thử xem tệp đó đã kết thúc chưa
bằng câu lệnh:
IF NOT EOF (<biến tệp>) THEN READ (Biến tệp, X);
Hoặc nếu muốn đọc tất cả các phần tử của tệp:
WHILE NOT EOF (<biến tệp>) DO
Begin
READ (Biến tệp, X); (* Đọc một phần tử của tệp *)
......................
(* Xử lí biến X, nếu cần *)
End;
Nếu con trỏ đã trỏ đến phần EOF mà chương trình vẫn cố tình đọc thì sẽ gặp
sai và máy sẽ báo lỗi, sau đó chương trình dừng lại.
- Hàm EOLN(<biến tệp>): trả về giá trị TRUE nếu con trỏ tệp đang chỉ tới
cuối dòng.
Nhận xét:
- Việc đọc/ghi tệp văn bản tương tự như việc đọc/ghi từ bàn phím
- Tệp là một cấu trúc dữ liệu được dùng rất phổ biến. Vì vậy nắm vững bản
chất tệp và cách xử lí tệp là điều rất cần thiết.

3.2. Phần bài tập.
Hướng dẫn học sinh viết chương trình sử dụng kiểu dữ liệu tệp văn
bản thông qua một số ví dụ đơn giản
Ở phần bài tập này tôi muốn hướng học sinh tư duy theo từng bước của một
bài toán nhưng được chia thành ba bài toán con để hình thành cách viết chương

trình kiểu dữ liệu tệp văn bản trong Pascal. Khi học sinh đã hiểu bản chất và
6


định hình được bài toán thì việc viết chương trình với kiểu dữ liệu tệp văn bản sẽ
không còn khó nữa. Và bài toán nào ta cũng có thể viết chương trình với kiểu dữ
liệu tệp. Ví dụ một bài toán được chia thành ba bài toán con
Bài toán con 1: Viết chương trình không sử dụng tệp
Yêu cầu:
- Nhập dữ liệu từ bàn phím
- Xử lí bài toán, nếu có
- In kết quả ra màn hình
Bài toán con 2: Viết chương trình có sử dụng tệp
Yêu cầu:
- Mở tệp để đọc dữ liệu từ tệp
- Xử lí bài toán, nếu có
- In kết quả ra màn hình
Bài toán con 3: Viết chương trình có sử dụng tệp
Yêu cầu:
- Mở tệp để đọc dữ liệu từ tệp
- Xử lí bài toán, nếu có
- Ghi kết quả vào tệp
Sau đây là một số ví dụ, hãy lập trình giải các bài toán sau:
Bài toán 1: Một trường THPT tổ chức cho giáo viên và học sinh của trường
đi cắm trại, sinh hoạt ngoài trời ở vườn quốc gia Cúc Phương. Để lên lịch đến
thăm khu trại các lớp, thầy Hiệu trưởng cần biết khoảng cách từ trại của mình (ở
vị trí có toạ độ (0, 0) đến trại của các giáo viên chủ nhiệm. Mỗi lớp có một khu
trại của mình, vị trí trại của mỗi giáo viên chủ nhiệm có toạ độ nguyên (x, y).
(Ví dụ 1 - SGK Tin học 11 Trang 87)
Tôi chia bài toán 1 thành ba bài toán con với các mức yêu cầu như sau:

Bài toán 1a:
Yêu cầu:
- Toạ độ của mỗi giáo viên chủ nhiệm được nhập từ bàn phím;
- Tính khoảng cách giữa trại của mỗi giáo viên chủ nhiệm và trại của thầy
Hiệu trưởng;
- In kết quả ra màn hình.
Phân tích bài toán và hướng dẫn học sinh viết chương trình
Đây là bài toán yêu cầu ở mức thông thường (bài toán con 1):
- Nhập dữ liệu từ bàn phím;
- Xử lí bài toán: Tính khoảng cách giữa trại của mỗi giáo viên chủ nhiệm và
trại của thầy Hiệu trưởng;
- In kết quả tính khoảng cách ra màn hình.
Học sinh đã quen thuộc với bài toán viết chương trình kiểu này, tôi chỉ nêu
các câu hỏi để học sinh định hướng viết chương trình:
1) Nhập từ bàn phím toạ độ của mỗi giáo viên chủ nhiệm bằng câu lệnh nào?
2) Tính khoảng cách d?
Giả sử có 2 điểm A (XA; YA) và điểm B (XB; YB). Công thức tính khoảng
cách giữa 2 điểm A và B:
d (AB) = √(XA - XB )2 + (YA - YB )2
3) In kết quả tính khoảng cách ra màn hình sử dụng câu lệnh nào?
7


Từ các câu hỏi gợi ý của Giáo viên, Học sinh viết chương trình và chạy trên
máy để thấy được kết quả.
Chương trình
Program
Baitoan1a;
Var
x, y : integer ;

d : real ;
Begin
Writeln (‘Nhap toa do cua GVCN :’);
{Nhập toạ độ của mỗi GVCN từ bàn phím}
Writeln (‘Nhap x:’) ; Readln (x);
Writeln (‘Nhap y:’) ; Readln (y);
d := sqrt (x*x + y*y) ; {Tính khoảng cách}
{In kết quả tính khoảng cách ra màn hình}
Write (‘Khoang cach la :’, d : 6 : 2);
Readln
End.
Kết quả chạy chương trình
Nhap toa do cua moi
GVCN :
Nhap x: 5
Nhap y: 3
Nhận xét: Với mức độ yêu cầu ở bài toán 1a (bài toán con 1), thì đa phần
học sinh hiểu bài và viết chương trình chạy tốt, đúng kết quả, từ bài toán 1a (bài
toán con 1) tôi nâng yêu cầu lên bài toán 1b (bài toán con 2). Sử dụng tệp để đọc
cặp số nguyên, nhưng kết quả vẫn ghi ra màn hình.
Bài toán 1b:
Yêu cầu:
- Các cặp toạ độ của mỗi giáo viên chủ nhiệm đọc từ tệp TRAI.TXT
(tệp TRAI.TXT gồm các cặp số nguyên liên tiếp, các số cách nhau bởi một
dấu cách và không kết thúc bởi dấu xuống dòng).
- Tính khoảng cách giữa trại của mỗi giáo viên chủ nhiệm và trại của thầy
Hiệu trưởng;
- In ra màn hình khoảng cách vừa tính được.
Phân tích bài toán và hướng dẫn HS viết chương trình
Đây là bài toán yêu cầu ở mức bài toán con 2, tương tự với bài toán 1a, chỉ

khác một điểm đó là thay vì nhập dữ liệu từ bàn phím, thì đề yêu cầu đọc từ tệp
TRAI.TXT các cặp toạ độ của mỗi giáo viên chủ nhiệm; còn các yêu cầu còn lại
giống với bài toán 1a.
Bài toán 1b tương tự bài toán 1a, nên tôi nêu câu hỏi để HS định hướng viết
chương trình:
1) Hãy viết các câu lệnh mở tệp TRAI.TXT để đọc dữ liệu?
2) Hãy viết các câu lệnh trong câu lệnh ghép sau vòng lặp while-do làm các
nhiệm vụ:
8


a. Đọc 2 số nguyên tiếp theo trong tệp ra hai biến nguyên x và y?
b. Tính khoảng cách d từ trại thầy hiệu trưởng đến trại của mỗi GVCN có
toạ độ (x,y) vừa đọc
c. Ghi ra màn hình một dòng mới gồm thông báo “Khoang cach” và giá trị
của d.
3) Hãy viết các câu lệnh đóng tệp và kết thúc chương trình.
Chương trình
Program
Baitoan1b;
Var f : Text ; d: real ; x, y : integer ;
Begin
Assign(f, ‘TRAI,TXT’); Reset(f); {Mở tệp TRAI.TXT để đọc cặp toạ độ}
While not eof (f) do
Begin
Read ( f , x, y ) ; {Đọc cặp x, y từ tệp}
d:= sqrt ( x*x + y*y) ; {Tính khoảng cách}
{In kết quả tính khoảng cách ra màn hình}
Writeln(‘ khoang cach la :’ , d : 5 : 2);
End ;

Close ( f ) ; {Đóng tệp}
Readln
End.
Nhận xét:
Một vấn đề đặt ra khi chạy chương trình trên máy ở Bài toán 1b, rất nhiều
học sinh thắc mắc đặt câu hỏi, tại sao khi bấm tổ hợp phím Ctrl + F9 để chạy
chương trình thì chương trình dịch báo lỗi “Error 2: File not found” (Không
tìm thấy tệp). Vậy để chương trình dịch tìm thấy tệp TRAI.TXT thì ta phải làm
thế nào?
Khi dạy kiểu dữ liệu Tệp thì Giáo viên cần nói cho học sinh biết một số vấn
đề liên quan đến việc xử lí tệp mà SGK không đề cập đến. Như lỗi
“Error 2: File not found” chẳng hạn. Để sửa lỗi “Error 2: File not found”
ta làm như sau:
Bước 1: Soạn thảo chương trình trong môi trường Turbo Pascal, Nhấn F2 và
lưu tên chương trình (Ví dụ, ở đây ta lưu tên chương trình: Baitoan1b)
Bước 2: Từ môi trường soạn thảo, thực hiện thao tác: Chọn File + New...
cửa sổ soạn thảo mới trong Pascal hiện ra, tại đây ta gõ dữ liệu cần đọc trong tệp
mà đề bài yêu cầu.
Baitoan 1b: Gõ 5 3 (5 và 3 tương ứng với 2 biến nguyên x và y)
Sau đó nhấn F2 lưu với tên TRAI.TXT
TRAI.TXT
5 3
Bước 3: Trở lại với chương trình chính (Baitoan1b.Pas), ta chạy chương
trình bình thường giống như các chương trình vẫn làm, bấm tổ hợp phím Ctrl +

9


F9 sẽ thấy kết quả hiển thị trên màn hình, lỗi “Error 2: File not found” không
còn nữa.

Kết quả chạy chương trình
TRAI.TXT
Khoang cach la : 6.00
5 3
Lưu ý:
- Để thay đổi dữ liệu ở tệp TRAI.TXT ta trở lại với chương trình chính
(baitoan1b. Pas), sau đó nhấn F3 (mở tệp đã có), cửa sổ F3 mở ra bạn gõ tên tệp
TRAI.TXT, tệp hiện ra và tại đây các bạn thay đổi dữ liệu theo yêu cầu. Sau đó
nhấn F2 để lưu sự thay đổi. Trở lại với chương trình chính (baitoan1b.Pas), nhấn
F2 để lưu sự thay đổi, bấm tổ hợp phím Ctrl + F9 sẽ thấy kết quả hiển thị trên
màn hình.
- Để tiện và nhanh chóng, Turbo Pascal cho phép mở nhiều cửa sổ soạn thảo
đồng thời. Để chuyển tới cửa sổ tiếp theo nhấn phím F6. Để quay về cửa sổ
trước đó, nhấn tổ hợp phím Shift + F6.
- Thao tác tạo tệp TRAI.TXT tương tự với các thao tác tạo tệp khác. (Tệp
TRAI.TXT còn được gọi là File dữ liệu vào).
Bài toán 1c:
Yêu cầu:
- Các cặp toạ độ của mỗi giáo viên chủ nhiệm đọc từ tệp TRAI.TXT
(tệp TRAI.TXT gồm các cặp số nguyên liên tiếp, các số cách nhau bởi một
dấu cách và không kết thúc bởi dấu xuống dòng).
- Tính khoảng cách giữa trại của mỗi giáo viên chủ nhiệm và trại của thầy
Hiệu trưởng;
- Ghi kết quả tính khoảng cách vào tệp TRAI.OUT
Phân tích bài toán và hướng dẫn HS viết chương trình
Đây là bài toán yêu cầu ở mức bài toán con 3
- Đọc từ tệp TRAI.TXT các cặp toạ độ của mỗi giáo viên chủ nhiệm;
- Xử lí bài toán: Tính khoảng cách giữa trại của mỗi giáo viên chủ nhiệm và
trại của thầy Hiệu trưởng;
- Ghi kết quả vào tệp TRAI.OUT

HS đã viết được chương trình Bài toán 1b, thì với bài toán này cũng không
còn khó nữa. Với bài toán này tôi lưu ý HS cần phải có hai biến tệp, một biến
tương ứng với tệp TRAI.TXT để đọc dữ liệu, một biến tương ứng với tệp
TRAI.OUT để ghi kết quả. Tôi nêu câu hỏi để HS định hướng viết chương trình:
1) - Hãy viết các câu lệnh mở tệp TRAI.TXT để đọc dữ liệu?
- Hãy viết các câu lệnh mở tệp TRAI.OUT để ghi dữ liệu?
2) Hãy viết các câu lệnh trong câu lệnh ghép sau vòng lặp while-do làm các
nhiệm vụ:
a. Đọc 2 số nguyên tiếp theo trong tệp ra hai biến nguyên x và y?
b.
Tính khoảng cách d từ trại thầy hiệu trưởng đến trại của mỗi GVCN
có toạ độ (x,y) vừa đọc
c . Ghi kết quả vào tệp TRAI.OUT
10


3) Hãy viết các câu lệnh đóng tệp và kết thúc chương trình.
Chương trình
Program
Baitoan1c;
Var
f , g : Text ;
d: real ;
x, y : integer ;
Begin
Assign(f, ‘TRAI,TXT’); Reset(f); {Mở tệp TRAI.TXT để đọc cặp toạ độ}
Assign (g, ‘TRAI. OUT’); Rewrite(g);{Mở tệp TRAI.OUT để ghi kết
quả}
While not eof (f) do
Begin

Read ( f , x, y ) ; {Đọc cặp tọa độ x, y từ tệp}
d := sqrt ( x*x + y*y) ; {Tính khoảng cách}
Writeln(g , d); {ghi kết quả vào tệp}
End ;
Close ( f ) ; Close ( g ) ; {Đóng tệp}
Readln
End.
Nhận xét:
1) Đến bài toán 1c lại thêm một vấn đề nảy sinh: Tạo tệp TRAI.OUT có
giống với cách tạo tệp TRAI.TXT không? Trong tệp TRAI.OUT ta có cần phải
ghi dữ liệu giống tệp TRAI.TXT không?
Câu trả lời như sau: Cách tạo tệp TRAI.OUT hoàn toàn giống với cách tạo
tệp TRAI.TXT. Nhưng điểm khác nhau cơ bản nhất giữa tệp TRAI.OUT (hay
còn được gọi là File kết quả) và TRAI.TXT (hay còn được gọi là File dữ liệu
vào) là: đối với File kết quả thì ta không ghi gì ở File này cả, ta chỉ cần tạo tên
tệp TRAI.OUT. Khi chạy File chương trình cộng với File dữ liệu vào thì kết quả
sẽ được hiển thị ở File kết quả.
Kết quả chạy chương trình
TRAI.T
TRAI.O
XT
UT
5 3
6
2) Với bài toán được chia thành các mức độ khác nhau theo độ khó dần thì
học sinh dễ nắm bắt hơn. Khi dạy lập trình với kiểu dữ liệu tệp tôi luôn trình bày
Bài toán 1 (bài toán 1a, bài toán 1b, bài toán 1c) song song với nhau trên cùng
một mặt bảng (bảng được chia thành 3 phần để trình bày 3 bài toán trên) để học
sinh thấy được những điểm giống nhau và khác nhau của Bài toán 1. Từ đó
chính các em sẽ nhìn thấy được bản chất của mỗi bài toán con, và cách tiếp cận

với kiểu dữ liệu tệp từng bước như thế sẽ làm học sinh dễ nắm bắt ý tưởng bài
toán hơn từ những ví dụ tương đối đơn giản.
Bài toán 1a
Bài toán 1b
Bài toán 1c
Nhập dữ liệu từ bàn - Mở tệp để đọc dữ liệu - Mở tệp để đọc dữ liệu
11


phím→ sử dụng cặp
câu lệnh
Write (ra>; Readln(vào>);

→ sử dụng cặp câu lệnh
Assign .... Reset ...
While not Eof (tệp>) do
Begin
Read(tệp>,<DS biến>);
.......
End;
- Tính khoảng cách d? - Tính khoảng cách d?
- In ra màn hình → sử - In ra màn hình → sử
dụng cặp câu lệnh dụng cặp câu lệnh
Write(Write (ra>);

ra>);

→ sử dụng cặp câu lệnh
Assign .... Reset ...
While not Eof (tệp>) do
Begin
Read(<biến tệp>,biến>);
.......
End;
- Tính khoảng cách d?
- Mở tệp để ghi kết quả
→ sử dụng cặp câu lệnh
Assign .... Rewrite ...
- Ghi kết quả vào tệp
Write (<biến tệp>,kết quả ra>;)
Tương tự với Bài toán 1, ta cùng tìm hiểu Bài toán 2:
Bài toán 2: Cho ba số nguyên a, b, c.
Tôi chia ví dụ 2 thành ba bài toán con với các mức yêu cầu như sau:
Bài toán 2a:
Yêu cầu: Tìm số lớn nhất trong bốn số trên
Dữ liệu vào: Nhập từ bàn phím ba số nguyên a, b, c;
Kết quả: Ghi ra màn hình số lớn nhất.
Phân tích bài toán và hướng dẫn học sinh viết chương trình
Ý tưởng: - Khởi tạo giá trị Max = a ;
- Lần lượt so sánh Max với các giá trị b, c, nếu (b hoặc c) > Max
thì Max nhận giá trị mới là (b hoặc c).
Đây là bài toán tương đối đơn giản, với yêu cầu của bài toán 2a ở mức bài

toán con 1 thì đa số HS của tôi viết chương trình bài toán này rất dễ dàng,
chương trình chạy tốt, đúng yêu cầu của bài toán.
Chương trình
Program
Baitoan2a;
Var
a, b, c, max : integer ;
Begin
{Nhập a, b, c từ bàn phím}
Write(‘Nhap ba so a, b, c = ’); Readln (a, b, c);
{Tìm giá trị lớn nhất}
Max := a;
If Max < b then Max := b;
If Max < c then Max := c;
Write (‘So lon nhat la:’, Max : 6); {In giá trị lớn nhất ra màn hình}
Readln
End.
12


Kết quả chạy chương trình
Nhap ba so a, b, c = 3 4 10
So lon nhat la: 10
Bài toán 2b:
Yêu cầu: Tìm số lớn nhất trong ba số trên.
Dữ liệu vào: Trong File SOLN.INP chứa 3 số nguyên a, b, c. Các số trên
cùng một dòng được ghi cách nhau ít nhất một dấu cách trống.
Kết quả: Ghi ra màn hình số lớn nhất.
Hướng dẫn học sinh viết chương trình
Đây là ví dụ yêu cầu ở mức bài toán con 2, ở ví dụ này tôi đã yêu cầu các

em tự đặt ra các câu hỏi cần thiết (tương tự bài toán 1b) để viết chương trình:
1) Hãy viết các câu lệnh mở tệp SOLN.TXT để đọc ba số a, b, c.
2) Hãy viết các câu lệnh trong câu lệnh ghép sau vòng lặp while-do làm
các nhiệm vụ:
a) Đọc 3 số nguyên trong tệp ra các biến nguyên a, b, c.
b) Tìm số lớn nhất trong 3 số a, b, c.
c) Ghi ra màn hình dòng thông báo “so lon nhat” và giá trị lớn nhất.
3) Hãy viết các câu lệnh đóng tệp và kết thúc chương trình.
Chương trình
Program
Baitoan2b;
Var
f : Text ;
a, b, c, max : integer ;
Begin
Assign ( f , ‘SOLN.INP’); Reset ( f ) ; {Mở tệp để đọc 3 số a, b, c}
While not eof (f) do
Begin
Read ( f , a, b, c ) ; {Đọc 3 số a, b, c từ tệp}
{Tìm giá trị lớn nhất}
Max := a;
If Max < b then Max := b;
If Max < c then Max := c;
Write(‘So lon nhat la:’,Max:6);{In giá trị lớn nhất ra màn hình}
End ;
Close ( f ) ; {Đóng tệp}
Readln
End.
Kết quả chạy chương trình
SOLN.INP

So lon nhat la: 10
3 4 10
Bài toán 2c:
Yêu cầu: Tìm số lớn nhất trong ba số trên.
13


Dữ liệu vào: Trong File SOLN.INP chứa 3 số nguyên a, b, c. Các số trên
cùng một dòng được ghi cách nhau ít nhất một dấu cách trống.
Kết quả: Ghi ra File SOLN.OUT số lớn nhất
Hướng dẫn học sinh viết chương trình
Đây là bài toán yêu cầu ở mức bài toán con 3, tương tự bài toán 1c, ở bài
toán này tôi đã yêu cầu các em tự đặt ra các câu hỏi cần thiết để viết chương
trình:
1) Hãy viết các câu lệnh mở tệp SOLN.INP để đọc ba số a, b, c.
Hãy viết các câu lệnh mở tệp SOLN.OUT để ghi dữ liệu;
2) Hãy viết các câu lệnh trong câu lệnh ghép sau vòng lặp while-do làm
các nhiệm vụ:
a) Đọc 3 số nguyên trong tệp ra các biến nguyên a, b, c.
b) Tìm số lớn nhất trong 3 số a, b, c.
c) Ghi kết quả vào tệp SOLN.OUT
3) Hãy viết các câu lệnh đóng tệp và kết thúc chương trình.
Chương trình
Program
Baitoan1c;
Var
f , g : Text ;
a, b, c, max : integer ;
Begin
Assign ( f , ‘SOLN.INP’); Reset ( f ) ; {Mở tệp để đọc 3 số a, b, c}

Assign ( f , ‘SOLN.OUT’); Reset ( f ) ; {Mở tệp để ghi giá trị lớn nhất}
While not eof (f) do
Begin
Read ( f , a, b, c) ; {Đọc 3 số a, b, c từ tệp}
{Tìm giá trị lớn nhất}
Max := a;
If Max < b then Max := b;
If Max < c then Max := c;
Write (g, Max); {ghi giá trị lớn nhất vào tệp}
End ;
Close ( f ) ; Close ( g) ; {Đóng tệp f, đóng tệp g}
Readln
End.
Kết quả chạy chương trình
SOLN.I
SOLN.
NP
OUT
3 4 10
10
Khi đã quen và hiểu cách viết chương trình với kiểu dữ liệu tệp (tệp văn bản
trong Pascal) thì bài toán nào ta cũng có thể lập trình trong tệp. Ta xét tiếp ví dụ
sau đây:
Bài toán 3:

14


Một xâu được gọi là đối xứng: Khi đọc xâu đó từ phải sang trái cũng thu
được kết quả giống như đọc từ trái sang phải (xâu đối xứng còn được gọi là xâu

Palindrome).
Chia Bài toán 3 thành ba bài toán con với các mức yêu cầu như sau:
Bài toán 3a:
Yêu cầu: Kiểm tra xem xâu kí tự có phải là xâu đối xứng không?
Dữ liệu vào: Nhập từ bàn phím một xâu kí tự chữ thường bất kì
Kết quả: In kết quả ra màn hình
Hướng dẫn học sinh viết chương trình
Ví dụ: xâu đối xứng: ‘abcdedcba’
Xâu không đối xứng: ‘abcabc’
Ý tưởng:
- Nhập một xâu kí tự chữ thường bất kì.
- So sánh các cặp kí tự ở vị trí đối xứng nhau có giống nhau hạy không,
nếu chỉ cần phát hiện được tại một vị trí nào đó mà cặp kí tự không giống nhau
thì kết luận luôn là xâu không đối xứng ngược lại đến khi so sánh hết mà không
tìm thấy cặp kí tự đối xứng khác nhau thì kết luận là xâu đối xứng.
Bài toán này có rất nhiều thuật toán, sau đây là một thuật toán để giải Bài
toán 3. (thuật toán này dành cho học sinh nâng cao hơn để có thể trả lời được
cẩu hỏi bài 1b trang 73 SGK)
Chương trình
Program Baitoan3a ;
Var
S : string; i: integer; kiemtra: boolean;
Begin
Write(‘Nhap xau ki tu S:’); readln(S); {Nhập xâu S từ bàn phím}
kiemtra:= true;
For i := 1 to length(S) div 2 do
if S[i] <> S[length(S)-i+1] then kiemtra:=false;
if kiemtra then writeln(‘La xau doi xung’)
else writeln(‘Khong la xau doi xung’);
readln

End.
Kết quả chạy chương trình lần 2
Kết quả chạy chương trình lần 1
Nhap xau ki tu S: abcabc
Nhap xau ki tu S:
Khong la xau doi xung
abcdedcba
LaBài
xau
doi
toán
3b:xung
Yêu cầu: Kiểm tra xem xâu kí tự có phải là xâu đối xứng không?
Dữ liệu vào: Chứa trong File XAUDX.INP gồm một xâu kí tự
Kết quả: Ghi ra màn hình dòng thông báo
- Nếu là xâu đối xứng: ‘La xau doi xung’
- Nếu không là xâu đối xứng: ‘Khong la xau doi xung’
Hướng dẫn học sinh viết chương trình
15


Kiểu xâu cũng tương tự như các kiểu dữ liệu khác, học sinh tự đặt ra các câu
hỏi cần thiết để viết chương trình:
1) Hãy viết các câu lệnh mở tệp XAUDX.INP để đọc xâu kí tự
2) Hãy viết các câu lệnh trong câu lệnh ghép sau vòng lặp while-do làm
các nhiệm vụ:
a) Đọc xâu kí tự trong tệp ra biến S.
b) Kiểm tra các kí tự ở vị trí đối xứng nhau có khác nhau hay không?
c) Ghi ra màn hình dòng thông báo: Nếu thỏa mãn điều kiện thì ‘La xau
doi xung’ Ngược lại ‘Khong la xau doi xung’

3) Hãy viết các câu lệnh đóng tệp và kết thúc chương trình.
Chương trình
Program Baitoan3b ;
Var f : Text ;
S : string; i : integer;
Begin
Assign ( f , ‘XAUDX.INP’); Reset ( f ) ; {Mở tệp để đọc xâu kí tự}
While not eof (f) do
Begin
Read ( f , S1) ; {Đọc xâu S1 từ tệp}
kiemtra:= true;
For i := 1 to length(S) div 2 do
if S[i] <> S[length(S)-i+1] then kiemtra:=false;
if kiemtra then writeln(‘La xau doi xung’)
else writeln(‘Khong la xau doi xung’);
End;
Close (f); {Đóng tệp}
readln
End.
Kết quả chạy chương trình lần 1
XAUDX.INP
La xau doi xung
abcdedcba
Kết quả chạy chương trình lần 2
XAUDX.INP
Khong la xau doi xung
abcabc
Bài toán 3c:
Yêu cầu: Kiểm tra xem xâu kí tự có là xâu đối xứng không?
Dữ liệu vào: Chứa trong File XAUDX.INP gồm: một xâu kí tự

Kết quả: Ghi ra File XAUDX.OUT như sau:
- Nếu là xâu đối xứng: ‘La xau doi xung’
- Nếu không là xâu đối xứng: ‘Khong la xau doi xung’
Hướng dẫn học sinh viết chương trình
Học sinh tự đặt ra các câu hỏi cần thiết để viết chương trình:
16


1) - Hãy viết các câu lệnh mở tệp XAUDX.INP để đọc xâu kí tự.
- Hãy viết các câu lệnh mở tệp XAUDX.OUT để ghi dữ liệu;
2) Hãy viết các câu lệnh trong câu lệnh ghép sau vòng lặp while-do làm
các nhiệm vụ:
a) Đọc xâu kí tự trong tệp ra biến S
b) Kiểm tra các kí tự ở vị trí đối xứng nhau có khác nhau hay không?
c) Ghi kết quả vào tệp XAUDX.OUT
3) Hãy viết các câu lệnh đóng tệp và kết thúc chương trình.
Chương trình
Program Baitoan3c ;
Var f , g : Text ; S: string ; i: integer ;
Begin
Assign ( f , ‘XAUDX.INP’); Reset (f) ; {Mở tệp để đọc xâu kí tự}
Assign (g , ‘XAUDX.OUT’); Reset (g) ; {Mở tệp để ghi}
While not eof (f) do
Begin
Read (f, S) ;
kiemtra:= true;
For i := 1 to length(S) div 2 do
if S[i] <> S[length(S)-i+1] then kiemtra:=false;
if kiemtra then writeln(‘La xau doi xung’)
else writeln(‘Khong la xau doi xung’);

End;
Close (f); Close (g);
readln
End.
Kết quả chạy chương trình lần 1
XAUDX.INP
XAUDX.OUT
abcdedcba
La xau doi xung
Kết quả chạy chương trình lần 2
XAUDX.INP
XAUDX.OUT
abcabc
Khong la xau doi xung
Nhận xét:
Qua 3 bài toán, đi từ cách viết chương trình cơ sở nhất, sau đó mới sử
dụng tệp, học sinh đã quen dần với cách viết chương trình trong tệp. Khi đa số
học sinh đã thành thạo và quen với việc sử dụng tệp để viết chương trình thì ta
có thể bỏ qua bài toán con 1. Ta xét bài toán sau:
Bài toán 4: Số nhị phân là số được tạo thành bởi hai chữ số 0 và 1. Muốn
chuyển đổi một số nguyên N (N ≥ 0) từ hệ thập phân sang hệ nhị phân ta làm
như sau: ta lấy số N chia cho 2 được thương là P, rồi lấy thương P chia cho 2. Cứ
lặp lại cho đến khi nào thương bằng 0 thì dừng lại, sau đó viết liên tiếp dư từ
dưới lên thì ta thu được số nhị phân.

17


Ví dụ 4a:
Yêu cầu: Chuyển một số thập phân bất kì sang nhị phân.

Dữ liệu vào: Chứa trong File NHIPHAN.INP gồm: một số nguyên dương
Kết quả: Ghi ra màn hình kết quả chuyển đổi số thập phân sang nhị phân.
Hướng dẫn học sinh viết chương trình
Ý tưởng: - Dùng mảng một chiều để lưu phần dư của N chia cho 2
- Khi N chia cho 2 ta chỉ lấy phần nguyên
- Lặp lại cho đến khi n = 0
- In mảng chứa phần dư, nhưng đảo ngược ta được số nhị phân.
Chương trình:
Program Bài toán4a;
Var f : Text ;
A: array [1..20] of byte ;
n, i, j : integer ;
Begin
Assign ( f , ‘NHIPHAN.INP’); Reset (f) ;
While not eof (f) do
Begin
Readln ( f, n ) ;
i := 1;
Repeat
a[i] := n mod 2 ;
n := n div 2;
i := i +1 ;
Until (n = 0);
Write (‘So nhi phan la:’);
For j := i – 1 downto 1 do write (a[j]);
End;
Close (f);
Readln;
End.
Kết quả chạy chương trình

NHIPHAN.INP
16

So nhi phan la:
10000

Bài toán 4b:
Yêu cầu: Chuyển một số thập phân bất kì sang nhị phân.
Dữ liệu vào: Chứa trong File NHIPHAN.INP gồm: một số nguyên dương
Dữ liệu ra: Ghi ra File NHIPHAN.OUT gồm: Số nhị phân tương ứng
Chương trình:
Program Baitoan4b;
Var f , g : Text ;
A: array [1..20] of byte ;
n, i, j : integer ;
Begin
18


Assign ( f , ‘NHIPHAN.INP’); Reset (f) ;
Assign ( g , ‘NHIPHAN.OUT’); Rewrite (g) ;
While not eof (f) do
Begin
Readln ( f, n ) ;
i := 1;
Repeat
a[i] := n mod 2 ;
n := n div 2;
i := i +1 ;
Until (n = 0);

For j := i – 1 downto 1 do write (g, a[j]);
End;
Close (f); Close (g);
Readln;
End.
Kết quả chạy chương trình
NHIPHAN.INP
NHIPHAN.OUT
16
10000

3.3. Một số bài tập áp dụng
Hãy lập trình giải các bài toán sau:
Bài 1: Tìm số lớn nhất trong 4 số nguyên a, b, c, d
Bài 1a: Yêu cầu: Tìm số lớn nhất trong bốn số trên
Dữ liệu vào: Nhập từ bàn phím bốn số nguyên a, b, c, d;
Kết quả: Ghi ra màn hình số lớn nhất.
Bài 1b: Yêu cầu: Tìm số lớn nhất trong bốn số trên.
Dữ liệu vào: Chứa trong File SOLN.TXT gồm: 4 số nguyên a, b, c, d. Các
số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách trống.
Kết quả: Ghi ra màn hình số lớn nhất.
Bài 1c: Yêu cầu: Tìm số lớn nhất trong bốn số trên.
Dữ liệu vào: Chứa trong File SOLN.TXT gồm: 4 số nguyên a, b, c, d. Các
số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách trống.
Kết quả: Ghi ra File SOLN.OUT số lớn nhất
Bài 2: Một số nguyên dương K là số nguyên tố nếu nó có đúng 2 ước số
khác nhau là 1 và chính nó.
Bài 2a. Cho một mảng gồm n số nguyên (2 < n < 40). Hãy đếm số lượng số
nguyên tố có trong mảng vừa nhập. In kết quả ra màn hình.
Bài 2b.

Yêu cầu: Cho biết dãy số đã nhập có bao nhiêu số nguyên tố?
Dữ liệu vào: Chứa trong File SONT.INP gồm:
- Dòng 1: Số nguyên dương n (2 < n < 40 )
- Dòng tiếp theo: lần lượt ghi n số a1, a2, ... , an
19


Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách trống.
Kết quả: Ghi ra màn hình: Số lượng số nguyên tố trong dãy
Bài 2c.
Yêu cầu: Cho biết dãy số đã nhập có bao nhiêu số nguyên tố?
Dữ liệu vào: Chứa trong File SONT.INP gồm:
- Dòng 1: Số nguyên dương n (2 < n < 20 )
- Dòng 2: lần lượt ghi n số a1, a2, ... , an
- Kết quả: Ghi ra file SONT.OUT gồm: Số lượng số nguyên tố tương ứng
Ví dụ:
SONT.I
NP
5
1 2 4 5 6

SONT.OUT
2

Bài 3: Số hoàn hảo là số có tổng các ước của nó (trừ nó) bằng chính nó.
Ví dụ : 6 = 1 + 2 + 3
Bài 3a. Viết chương trình kiểm tra xem 1 số được nhập từ bàn phím có phải
là số hoàn hảo không? In kết quả ra màn hình.
Bài 3b.
Yêu cầu: Cho biết số đã cho có phải là số hoàn hảo hay không?

Dữ liệu vào: Chứa trong File SOHH.INP gồm: một số n nguyên.
Kết quả: Ghi ra màn hình dòng thông báo
- Nếu là số hoàn hảo: ‘So da cho la so hoan hao’
- Nếu không là số hoàn hảo: ‘So da cho khong la so hoan hao’
Bài 3c.
Yêu cầu: Cho biết dãy số đã cho có phải là số hoàn hảo hay không?
Dữ liệu vào: Chứa trong File SOHH.INP gồm: một số n nguyên.
Kết quả: Ghi ra file SOHH.OUT như sau:
- Nếu là số hoàn hảo: ‘So da cho la so hoan hao’
- Nếu không là số hoàn hảo: ‘So da cho khong la so hoan hao’
Bài 4: Một xâu kí tự có thể nén lại thành 1 xâu mới bằng cách nén các kí tự
giống nhau đứng cạnh nhau. Ví dụ trong xâu MMM sẽ nén thành 3M. Hãy lập
trình để nén 1 xâu kí tự in hoa theo cách trên.
Dữ liệu vào: Chứa trong File NENXAU.INP gồm: một xâu, mà các kí tự là
chữ cái in hoa.
Kết quả: Ghi ra file NENXAU.OUT gồm: một xâu kí tự sau khi nén.
Ví dụ:
NENXAU.I
NENXAU.
NP
OUT
AAAAIBBBKC 4AI3BKC
Bài 5: Cho số tự nhiên N
Yêu cầu: Hãy tính số chữ số 0 liên tiếp bên phải của N?
20


Dữ liệu vào: trong file Bai4.INP gồm duy nhất một số tự nhiên
1<=N<=10000
Kết quả: kết quả ghi ra file Bai4.OUT gồm duy nhất một số T là số các chữ

số 0 tìm được theo đề bài
Ví dụ:
Bai4.INP
Bai4.OUT
12
2
4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, bản
thân, đồng nghiệp và nhà trường.
Khi tôi áp dụng sáng kiến kinh nghiệm vào dạy học thực tế thì tôi nhận thấy
kết quả của hoạt động giáo dục trong nhà trường được nâng cao. Cụ thể khi bắt
đầu chương trình học kỳ II môn tin học (theo phân phối chương trình trung học
phổ thông môn tin học khối 11) thì đa số các em không hiểu gì về kiểu dữ liệu
tệp và áp dụng nó như thế nào để có thể viết được chương trình có sử dụng kiểu
dữ liệu tệp văn bản thế nhưng kết quả thật bất ngờ và khả quan được nhận thấy
một cách rõ rệt nhất và khách quan nhất đó là học sinh đã viết được chương
trình sử dụng kiểu dữ liệu tệp văn bản khi tôi cho làm bài kiểm tra thực hành
trên máy tính.
Đó chính là một nguồn động lực lớn cho chính bản thân tôi và đồng nghiệp
để tiếp tục tìm tòi ra các phương pháp, các sáng kiến có thể áp dụng dạy vào bài
học cho học sinh hiểu rõ các vấn đề, các bài toán khó hơn để nâng cao trình độ
học vấn của học sinh không chỉ bộ môn tin học nói riêng mà tất các các môn học
khác nói chung.

21


C. KẾT LUẬN, KIẾN NGHỊ
I. Kết luận.
Trải qua một thời gian lao động nghiêm túc, miệt mài giảng dạy và nghiên
cứu tài liệu, được sự ủng hộ và giúp đỡ rất nhiệt tình của các đồng nghiệp, của

học sinh, đặc biệt là sự nổ lực của bản thân để tôi hoàn thành đề tài này.
Trong đề tài này không chỉ là sự biên soạn, sự sưu tầm, bổ sung mà còn nêu
lên một số kinh nghiệm và thực nghiệm sư phạm. Tất cả tuy chưa đầy đủ nhưng
bước đầu đã thu được một số kết quả nhất định.
Với nội dung chính xác, logic, được hệ thống hoá …cung cấp thêm cho bạn
đọc một tư liệu, giúp cho việc giảng dạy và học tập được tốt hơn. Nhưng do còn
hạn chế nên đề tài này của tôi có thể chưa đáp ứng được tất cả sự mong mỏi ở
đồng nghiệp và học sinh. Vì vậy, tôi mong khi được tiếp xúc với tài liệu này các
bạn đồng nghiệp cũng như học sinh hãy góp ý, bổ sung để tôi có thể hoàn chỉnh
đề tài này, mà quan trọng hơn cả là chúng ta cùng nhau dạy tốt, tất cả vì sự
nghiệp giáo dục, vì học sinh thân yêu.

II. Kiến nghị.
Cùng với việc đổi mới phương pháp giảng dạy là đổi mới phương pháp kiểm
tra đánh giá. Đặc biệt là bộ môn tin học là môn học rất đặc thù, cụ thể là kiểm
tra thực hành trên máy thay vì trên giấy. Do vậy, trong quá trình dạy và học giáo
viên chúng ta phải biết tận dụng điều này mà phát huy tối đa năng lực của học
sinh phải biết tổ chức các hoạt động thực hành và ngoại khóa để kích thích tính
tìm tòi, đam mê sáng tạo của học sinh. Để làm được điều đó thì nhà trường và
các cấp lãnh đạo cần quan tâm hơn nữa, sát sao hơn nữa tới điều kiện cơ sở vật
chất phòng máy thực hành cho bộ môn tin học

Tài liệu tham khảo
1. Tin học 11 (SGK) – NXB Giáo dục
2. Tin học 11 (SGV) – NXB Giáo dục
3. Dạy học theo chuẩn kiển thức, kĩ năng môn Tin học 11 – NXB Đại học sư
phạm
4. Ngôn ngữ lập trình Pascal – Quách Tuấn Ngọc – NXB Thống kê
5. Bài tập Turbo Pascal cơ sở - Hoàng Trung Sơn – Trần Thị Thanh Mơ
6. Giải thuật và lập trình – Lê Minh Hoàng

XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ

Thanh hoá, ngày 20 tháng 05 năm 2016
Tôi xin cam đoan đây là SKKN của
mình viết, không sao chép nội dung
của người khác.
(Ký và ghi rõ họ tên)

Lê Thùy Giang
22


MỤC LỤC
A. MỞ ĐẦU
1. Lý do chọn đề tài………………………………………….……1
2. Mục đích nghiên cứu…………………………………....….…..1
3. Đối tượng nghiên cứu…………………………………….…….1
4. Phương pháp nghiên cứu…………………………………….…1
B. NỘI DUNG SÁNG KIẾN KINH NGHIỆM
1. Cơ sở lý luận của SKKN…………………….……………....…2
2. Thực trạng vấn đề trước khi áp dụng SKKN………...……...…2
3. Các giải pháp đã sử dụng để giải quyết vấn đề đặt ra……….…2
3.1. Phần lý thuyết……………………………………....…2
3.2. Phần bài tập………………………….…….…….….…4
3.3. Một số bài tập áp dụng……………………..…………17
4. Hiệu quả của SKKN………………………………..……..……19
C. KẾT LUẬN, KIẾN NGHỊ
1. Kết luận………………………………………………….….....20
2. Kiến nghị……………………………………………….….…..20


23



×