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

Rèn luyện kỹ năng lập trình hiệu quả cho học sinh trường thpt yên định 3

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 (220.39 KB, 22 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA

TRƯỜNG THPT YÊN ĐỊNH 3

SÁNG KIẾN KINH NGHIỆM

RÈN LUYỆN KỸ NĂNG LẬP TRÌNH HIỆU QUẢ
CHO HỌC SINH TRƯỜNG THPT YÊN ĐỊNH 3

Họ và tên tác giả: Lê Tiến Lực
Chức vụ: Giáo viên
SKKN thuộc mơn: Tin học

THANH HỐ, NĂM 2019

1


MỤC LỤC
Nội dung
1. Mở đầu
1.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
2. Nội dung sáng kiến kinh nghiệm
2.1. Cơ sở lý luận
2.2. Thực trạng của vấn đề trước khi áp dụng sáng kiến kinh nghiệm
2.3. Các giải pháp đã sử dụng để giải quyết vấn đề
2.3.1. Rèn luyện tư duy thuật tốn cho học sinh THPT
2.3.2. Phong cách lập trình tốt


2.3.3. Phong cách viết mã nguồn
2.3.4 .Tối ưu sự thực thi mã nguồn
2.3.5. Kiểm nghiệm chương trình với các test đầy đủ nhất
2.3.6. Các dạng toán cơ bản bồi dưỡng môn Tin cho HSG THPT
2.4. Hiệu quả của sáng kiến kinh nghiệm
3. Kết luận, kiến nghị

Trang
2
2
2
3
3
4
4
4
5
5
6
7
9
10
10
19
19

2


1. MỞ ĐẦU

1.1. Lí do chọn đề tài.
Việt Nam đang đổi mới một cách căn bản, toàn diện nền giáo dục để nền
giáo dục Việt Nam phát triển hòa nhập với quốc tế, theo kịp với sự phát triển
như vũ bão của khoa học - kĩ thuật - công nghệ và tri thức của lồi người đang
gia tăng nhanh chóng. Đổi mới giáo dục tồn diện là một lộ trình đã và đang
được thực hiện, một trong những bước đi đầu tiên của quá trình đổi mới ấy là
đổi mới phương pháp dạy học nhằm phất huy tính tích cực, chủ đông, sáng tạo
trong học tập để tạo đà cho các cấp học tiếp theo hoặc trong thực tiễn cuộc sống
sau này. Mơn tin học được đưa và chương trình THPT và đang tích cực thực
hiện đổi mới phương pháp dạy học nhằm mang lại hiệu quả dạy học và giáo dục
cao nhất.
Mặt khác môn Tin học không phải là mơn khoa học lý thuyết thuần túy vì
vậy học sinh không thể nhớ nếu như không hiểu bài. Việc giáo viên bắt học sinh
ghi nhớ thụ động từng nội dung trong sách giáo khoa là một điều cực khó, cho
dù học sinh có cố gắng ghi nhớ thì vẫn bị lẫn lộn. Hơn nữa, khi gặp các bài toán
phải sử dụng thuật toán phức tạp nhiều em lúng lúng. Việc giải các bài toán này
thực sự cần thiết cho các em khi làm các học lập trình trong chương trình Tin
học phổ thơng nói riêng và việc giải quyết các bài tốn thực tế nói chung.
Là giáo viên trực tiếp giảng dạy mơn Tin học nhiều năm tơi ln tìm tịi
vận dụng những phương pháp dạy học tích cực để giúp các em tiếp cận và giải
quyết hiệu quả các bài học Tin học nói chung và các bài tập lập trình nói riêng,
trong đó có kỹ năng giúp học sinh lập trình giải các bài tốn trên ngơn ngữ lập
trình bậc cao (cụ thể là NNLP Pascal) sao cho hiệu quả nhất, hướng đến tính
chuyên nghiệp nhất để tạo điều kiện cho các em có thể học lên cao nữa, mặt
khác học sinh cần rèn luyện tính kiêm trì, chịu khó, chăm chỉ và làm việc có tổ
chức, có kế hoạch trong học tập cũng như lao động sản xuất sau này.
1.2. Mục đích nghiên cứu.
Theo những tin tức tư vấn của chuyên gia giáo dục, việc kết hợp lý thuyết
và thực hành là xu hướng phát triển tất yếu của nền giáo dục để có thể đáp ứng
nhu cầu chất lượng nguồn lao động hiện nay. Đây cũng được xem là phương

pháp dạy học Tin học hiệu quả. Thực tế, do học sinh phải học quá nhiều môn, cá
biệt có em cho rằng Tin học là mơn học phụ, không thi THPT quốc gia. Nếu chỉ
học lý thuyết chung chung thì học sinh sẽ khơng thể nắm bắt và sẽ nhanh qn.
Bên cạnh đó thì Tin học cũng là mơn học địi hỏi kỹ năng sử dụng máy tính
thành thạo. Chính vì thế, cần kết hợp đào tạo lý thuyết và rèn luyện kỹ năng thực
hành theo hướng chuẩn và chuyên nghiệp. Đây được xem là yếu tố cần thiết đối
với dạy học môn Tin học.
Mặt khác qua quá trình nhiều năm giảng dạy thực tế tại đơn vị và trao đổi
cùng đồng nghiệp các đơn vị khác, qua quá trình tìm hiểu học sinh, nhất là trong
3


các bài thi của các học sinh giỏi cấp tỉnh những năm qua cho thấy: Một số bài
làm của các em cịn chưa được viết đúng phong cách lập trình có cấu trúc, chưa
có phong cách viết mã nguồn chuyên nghiệp, chưa thực sự tối ưu hóa mã nguồn
nên gây khó khăn cho việc hiệu chỉnh và phát triển chương trình. Hầu hết các
chương trình của các em học sinh mang tính chú trọng tìm output nên khi đọc
chương trình người khác rất khó hiểu và khó hiệu chỉnh theo hướng chun
nghiệp. Để khắc phục tình trạng này tơi mạnh dạn áp dụng những sáng kiến của
mình trong nhiều năm, với nhiều thế hệ học sinh một cách thường xuyên và liên
tục trong quá trình dạy học từng bài học, từng tiết học, đặc biệt là trong quá trình
bồi dưỡng học sinh khá giỏi môn Tin học. Kết quả bước đầu đạt được là rất đáng
khích lệ và tự hào, được đồng nghiệp và học sinh đánh giá cao.
1.3. Đối tượng nghiên cứu.
Sáng kiến kinh nghiệm được nghiên cứu và đúc rút kinh nghiệm tập trung vào
các vấn đề sau:
- Rèn luyện tư duy thuật toán cho học sinh THPT
o Rèn luyện kỹ năng tìm tịi thuật tốn giải các bài toán hiệu quả.
o Xác định rõ INPUT và OUTPUT.
o Mịn dần thuật tốn.

- Rèn luyện phong cách lập trình tốt cho học sinh THPT
.
o Quy ước về cách đặt tên cho các định danh.
o Phong cách viết mã nguồn.
o Tối ưu sự thực thi mã nguồn.
o Tạo các bộ Test kiểm tra tính đúng đắn của chương trình.
- Các dạng tốn tiêu biểu bồi dưỡng mơn Tin học cho HSG THPT
o 1.Các bài toán số học
o 2.Các bài toán về mảng một chiều, hai chiều.
o Các bài toán về xử lý xâu
1.4. Phương pháp nghiên cứu.

-

Để nghiên cứu được đề tài tôi đã sử dụng một số phương pháp sau:
Phương pháp nghiên cứu xây dựng cơ sở lý thuyết lập trình.
Nghiên cứu các vấn đề lí luận có liên quan đến đề tài như các tài liệu về
thuật toán, các bài toán hay trong tin học.
Nghiên cứu các tài liệu về phương pháp dạy học tích cực mơn Tin học.
Nghiên cứu nội dung cấu trúc của chương trình mơn Tin học THPT.
Phương pháp khảo sát thực tế, thu thập thơng tin về học sinh.
Trao đổi với giáo viên có kinh nghiệm về phương pháp dạy học tích cực.
Tìm hiểu khó khăn của học sinh và giúp đỡ các em trong q trình học
tập, thực hành trên phịng máy.
4


2. NỘI DUNG SÁNG KIẾN KINH NGHIỆM
2.1. Cơ sở lí luận.
- Cơ sở của việc dạy học bộ môn: Dạy học là một tác động hai chiều giữa

giáo viên và học sinh, trong đó học sinh là chủ thể của q trình nhận thức, cịn
giáo viên là người tổ chức các hoạt động nhận thức cho học sinh. Nếu giáo viên
có phương pháp tổ chức tốt, phù hợp thì học sinh sẽ nắm kiến thức dễ dàng, có
thể giải quyết tốt các bài tốn, tình huống cụ thể trong thực tiễn và ngược lại.
- Cơ sở của việc nắm kiến thức, kĩ năng:
+ Về mặt kiến thức: Học sinh phải nắm được các đơn vị kiến thức cơ bản
trong sách giáo khoa, trong giờ học theo chuẩn kiến thức, kĩ năng do Bộ giáo
dục và đào tạo quy định. Đó là nền tảng cơ bản để các em phát triển tư duy, nâng
cao năng lực giải quyết vấn đề.
+ Về kĩ năng: Học sinh biết vận dụng kiến thức đã học trong các giờ học
để giải quyết nhanh gọn các dạng bài tập từ đơn giản đến phức tạp, từ tái hiện
kiến thức đến vận dụng kiến thức. Điều đó địi hỏi học sinh phải có phương pháp
giải quyết vấn đề cho các dạng bài tập tốt. Việc học của học sinh cần được chú ý
ở hai mức độ: mức độ vận dụng và mức độ sáng tạo. Trong đó mức độ sáng tạo
địi hỏi học sinh phải có tố chất, có kĩ năng tổng hợp, phân tích để từ đó có cách
giải quyết phù hợp.
2.2. Thực trạng của vấn đề trước khi áp dụng sáng kiến kinh nghiệm.
- Qua giảng dạy môn Tin học ở trường THPT, bản thân tôi nhận thấy rằng
nhiều học sinh lớp 11 thấy môn lập trình Pascal khó, khơ khan và cực kỳ phức
tạp. Mới đầu các em cũng rất sợ vì khi thấy giải một bài tốn ở ngồi thì đơn
giản và chỉ trong vịng vài giây có thể nhẩm ra kết quả cịn ở trong lập trình
cũng bài tốn đó mà phải làm đến hàng chục phút, đưa ra thuật toán mà có thể
cho kết quả sai.
- Tâm lý một số em đều cho rằng môn Tin học không phải là môn học chính,
vì vậy đại đa số các em khơng tích cực trong học tập và chủ yếu thụ động tiếp
thu kiến thức theo hướng dẫn của giáo viên với tâm lý học để lấy điểm cho hết
giờ, hết bài mà chưa nhận ra lợi ích thiết thực, lâu dài của bộ mơn.
- Xét ở một góc độ nào đó lập trình cũng là một phần học khó đối với học
sinh THPT. Khó ở đây khơng phải do tính phức tạp của phần học hay phạm vi
kiến thức quá rộng lớn. Nếu đem so sánh lập trình và các mơn Tốn học, Vật

Lý, Hóa học thì lập trình Pascal gọn nhỏ hơn nhưng lại khó tiếp cận hơn.
- Lập trình Pascal "khó" đối với học sinh THPT vì mơi trường lập trình
Pascal có giao diện và các từ khóa đều bằng tiếng Anh, các dịng thơng báo hay
trợ giúp cũng vậy. Nhìn chung học sinh THPT vốn tiếng Anh khơng nhiều, nhiều
em còn yếu về tiếng Anh..
5


- Một vấn đề nữa cũng là rào cản đối với việc các học sinh THPT tiếp cận
với lập trình Pascal đó là: tư duy Tốn học của các em cịn hạn chế phụ thuộc
vào Sách Giáo Khoa do đó kỹ năng phân tích, tổng hợp, xây dựng thuật tốn cho
mỗi bài tốn hay vấn đề cần lập trình chưa tốt. Các em vẫn thụ động trong việc
tiếp cận bài toán, sắp xếp tư duy, xây dựng thuật giải.
- Từ thực tế trên, trong q trình dạy học tơi ln băn khoăn, trăn trở làm thế
nào nâng cao chất lượng kỹ năng lập trình cho học sinh lớp 11 THPT. Việc tiếp
cận với mơn học rất khó khăn, phải làm rất nhiều lần và thực hành rất nhiều tiết
các em mới hiểu việc nhập và xuất dữ liệu. Do đó sẽ rất khó khăn để các em
hình thành kỹ năng viết chương trình. Nhất là những năm gần đây Ngành giáo
dục luôn thành lập đội tuyển tham dự thi học sinh giỏi mơn Tin học,…. Điều đó
đã thúc đẩy tơi trong q trình giảng dạy phải nghiên cứu tìm tịi biện pháp, kinh
nghiệm để giúp cho các em có sự đam mê học tập về lập trình, giúp các em biết
được quy trình lập trình như thế nào và định hướng cho học sinh cách để trở
thành một nhà lập trình thì cần phải nâng cao kỹ năng lập trình trên NNLT
Pascal theo hướng chuyên nghiệp. Giúp các em hiểu, u thích lập trình và học
lập trình trong sự hứng thú, phấn khởi.
- Một số học sinh có suy nghĩ sai lầm Tin học chỉ là mơn học giải trí để lên
mạng, xem phim, chơi game, nghe nhạc…. mà quên mất rằng tin học có nhiều
ứng dụng quan trọng khác trong đời sống. Do vậy khó khăn khi đưa Tin học vào
trường THPT xuất phát từ việc phát triển toàn diện cho học sinh thêm vào đó
qua mơn học này hình thành phẩm chất lao động chăm chỉ, kiên trì, chịu khó, …

- Những khó khăn ấy đặt ra rất nhiều thách thức cho những người trực tiếp
giảng dạy môn học này như tơi. Từ đó tơi nhận thấy cần có những giải pháp cụ
thể hơn để nâng cao chất lượng giảng dạy môn Tin học trong trường THPT để
môn học này thực sự có ý nghĩa hơn trong giảng dạy và học tập.
2.3. Giải pháp được sử dụng.
2.3.1. Rèn luyện tư duy thuật toán cho học sinh THPT.
- Tại sao phải rèn luyện tư duy thuật toán cho học sinh THPT.
- Trong quyển sách nổi tiếng của mình về NNLT Pascal ( viết năm 1970), tác
giả N.With đã viết một dịng ngay từ trang đầu:
CHƯƠNG TRÌNH= THUẬT TỐN +CẤU TRÚC DỮ LIỆU

- Như vậy thuật toán là phần quan trọng bậc nhất để tạo nên một chương
trình. Nhưng ở các cấp học dưới học sinh vẫn chưa được làm quen với khái
niệm thuật toán. Do vậy khi học lập trình cái khó khăn ban đầu của học sinh
chính là tìm thuật tốn để giải bài tốn đã cho. Một học sinh muốn tiến sâu, tiến
xa trong tương lai phải có tư duy thuật tốn tốt.
6


- Bởi vậy làm quen và rèn luyện tư duy thuật tốn cho học sinh mới bắt đầu
học lập trình là một yêu cầu thiết yếu. Để thực hiện được điều này, ngay từ khi
còn học lớp 10 đặc biệt trong chương trình lớp 11, GV nên chú ý rèn luyện cho
các em các vấn đề sau:
-

Từ ý tưởng đến hình thành tư duy thuật tốn
Thuật tốn từ đơn giản đến phức tạp,
Từ các bài toán quen thuộc đến phát triển bài tốn khó hơn
Từ thuật tốn phải kết hợp với cấu trúc dữ liệu hợp lý nhất.
Và cuối cùng là thiết kế thuật tốn hồn chỉnh và tối ưu nhất, dễ lập trình

nhất.
- Khi các em đã thành thạo rồi GV có thể nâng cao yêu cầu hơn như tìm
những thuật tốn khác nhau rồi so sánh lựa chọn thuật tốn phù hợp.
2.3.2. Phong cách lập trình tốt.
Để có một phong cách lập trình tốt ngồi việc tn theo các quy chuẩn, còn
cần phải tuân theo các quy ước. Cơ sở cho việc cài đặt một chương trình hiệu
quả là: Cách trình bày rõ ràng, sáng sủa nổi bật được cấu trúc logic của
chương trình. Một phần nhỏ trong lập trình là để máy tính có thể đọc được nó.
Phần lớn hơn là viết các mã lệnh cho chương trình chạy được theo đúng chức
năng và làm sao để con người có thể dễ đọc, dễ hiểu nó.
Lợi ích của việc trình bày cẩn thận:
• Thể hiện tốt cấu trúc lơgic của mã lệnh
• Cải thiện khả năng đọc
• Bảo đảm sự chính xác trong các thay đổi
• Các lợi ích hệ quả của các lợi ích trên
Chương trình ít mắc lỗi và dễ sửa chữa khi mắc lỗi.
Tiết kiệm thời gian sửa lỗi.
Tăng khả năng làm việc theo nhóm,
Quy ước về cách đặt tên cho các định danh.
Thơng thường tùy theo ngơn ngữ và mơi trường lập trình, người viết
chương trình chọn cho mình một phong cách nhất quán trong việc đặt tên cho
các định danh. Tuy nhiên, nên đặt sao cho thuận tiện, dễ đọc, dễ nhớ và dễ làm
việc, có một số quy tắc cần quan tâm khi đặt tên như sau:
• Đặt tên cho biến.
Tên biến nên thể hiện được ý nghĩa: thông thường các biến nguyên như i,
j, k dùng làm biến lặp; x, y dùng làm biến lưu tọa độ… Còn những biến lưu trữ
khác thì nên đặt tên gợi nhớ: Biến đếm số lần dùng “Count” hay “Sluong”; biến
trọng lượng “weight” hay “Tluong”…. Nếu đặt quá ngắn ngọn như “c” cho biến
đếm hay “w” cho biến trọng lượng thì sau này khi nhìn vào chương trình sẽ rất
7



khó hiểu và dễ nhầm lẫn, nhưng cũng khơng nên quá dài dòng như
“Demsoluong” hay “Tinhtrongluong” bởi khi dùng sẽ rườm rà, tốn thời gian
viết.
• Đặt tên hằng: Tất cả các ký tự đều viết hoa.
Ví dụ: Const MAXN
=
10000;
INPUT
=
‘Baitap.inp’;
• Đặt tên cho chương trình con: Tên chương trình con thường bắt đầu
bằng chữ hoa. Vì chương trình con thường thực hiện một chức năng nào
đó nên tên hay bắt đầu bằng động từ.
Ví dụ: TimMax( ); GetNum( );
2.3.3. Phong cách viết mã nguồn.
• Quy tắc trình bày tổng thể chương trình:
- Chương trình nên tách thành nhiều modul, mỗi modul thực hiện một công
việc, càng độc lập với nhau càng tốt (chương trình con). Điều này sẽ giúp cho
chương trình dễ cải tiến và khi đọc chương trình ta sẽ dễ hình dung được vấn đề
đang được thực hiện.
- GV phân tích cho hs thấy rõ lợi ích của chương trình con và cách truyền tham
số cho chương trình con. Các chương trình đã viết trước đó có thể chuyển thành
chương trình con, các dữ liệu được nhập từ bàn phím có thể sẽ được thay bằng
cách truyền tham số.
- Các modul được viết đúng, chương trình con đúng thì khi ghép sử dụng vào
chương trình chính sẽ đúng, điều này rất dễ dàng giúp ta kiểm soát được lỗi của
chương trình nhất là các chương trình lớn, phức tạp.
- Nên sử dụng các tham số khi truyền thông tin cho các chương trình con.

Tránh sử dụng các biến tồn cục để truyền thơng tin giữa các chương trình con
vì như vậy sẽ làm mất đi tính độc lập giữa các chương trình con và rất khó khăn
khi kiểm sốt giá trị của chúng khi chương trình con thi hành.
- Cách trình bày chương trình càng nhất quán càng dễ đọc, dễ hiểu.
- Chương trình nên giữ được tính đơn giản, rõ ràng.
- Chương trình nên thực hiện như một dịng chảy từ trên xuống:
+ Sau đó đến khai báo đơn vị, khai báo hằng, khai báo kiểu, khai báo biến
tồn cục, khai báo chương trình con.
• Quy tắc trình bày dòng lệnh
- Mỗi câu lênh nên được đặt riêng trên một dịng để chương trình dễ đọc và dễ
quan sát cách thực hiên khi dùng watch để tìm lỗi.
- Sử dụng tab để canh lề chương trình (các lệnh ngang cấp thì phải tab vào như
nhau): Điều này sẽ giúp chương trình rõ ràng và dễ quản lý.
Ví dụ:
Khơng nên
Nên
For i := 1 to n do Begin Action1;
Action2;
End;

For i := 1 to n do
Begin
Action1;

8


Action2;
End;


Nên viết Begin

end; rồi viết lệnh vào giữa để tránh thiếu end;

9


Sử dụng khoảng trắng chương trinh sẽ dễ nhìn hơn: Ví dụ:
Khó đọc
Dễ đọc
If (aa:=b*c
TimMax(a,b,c);

If ( a < c ) and ( c mod 2 = 0 ) then d := a + c;
a := b * c;
TimMax(a, b, c);

- Nên định nghĩa hằng số: Điều này sẽ tránh việc các con số khó hiểu xuất hiện
trong chương trình và cũng giúp người lập trình dễ kiểm sốt chương trình lớn
vì giá trị của hằng số khi cần thay đổi chỉ phải thay đổi một lần duy nhất ở giá trị
định nghĩa.
Ví dụ:
Khơng nên
Nên
……………
For i := 1 to 100 do A[i] := Random(100);
While i<=100 do…

Const


MAXN
=
MAXNUM =

100;
100;

……..
For i :=1 to MAXN do
A[i] := Random(MAXNUM);
While i <= MAXN do …..

- Ở đoạn chương trình bên trái rất khó phân biệt các số 100 kia có quan hệ gì
với nhau. Tuy nhiên, trong đoạn chương trình bên phải ta dễ dàng thấy được ý
nghĩa của từng giá trị khi thay bằng định danh. Ngoài ra khi cần thay đổi giá trị
của MAXN, MAXNUM thì chỉ cần thay một lần trong phần định nghĩa.
- Các biến không nên sử dụng lại với nhiều ý nghĩa khác nhau trong cùng một
hàm để tránh sự nhầm lẫn.
- Viết chú thích cho chương trình: Biến, hàm khi định nghĩa nên viết chú thích
ý nghĩa và chức năng rõ ràng. Đôi khi các đoạn lệnh thực thi cũng cần giải thích
nếu chúng quá phức tạp. Nên viết chú thích ngắn gọn nhưng đầy đủ và dễ hiểu.
Ví dụ: Var
iCount
: Integer;
// đếm số cách thực
hiện
Procedure
Try( i : Integer);
// Tìm từ i

Tuy nhiên khơng phải bất cứ lệnh nào cũng chú thích, việc chú thích tràn lan
ngay cả với câu lệnh đơn giản khơng có ý nghĩa gì mà cịn làm chương trình khó
nhìn hơn.
- Nên viết biểu thức điều kiện mang tính tự nhiên: Biểu thức nên viết dưới
dạng khẳng định, việc viết dưới dạng phủ định sẽ làm khó hiểu.
Ví dụ:
Khơng nên
Nên
If not(a mod 5<>0) then ….
If a mod 5 = 0 then ….
• Qui tắc khai báo tên tệp dữ liệu dùng trong chương trình.
Dùng tệp nên khai báo tên têp trước trong phần khai báo hằng:
Ví du:
Const Fi=’BAI1.INP’;
Fo=’BAI1.OUT’ ;
10


2.3.4. Tối ưu sự thực thi mã nguồn
- Mục đích của việc tối ưu mã nguồn là nâng cao tốc độ xử lý và hạn chế không
gian bộ nhớ mà chương trình chiếm dụng. Thơng thường có thể mâu thuẫn giữa
tốc độ và khơng gian lưu trữ, do đó tùy theo điều kiện cụ thể mà người lập trình
có sự lựa chọn thích hợp. Một số thủ thuật sau có thể giúp người lập trình hình
thành nên phong cách lập trình tốt.
- Lưu tạm giá trị thường sử dụng: Nếu một biểu thức tính tốn được dùng
nhiều lần thì nên tính kết quả một lần rồi lưu vào một biến và dùng lại.
Ví dụ:
Khơng nên
Nên
F:=sqrt(x*x+y*y)+(sqrt(x*x+y*y)*sqrt(x*y)-sqrt(y*y);

If b * b – 4 * a * c >0 then
Begin
x1 := (-b +sqrt( b * b – 4 * a * c)) / (2 * a);
x2 := (-b – sqrt(b * b – 4 * a * c)) / (2 * a);
end;

x2 := x*x;
y2 := y*y;
p := sqrt(x2 + y2);
F := p + (q * sqrt(x2) – sqrt(y2));
Delta := b * b – 4 * a * c
If delta >0 then
Begin
Delta:=sqrt(delta);
x1 := (-b + delta) / (2 * a);
x2 := (-b – delta) / (2 * a);
end;

- Thay thế một biểu thức bằng một biểu thức tương đương, lợi về thực thi:
bkt := true;
For i := 2 to n do
If n mod i = 0 then
bkt := False;

bkt := true;
For i := 2 to n do
If n mod i = 0 then
Begin
bkt
False;

Break;
End;

:=

Ví dụ: Thay thế các phép nhân chia bằng phép dịch chuyển bit vì các phép xử lý
bit tốc độ nhanh hơn các phép xử lý khác.
Không nên
nên
For i := 1 to n do s shl n;
s:=s*2;
- Dùng số nguyên thay cho số thực: Do việc xử lý số thực chậm hơn xử lý số
nguyên nên ta có thể dùng số nguyên thay cho số thực có phần lẻ nhỏ.
Vì dụ: Điểm trung bình của học sinh là số thực ta có thể thay bằng số nguyên:
DTB là 7.85 thì lưu số nguyên là 785, khi xuất ra thì chia cho 100.
- Thốt khỏi vòng lặp khi sớm nhất: Một số trường hợp khơng cần thiết phải
lặp hết tồn bộ mà đã đạt được mục đích thì có thể thốt khỏi vịng lặp.
11


Ví dụ: Hạn chế sử dụng câu lệnh rẽ nhánh: Lệnh rẽ nhánh làm chậm chương
trình do ngắt luồng thực thi.
Ví dụ:
Khơng nên
Nên
If x > y then d:=True else d:= False;

d := x>y;

- Tránh lãng phí bộ nhớ: Bằng cách sử dụng kiểu dữ liệu nhỏ nhất đủ để lưu

trữ. Việc sử dụng tài nguyên nhiều hơn mức đòi hỏi của chương trình là một thói
quen xấu mà người lập trình hay mắc phải. Hơn nữa tốc độ chương trình sẽ
nhanh hơn khi sử dụng kiểu dữ liệu nhỏ hơn.
- Khai báo biến cục bộ trong phạm vi gần nhất: Khai báo biến cục bộ gần với
điểm sử dụng nhất. Việc khai báo ở phạm vi rộng hơn chỉ làm lãng phí và khó
kiểm sốt.
- Giảm số lượng tham số truyền vào hàm: Việc sử dụng hàm có quá nhiều
tham số được truyền vào có thể làm ảnh hưởng đến ngăn xếp dành cho việc gọi
hàm. Nhất là trường hợp tham số là kiểu dữ liệu có cấu trúc. Sử dụng con trỏ
hay tham chiếu trong trường hợp này để đơn giản hóa.
2.3.5. Kiểm nghiệm chương trình với các bộ test đầy đủ nhất.
-

Test đầu bài,
Các test đơn giản
Test các trường hợp đặc biệt.
Test lớn
Xem lại đề để không bỏ sót trường hợp.

2.3.6. Các dạng tốn cơ bản bồi dưỡng mơn tin cho HSG THPT
Nhóm các bài tốn lập trình thường được phân loại theo thuật toán, theo
cấu trúc dữ liệu dùng để giải. Ở bậc THPT dạng toán phong phú hơn rất nhiều
do được mở rộng về CTDL song song với việc mở rộng thuật toán.
Ở bậc trung THPT các bài tốn thường chỉ sử dụng các vịng lặp, sử dụng các
kiến thức toán như UCLN , BCNN, số nguyên tố, sự chia hết của các số nguyên,
…Các dạng tốn thường gặp là:






Nhóm các bài tốn số học:
Nhóm các bài tốn thao tác trên mảng một chiều.
Nhóm các bài toán xử lý xâu .
Các bài toán khác.

Các bài toán số học.
12


Để giải các bài toán về số học giáo viên cần cho học sình ứng dụng nhuần
nhuyễn các kiến thức số học ở THPT chủ yếu dựa vào 2 phép tốn DIV, MOD:


Thuật tốn tìm UCLN của 2 số ngun dương:
Cho 2 số nguyên dương m, n. Tìm UCLN(m,n)
Học sinh thường dùng một trong 2 thuật toán
Thuật toán 1: Sử dụng phép trừ liên tục cho đến khi 2 số bằng nhau:
+ Nhập m, n
+ While m<>n do
If m>n then m:=m-n
Else n:=n-m;
+UCNN:=n;
Thuật tốn này chạy chậm: Ví dụ với m=1000000000, n=1 phải chạy 1 tỷ
phép toán.
Thuật toán 2: (Đối với HSG nên hướng các em sử dụng thuật toán này)
+ Nhập m, n
+ While n <> 0 do
Begin
r:= m mod n

m:=n;
n:=r;
End;
+UCLN:=m

Với thuật toán này khi m=1000000000, n=1, chỉ mất vài phép tốn để tính
được UCLN(m,n).
Để tìm UCLN của dãy a1, a2,…,an, cần lập hàm:
FUNCTION UCLN(a, b: longint): longint;
Khi đó + d:=a1;
+ for i:=2 to n do Begin b:=ai; d:=UCLN(d, b);End;
• Thuật tốn tìm BCNN của 2 số:
Ta có BCNN(m,n)= (m * n) div UCLN(m, n).
Ở đây học sinh thường mắc 2 sai lầm sau :
Sai lầm 1 : d :=UCLN(m, n) ;
BCNN :=m*n div d ;
Đúng ra phải là :
BCNN :=m * n (lưu tích m.n)
d := UCLN(m, n) ;
BCNN := BCNN div d
Sai lầm 2 : BCNN(m, n, k) = m*n*k div UCLN(m, n k)
Để tìm BCNN của dãy số nguyên dương a1, a2, …,an (n>=2)
BCNN:=a1; d:=a1;
For i:=2 to n do n do
Begin
b:=ai

13



BCNN:=BCNN*b;
d:=UCLN(BCNN,b);
BCNN:=BCNN div d ;
End ;

• Kiểm tra số nguyên tố.
Cho số nguyên P. Hỏi P có phải là số nguyên tố khơng?
Nhiều học sinh lập thuật tốn đếm số ước của P. Nếu số ước của P là 2 thì
kết luận P là số ngun tố. Thuật tốn đó khơng sai nhưng chậm.





FUNCTION Ngto(P:Integer): Boolean;
Var NT:Boolean;
I:integer;
Begin
NT:=P>1;
For i:=2 to Trunc(Sqrt(P)) do
If P mod I =0 then
Begin NT:=False; Break End;
Ngto:=NT;
End;

Đếm số chữ số của một số, tính tổng các chữ sơ
Bài tốn : Nhập một số nguyên n. Số n có bao nhiêu chữ sơ. Tính tổng
các chữ số của n.
+TongCS:=0; SoCS:=0;
+ While n<>0 do

Begin
Inc(SoCS);
TongCS:=TongCS+ n mod 10;
n := n div 10 ;
End ;

Biểu diễn số tự nhiên n từ hệ đếm thập phân qua các hệ đếm khác và
ngược lại
Bài toán : Cho n là số nguyên dương biểu diễn trong hệ thập phân.
Hãy biểu diễn n trong hệ đếm q – phân ( 1Dùng mảng : array[0..20] of byte ;
+ d:=-1;
+ While n<>0 do
Begin
Inc(d);
a[d]:= n mod q
n:=n div q;
End; { lưu dãy chữ số q- phân theo thứ tự ngược}
+ for i:=d downto 0 do write(a[i]);
Một số bài toán số học.
14


Bài 1. Phân tích ra thừa số nguyên tố
Cho số tự nhiên n (n>1). Hãy phân tích n thành tích các thừa số ngun tố.
Ví dụ: Cho n=12 thì n=2.2.3, cho n=300 thì n=2.2.3.5.5
+ Phân tích: Chỉ cần duyệt qua các ước nguyên tố từ bé đến lớn rồi ghi ra.
+ Thuật toán: If Ngto(n) then writeln(n)
Else
Begin

m:=n;
For p:=2 to n div 2 do
If Ngto(p) then
Begin
While m mod p = 0 do write(p,’.’);
m:= m div p;
End;

Bài 2. Rút gọn phân số.
Cho phân số a/ b trong đó a ngun cịn b là số tự nhiên khác khơng. Hãy
tìm 2 số c, d sao cho phân số c/ d tối giản và a/b=c/d.
+ Phân tích:
Đây là bài tốn đơn giản, nhưng phải chú ý số a có thể âm.
+ Thuật tốn:
Dau:=1; If a<0 then dau:=-1 ; a:=abs(a);
c:=a div UCLN(a,b); d:=b div UCLN(a, b);
Writeln(dau*c,’/ ‘, d);
Bài 3. Giai thừa.
Cho số tự nhiên n. P=n!. Hỏi:
a/ P có bao nhiêu chữ số khơng tận cùng.
b/ Số khác 0 tận cùng của P là chứ số nào.
+Phân tích :
a/ Số chữ số 0 cuối cùng chính là số ước bằng 10 của P! mà p!=a.10k=a.2k.5k.
Do số ước 2 nhiều hơn ước 5, nên số 0 tân cùng là k. Vậy ta cần tính số
lượng ước 5 của P !
+ Thuật toán: s5:=0;
. For m:=5 to n do
Begin
K:=m;
While k mod 5 = 0 do Begin Inc(s5); k:=k div 5 End;

End;
In ra kết quả : S5.
b/ Câu này dễ mắc sai lầm vừa nhân vừa xóa 0 cuối và chỉ giữ lại chữ số
khác 0 cuối cùng.
+ Thuật toán: Giả sử So2, so5 là số lượng ước 2 và ước 5 của P.
S2:=0; S5:=0; P:=1;
For m:=2 to n do

15


Begin
K:=m;
While K mod 2 = 0 do Begin inc(so2), k:= k div 2 End;
While K mod 5 = 0 do Begin inc(so5), k:= k div 5 End;
P:=P* K mod 10.
End.
For i:= 1 to so2-so5 do Begin p:=p * 2 mod 10
In ra kết quả : P

Bài 4. Tính tổng chữ số.
Một quyển sách có n trang. Hỏi
a/ Tổng tất các chữ số đã ghi trên các trang sách.
b/ Mỗi chữ số xuất hiện bao nhiêu lần.
Thuật toán :
+ Lập hàm TongCS(K) để tính tổng các chữ số trong K
+ Dùng mảng a[0], a[1],…,a[9], trong đó a[i] số lần xuất hiện của chữ số i:
+ Sum:=0; fillchar(a, sizeof(a),0);
+ For m:=1 to n do
Begin

K:=m;
Sum:=Sum+TongCS(K);
While K <> 0 do
Begin
Inc( a[ k mod 10])
K:=K div 10
End;
In ra kết quả: Sum, a[0],…, a[9]

Bài 5. Phân tích :
Cho số tự nhiên n. Hãy phân tích n =A+B sao cho UCLN(A, B) là lớn nhất.
Với 2≤ n≤ 109.
Bài 6.

Số nguyên tố.

Cho một số tự nhiên n>1. Tìm số k nguyên tố không vượt quá n trong các trường
hợp sau:
a) k lớn nhất.
b) k có tổng các chữ số lớn nhất .
c) k là số đối xứng lớn nhất. ( k là số đối xứng nếu đọc số đó từ trái qua phải
hay từ phải qua trái đều như nhau. Ví dụ: các số 373, 3, 979…là các số
đối xứng)
Input cho trong tệp NT.INP:- gồm một dòng duy nhất ghi số nguyên n
(1Output ghi vào tệp NT.OUT: gồm 1 dòng, ghi 3 số tương ứng cách nhau bởi
dấu cách là đáp số của câu a, b, c. Câu nào khơng tìm được kết quả thì ghi số 0
thay thế.
Ví dụ:
16



NT.INP

NT.OUT

100

97 89 11

Bài 7. Số siêu nguyên tố.
Số P gọi lầ số siêu nguyên tố, nếu nó nguyên tố và khi ta lần lượt bỏ các
chữ số ở hàng đơn vị từ trái qua phải thì số mới nhận được vẫn là một số
nguyên tố. Ví dụ: 239 là số siêu nguyên tố vì 239 là số nguyên tố và 23, 2 cũng
là các số nguyên tố , còn 431 là số nguyên tố, 43 cũng là số nguyên tố, nhưng 4
không nguyên tố nên 431 không phải là số siêu nguyên tố. Cho một số n
(0Lời giải
• Phương án 1: Duyệt tồn bộ:
+ Tìm số nhỏ nhất lớn nhất có n chữ số
Chẳng hạn với n=3 thì số nhỏ nhất và lớn nhất có 3 chữ số là: n1=100 và
n2=999
+ Dùng một biến chạy p:
For p:= n1 to n2 do
If p thỏa mãn then tăng biến đếm.
+ Thuật toán này cũng được 40 % số test
• Thuật tốn tốt.
+If n=1 thì a[1]:=2;[2]:=3; a[3]:=5, a[4]:=7; slg:=4
+ If n>1 then
Begin c[1]:=1; c[2]:=3; c[3]:=7; c[4]:=9;scs:=1;

Repeat inc(scs); tg:=0; fillchar(b, sizeof(b),0)
For k:=1 to slg do For g:=1 to 4 do
Begin if NT(a[k]*10+c[g]) then
Begin inc(tg); b[tg]:= NT(a[k]*10+c[g]) End
End;
a:=b;Slg:=tg; tg:=0;
Until scs=n.
End; {kết quả là Slg}
Bài 8.

Phân số:
p

p

p

Phân số q ( p, q là 2 số nguyên dương) gọi là phân số đúng nếu q <1. Còn q
gọi là phân số tối giản nếu UCLN(p,q)=1
Yêu cầu: Cho trước số nguyên n (3≤ n ≤ 50000000).
p

a) Tính số lượng các phân số đúng, tối giản q mà p+q=n.
p

b) Tìm phân số đúng, tối giản q lớn nhất mà p+q=n.
• Nhóm các bài tốn mảng.
17



Trong phần này gv cần cung cấp cho học sinh một số kỹ năng cơ bản khi
thao tác trên mảng như: Tìm phần tử MAX, MIN, sắp xếp đơn giàn, kiểm tra
tinh đơn điệu của dãy, tìm kiếm trên dãy…
Bài 1. Trong một buổi sinh hoạt câu lạc bộ Tin học của Cung thiếu nhi, thầy
giáo ra một bài toán như sau: Từ số hạng đầu tiên của dãy số Fibonacci (là dãy
số có quy luật: số hạng thứ nhất và thứ hai bằng 1, từ số hạng thứ ba trở đi bằng
tổng hai số hạng đứng ngay trước nó) thành lập dãy số mới gồm số bằng cách
lần lượt thay mỗi số hạng bằng số dư của số hạng đó khi chia cho 100.
Ví dụ, với ta có 13 số hạng đầu tiên của dãy số Fibonacci là:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233
Dãy số mới nhận được sau khi thay là:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 44, 33
Để kiểm tra bài làm, thầy giáo yêu cầu các bạn trả lời hai thơng tin sau:

Số hạng thứ trong dãy mới là số nào?

Có bao nhiêu giá trị khác nhau trong dãy số mới?
Nhập vào từ file FIBO.INP số ngun dương n duy nhất.
Xuất ra màn hình:
+ Dịng 1: in ra số hạng thứ trong dãy mới.
+ Dòng 2: in ra số lượng các giá trị khác nhau trong dãy mới.
Ví dụ:
Nhập
Kết quả ra màn hình Giải thích
33
Số hạng thứ 13 trong dãy mới là số 33
12
Có 12 giá trị khác nhau trong dãy số mới
Lời giải:
• +Dùng mảng : a[0], a[1], a[2],…, a[99];

• A[i]=0 nếu I khơng xuất hiện trong dãy rút gọn), a[i]=1 nếu I xuất hiện
trong dãy.
+ If (n=1) or (n=2) then writeln (1,’ ‘, 1);
Else Begin a:=1; b:=1; d:=2;
Repeat Inc(d);
I
c:=(a+b) mod 100; a:=b;b: =c;
If a[c] =0 then a[c]:=1;
Until d=n;
End; {In ra C, a[0]+a[1]+…+a[99]}
Bài 2 Tổng max.
Cho dãy n số nguyên dương a 1, a2,…an. Hãy tìm 2 số ai, aj, sao cho i≠j và ai+aj
đạt max.
Lời giải:
• Thuật tốn 1: Duyệt tồn bộ:
+ Max:=a1+a2;
18


