Tải bản đầy đủ (.docx) (27 trang)

Sáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất Thành

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 (221.08 KB, 27 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO TỈNH HỊA BÌNH
TRƯỜNG CĐSP HỊA BÌNH

Tác giả: Nguyễn Văn Hào

SÁNG KIẾN KINH NGHIỆM
RÈN LUYỆN TƯ DUY THUẬT TỐN TRONG HỌC LẬP TRÌNH
PASCAL - TIN HỌC 8 TẠI TRƯỜNG PT THỰC HÀNH CHẤT
LƯỢNG CAO NGUYỄN TÁT THÀNH

Năm học 2019-2020


MỤC LỤC
Chương 1. TỔNG QUAN........................................................................................3
1.1. Lý do chọn sáng kiến kinh nghiệm.................................................................3
1.2. Cơ sở lý luận...................................................................................................4
1.2.1. Khái niệm thuật toán.................................................................................4
1.2.2. Đánh giá thuật toán...................................................................................4
1.3. Phương pháp tiếp cận để tạo ra sáng kiến.......................................................5
1.4. Mục tiêu của sáng kiến kinh nghiệm...............................................................5
Chương 2. MÔ TẢ SÁNG KIẾN...........................................................................6
2.1. Vấn đề của sáng kiến.......................................................................................6
2.2. Các biện pháp nâng cao hiệu quả....................................................................6
2.2.1. Thay đổi cách nhìn và tạo niềm đam mêm của học sinh với mơn học.....7
2.2.2. Các cách tiếp cận bài tốn.......................................................................10
2.2.2.1. Rèn luyện kỹ năng lập trình với câu lệnh điều kiện.............................10
2.2.2.2. Rèn luyện kỹ năng lập trình với câu lệnh lặp.......................................12
2.2.2.3. Rèn luyện kỹ năng lập trình với mảng một chiều................................19
2.3. Khả năng áp dụng và nhân rộng sáng kiến....................................................21
Chương 3. KẾT LUẬN VÀ KIẾN NGHỊ............................................................22


3.1. Kết luận.........................................................................................................22
3.2. Kiến nghị, đề xuất.........................................................................................22


Chương 1. TỔNG QUAN
1.1. Lý do chọn sáng kiến kinh nghiệm
Tin học đang phát triển ngày ngày càng nhanh và trở thành
nhân tố vô cùng cần thiết trong mọi lĩnh vực. Trong đó tin học
được sử dụng phổ biến và đặc biệt quan trọng trong giáo dục. Tin
học được đưa vào chương trình tin học nhà trường cũng như hỗ
trợ giảng dạy. Cùng với đó, Trong những năm học gần đây Bộ
GD&ĐT đang tiến hành đổi mới phương pháp dạy học và một
trong những phương pháp đó là phát triển khả năng tư duy, sáng
tạo của học sinh; lấy học sinh làm trung tâm; tránh tình trạng
thầy đọc trị chép một cách thụ động; hướng học sinh đến việc tự
làm chủ kiến thức của mình, tự tìm tịi khám phá kiến thức cho
bản thân mình.
Theo phương pháp trên thì ngồi việc cung cấp kiến thức cho
học sinh người thầy còn phải biết phát huy khả năng tư duy cho
học sinh. Trong q trình dạy học tơi nhận thấy một điểm hạn chế
của học sinh là khi các em tiếp xúc với ngơn ngữ lập trình pascal
thì hầu hết các em đều thấy nó khó, khó nhớ, khó áp dụng. Chính
vì lí do đó mà khi học nội dung này các em chỉ học cho xong, học
đối phó với thầy cơ, các em cố tìm những đoạn mã lệnh rồi gõ
theo và chạy chương trình cho có kết quả mà cũng khơng cần biết
những đoạn mã lệnh đó làm việc như thế nào. Đơi với những học
sinh khá hơn thì khi các em có tìm ra lời giải cho một bài tốn thì
các em đã vội hài lịng với kết quả mình đạt được mà khơng tìm
hiểu thêm liệu có cách giải nào hay hơn khơng? Có thể cải tiến
chương trình cho hiệu quả, ngắn học hơn không?

Từ những thắc mắc đó, và sau một thời gian giảng dạy nội
dung lập trình pascal cho đối tượng là học sinh lớp 8 tơi đã rất băn
khoăn. Phải làm gì để học sinh của tơi có thể thay đổi cách nhìn
nhận với mơn học và cách học với mơn lập trình này. Sau một thời
gian suy nghĩ tôi cho rằng muốn thay đổi được các em thì trước
tiên người thầy phải thay đổi, thay đổi cách tiếp cận nội dung,
thay đổi phương pháp. Phải làm thế nào để các em có thể yêu


thích mơn học này, có u thích hứng thú thì các em mới có thể
tập trung học tập nghiêm túc được, các em sẽ khơng cịn học đối
phó nữa. Khi các em u thích thì hãy hướng các em đi từ việc
đơn gian tới phức tạp, nhìn nhận vấn đề hay giải các bài tốn
bằng nhiều cách để từ đó các em lĩnh hội được đầy đủ và chủ
động kiến thức mơn học. Từ những lí do trên tơi quyết định nghiên
cứu và thực hiện sáng kiến “ RÈN LUYỆN TƯ DUY THUẬT TỐN
TRONG HỌC LẬP TRÌNH PASCAL - TIN HỌC 8 TẠI TRƯỜNG PT THỰC
HÀNH CHẤT LƯỢNG CAO NGUYỄN TÁT THÀNH” nhằm giúp học sinh

lớp 8 khắc phục được những hạn chế nêu trên và tạo sự ham mê
yêu thích của học sinh với mơn học lập trình này.
1.2. Cơ sở lý luận
1.2.1. Khái niệm thuật toán
Trong bài viết này tơi khơng đi sâu vào lí thuyết thuật tốn,
do vậy khơng đề cập đến khái niệm hình thức chính xác của thuật
toán. Chúng ta hãy xem xét một số định nghĩa (khơng hình thức)
ít nhiều khác nhau của khái niệm thuật tốn nhưng cùng nêu bản
chất mơ tả một cách thức mà một nhiệm vụ hay một tiến trình
được thực hiện như thế nào của thuật toán. Xét một số định nghĩa
về thuật toán sau:

Định nghĩa 1 (K.Rosen): Một thuật toán là một thủ tục xác
định để giải một bài toán, sử dụng một số hữu hạn bước. Mỗi bước
có thể gồm một hoặc một số thao tác/phép tốn.
Định nghĩa 2 (G.Brookshear): Một thuật tốn là một tập hợp
có thứ tự các bước không nhập nhằng, thực hiện được, xác định
một tiến trình có kết thúc.
Định nghĩa 3 (A.V. Aho, J.E.Hopcroft,J.D.Ullman): Thuật toán
là một dãy hữu hạn các câu lệnh, mỗi câu lệnh đều có một ý
nghĩa rõ rằng và có thể được thực hiện với một lượng cơng sức
hữu hạn trong một thời gian hữu hạn.
Qua một số định nghĩa nêu trên, có thể thấy các thuật tốn
có các tính chất chung như sau:


Đầu vào: Một thuật tốn có các giá trị đầu vào được lấy từ
một tập xác định.
Đầu ra: Từ một tập các giá trị đầu vào, thuật toán sản sinh
ra các giá trị đầu ra thuộc một tập xác định. Các gía trị đầu ra
chứa lời giải của bài tốn.
Tính xác định: Các bước trong thuật toán phải được định
nghĩa chính xác.
Tính hữu hạn: Một thuật tốn phải cho kết quả mong đợi
sau một số hữu hạn bước với mọi đầu vào thuộc tập các dữ liệu
vào hợp lệ.
Tính hiệu quả: Phải có khả năng thực hiện mỗi bước của
thuật toán một cách đúng đắn và trong một thời gian chấp nhận
được.
Tính tổng qt (Phổ dụng): Thuật tốn phải được áp dụng
cho mọi bài tốn có chung một dạng mà không phải chỉ cho riêng
một tập các dữ liệu vào đặc biệt.

1.2.2. Đánh giá thuật tốn
Một bài tốn có thể có nhiều thuật tốn khác nhau để giải.
Có các câu hỏi nảy sinh một cách tự nhiên: “Thuật toán nào tốt
hơn trong số các thuật toán cùng giải quyết một bài tốn đó?.”
hoặc “Thuật tốn nào là chấp nhận được”. Những câu hỏi như vậy
liên quan đến việc ước lượng tài nguyên máy tính cần thiết để
thực hiện một thuật tốn. Các tài ngun máy tính được quan tâm
là thời gian, dung lượng nhớ, phần cứng.
Đứng trước một bài toán cho máy tính thì thuật tốn cần
phải được thiết kế hay xây dựng như thế nào để thực hiện nhiệm
vụ. Việc xây dựng một thuật tốn là một cơng việc khó khăn
khơng chỉ đối với học sinh mà đơi khi ngay cả với giáo viên cũng
khó xây dựng được một thuật tốn tối ưu. Cơng việc này địi hỏi
phải có sáng tạo, sự am hiểu lĩnh vực của bài toán và không thể
đưa ra một tập các quy tắc chung. Nói cách khác, khơng có thuật
tốn nào cho việc thiết kế thuật tốn. Do đó việc rèn luyện tư duy
thuật toán cho học sinh là hết sức cần thiết. Ở cấp học trung học


cơ sở thì việc các em tự thiết kế một thuật tốn để giải quyết bài
tốn mới mẻ là khó khăn, chúng ta chỉ có thể hướng dẫn các em
làm quen với các bài tốn mẫu với thuật tốn có sẵn để hình
thành tư duy thuật tốn, từ đó hình thành thói quen lập trình giải
quyết bài tốn khi đã xây dựng được thuật toán.
1.3. Phương pháp tiếp cận để tạo ra sáng kiến
- Nghiên cứu lý thuyết : Tìm hiểu các tài liệu, giáo trình liên quan
tới nhiệm vụ nghiên cứu.
- Nghiên cứu thực tiễn: Thông qua việc trực tiếp giảng dạy, trao
đổi, phóng vấn trực tiếp với học sinh qua từng bài dạy để nắm
được mức độ nhận thức của các em, biết được vấn đề khó khăn

mà các em đang gặp phải từ đó tìm cách giải quyết vấn đề.
1.4. Mục tiêu của sáng kiến kinh nghiệm
Thông qua việc trình bày về thuật tốn, cách xác định bài
tốn để hình thành thói quen tư duy lập trình cho mỗi học sinh. Từ
việc học sinh rất khó xác định bài tồn, bỡ ngỡ khi gặp một bài
tốn hoặc khi đã có thuật tốn thì học sinh cũng khơng biết ngơn
ngữ hóa thuật tốn thế nào để thành một bài tốn trên ngơn ngữ
lập trình Pascal, Thì học sinh có thể hình thành tư duy thuật tốn,
biết cách xác định rõ một bài tốn trước khi chuyển hóa bài tốn
thành ngơn ngữ lập trình. Mong muốn của tác giả là sau khi
hướng dẫn các em học sinh cách xác định một bài tốn. Cụ thể là
thơng qua một số ví dụ cụ thể thì các em từng bước hình thành
được kỹ năng lập trình với ngơn ngữ lập trình pascal.


Chương 2. MÔ TẢ SÁNG KIẾN
2.1. Vấn đề của sáng kiến
Tin học là một mơn học mới do đó học sinh còn bỡ ngỡ, chưa
thấy hết tầm quan trọng của mơn học. Nội dung học lập trình tin
học 8 lại là nội dung mới lạ đối với hầu hết học sinh với nhiều khái
niệm, thuật ngữ, cấu trúc dữ liệu đối với học sinh mới tiếp cận lần
đầu. Chính vì vậy khi gặp một bài tốn học sinh khơng biết phải
giải quyết bài tốn thế nào. Học sinh hồn tồn xa lạ với những
khái niệm như “xác định bài toán” hay “Xây dựng thuật tốn”. Học
sinh hồn tồn bỡ ngỡ với việc chuyển hóa các bước giải bài tốn
thơng thường trong tốn học sang ngơn ngữ lập trình Pascal trong
tin học. Bên cạnh những khó khăn đó thì cũng có nhiều mặt thuận
lợi như đối tượng học sinh ngoan, nhiều em ham học hỏi. Nhà
trường cũng đầu tư trang thiết bị dạy học hiện đại, phòng máy
đáp ứng được nhu cầu thực hành của các em học sinh.

Đối với giáo viên: Tính tới năm nay thì mới là khóa học thứ 2
của trường học nội dung lập trình pascal. Do đó, bản thân tơi cũng
cịn thiếu kinh nghiệm trong q trình giảng dạy, đơi khi cịn phụ
thuộc nhiều vào sách giáo khoa và giáo án, chính vì thế mà khi
tiếp cận một bài tốn nào đó thì thường là hướng dẫn cho học
sinh lời giải bài tốn đó theo một phương pháp nhất định, cơ bản
nhất để các em có thể hiểu và giải được bằng ngơn ngữ lập trình
Pascal. Tuy nhiên với cách làm đó tơi nhận thấy học sinh bị phụ
thuộc nhiều vào lời giải của thầy và không phát huy được khả
năng tư duy và sáng tạo. Các em cố gắng học thuộc cấu trúc một
số câu lệnh và các ví dụ áp dụng mà khơng tự tìm hiểu thêm các
dạng bài khác, hoặc cách giải khác hiệu quả hơn, thú vị hơn.
Trong tiết thực hành một số em gõ chương trình một cách
máy móc các nội dung của bài thực hành từ sách giáo khoa chứ
không thực sự tìm hiểu xem tại sao lại viết câu lệnh này, câu lệnh
này mục đích để làm gì, câu lệnh này sẽ cho chúng ta kết quả gì,
các học sinh hầu như chưa ý thức việc học của mình, hay nói cách
khác học sinh chưa có động cơ, thái độ học tập đúng đắn. Để dẫn


tới điều này có thể do các em chưa tìm thấy niềm vui và sự đam
mê đối với môn học, các em nghĩ môn tin học là môn phụ. Mặt
khác nội dung mơn tin học 8 lại địi hỏi khá cao. Nếu học sinh chỉ
dừng lại ở nội dung kiến thức trong chương trình sách giáo khoa
thì sẽ khơng đáp ứng được yêu cầu đặt ra như thi học sinh giỏi
văn hóa lớp 9, thi tin học trẻ, thi vào trường chuyên tin lớp 10.
2.2. Các biện pháp nâng cao hiệu quả
2.2.1. Thay đổi cách nhìn và tạo niềm đam mêm của học
sinh với mơn học.
- Vì sao mơn Pascal lại khó?

Một thói quen khó thay đổi của học sinh đó là cách nhìn
nhận về mơn tin học, theo các em thì mơn tin học là học những
thao tác sử dụng đơn giản như: cách sử dụng internet, sử dụng hệ
điều hành window, chương trình soạn thảo văn bản MS Word,
chương trình soạn thảo trình diễn MS PowerPoint … Đây là những
phần học ít địi hỏi ở học sinh tư duy, mà chỉ cần học kĩ và nhớ
thao tác, thực hành nhiều lần thì sẽ thành kỹ năng và thành thạo.
Nhưng khi học bộ mơn lập trình Passal chương trình lớp 8 ở
THCS thì hầu như các em bị “chống” vì bộ mơn rất “mới”, và
cách học cũng “mới”. Học những thao tác và thực hành nhiều
dường như khơng cịn phù hợp nữa. Học thuộc bài theo kiểu thuộc
lòng chỉ phù hợp với nội dung là các cấu trúc câu lệnh chứ khơng
thể áp dụng điều đó vào từng bài toán được. Lúc này các em cần
phải học cách tư duy logic, tìm hiểu thuật tốn, và viết những
dịng lệnh máy tính trên cơ sở thuật tốn đã xây dựng và hơn thế
nữa các câu lệnh cần phải có độ chính xác tuyệt đối đến từng đấu
chấm, dấu phẩy.
Với tâm lí thơng thường các em học sinh coi tin học là môn
phụ không quan trọng nên nhiều em chủ quan không dành đủ
thời gian để học nên không hiểu bài và dần bị mất căn bản. Đây
cũng là lí do mà nhiều em ln kêu học lập trình pascal khó quá.
- Tại sao lại học Pascal?


Pascal là một ngơn ngữ lập trình cấp cao do Niklaus Wirth,
giáo sư điện toán trường đại học Kỹ thuật Zurich (Thụy sĩ) thiết kế
và công bố vào năm 1971 và đặt tên là Pascal để tưởng niệm nhà
Toán học và Triết học nổi tiếng Blaise Pascal. Đây là một ngơn ngữ
lập trình có cấu trúc đơn giản, rõ ràng, cấu trúc chặt chẽ, dễ viết,
dễ hiểu cũng như dễ sửa chữa, cải tiến. Do đó Pascal được nhiều

quốc gia trong đó có Việt Nam đưa vào chương trình giảng dạy tin
học ở các trường phổ thông và đại học như một môn học cơ sở,
đại cương.
Ở cấp học phổ thông chúng ta không chú trọng học chuyên
sâu về ngôn ngữ lập trình để tạo ra các phần mềm máy tính mà
tập trung rèn luyện kĩ năng tư duy logic, tư duy hệ thống và sáng
tạo không chỉ để giải quyết những vấn đề trong tin học mà đây
còn là những kĩ năng vô cùng quan trọng để giải quyết nhiều vấn
đề trong cuộc sống.
Học Pascal giúp cho ta hiểu được cách làm việc của máy
tính, cách giao tiếp để ra lệnh cho máy tính làm việc theo sự điều
khiển của con người thơng qua ngơn ngữ lập trình. Các em có thể
tạo ra các chương trình thú vị bằng cách sử dụng các câu lệnh
Pascal. Cũng giống như những mơn học khác như tốn học, vật lý,
hóa học … khi các em đã thực sự hiểu và yêu thích bộ mơn tin
học các em sẽ tìm thấy nhiều niềm vui, sự đam mê khi tìm hiểu
và khám phá những điều mới mẻ nhưng đầy hấp dẫn trong bộ
môn tưởng chừng như khơ khan này.
- Tạo sự u thích khi học lập trình Pascal
Lập trình là mơn học địi hỏi học sinh phải giải các bài toán
bằng cách viết chương trình trên máy tính. Đây là mơn học mới
đối với học sinh nên phần đông các em không nắm bắt được kiến
thức để vận dụng vào giải bài tập. Về ngơn ngữ lập trình Pascal
đang gây khó khăn cho các học sinh mới bắt đầu tìm hiểu học lập
trình. Vì Pascal có nhiều hạn chế về mặt hình thức như: Giao diện
là dịng lệnh, khó nhớ và khơng thân thiện, dễ gây sự nhàm chán
cho học sinh, về cú pháp thì chặt chẽ chỉ cần thiếu một dấu cũng


báo lỗi sai trong chương trình, tồn bộ thơng báo lại bằng ngơn

ngữ tiếng anh đó cũng là hạn chế và khó khăn cho học sinh.
Qua một thời gian giảng dạy ở bộ môn này, tôi nhận thấy khi
học Pascal học sinh thường khơng thích thú với mơn học này vì
nhiều lý do như khó hiểu, địi hỏi tư duy, … nên việc viết được một
chương trình chạy được trên máy tính đối với các em rất khó
khăn. Do đó để học tốt địi hỏi học sinh phải có hứng thú. Cốt lõi
của việc đổi mới phương pháp dạy học là giúp học sinh u thích,
hứng thú với mơn học, hướng tới việc học tập chủ động, chống lại
thói quen học tập thụ động. Để khắc phục điều này thì chúng ta
cần giải quyết được các vấn đề sau:
* Vấn đề 1: Học sinh chúng ta vừa đọc xong đề bài là kêu khó,
khơng chịu tìm hiểu xem đề bài u cầu gì. Nói cụ thể hơn là sau
khi đọc xong bài tốn thì học sinh khơng định hướng được là phải
bắt đầu từ đâu, phải sử dụng cấu trúc dữ liệu nào hay cấu trúc
lệnh nào để giải quyết. Để giúp học sinh vấn đề này thì sau khi
đọc đề bài xong giáo viên hướng dẫn các em xác định rõ bài toán
(xác định thành phần Input và Output của bài toán). Từ Inphut và
Output của bài toán giáo viên yêu cầu học sinh gạch ra giấy chỉ ra
từng bước để giải quyết bài tốn rồi từ đó đưa ra các thuật tốn,
từng bước tinh chỉnh thuật tốn tìm được thuật toán đúng đắn
nhất cuối cùng là viết chương trình hồn chỉnh.
VD: Khi u cầu học sinh lập trình tính chu vi và diện tích hình
trịn với bán kính nhập vào từ bàn phím.
- Để giải bài này giáo viên yêu cầu học sinh nêu rõ Input vào
Output bài tốn.
Input: Bán kính hình trịn
Output: Diện tích và chu vi của hình trịn
- GV u cầu HS gạch ra các công việc cần làm để giải quyết bài
tập này ?
Các công việc cần làm để giải quyết bài tập này :

+ Nhập bán kính R, + Tính diện tích hình trịn + Tính chu vi hình
trịn
+ In ra diện tích và chu vi hình trịn


– Gv gợi ý yêu cầu HS nêu công thức tính diện tích và chu vi hình
trịn?
Diện tích S = Pi*R^2
Chu vi Cv = 2*Pi*R
– Với những yêu cầu cụ thể đó, giáo viên yêu cầu học sinh gõ các
câu lệnh để hồn thành bài tốn. Có thể gợi ý cụ thể trong bài
toán này: Cần thực hiện lệnh nhập dữ liệu như thế nào? Dùng lệnh
gán để tính chu vi và diện tích với các cơng thức tốn học đã có.
Sau khi tính tốn xong thì dùng lệnh in kết quả ra màn hình.
* Vấn đề 2: Hầu như các em học sinh khi thực hành lập trình đều
đùn đẩy cho nhau vì thiếu tự tin và khơng biết phải gõ gì vào
máy, sợ gõ sai lỗi chính tả các câu lệnh hay từ khóa. Để giúp các
em vấn đề này thì giáo viên nên khuyến khích các em cứ mạnh
dạn gõ, một lần sai, hai lần sai,… rồi từ từ các em sẽ gõ đúng câu
lệnh, có như vậy các em mới nhớ được câu lệnh, từ khóa và chủ
động hơn trong việc gõ các câu lệnh giải quyết bài tốn. Lúc đầu
giám sát q trình làm việc của các em, sửa các lỗi sai, về sau để
các em tự làm việc chỉ sửa lỗi khi các em gặp khó khăn thực sự,
khơng giải quyết được bắt buộc cần có hướng dẫn của giáo viên.
Khi các em tự gõ chương trình các em mới thực sự hiểu chương
trình đó hoạt động thế nào chứ khơng thể nhìn mà hiểu được. Chỉ
có tự gõ các lệnh thì mới nhớ được và hiểu từ đó sẽ tự tin khi ngồi
lập trình trước máy tính. Khi tự tin làm việc với máy tính thì các
em mới say mê và u thích môn học.
* Vấn đề 3: Khi thực hành các em chỉ gõ cho xong nội dung của

bài thực hành, hoặc tìm kiếm những bài mẫu có sẵn và gõ theo,
sau đó các em kiểm sốt lỗi chính tả rồi chạy thử, hiện kết là coi
như xong bài tập. Học như vậy các em hồn tồn thụ động, chứ
khơng thực sự tìm hiểu xem tại sao lại có câu lệnh đó, tại sao phải
dùng cấu trúc điều khiển này mà không dùng cấu trúc điều khiển
kia, tới câu lệnh này thì kết quả sẽ như thế nào, … Chính vì vậy
mà các em không hiểu bài và không thể tự sửa lỗi nếu gõ sai.
Hướng dẫn các em cách chạy chương trình từng bước và cách
quan sát giá trị các tham số cần thiết. Hướng dẫn các em “Biến


mình thành cái máy tính” để thực hiện lần lượt các câu lệnh từ
trên xuống dưới xem nếu là máy thì tại bước này sẽ thực hiện
cơng việc gì, kết quả sẽ là gì? Có như vậy học sinh mới thực sự
hiểu vấn đề, hiểu cách làm việc của ngôn ngữ lập trình pascal.
2.2.2. Các cách tiếp cận bài tốn
2.2.2.1. Rèn luyện kỹ năng lập trình với câu lệnh điều kiện
Đối với học sinh, khi làm quen với bất kỳ một cấu trúc lệnh nào cũng đều bỡ
ngỡ vì các em chưa quen và biết cách sử dụng cấu trúc đó. Để học sinh có thể hiểu và
vận dụng các cấu trúc lệnh vào từng bài tốn cụ thể thì điều đầu tiên giáo viên phải
giúp các em hiểu rõ cấu trúc lệnh, thuộc cấu trúc lệnh sau đó sẽ đưa ra các dạng bài
tập áp dụng cấu trúc lệnh để củng cố kiến thức cho các em. Phải thực hiện chi tiết cả
về mặt cấu trúc ngôn ngữ lập trình và phân tích bài tốn từ đó xác định rõ bài tốn sẽ
cho kết quả là gì? Chúng ta sẽ lấy ví dụ bài tốn sử dụng câu lệnh điều kiện sau:
Ví dụ: Viết chương trình nhập vào 3 số nguyên dương a, b, c khác nhau. In
ra màn hình số lớn nhất và nhỏ nhất trong 3 số trên.
* Phương pháp 1:
- Xác định bài toán:
. Input: Nhập vào máy tính 3 số tự nhiên a, b, c
. Output: In ra màn hình số lớn nhất, nhỏ nhất trong 3 số a, b, c

- Ý tưởng:
+ Tìm số lớn nhất: (a>b) và (a>c) thì a lớn nhất; (b>a) và (b>c) thì b lớn nhất;
(c>a) và (c>b) thì c lớn nhất;
+ Tìm số nhỏ nhất: (a(c- Từ ý tưởng trên chúng ta sẽ xây dựng chương trình:
Var a,b,c:Integer;
Begin
Writeln(‘Nhap a, b, c:’);
Readln(a,b,c);
If (a>b) and (a>c) Then Writeln(a,’ lon nhat’)
Else If (b>a) and (b>c) Then Writeln(b,’ lon nhat’)
Else Writeln(c,’ lon nhat’) ;
If (aElse If (b

Else Writeln(c,’ nho nhat’) ; Readln; End.
* Phương pháp 2:
- Ý tưởng: Cũng là một bài toán như trên, chúng ta cũng xác định cho học sinh
thấy rõ yêu cầu bài toán tức là xác định Input và output, những có thể giải quyết
bài tốn theo một cách khác như sau:
+ Nếu a>b thì ta gán a cho Max, b cho Min, ngược lại thì ta gán Max cho
b, Min cho a {Tìm số lớn nhất và nhỏ nhất trong hai số a, b. Sau khi thực hiện
dòng lệnh trên Max sẽ nhận được giá trị lớn nhất, Min sẽ nhận được giá trị nhỏ
nhất}.
+ Nếu c>Max thì ta gán c cho Max, ngược lại nếu cMin {So sánh c với giá trị lớn nhất (Max) và nhỏ nhất (Min)}.
- Chương trình:
Var a,b,c,Max,Min:Integer;

Begin
Write(‘Nhap lan luoc 3 so a, b, c:’);Readln(a,b,c);
If (a>b) Then Begin Max:=a; Min:=b; End
Else Begin Max:=b; Min:=a; End;
If (c>Max) Then Max:=c Else If (cWrite(‘So lon la:’,Max,’ So nho la:’,Min);
Readln;
End.
* Phương pháp 3:
- Ý tưởng:
+ So sánh giá trị a và b, nếu a>b thì đổi giá trị a và b. {Sau khi đổi giá trị
thì sẽ cho kết quả a + So sánh giá trị b và c, nếu b>c thì đổi giá trị b và c. {Sau khi đổi giá trị
thì sẽ cho kết quả a, b <c, tuy nhiên lại chưa xác định được a>b hay b>a }.
+ Lại so sánh giá trị a và b, nếu a>b thì đổi giá trị a và b. {Sau khi đổi giá
trị thì sẽ cho kết quả a < b và b < c}.
- Chương trình:
Var a,b,c,tam:Integer;
Begin
Write('Nhap gia tri a, b, c tuong ung: '); Readln(a,b,c);
If a>b Then


begin
Tam:=a; a:=b; b:=tam
end;
If b>c Then
begin
Tam:=b; b:=c; c:=tam
end;

If a>b Then
begin
Tam:=a; a:=b;b:=tam
end;
Write('So nho la:’,a,’ so lon la’,c);
Readln;
End.
=> Nhận xét: Trong 3 phương pháp trên thì mỗi phương pháp đều có một ưu điểm
và hạn chế riêng:
- Phương pháp 1: Giúp học sinh làm quen với câu lệnh điều kiện dạng đủ lồng
nhau và điều kiện ghép ((a>b) and (a>c)) trong câu lệnh điều kiện thơng qua phép
tốn and.
- Phương pháp 2: Giúp học sinh làm quen với lệnh gán, sử dụng biến trung gian
Max, Min và câu lệnh ghép (Begin Max:=a; Min:=b; End) trong câu lệnh điều
kiện.
- Phương pháp 3: Giúp học sinh làm quen với câu lệnh điều kiện dạng thiếu và ôn
lại kiến thức sắp xếp giá trị hai biến theo thứ tự tăng hoặc giảm dần
begin Tam:=a; a:=b; b:=tam end;
Tóm lại: Với mỗi bài tốn nếu có thể hãy tìm ra nhiều cách tiếp cận khác
nhau, các cách viết chương trình khác nhau để học sinh có thể mở rộng khả năng tư
duy cũng như tạo sự yêu thích khi tìm thấy niềm vui ở mỗi cách xây dựng bài tốn.
Qua đó học sinh sẽ có cách nhìn linh hoạt hơn với mỗi cấu trúc câu lệnh, phát huy
tính tích cực và sáng tạo cho học sinh.
2.2.2.2. Rèn luyện kỹ năng lập trình với câu lệnh lặp
Cấu trúc lệnh lặp là cấu trúc cơ bản trong ngôn ngữ lập trình pascal và cấu
trúc này cũng là cấu trúc giúp học sinh giải quyết một lượng lớn các dạng bài tập.
Tuy nhiên khi tiếp cận câu lệnh lặp này thì học sinh lại khó hình dung ra cách hoạt


động của từng cấu trúc, đặc biệt là học sinh khó phân biệt cấu trúc lặp xác định và

lặp với số lần lặp không xác định. Một lỗi mà học sinh thường gặp khi làm việc với
cấu trúc lặp đó là khơng xác định được điều kiện để dừng vịng lặp. Chính vì
những lý do trên mà khi dạy cho học sinh cấu trúc lặp giáo viên cần xây dựng các
ví dụ sử dụng cấu trúc này cụ thể để học sinh hiểu rõ và ghi nhớ sau đó các em mới
hình thành phản xạ và kĩ năng lập trình có xử dụng cấu trúc lặp.
Để học sinh có thể hiểu rõ và phân biệt được cấu trúc lặp chúng ta có thể
giao cho học sinh bài tốn sau:
Ví dụ 1: Viết chương trình tính tổng số ngun từ 1 tới n, n
là số nguyên nhập từ bàn phím bằng cách sử dụng cấu trúc lặp
For..do, While..do và cấu trúc Repeat ..until.
Với bài toán này cho dù dùng cấu trúc lệnh lặp nào thì cũng
cần xác định rõ bài tốn với Input: Nhập vào số tự nhiên n,
Output: in ra màn hình tổng của các chữ số từ 1 tới n vừa nhập
vào.
+ Cấu trúc For..do ta có thể xây dựng chương trình như sau:
var i, n: integer; s: real;
Begin
writeln('nhap so n de tinh tong'); readln(n);
s:=0;
for i:=1 to n do s:=s+i;
writeln('tong tu 1-n la: =',s:2:0);
readln;
end.
+ Cấu trúc While ..do ta có chương trình như sau:
var i: integer; s: real;
begin
writeln('nhap so n de tinh tong tu 1-n'); readln(n);
s:=0;i:=0;
while i<=n do
begin

i:=i+1; s:=s+i;
end;
writeln('tong tu 1- ' , n , ' la= ' ,s:5:2); readln;


end.
+ Cấu trúc lệnh lặp Repeat ..until ta có chương trình như
sau:
var i:integer; s:real;
begin
write('n= '); readln(n);
s:=0; i:=0;
repeat
i:=i+1; s:=s+i;
until i=n;
writeln('tong 1- ' , n, '=',s:0:2); readln;
end.
Trong bài toán nêu trên về cơ bản thì cả 3 cách viết đều cho
một kết quả nhưng khi dạy làm quen với cấu trúc lặp thì chúng ta
cần khun khích học sinh viết chương trình giải quyết cùng một
bài toán nhưng dùng cả 3 cấu trúc lặp. Đối với câu lệnh lặp For ..
do thì đại đa số học tiếp cận nhanh hơn và không bị nhầm lẫn, chỉ
khi các em chuyển bài toán từ dùng Ror..do sang dùng while ..do
và Repeat ..until thì hầu hết các em đều không hiểu rõ vẫn đề là
điều kiện gì để vịng lặp có thể dừng. Chính vì lý do đó mà khi
giúp các em xây dựng bài toán theo hướng While..do và
Repeat..until giáo viên nên nhấn mạnh điểm này. Có thể cho học
sinh rơi vào vịng lặp khơng dừng như ta có thể bỏ qua lệnh làm
thay đổi giá trị của biến i (i:=i+1). Khi học sinh chạy thử chương
trình sẽ bị lặp và dẫn tới khơng thốt được, khi đó mới phân tích

điều kiện dừng vịng lặp và yêu cầu học sinh gõ lại chương trình,
khi đó học sinh mới hiểu rõ được bản chất của hai câu lệnh dạng
này đồng thời đó cũng là một kinh nghiệm cho các em khi lập
trình mà sử dụng cấu trúc lặp không xác định này.
Mặt khác của vấn đề là khi dạy cho học sinh các cấu trúc
lệnh lặp thì ngồi việc dạy các em cấu trúc cịn phải giúp các em
nhận diện bài tốn để có thể áp dụng được tốt các cấu trúc lệnh
sao cho phù hợp. Khi các em nhận diện được cấu trúc lệnh để giải
quyết bài tốn thì vấn đề đặt ra là các bài tốn đó các em đã giải


quyết tốt chưa? Tức là chương trình các em xây dựng đã hoàn hảo
chưa? Đến lúc này giáo viên cần giúp các em tinh chỉnh bài toán
của các em sao cho tối ưu nhất. Chúng ta sẽ xem xét vấn đề này
qua một số ví dụ sau:
Ví dụ 2: Số nguyên tố là số tự nhiên lớn hơn 1, chỉ có hai ước là 1 và chính nó.
u cầu: Nhập vào số nguyên dương N. Kiểm tra xem N có phải là số nguyên
tố hay không, thông báo kết quả sau khi kiểm tra.
Xác định bài toán:
Input: Nhập vào một số tự nhiên N, Output: N có phải là số nguyên tố hay không.
* Phương pháp 1:
- Ý tưởng:
+ Cho biến i chạy từ 2 đến n-1 {Ta xét trường hợp n có chia hết cho i hay khơng},
nếu n chia hết cho i thì ta tăng biến đếm lên một đơn vị {ban đầu biến đếm nhận
giá trị bằng 0}.
+ Kiểm tra biến đếm, nếu biến đếm nhận giá trị bằng không {tức n không chia hết
cho số nào trong khoảng từ 2 đến n-1} vậy n là số nguyên tố, ngược lại biến đếm
nhận giá trị lớn hơn 0{tức n chia hết cho cho một hoặc nhiều giá trị trong khoảng
[2..n-1]} vậy n không phải là số nguyên tố.
 Chương trình:

Var n,i,dem:Integer;
Begin
Write('Nhap gia tri N: ');Readln(n);
If n<2 Then Write(n, Khong phai la so nguyen to') Else
Begin
dem:=0;
For i:=2 To n-1 Do
If n Mod i = 0 Then Inc(dem);
If dem=0 Then Writeln(n, ' La so nguyen to')
Else Writeln(n, ' Khong phai So nguyen to');
End; Readln;
End.
* Phương pháp 2:
- Bổ sung kiến thức:


+ N là số Nguyên tố khi n>=2 và n khơng chia hết cho số nào có giá trị trong
khoảng từ 2 đến n – 1. Tuy nhiên trên thực tế thì chỉ cần n khơng chia hết cho số
nào có giá trị trong khoản từ 2 đến số nguyên gần với căn n nhất nhưng nhỏ hơn n
{Trunc(Sqrt(n))}.
- Ý tưởng:
+ Giống như phương pháp 1 tuy nhiên ở đây chúng ta không đếm mà sử dụng
phương pháp đánh dấu của kiểu boolean. Tức ta xét trường hợp n có chia hết cho i
hay không, nếu n chia hết cho i thì ta đánh dấu là False {Giả sử biến KT có biểu dữ
liệu là Boolean thì nếu n chia hết cho i thì KT:=False, ban đầu ta gán KT:=True}.
+ Kiểm tra biến KT, nếu KT là True {tức biến KT nhận tất cả là True} thì n là số
nguyên tố, ngược lại n không phải số nguyên tố {tức biến KT có nhận lớn hơn
hoặc bằng một giá trị False}.
- Chương trình:
Var i,n:Integer; Kt:Boolean;

Begin
Write('Nhap gia tri N: ');Readln(n);
Kt:=True; If n < 2 Then Kt:=False Else
For i:=2 To Trunc(Sqrt(n)) Do
If n Mod i = 0 Then Kt:=False;
If Kt Then Write(n,' la so nguyen to')
Else Write(n,' Khong la so nguyen to'); Readln;
End.
=> Nhận xét:
- Phương pháp 1: Giúp cho học sinh có cái nhìn tổng quan hơn khi xác định n có
phải là số ngun tố hay khơng thơng qua phương thức đếm số lần n có chia hết
cho giá trị nào trong khoảng từ [2..n-1] hay không, theo định nghĩa thì số nguyên
tố là số chỉ chia hết cho 1 và chính nó {tức nếu N là số ngun tố chỉ khi n chia hết
cho 1 và n}. Vậy nếu n còn chia hết cho số nào trong khoảng [2..n-1] thì n khơng
phải ngun tố.
- Phương pháp 2: Phương giáp này giúp học sinh tìm hiểu được nhiều kiến thức
hơn trên nền kiến thức của phương pháp 1. Khi cho i chạy từ 2 đến
trunc(sqrt(n)) thì số lần thực hiện vòng lặp được giảm đi một nữa, sẽ tiết kiệm
được thời gian khi chạy chương trình; mặt khác giúp học sinh ôn lại kiến thức lấy


kết quả phép so sánh của kiểu dữ liệu Boolean, một kiểu dữ liệu mà chúng ta cũng
rất hay sử dụng trong các bài tạo vịng lặp.
Ví dụ 3: Viết chương trình nhập vào 2 số nguyên dương a, b khác nhau. Tìm ước
chung lớn nhất và bội chung nhỏ nhất của 2 số trên.
- Xác định bài toán:
Input: Nhập vào hai số nguyên dương a, b
Output: In ra màn hình UCLN(a,b) và BCNN(a,b)
* Phương pháp 1:
- Ý tưởng:

Đầu tiên, là cách cơ bản nhất. Đó là dùng vịng lặp WHILE, rồi lấy số lớn
trừ nhỏ cho đến khi chúng bằng nhau. Cách này dành cho những bạn học yếu, đỡ
phải suy nghĩ nhiều. Tuy nhiên cách này có hạn chế là nếu mà 2 số chênh nhau quá
lớn thì nó sẽ lặp rất nhiều lần, điều này khơng quan trọng đối với các bạn học sinh,
nhưng nếu đi sâu vào chuyên ngành thì việc làm này sẽ tốn dung lượng bộ nhớ và
thuật toán này cũng được đánh giá là kém tối ưu.
Ví dụ tìm UCLN và BCNN của 17 và 3 (bằng phương pháp đoán nhận ta thấy
được UCLN của 2 số này là 1 và BCNN là 51).
Giáo viên có thể mơ phỏng thuật tốn cho học sinh hiểu như sau:
- UCLN : ta sẽ lấy 17 - 3 = 14, 14 - 3 =11, 11- 3 = 8; 8 - 3 = 5; 5 - 3 = 2; 3-2=1; 2-1
=1; Lúc này chúng đã bằng nhau và bằng 1. Và 1 cũng chính là UCLN.
- BCNN : bằng tích của 2 số chia cho UCLN lấy phần nguyên.
+ Tích của 2 số là 17x3 = 51
+ Chia 1 lấy phần nguyên là bằng 51.
var x,y,UCLN,BCNN:integer;
Begin
readln(x,y);
BCNN:=x*y;
While x<>y do
If x>y then x:=x-y else y:=y-x;
UCLN:=x;
BCNN:=BCNN div UCLN;
write(UCLN,' ',BCNN);
end.


 Lưu ý: Sau khi test chương trình xong giáo viên cho học sinh test cặp giá trị a, b
bằng nhau. Yêu cầu học sinh nhận xét, nêu thuật toán và viết lại chương trình trên
với điều kiện a, b là hai số nguyên.
* Phương pháp 2:

- Ý tưởng:
+ Nếu a chia b có phần dư bằng 0 thì b là UCLN của a và b. Từ khái niệm này ta
xây dựng thuật toán như sau: du:= a mod b, a:=b; b:=du, chương trình kết thúc khi
b=0 và UCLN là a.
+ Viết ra UCLN, BCNN
- Chương trình:
Var a,b,p,du:Integer;
Begin
Write('Nhap gia tri a, b tuong uong : ');Readln(a, b);
P:=a*b;
While b<>0 Do
Begin Du:=a mod b; a:=b:b:=du; End;
Writeln('UCLN la: ',a,' BCNN la: ',P Div a); Readln;
End.
* Phương pháp 3:
- Ý tưởng:
+ Ta cho biến i chạy từ 1 đến a, nếu thỏa mãn đồng thời 2 điều kiện (a
mod i =0) và (b mod i =0) thì i là UCLN của a và b.
+ Viết ra UCLN, BCNN
- Chương trình:
Var a,b,p,d:Integer;
Begin
Write('Nhap gia tri a, b tuong uong : ');Readln(a, b);
P:=a*b;
For i:=1 To a Do if (a mod i=0) and (b mod i=0) then d:=i
Writeln('UCLN la: ',d, ‘BCNN la: ',p Div d);
Readln;
End.
* Phương pháp 4:
- Ý tưởng:



+ Ta cho biến i chạy downto từ a đến 1, nếu thỏa mãn đồng thời 2 điều kiện (a mod
i =0) và (b mod i =0) thì i là UCLN của a và b đồng thời kết thúc việc tìm kiếm
{kết thúc vịng lặp}.
+ Viết ra UCLN, BCNN
- Bổ sung kiến thức: Lệnh break
+ Cú pháp: Break
+ Hoạt động: Lệnh break hoạt động khi được đặt trong thân các vịng lặp for,
while, repeat. Khi gặp lệnh break thì máy sẽ thốt khỏi chu trình của vịng lặp,
nếucó nhiều vịng lặp lồng nhau sẽ thốt vịng lặp trong nhất chứa lệnh break;
- Chương trình:
Var a,b,p,d:Integer;
Begin
Write('Nhap gia tri a, b tuong uong : '); Readln(a, b);
P:=a*b;
For i:=a Downto 1 Do
if (a mod i=0) and (b mod i=0) then d:=i;
Writeln('UCLN la: ',d, ‘BCNN la: ',p Div d);
Readln;
End.
=> Nhận xét:
- Phương pháp 1, 2: Nếu chúng ta cho học sinh thực hiện vòng While .. Do
hoặc Repeat .. Until để viết chương trình cho hai phương pháp trên thì cơ bản thuật
tốn khơng thay đổi chỉ khác nhau là sử dụng phương pháp chia liên tiếp hay trừ
liên tiếp. Tuy nhiên ở đây chúng ta sử dụng While .. Do cho phương pháp 1 và
Repeat .. Until cho phương pháp 2 với mục đích giúp các em tìm hiểu thêm sự
khác nhau trong điều kiện lặp và kết thúc hai câu lệnh trên, từ đó yêu cầu các em
chỉnh sửa câu lệnh, thuật toán chia, trừ liên tiếp ngược lại trong hai phương pháp
để khắc sâu kiến thức hơn.

- Phương pháp 3, 4: Phương pháp này giúp các em ôn lại 2 nội dung kiến
thức, một là điều kiện ghép trong câu lệnh điều kiện, hai là vòng lặp với số lần biết
trước. Khi thực hiện vòng lặp dạng tiến For i:=1 To a thì có thể có nhiều giá trị
thỏa mãn nhưng chương trình sẽ nhận được giá trị cuối cùng khi kết thúc lặp, giá
trị này là giá trị ta cần tìm trong bài tốn. Trong phương pháp 4 các em cịn tìm
hiểu thêm được kiến thức mới về câu lệnh Break. Lệnh này thường được áp dụng


để tìm giá trị nhỏ nhất, lớn nhất thỏa mãn các điều kiện nào đó. Ví dụ Viết chương
trình tìm số nguyên dương T nhỏ nhất có N chữ số, biết rằng khi chia T cho 19 thì
dư 13 và khi chia T cho 31 thì dư 12.
2.2.2.3. Rèn luyện kỹ năng lập trình với mảng một chiều.
Trong quá trình học lập trình, khi học sinh học bài: Kiểu mảng học sinh gặp
rất nhiều khó khăn với kiểu dữ liệu này. Qua q trình giảng dạy tơi nhận thấy học
sinh gặp khó khăn như vậy vì học sinh khó hình dung ra kiểu dữ liễu mới này,
không hiểu rõ được cấu trúc lưu trữ kiểu mảng cũng như các cách làm việc với các
phần tử trong mảng. Để học sinh hiểu và lập trình được các bài tốn đơn giản, giáo
viên phải hướng dẫn học sinh các công việc liên quan đến mảng một chiều như:
khai báo mảng một chiều, nhập mảng một chiều gồm các phần tử theo ý muốn, xử
lý mảng một chiều đơn giản như: tính tổng các phần tử của mảng, đếm các phần tử
của mảng, tìm kiếm các phần tử của mảng hay xuất các phần tử của mảng thỏa
điều kiện nào đó. Từ đó học sinh có thể lập trình giải bài tốn sắp xếp dãy số
nguyên (tăng dần hoặc giảm dần), tìm phần tử lớn nhất (hoặc nhỏ nhất) của dãy số
nguyên một cách đơn giản.
Để tạo hứng thú cho học sinh, giúp các em gạt bỏ những khó khăn kể trên
thì khi dạy phần mảng một chiều giáo viên cần bóc tách riêng từng phần công việc
một. Chẳng hạn, trước tiên cần phải ghi nhớ cho học sinh việc ghi nhớ đầu tiên đó
là việc khai báo mảng. Khai báo mảng là một công việc gần như cố định với tất cả
các bài tốn làm việc với dãy số hay cịn gọi là mảng một chiều:
+ Để khai báo ta thực hiện như sau:

Var <tên biến mảng> : array [kiểu chỉ số] of <kiểu phần tử>;
+ Sau khi đã khai báo kiểu dữ liệu mảng thì cần hướng dẫn
học sinh cụ thể công việc nhập các phần tử của mảng:
Write(‘Nhap so phan tu cua mang n =’); Readln(n);
For i:= 1 to n do
Begin
Write(‘ Phan tu a[’,i,‘]=’); Readln(a[i]);
End;
Đây là đoạn lệnh thực hiện việc nhập vào từ bàn phím số phần tử
của mảng và sau đó nhập từng giá trị của mảng.


+ Việc tiếp sau mà giáo viên yêu cầu học sinh ghi nhớ là việc
in các phần tử của mảng vừa nhập được ra màn hình để học sinh
quan sát dãy số vừa nhập qua câu lệnh:
For i := 1 to n do write(a[i]:10);
Sau khi học sinh đã nắm vững được 3 công việc tạm gọi là cố định
của việc lập trình với mảng một chiều thì giáo viên mới mở rộng
một số bài toán liên quan tới mảng một chiều theo từng cấp độ từ
dễ tới khó để học sinh dần từng bước giải quyết. Chẳng hạn một
số bài tập liên quan dạng:
+ In ra các phần tử chẵn của mảng:
For i:=1 to do If a[i] mod 2 =0 then write(a[i]);
+ Tính tổng các phần tử của mảng:
S:=0;
For i:=1 to n do S:=s+a[i];
Write(‘ Tong cac phan tu mang:’,s);
+ In ra màn hình phần tử lớn nhất của mảng:
max := a[1];
For i := 2 to n do

If max <= a[i] then max := a[i];
Writeln(‘ Phan tu lon nhat cua mang la:’, max:10);
Từ bài toán này giáo viên yêu cầu học sinh làm bài tương tự
như tìm phần tử nhỏ nhất của mảng hay đếm xem trong mảng có
bao nhiêu phần tử bằng phần tử K nhập vào từ bàn phím. Khi đã
giải quyết được các bài tốn này thì học sinh đã dần hình thành
được kỹ năng làm việc với kiểu mảng, các em đã thông thuộc các
công việc như khai báo, nhập mảng và xử lý các phần tử trong
mảng thì phải thực hiện như thế nào.
2.3. Khả năng áp dụng, nhân rộng sáng kiến
Học lập trình pascal nói riêng và học tin học nói chung đối
với học sinh phổ thông cơ sở trong những năm vừa qua đã được
nhà trường quan tâm, được đầu tư trang thiết bị phục vụ công tác
giảng dạy tương đối đầy đủ. Tuy nhiên, với học sinh thì mơn học
này đối với các em chỉ là mơn học phụ, các em tuy có yêu thích


môn học nhưng chỉ ở những nội dung đơn giản như soạn thảo văn
bản, sử dụng các phần mềm ứng dụng… Mặt khác, khi được tiếp
cận máy tính các em thường bị thu hút bởi mạng Intenet và Game
hấp dẫn. Để từng bước thay đổi được suy nghĩ cũng như ý thức
học tập của học sinh thì người giáo viên phải nhẫn lại và kiên trì
chỉ bảo các em. Đặc biệt khi các em học nội dung lập trình pascal
thì hầu hết các em đều thấy khó khăn, khó hiểu và lười tư duy.
Để giúp các em khắc phục được điều này, bản thân tôi đã áp
dụng các biện pháp nêu trong sáng kiến thì nhận thấy rằng: Khi
giáo viên tận tâm với học sinh thì cũng tác động tới ý thức của
phần lớn các học sinh, các em đã thay đổi và ý thức hơn khi lên
học tại phòng máy, các em đã chịu khó tư duy và chủ động trong
việc lập trình các bài tốn bằng ngơn ngữ pascal. Từ việc trước

đây các em chỉ gõ theo những bài mẫu, hay các ví dụ trong sách
rồi chạy chương trình là xong, kể cả các em khơng hiểu bản chất,
khơng hiểu các câu lệnh làm việc gì trong chương trình thì nay
các em đã chịu khó hỏi và tìm hiểu các cấu trúc câu lệnh. So sánh
sự khác nhau giữa các câu lệnh lặp để hiểu rõ hơn về câu lệnh.

Chương 3. KẾT LUẬN VÀ KIẾN NGHỊ
3.1. Kết luận
Tin học nói chung đóng vai trị rất quan trọng trong việc xây
dựng các chương trình ứng dụng cơng nghệ để phục vụ cho cuộc
sống. Nhờ sự phát triển của tin học mà hiện nay hầu hết các lĩnh
vực trong xã hội đã ứng dụng được tin học để giải quyết cơng việc
nhanh chóng, hiệu quả và chính xác hơn. Hơn thế, đó là việc học
tập mơn tin học nói chung và lập trình pascal nói riêng cịn rèn
luyện cho mỗi học sinh một tác phong làm việc nghiêm túc khoa
học, một tư duy logic và sáng tạo trong môn học cũng như các
môn học khác.
Khi người giáo viên lên lớp mục tiêu đặt ra trong mỗi tiết dạy
là rèn luyện cho các em kỹ năng sống, tác phong chuẩn mực


và đạt được chuẩn kiến thức kỹ năng của bài học. Trong các
mục tiêu kể trên thì mục tiêu giúp học sinh tích lũy kiến thức là
mục tiêu mà bất kể người giáo viên nào cũng mong muốn và tìm
mọi cách để đạt được. Sau một thời gian thực hiện SKKN tôi nhận
thấy học sinh đã thay đổi và đạt được một số điểm như sau:
- Thứ nhất: Giúp cho học sinh phát triển khả năng tư duy
sáng tạo, tự chiếm lĩnh tri thức, khắc sâu kiến thức đã học, phát
huy tính chủ động, tích cực trong việc tiếp thu kiến thức mới, khả
năng suy luận khi giải quyết một vấn đề, qua đó giúp cho học sinh

tìm ra được các phương pháp giải hay và ngắn gọn cho bài tốn.
- Thứ hai: Rèn luyện cho học sinh tính kiên trì, sáng tạo trong
học tập, dần dần hồn thiện kỹ năng và tự chủ, tự tin để viết
chương trình trong q trình học tập chứ khơng cịn thụ động như
trước. Từ điều này cũng giúp cho các em say mê và u thích
mơn học hơn, khơng cịn thấy sợ khi nói tới lập trình pascal nữa.
- Thứ ba: Tuy chưa có một con số thống kê cụ thể tính hiệu
quả khi thực hiện SKKN nhưng tôi nhận thấy sự thay đổi lớn từ
thái độ học tập của các em với mơn học, đó là một tín hiệu tích
cực và đáng mừng. Tơi nghĩ nếu có đủ thời gian và áp dụng sáng
kiến này cho các năm học tới thì chất lượng học tập mơn lập trình
pascal sẽ được cải thiện và hy vọng các em sẽ có đủ tự tin để có
thể tham gia các cuộc thi học sinh giỏi cấp thành phố và cấp tỉnh.
3.2. Kiến nghị, đề xuất
- Về phía nhà trường: Xin được quan tâm hơn nữa đối với bộ môn
về mặt trnag thiết bị. Hiện nay phịng máy đã có 2 phịng và số
lượng mỗi phịng khoảng 25 máy như vậy cũng tương đối đầy đủ.
Tuy nhiên, mật độ sử dụng máy tương đối cao vì có cả khối tiểu
học và cao đẳng. Chính vì mật độ hoạt động như vậy mà máy bị
xuống cấp nhanh. Khi các em lên phịng đơi khi cịn mất thời gian
để khơi động máy, cài đặt phần mềm…
- Về phía chun mơn: Mong các thầy cơ trong hội đồng đóng góp
ý kiến để hồn thiện sáng kiến và cho phép thực hiện sáng kiến
này vào các năm học tiếp theo. Do năm học này bị ảnh hưởng của


×