+ For i:=1 to n-1 do
For j:=i+1 to n do
If MaxThuật tốn này có độ phức tạp O(n2)
Khi n=10000, thuật tốn khơng hiệu quả
• Thuật tốn 2 : Sắp xếp
+ Sắp xếp giảm dần a1, a2, a3,….
+Max:=a1+a2.
Độ phức tạp của TT này là O(n 2). Tuy nhiên học sinh biết PP sắp xếp nhanh thì
tốc độ xử lý tốt hơn (O(nlogn))
• Thuật tốn 3. Tìm số lớn thứ nhất thứ nhì

+ maxi:=1; for I:=2 to n do if maxi+maxj:=1;
for I:=2 to n do if maxjĐáp số : m+a[maxj]
• Thuật tốn 4. (Xử lý luôn khi đọc dữ liệu)
+Readl(f,n) {n >1}; Read (f, a,b);
{gọi max1, max2 là số lớn và bé trong a,b}
+If a>b then Begin max1:=a; max2:=b End
Else Begin max1:=b; max2:=a End
+ For i:=3 to n do
Begin
Read(f, c);
If c>= max1 then
Begin max2:=max1; max1:=c End
Else If c>= max2 then max2:=c;
End; { Đáp số là max1+max2

Bài 3. Bao nhiêu điểm.
Trong một cuộc thi đấu thể thao n người tham gia . Người thứ I có điểm là
ai. Biết rằng có đủ các giải nhất ,nhì, ba và những người có điểm ngang nhau
có giải như nhau và ngược lại. An được giảI 3. Hỏi số điểm của An là bao nhiêu.
Ví dụ: Input n=6, a: 10 9 1 7 3 10 7
Output: 7
Lời giải:
• Thuật tốn:
• +sắp xếp giảm dần
19









+i:=1;
+ While a[i+1]=a[i] do i:=i+1;
+ i:=i+1;
+While a[i+1]=a[i] do i:=i+1;
Đáp số : a[i+1]
Nhóm các bài tốn xử lý xâu.

Để giải các bài toán về xâu cần cho học sinh nắm vững các hàm, thủ tục xử
lý xâu như hàm COPY(), LENGTH(), INSERT(), STR() , VAL()…
Bài 1. Tìm số:
Cho một xâu S, trong đó có chứa một số cụm số. Khơng có quá 6 chữ số
liên tuc trong S.
Hãy tìm xâu con của S, biểu diễn một số nguyên tố lớn nhất.
Ví dụ S = ‘tesst1234#password5426’. Số cần tìm là 23.
Bài 2.

Mật khẩu

Một mật khẩu được gọi là an toàn loại 1 nếu nó có ít nhất 6 ký tự và trong
đó phải có đủ 3 loại : chữ cái hoa, chữ cái thường, chữ số. Mật khẩu gọi là an
toàn loại 2 nếu thêm điều kiện nó chứa 2 chữ cái hoa khác nhau, 2 chữ cái
thường khác nhau và có 2 chữ số khác nhau.
Cho trước một xâu S dài không quá 255 ký tự bao gồm chữ cái hoa, chữ cái
thường và chữ số.
Yêu cầu:

a). Trong S có bao nhiêu chữ cái hoa khác nhau, chữ cái thường khác nhau và
bao nhiêu chữ số khác nhau?
b). Chọn một xâu con (gồm các ký tự liên tục) của S có độ dài ngắn nhất sao
cho xâu con vừa chọn có thể dùng làm một mật khẩu an toàn loại 1.
c). Chọn một xâu con (gồm các ký tự liên tục) của S có độ dài ngắn nhất sao
cho nó có thể dùng làm một mật khẩu an toàn loại 2.
Input cho trong tệp MK.INP gồm một dòng duy nhất ghi xâu S.
Output ghi vào tệp MK.OUT : - Dòng 1 ghi 3 số nguyên (cách nhau bới dấu
cách) là đáp số tương ứng của câu a). - Dòng 2 ghi 2 số là độ dài ngắn nhất của
mật khẩu loại 1 và loại 2 tương ứng tìm được (nếu khơng có ghi số 0).
Ví dụ:
MK.INP
MK.OUT
dserwGasddasddda2453dssa
Asdg5HgHvH4c

1 6 4
12 0
25 2
6 11

20


2.4. Hiệu quả của sáng kiến kinh nghiệm:
Sau thời gian dài kiên trì áp dụng SKKN, qua nhiều lớp học với nhiều học
sinh bản thân nhận thấy hiệu quả rõ ràng từ việc áp dụng này, thể hiện:
- Trong các tiết học, bài học đã có nhiều em học sinh tiến bộ hơn, chất lượng
dạy học và giáo dục bộ môn đã được nâng cao hơn, HS hứng thú học tập hơn,
tích cực hơn, sáng tạo hơn trong q trình học tập.

- Một số em học sinh khơng cịn cho Tin học là mơn khó học và khơ khan nữa,
các em khơng cịn bị động, phụ thuộc vào sách giáo khoa mà đã tự làm được
các bài tập đơn giản đến phức tạp hơn.
- Bài làm thực hành trên máy của các em đã được viết thành chương trình rõ
ràng hơn, có cấu trúc hơn, ít lỗi hơn và giáo viên cũng dễ dàng đọc và sửa lỗi
cho các em hơn. Kết quả chạy các chương trình của các em viết tốt hơn nhiều
và chính xác hơn.
- Qua giảng dạy đã phát hiện và bồi dưỡng được những em đi thi HSG cấp tỉnh
và đã có giải cao.
- Nhiều phụ huynh học sinh đã đầu tư máy tính, kết nối INTERNET cho con
em học tập ở nhà mà khơng cịn lo ngại các em dùng máy tính để chơi…. Các
em có thể tự thực hành ở nhà và trao đổi với giáo viên các bài lập trình khó.
Ngồi ra các em cịn sử dụng máy tính để tự học mơn tin học cũng như tìm tài
liệu để học tập các mơn khác đồng thời tìm kiếm các thơng tin khoa học giúp
gia đình trong lao động sản xuất.
- Có những học sinh u thích mơn Tin học và dự thi vào các trường ĐH chọn
ngành Công nghệ thông tin để học tập và làm việc, có học sinh ra trường có
việc làm và có thu nhập cao.
3. KẾT LUẬN VÀ KIẾN NGHỊ
3.1. Kết luận:
Để có được ký năng lập trình tốt thì điều quan trọng nhất là giáo viên phải chú
ý trong q trình dạy học bộ mơn rèn luyện cho học sinh của mình các vấn đề
cơ bản sau đây:
- Rèn luyện tư duy thuật toán cho học sinh bắt đầu từ những thuật toán đơn
giản nhất đến phát triển những thuật tốn khó hơn.
- Thuật tốn phải kết hợp với cấu trúc dữ liệu phù hợp, được tổ chức tối ưu.
- Muốn có được thuật tốn phải phân tích kỹ u cầu của bài tốn và đưa ra
được ý tưởng đúng.
- Từ thuật toán ta sử dụng NNLT để thể hiện thuật tốn theo hướng chun
nghiệp và có cấu trúc.

21


- Khi viết chương trình phải sử dụng tốt lợi thế của NNLT và sức mạnh của
máy tính để xử lý bài tốn một cách chính xác nhất, nhanh nhất.
- Từ các thuật tốn đã có để giải các bài tốn nhỏ ta biến chúng thành các
chương trình con để dễ dàng áp dụng nó vào giải các bài tốn phức tạp hơn
sau này….
3.2. Kiến nghị:
Bản thân nhận thấy môn Tin học là một môn học không thể thiếu được trong
chương trình giáo dục phổ thơng. Nó mang lại hiệu quả dạy học và giáo dục
quan trọng không những về tư duy logic mà còn giáo dục nhiều phẩm chất cần
thiết quan trọng cho học sinh và người lao động trong tương lai. Tôi xin đưa ra
một vài kiến nghị :
- Bản thân học sinh và giáo viên nhận thức đúng vai trị quan trọng của bộ mơn
từ đó khơng ngừng học tập và nâng cao trình độ tin học.
- Để việc dạy và học được tốt hơn cá nhân tơi kính đề nghị các cấp có liên
quan nghiên cứu, chỉnh lý đổi mới chương trình sao cho phù hợp hơn với sự
phát triển tin học ngày nay và tương lai.
- Nhà trường cần có sự đầu tư nâng cấp thêm cho phòng máy thực hành của
học sinh, bổ xung thêm tài liệu, để các em có điều kiện thực hành tốt hơn,
thêm tài liệu tham khảo, giáo viên nghiên cứu bài dạy.
- Về phía ngành giáo dục thường xuyên tổ chức các chuyên đề bồi dưỡng cho
giáo viên để đáp ứng với yêu cầu ngày càng cao của việc dạy học bộ mơn,
bên cạnh đó bản thân mỗi giáo viên cần tích cực hơn nữa trong cơng tác tự
học, tự bồi dưỡng, học hỏi kinh nghiệm để ngày càng có kết quả cao hơn
trong dạy học bơn mơn.
- Đề tài sáng kiến trên tôi đã áp dụng nhiều năm và có kết quả đáng khích lệ
trong việc giảng dạy của mình, tuy vậy sáng kiến này khơng thể tránh khỏi
những thiếu sót, kết quả đạt được chưa thực sự như mong đợi và cần phát huy

hơn nữa. Tôi rất mong nhận được sự đóng góp của các đồng nghiệp, học sinh,
và các cấp lãnh đạo.
Tôi xin chân thành cảm !

Xác nhận của thủ trưởng đơn vị

Yên Định, ngày 10 tháng 5 năm 2019
Tôi xin cam đoan đây là sáng kiến kinh
nghiệm của mình viết, độc lập nghiên cứu,
khơng sao chép nội dung của người khác.
Người thực hiện
Lê Tiến Lực
22


23



×