You are on page 1of 31

ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON

Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

PHẦN I
MỞ ĐẦU
I. Lý do chọn đề tài
1. Trong bối cảnh Công nghệ thông tin ngày càng phát triển, việc sử dụng rộng rãi
máy tính không còn chỉ bó hẹp trong viện nghiên cứu, các trường đại học, các trung tâm
máy tính mà còn mở rộng ra mọi cơ quan, xí nghiệp và nhà máy. Song song với quá
trình trên, việc giảng dạy Tin học trong các trường đại học, trung học và phổ thông
cũng được đẩy mạnh đi đôi với việc tăng cường trang bị máy vi tính. Chính vì vậy, đối
với mỗi giáo viên giảng dạy môn Tin học ở các trường phổ thông, việc tìm hiểu, nghiên
cứu các vấn đề về Tin học, cùng với việc tìm các biện pháp giảng dạy Tin học trong nhà
trường phổ thông là một công việc cần phải làm thường xuyên, nhằm đáp ứng với sự
đòi hỏi ngày càng cao của xã hội.
2. Trong nghiệp vụ của người thầy giáo có hai vấn đề quan trọng: thứ nhất là thực
tiễn về tiềm năng - những kiến thức lý thuyết mà họ được học rất cơ bản. Thứ hai là
thực tiễn về nghiệp vụ - thầy giáo phải biết cách truyền thụ kiến thức phù hợp với trình
độ của học sinh. Trong đó, thực tiễn thứ hai là điều quyết định trong nghiệp vụ của thầy
giáo, nó đánh giá chất lượng giảng dạy của thầy giáo. Hai thực tiễn trên vừa mâu thuẫn
với nhau, lại vừa thống nhất với nhau. Thầy giáo không thể mang hết các kiến thức lý
thuyết cao xa và trừu tượng dạy cho học sinh, nhưng cũng không thể dạy tốt cho học
sinh nếu thầy giáo hiểu biết quá ít.
2.1. Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương
pháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động
học tập. Điều 24.2 của Luật giáo dục đã nêu rõ : “Phương pháp giáo dục phổ thông
phải phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc
điểm của từng lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng
vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú
học tập cho học sinh”. Như vậy, chúng ta có thể thấy định hướng đổi mới phương pháp
dạy học đã được khẳng định, không còn là vấn đề tranh luận. Cốt lõi của việc đổi mới
phương pháp dạy học ở trường phổ thông là giúp học sinh 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.
2.2. Đổi mới phương pháp dạy học theo hướng tích cực hóa hoạt động của học sinh
là một quá trình lâu dài; không thể ngày một ngày hai mà đông đảo giáo viên từ bỏ
được kiểu dạy học truyền thụ kiến thức, tiếp thu thụ động đã quen thuộc từ lâu. việc
phát triển các phương pháp tích cực đòi hỏi một số điều kiện, trong đó quan trọng nhất
là bản thân mỗi giáo viên cần có một sự nỗ lực để tìm tòi, sáng tạo trong công tác giảng
dạy của mình.
2.3. Đổi mới phương pháp dạy học là một vấn đề hết sức quan trọng, nhất là với bộ
môn Tin học hiện đang được đưa vào giảng dạy ở các trường phổ thông. Là một giáo
viên giảng dạy bộ môn này, theo em không phải cứ tìm được nhiều bài toán khó, bài
toán hay để giảng dạy cho học sinh. Mà vấn đề đặt ra là chúng ta cần phải tích cực tìm
tòi, sáng tạo trong việc đưa ra những bài toán đó để giúp cho học sinh có sự hứng thú,
tìm tòi sáng tạo trong quá trình giài quyết học tập, từ đó biết vận dụng linh hoạt trong
các tình huống cụ thể ngoài thực tế.

Trang 5
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

3. Trong việc giảng dạy cho học sinh, ngoài việc giúp học sinh lĩnh hội những kiến
thức cơ bản. Thầy giáo còn phải biết kích thích tính tích cực, sự sáng tạo say mê học
hỏi của học sinh trong việc học tập của các em. Bởi vì, việc học tập tự giác, tích cực,
chủ động và sáng tạo đòi hỏi học sinh phải có ý thức về những mục tiêu đặt ra và tạo
được động lực bên trong thúc đẩy bản thân họ hoạt động để đạt các mục tiêu đó. Điều
này được thực hiện trong dạy học không chỉ đơn giản bằng việc nêu rõ mục tiêu mà
quan trọng hơn còn do gợi động cơ.
4. Turbo Pascal là ngôn ngữ lập trình có cấu trúc, nó được dùng phổ biến ở nước ta
hiện nay trong công tác giảng dạy, lập trình tính toán, đồ họa. Turbo Pascal được dùng
trong chương trình giảng dạy Tin học ở hầu hết các trường đại học, cao đẳng, trung học
phổ thông.
4.1. Trong các vấn đề về Tin học được đưa vào giảng dạy ở chương trình bậc học
phổ thông hiện nay. Khi nói đến vấn đề dạy học lập trình cho học sinh, vấn đề dạy học
cho học sinh về chương trình con là một trong những vấn đề chiếm vai trò quan trọng.
Bởi vì, sử dụng chương trình con để hợp lý hóa, tiết kiệm công sức lập trình. Đồng thời,
chương trình con có thể giúp cho người lập trình dễ sửa chữa, dễ kiểm tra. Vấn đề đặt ra
là: gợi động cơ hoạt động cho học sinh khi giảng dạy về chương trình con như thế nào?
Đó chính là vấn đề mà bản thân em hết sức quan tâm.
4.2. Để thực hiện được điều đó, theo em chúng ta cần phải tìm tòi, nghiên cứu tìm ra
những bài toán phù hợp, kích thích được sự độc lập, tích cực của học sinh trong học tập.
Trên cơ sở đó, học sinh có thể tự mình tìm ra được những ý tưởng sáng tạo vận dụng
thiết thực vào cuộc sống thực tế khi nhu cầu nảy sinh, khi đó các em có thể tự mình
hoàn thành được ý tưởng đó.
4.3. Trên cơ sở những gì mà học sinh được học tập về môn lập trình Pascal, học sinh
có thể sử dụng một cách thành thạo các ngôn ngữ khác để hoàn thành tốt hơn những
ứng dụng trong thực tế. Bởi vì, ngôn ngữ Pascal có tính cấu trúc mạnh, có cơ sở và nó
đòi hỏi chương trình phải chặt chẽ, logic. Đặc biệt, khi học về chương trình con, học
sinh có thể hiểu một cách sâu sắc hơn về ngôn ngữ lập trình, nhìn nhận vấn đề một cách
sáng sủa hơn, chặt chẽ hơn và nhất là chương trình con có thể giúp cho các em hoàn
thành những chương trình lớn hơn vượt ra những bài toán bình thường mà nội bộ môn
học đòi hỏi. Chính vì vậy, việc gợi động cơ cho học sinh trong việc dạy học chương
trình con là một công việc quan trọng, đòi hỏi mỗi giáo viên cần phải nỗ lực tìm tòi,
sáng tạo giúp cho học sinh nhìn nhận vấn đề một cách tích cực hơn, sáng tạo hơn và
nhất là giúp cho các em có thể yêu thích nhiều hơn nữa ngôn ngữ lập trình Pascal.
Với tất cả những lý do nêu trên, em quyết định chọn đề tài này.

II. Định hướng nghiên cứu


1. Mục đích nghiên cứu
Tạo động cơ cho học sinh ý thức về ý nghĩa của các hoạt động khi sử dụng chương
trình con trong công việc lập trình. Từ đó, học sinh có thể liên hệ , vận dụng sáng tạo
vào giải quyết các bài toán lập trình và các tình huống thực tế.
2. Nhiệm vụ nghiên cứu
Qua việc nghiên cứu các vấn đề về chương trình con của ngôn ngữ lập trình Pascal,
các tài liệu về phương pháp giảng dạy. Từ đó, đưa ra các biện pháp có thể gợi động cơ
hoạt động cho học sinh thông qua các ví dụ cụ thể về chương trình con.

Trang 6
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

III. Phương pháp nghiên cứu


1. Nghiên cứu lý luận
Trong nghiên cứu lý luận người ta dựa vào những tài liệu sẵn có, những lý thuyết đã
được khẳng định, những thành tựu của nhân loại trên những lĩnh vực khác nhau như
Tâm lý học, Giáo dục học, Tin học, ... để xem xét vấn đề, tìm ra giải pháp hợp lý có sức
thuyết phục vận dụng vào PPDH Tin học.
Người ta cũng nghiên cứu cả những kết quả của bản thân chuyên ngành PPDH Tin
học để kế thừa những cái hay, phê phán và gạt bỏ những cái dở, bổ xung và hoàn chỉnh
những nhận thức đã đạt được.
Những hình thức thường dùng trong nghiên cứu lý luận là:
- Phân tích tài liệu lý luận : Giúp chúng ta chọn đề tài, đề ra mục đích nghiên cứu, hình
thành giả thuyết khoa học, xác định tư tưởng chủ đạo và đánh giá sự kiện. Khi nghiên
cứu lý luận, ta cần phân tích, tổng hợp, so sánh, khái quát để tìm ra ý mới. Cái mới ở
đây có thể là một lý thuyết hoàn toàn mới, nhưng cũng có thể là một cái mới đan kết với
những cái cũ, có thể là một sự tổng hợp những nét riêng lẻ đã chứa trong cái cũ, nêu bật
cái bản chất từ những cái cũ, bổ xung, cụ thể hóa lý thuyết cũ.
- So sánh quốc tế : Giúp chúng ta lựa chọn, xây dựng phương án tác động giáo dục trên
cơ sở đánh giá, so sánh tài liệu, cách làm của những nước khác nhau.
- Phân tích tiên nhiệm : Thường dựa vào những yếu tố lịch sử, những cách tiếp cận
khác nhau của một lý thuyết, những cách định nghĩa khác nhau của một khái niệm, ...
để dự kiến những quan niệm có thể có của học sinh về một kiến thức Tin học. Nó cũng
được dùng để kiểm nghiệm một hiện tượng, một quá trình có thỏa mãn những tiêu
chuẩn, yêu cầu, điều kiện đặt ra hay không.
2. Quan sát - điều tra
Quan sát điều tra được sử dụng rộng rãi trong nghiên cứu giáo dục. Đó là phương
pháp tri giác có mục đích một hiện tượng giáo dục nào đó để thu lượm những số liệu,
tài liệu, sự kiện cụ thể đặc trưng cho quá trình diễn biến của hiện tượng mà ta dự định
khảo sát. Chúng ta quan tâm đến chất lượng của các mối quan hệ, của các hoạt động,
của tình huống. Điều tra giống quan sát ở chỗ cùng dựa vào và khai thác những hiện
tượng có sẵn, không chủ động gây nên những tác động sư phạm, nhưng quan sát thiên
về xuất phát từ những dấu hiệu bên ngoài, còn điều tra có thể khai thác những thông tin
sâu kín từ bên trong, chẳng hạn cho làm những bài kiểm tra rồi đánh giá.
Quan sát - điều tra giúp chúng ta theo dõi hiện tượng giáo dục theo trình tự thời gian,
phát hiện những biến đổi số lượng, chất lượng gây ra do tác động giáo dục. Nó giúp ta
thấy được những vấn đề thời sự cấp bách đòi hỏi phải nghiên cứu hoặc góp phần giải
quyết nhiệm vụ nghiên cứu. Môi trường tự nhiên là nguồn cung cấp dữ liệu trực tiếp
cho ta. Người nghiên cứu đến trực tiếp một nơi nào đó mà họ quan tâm để quan sát và
thu thập dữ liệu, bởi vì các hoạt động chỉ có thể hiểu tốt nhất là trong môi trường tự
nhiên, trong ngữ cảnh mà chúng xuất hiện.
Quan sát - điều tra thực tiễn sư phạm, chẳng hạn thăm lớp dự giờ sẽ giúp chúng ta
nhận thức được thực trạng dạy học Tin, phát hiện được những vấn đề thời sự cấp bách
cần nghiên cứu, giúp ta thu được những tài liệu sinh động và bổ ích cho nhiệm vụ
nghiên cứu.

Trang 7
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Theo mối quan hệ giữa đối tượng quan sát - điều tra với người nghiên cứu thì có các
dạng quan sát - điều tra trực tiếp, gián tiếp, công khai, kín đáo. Theo dấu hiệu về thời
gian thì có quan sát - điều tra liên tục, gián đoạn.
Quan sát - điều tra cần có mục đích cụ thể (chẳng hạn để thấy được hoạt động tích
cực của học sinh trong giờ học), có nội dung cụ thể (chẳng hạn sự gây động cơ và
hướng đích của giáo viên, số lượng học sinh giơ tay xin phát biểu, số lượng câu hỏi,
chất lượng câu trả lời của học sinh thể hiện sự suy nghĩ sâu sắc hay hời hợt, sự tập trung
chú ý thể hiện qua hướng nhìn, cử chỉ, ... ) và có tiêu chuẩn đánh giá, đo lường các kết
quả quan sát cụ thể (chẳng hạn một giờ như thế nào được đánh giá là học sinh hoạt
động rất tích cực, khá tích cực, kém tích cực). Các loại dữ liệu thu thập được trong
nghiên cứu bao gồm văn bản ghi chép các cuộc phỏng vấn, các sổ ghi chép, ảnh, băng
hình, ghi âm, phiếu điều tra, nhật ký, ... giúp ta dựng lại một cách đầy đủ những gì mà
ta đã quan sát được, giúp ta lý giải được vì sao họ lại nghĩ như thế, tại sao họ lại làm
như vậy?, ...
Trong khi quan sát - điều tra diễn biến thực của những hiện tượng sư phạm, có khi
người ta tình cờ phát hiện ra những sự kiện, hiện tượng sư phạm mới ngoài dự kiến ban
đầu.
3. Tổng kết kinh nghiệm
Tổng kết kinh nghiệm thực chất là đánh giá và khái quát hóa những kinh nghiệm đã
thu thập được trong hoạt động thực tiễn, từ đó phát hiện ra những vấn đề cần khẳng
định để đưa ra áp dụng rộng rãi hoặc cần tiếp tục nghiên cứu hay loại bỏ. Nó có nguồn
gốc từ kinh nghiệm, mang tính khoa học, được lĩnh hội, kiểm chứng từ quá trình hoạt
động thực tiễn sinh động. Bài học kinh nghiệm là sự cụ thể hóa một cách sáng tạo tư
tưởng, luận điểm, lý luận giáo dục đã đi vào cuộc sống. Trong quá trình nghiên cứu
tổng kết kinh nghiệm, có khi người ta khám phá ra những mối liên hệ có tính quy luật
của những hiện tượng giáo dục.
Những kinh nghiệm cần được đặc biệt chú ý là kinh nghiệm tiên tiến, kinh nghiệm
thành công và kinh nghiệm lặp lại nhiều lần. Kinh nghiệm giáo dục ở những đơn vị tiên
tiến có thể được coi là dạng lý luận giáo dục đã được kiểm chứng trong thực tiễn, trong
những tình huống, điều kiện cụ thể của môi trường giáo dục. Những bài học của sự
thành công cần được đề cập với tư cách là cứ liệu đối chiếu, so sánh làm rõ kinh
nghiệm thành công. Chúng cần được xem xét một cách khách quan, khoa học, biện
chứng theo tính lịch sử của vấn đề rút ra những kết luận có tính thuyết phục, có độ Tin
cậy cao. Qua tổng kết kinh nghiệm, chúng ta có được những bài học kinh nghiệm hàm
chứa những tri thức, thông Tin, kỹ năng, những giải pháp, biện pháp về hướng đi và
cách làm mới có giá trị, đem lại hiệu quả, chất lượng cao hơn trong điều kiện đổi mới
giáo dục của đất nước hiện nay.
Tổng kết kinh nghiệm phải có lý luận soi sáng, giải thích tính chất hợp lý, phù hợp
với những quy luật đã được khẳng định thì mới có thể thoát khỏi những sự kiện lộn
xộn, những kinh nghiệm vụn vặt, hời hợt không có tính phổ biến, mới loại bỏ được
những yếu tố ngẫu nhiên, đi sâu vào bản chất của sự vật, hiện tượng, đạt tới những kinh
nghiệm có giá trị khoa học đích thực. Chỉ khi đó tổng kết kinh nghiệm mới thật sự là
một phương pháp nghiên cứu khoa học hữu hiệu. Những bài học kinh nghiệm, những
kết luận về lý luận giáo dục góp phần bổ xung, làm cho lý luận giáo dục được hoàn
thiện hơn, mang tính thực tiễn cao hơn, tránh được tình trạng lý luận suông. Bài học

Trang 8
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

kinh nghiệm giáo dục phải bảo đảm có được một sự khái quát nhất định, mang tính
khoa học với tính lý luận cụ thể và đặc biệt phải mang tính thực tiễn cao.
Bài học kinh nghiệm cần trình bày theo trình tự sau:
- Tên bài học kinh nghiệm
- Nêu bối cảnh xuất hiện vấn đề mà khi giải quyết dẫn đến bài học kinh nghiệm.
- Những kết quả đạt được gắn với nhiệm vụ nghiên cứu.
- Hệ thống biện pháp đã vận dụng đạt kết quả cao.
- Đánh giá tác dụng, hiệu quả của bài học kinh nghiệm, đưa ra nhận định có tính khái
quát về bài học mang tính lý luận.
Tổng kết kinh nghiệm không chỉ đơn giản là trình bày lại những công việc đã làm và
những kết quả đã đạt được. Là một phương thức nghiên cứu khoa học, nó phải được
tiến hành theo một quy trình nghiêm túc, thường là như sau:

Liệt kê sự kiện, mô tả quá trình

Tước bỏ những yếu tố ngẫu


nhiên làm bộc lộ cái bản chất

Phát hiện mối quan hệ nhân quả

Dùng lý luận soi sáng

Dùng thực nghiệm kiểm chứng

Phát hiện cần đảm bảo cả về mặt định tính và phần nào về mặt định lượng, tức là
phải thu thập đủ về dữ liệu, tư liệu về sự kiện, việc làm, các hoạt động đã tiến hành đạt
kết quả cao nhất. Trong đó cần chú trọng đến những dữ liệu, tư liệu, thông tin mà nội
dung của chúng phản ánh mối quan hệ giữa kết quả với nguyên nhân và biện pháp.
Những bước của quá trình phát hiện có thể là:
- Nêu mục đích yêu cầu phát hiện.
- Triển khai những hình thức phát hiện.
- Thẩm định, bổ sung thông tin.
- Tiến hành xử lý thông tin.
Khi tiến hành xử lý thông tin phải căn cứ vào cái có thực thu được qua quá trình
khảo sát, phát hiện thu thập được. Dùng lý luận để phân tích các tư liệu, số liệu rút ra
được từ thực tiễn. Rút ra bài học kinh nghiệm dưới dạng khái quát mang tính lý luận
hay khẳng định về mặt lý luận và thực tiễn. Trong quá trình xử lý, cần áp dụng những
thao tác tư duy khoa học, trừu tượng hóa các yếu tố ngẫu nhiên, tìm ra tính đặc thù, tất
yếu mà chúng đã thể hiện trong bối cảnh, hoàn cảnh cụ thể.
Phần cuối của sơ đồ cho thấy rõ mối liên hệ giữa tổng kết kinh nghiệm với nghiên
cứu lý luận và thực nghiệm giáo dục.

Trang 9
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

4. Thực nghiệm giáo dục


Thực nghiệm giáo dục cho phép ta tạo nên những tác động sư phạm vào quá trình
dạy học và giáo dục. Những tác động này xảy ra trong những điều kiện có thể khống
chế, điều chỉnh, thay đổi được, ít chịu ảnh hưởng của những yếu tố ngẫu nhiên khác, từ
đó xác định và đánh giá kết quả của những tác động đó. Đặc trưng của thực nghiệm
giáo dục là nó không diễn ra một cách tự phát mà là dưới sự điều khiển của nhà nghiên
cứu. Nhà nghiên cứu tổ chức quá trình giáo dục một cách có ý thức, có mục đích, có kế
hoạch, tự giác thiết lập và thay đổi những điều kiện thực nghiệm cho phù hợp với ý đồ
nghiên cứu của mình.
Trong những điều kiện nhất định, thực nghiệm giáo dục cho phép ta khẳng định hoặc
bác bỏ một giả thuyết khoa học đã đề ra.
Trong thực nghiệm giáo dục ta cần giải thích rõ kết quả, làm rõ nguyên nhân bằng lý
luận hoặc bằng sự phân tích quá trình thực nghiệm.
Thực nghiệm giáo dục là một phương pháp nghiên cứu rất có hiệu lực, song thực
hiện nó rất công phu, rất khó khăn. Khó khăn là do chúng ta thực hiện một tác động lên
những con người cụ thể, kết quả thu được phụ thuộc vào nhiều yếu tố tâm lý. Những
kết quả thực nghiệm thường chỉ có ý nghĩa xác suất, phải xử lý bằng phương pháp
thống kê. Để thống kê cho kết quả Tin cậy, cần phải đo lường, định lượng được các dấu
hiệu, đó là việc làm không dễ. Vì thế ta không nên lạm dụng phương pháp thực nghiệm
giáo dục. Khi nghiên cứu một hiện tượng giáo dục, trước hết có thể dùng những phương
pháp không đòi hỏi quá nhiều công sức, ví dụ như nghiên cứu lý luận, quan sát, tổng kết
kinh nghiệm. Chỉ ở những chỗ các phương pháp này chưa đủ sức thuyết phục, chỉ ở
một số khâu mấu chốt, ta mới dùng thực nghiệm giáo dục.
Thông thường những phương pháp được sử dụng kết hợp với nhau, làm cho kết quả
thu được vừa có tính lý luận, vừa có tính thực tiễn. Chẳng hạn, qua nghiên cứu lý luận,
quan sát, tổng kết kinh nghiệm, người ta đề xuất một giả thuyết khoa học rồi đem thực
nghiệm giáo dục để kiểm nghiệm. Sau đó, lại dùng lý luận để phân tích kết quả, xác
định nguyên nhân và khái quát hóa lên một trình độ cao hơn, tổng quát hơn những điều
đã đạt được.

Trang 10
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

PHẦN II
NỘI DUNG ĐỀ TÀI GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG
VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON

Gợi động cơ là làm cho học sinh có ý thức về ý nghĩa của những hoạt động và của
đối tượng hoạt động. Gợi động cơ nhằm làm cho những mục tiêu sư phạm biến thành
những mục tiêu của cá nhân học sinh, chứ không phải chỉ là sự vào bài, đặt vấn đề một
cách hình thức.
Ở những lớp dưới, thầy giáo thường dùng những cách như cho điểm, khen chê, thông
báo kết quả học tập cho gia đình, ... để gợi động cơ. Càng lên lớp cao, cùng với sự
trưởng thành của học sinh, với trình độ nhận thức và giác ngộ chính trị ngày càng cao
những cách gợi động cơ xuất phát từ nội dung hướng và những nhu cầu nhận thức, nhu
cầu đời sống, trách nhiệm đối với xã hội ngày càng trở nên quan trọng.
Gợi động cơ không phải chỉ là việc làm ngắn ngủi lúc bắt đầu dạy một tri thức nào
đó, mà phải xuyên suốt quá trình dạy học. Vì vậy, có thể phân biệt gợi động cơ mở đầu,
gợi động cơ trung gian và gợi động cơ kết thúc. Trong đề tài này em xin đưa ra một số
giải pháp gợi động cơ hoạt động trong việc giảng dạy chương trình con của ngôn ngữ
lập trình Pascal theo từng giai đoạn như trên.

CHƯƠNG I: GỢI ĐỘNG CƠ MỞ ĐẦU

Để Gợi động cơ mở đầu chúng ta có thể gợi động cơ xuất phát từ thực tế hoặc xuất
phát từ nội bộ Tin học.
Việc xuất phát từ thực tế không những có tác dụng gợi động cơ mà còn góp phần
hình thành thế giới quan duy vật biện chứng. Nhờ đó, học sinh nhận rõ việc nhận thức
và cải tạo thế giới đã đòi hỏi phải suy nghĩ và giải quyết những vấn đề Tin học như thế
nào, tức là nhận rõ Tin học bắt nguồn từ những nhu cầu của đời sống thực tế. Vì vậy,
chúng ta cần khai thác triệt để mọi khả năng để gợi động cơ xuất phát từ thực tế. Tuy
nhiên, để gợi động cơ xuất phát từ thực tế cần chú ý các điều kiện sau:
- Vấn đề đặt ra phải đảm bảo tính chân thực, đương nhiên có thể đơn giản hóa vì lý
do sư phạm trong trường hợp cần thiết.
- Việc nêu vấn đề không đòi hỏi quá nhiều tri thức bổ xung.
- Con đường từ lúc nêu vấn đề cho tới khi giải quyết vấn đề càng ngắn càng tốt.
Mặc dù Tin học phản ánh thực tế một cách toàn bộ và nhiều tầng. Tuy nhiên không
phải bất cứ nội dung nào, hoạt động nào cũng có thể gợi động cơ xuất phát từ thực tế.
Vì vậy, ta còn tận dụng cả những khả năng gợi động cơ xuất phát từ nội bộ Tin học.
Gợi động cơ từ nội bộ Tin học là nêu vấn đề Tin học xuất phát từ nhu cầu Tin học, từ
việc xây dựng khoa học Tin hoc, từ những phương thức tư duy và hoạt động Tin học.
Gợi động cơ theo cách này là cần thiết vì:

Trang 11
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

- Việc gợi động cơ xuất phát từ thực tế không phải bao giờ cũng thực hiện được.
- Việc gợi động cơ từ nội bộ Tin học sẽ giúp học sinh hình dung được đúng sự hình
thành và phát triển của Tin học cùng với những đặc điểm của nó và có thể dần dần tiến
tới hoạt động Tin học một cách độc lập.
Thông thường khi bắt đầu một nội dung lớn, chẳng hạn một phân môn hay một
chương ta nên cố gắng xuất phát từ thực tế. Còn đối với từng bài hay từng phần của bài
thì cần tính tới những khả năng gợi động cơ từ nội bộ Tin học. Đó là những cách sau
đây:

1) Đáp ứng nhu cầu xóa bỏ sự hạn chế


Xét bài toán : “Viết chương trình cho máy tính chu vi, diện tích và đường chéo của
ba hình chữ nhật theo hai kích thước của mỗi hình. Trong đó:
- Hình thứ nhất có hai kích thước là a1, a2
- Hình thứ hai có hai kích thước là b1, b2
- Hình thứ ba có hai kích thước là a1+b1 và a2*b2”.

Var a1, b1, a2, b2, c1, c2, c3, d1, d2, d3, m1, m2, m3 : Real;
Begin
Writeln('Nhap hai canh cua hinh chu nhat thu nhat:');
Write('a1 = '); Readln(a1);
Write('b1 = '); Readln(b1);
Writeln('Nhap hai canh cua hinh chu nhat thu hai:');
Write('a2 = '); Readln(a2);
Write('b2 = '); Readln(b2);
c1 := 2 * (a1 + b1);
c2 := 2 * (a2 + b2);
c3 := 2 * ((a1 + b1) + (a2 * b2));
d1 := a1 * b1;
d2 := a2 * b2;
d3 := (a1 + b1) * (a2 * b2);
m1 := sqrt(a1 * a1 + b1 * b1);
m2 := sqrt(a2 * a2 + b2 * b2);
m3 := sqrt(sqr(a1 + b1) + sqr(a2 * b2));
Writeln('Hinh chu nhat thu nhat:');
Writeln('Chu vi bang : ',c1:0:2);
Writeln('Dien tich bang : ',d1:0:2);
Writeln('Duong cheo bang: ',m1:0:2);
Writeln('Hinh chu nhat thu hai:');
Writeln('Chu vi bang : ',c2:0:2);
Writeln('Dien tich bang : ',d2:0:2);
Writeln('Duong cheo bang: ',m2:0:2);
Writeln('Hinh chu nhat thu ba:');
Writeln('Chu vi bang : ',c3:0:2);
Writeln('Dien tich bang : ',d3:0:2);
Writeln('Duong cheo bang: ',m3:0:2);

Trang 12
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Readln
End.

Chương trình trên để thực hiện được yêu cầu của đề bài, chúng ta phải viết đi viết lại
ba dòng liên tiếp tính chu vi, diện tích và đường chéo của từng hình chữ nhật. Giả sử
nếu phải tính đến n hình chữ nhật thì vấn đề quả thực là hết sức phức tạp. Trong bài
toán trên ta còn chưa có phần kiểm tra điều kiện nhập vào của mỗi hình. Nếu có thêm
điều kiện này, chắc chắn chương trình còn dài nữa. Vấn đề đặt ra là: làm thế nào có thể
xóa bỏ được sự hạn chế này? Ở đây, chúng ta có thể hướng dẫn cho học sinh sử dụng
chương trình con để khắc phục sự hạn chế đó. Thay vì phải viết nhiều lần lệnh nhập,
tính đi tính lại cho từng hình ta có thể viết 2 thủ tục:
1. Thủ tục nhập hai cạnh của hình chữ nhật.
2. Thủ tục Tính ba giá trị cho mỗi hình.

Var a1, b1, a2, b2: Real;


Procedure Nhap(Var x, y: Real; i: Byte);
Begin
Writeln('Nhap hai kich thuoc cua hinh chu nhat thu ',i,':');
Repeat
Write('Canh thu nhat: '); Readln(x);
Write('Canh thu hai : '); Readln(y);
If (x <= 0) Or (y <= 0) Then Writeln('Nhap lai!');
Until (x > 0) And (y > 0);
End;
Procedure Tinh(a, b: Real; k: Byte);
Begin
Writeln('Hinh chu nhat thu ',k,':');
Writeln('Chu vi bang : ',2 * (a + b):0:2);
Writeln('Dien tich bang : ',a * b:0:2);
Writeln('Duong cheo bang: ',sqrt(a * a + b * b):0:2);
End;
Begin
Nhap(a1, b1, 1); Nhap(a2, b2, 2);
Tinh(a1, b1, 1); Tinh(a2, b2, 2); Tinh(a1 + b1, a2 * b2, 3);
Readln
End.

2) Hướng tới sự tiện lợi hợp lý hóa công việc


Xét bài toán sau: “Nhập vào 1 dãy n số nguyên lớn hơn 1. Viết ra màn hình tất cả
các số của dãy thỏa mãn điều kiện là số nguyên tố”.

Var A: Array[1..100] Of Integer;


k,n: Integer;
Function NgTo(a: Integer):Boolean;
Var u: Integer;

Trang 13
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Begin
NgTo:=False;
For u := 2 To Trunc(sqrt(a)) Do
If a mod u = 0 Then Exit;
NgTo := a > 1;
End;
Begin
Write('Nhap so phan tu: '); Readln(n);
Writeln('Nhap cac phan tu cua day. Chu y: A[k] >= 2');
For k := 1 to n do Begin
Repeat
Write('A[',k,'] = ');Readln(A[k]);
If A[k] < 2 Then Writeln('Ban can nhap A[k] > 2. Vui long nhap
lai!');
Until A[k] >= 2;
End;
Writeln('Cac so nguyen to cua day so tren la:');
For k := 1 to n do
If NgTo(A[k]) Then Write(A[k]:6);
Readln
End.

Từ chương trình trên chúng ta có thể giúp cho học sinh thấy được việc sử dụng
chương trình con có thể hợp lý hóa, tiết kiệm công sức lập trình. Đồng thời, chương
trình con giúp cho người lập trình dễ sửa chữa, dễ kiểm tra. Cụ thể là với bài toán trên
chúng ta có thể sửa chữa thành bài toán: “Viết ra màn hình tất cả các số của dãy thỏa
mãn điều kiện là hợp số” chỉ bằng hai câu lệnh:
- Dòng lệnh Writeln(‘Cac so nguyen to cua day so tren la:’); Sửa thành:
Writeln(‘Cac so la hop so cua day so tren la:’);.
- Dòng lệnh : If NgTo(A[k]) Then Write(A[k]:6) ta thay bằng dòng lệnh If Not
NgTo(A[k]) Then Write(A[k]:6).

3) Chính xác hóa một khái niệm


Có những khái niệm mà học sinh đã biết ở từng bài riêng lẻ chưa thể đưa ra ngay
những nhận xét, những kết luận chính xác liên quan tới khái niệm đó; tới một thời điểm
nào đó có đủ điều kiện thì chúng ta có thể gợi lại vấn đề và giúp học sinh chính xác hóa
khái niệm đó. Chẳng hạn, ta cần chính xác hóa khái niệm sử dụng tham biến của
chương trình con. Sau khi học cách sử dụng tham trị, chúng ta có thể yêu cầu học sinh
làm bài tập sau:
“Viết một thủ tục nhập vào số đo bán kính của 3 đường tròn. Sau đó tính chu vi và
diện tích của mỗi đường tròn đó”.

Var r1, r2, r3: Real;


Procedure Nhap( r: Real; k:Byte);
Begin

Trang 14
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Repeat
Write('Nhap ban kinh cua duong tron thu ',k,': ');
Readln(r);
If r <= 0 Then Writeln('Nhap lai!');
Until r > 0;
End;
Begin
Nhap(r1, 1);
Nhap(r2, 2);
Nhap(r3, 3);
Writeln('Duong tron 1 Chu vi bang:',2 * pi * r1:6:1,' Dien tich bang:
',pi * sqr(r1):6:1);
Writeln('Duong tron 2 Chu vi bang:',2 * pi * r2:6:1,' Dien tich
bang:',pi * sqr(r2):6:1);
Writeln('Duong tron 3 Chu vi bang:',2 * pi * r3:6:1,' Dien tich
bang:',pi * sqr(r3):6:1);
Readln
End.

Chúng ta có thể yêu cầu học sinh thực thi chương trình trên và chạy thử. Học sinh sẽ
phát hiện ra là kết quả chu vi và diện tích của cả ba đường tròn đều bằng 0. Vấn đề đặt
ra là: Chương trình sai ở chỗ nào? Lúc này giáo viên có thể khẳng định sự phân biệt
giữa tham biến và tham trị, các giá trị của tham biến được lưu giữ khi ra ngoài chương
trình con, còn giá trị của tham trị chỉ lưu giữ khi thực hiện chương trình con, nếu ra
khỏi chương trình con nó sẽ không còn lưu giữ giá trị đó. Điều này sẽ giúp cho chúng ta
chính xác hóa khái niệm tham biến và tham trị cho học sinh.
Chương trình trên cần sửa lại như sau:

Var r1, r2, r3: Real;


Procedure Nhap(Var r: Real; k:Byte);
Begin
Repeat
Write('Nhap ban kinh cua duong tron thu ',k,': ');
Readln(r);
If r <= 0 Then Writeln('Nhap lai!');
Until r > 0;
End;
Begin
Nhap(r1, 1);
Nhap(r2, 2);
Nhap(r3, 3);
Writeln('Duong tron 1 Chu vi bang:',2 * pi * r1:6:1,' Dien tich bang:
',pi * sqr(r1):6:1);
Writeln('Duong tron 2 Chu vi bang:',2 * pi * r2:6:1,' Dien tich
bang:',pi * sqr(r2):6:1);

Trang 15
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Writeln('Duong tron 3 Chu vi bang:',2 * pi * r3:6:1,' Dien tich


bang:',pi * sqr(r3):6:1);
Readln
End.

4) Hướng tới sự hoàn chỉnh hệ thống


Để có thể giúp học sinh nắm bắt được các kiến thức về chương trình con một cách có
hệ thống . Sau khi học xong về chương trình con, chúng ta có thể đưa ra sơ đồ sau:

Thủ tục Không Có tham chiếu

Chương trình con


Tham trị

Hàm Có tham chiếu

Tham biến

Tiếp theo, để giúp cho học sinh nhìn thấy vấn đề có hệ thống một các rõ ràng hơn,
đặc biệt là giúp cho học sinh hiểu rõ các vấn đề về chương trình con. Chẳng hạn đâu là
biến toàn cục, đâu là biến địa phương, khi nào dùng tham biến, khi nào dùng tham trị,
các chương trình con gọi lẫn nhau như thế nào?, ... Chúng ta có thể đưa ra ví dụ sau:
“Viết chương trình nhập vào số cạnh của n tam giác, sau đó tính diện tích của mỗi
tam giác vừa nhập và tổng diện tích của tất cả các tam giác đó”.

Var a:array[1..3,1..100] Of Real; {Bien toan cuc}


Function Ktra(x, y, z: Real): Boolean; {Ham co tham tri}
Begin
Ktra := (x < y + z) And (y < x + z) And (z < x + y);
End;
Procedure Nhap(Var a, b, c: Real; i:Byte); {Thu tuc co tham bien}
Begin
Writeln('Nhap vao ba canh cua tam giac thu ',i,': ');
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra(a, b, c) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac!
Nhap lai:');
Until Ktra(a, b, c);
End;
Function DT(m, n, p:Real): Real; {Ham co tham tri}
Var d: Real; {Bien cuc bo}
Begin

Trang 16
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

d := (m + n + p) / 2;
DT := sqrt(d * (d - m) * (d - n) * (d - p));
End;
Procedure Tinh; {Thu tuc khong co tham chieu}
Var k, n, j: Integer; tong: Real; {Bien cuc bo}
Begin
Write('Nhap so tam giac: ');Readln(n);
tong:=0;
For k:=1 to n do
Nhap(a[1,k], a[2,k], a[3,k], k);
For k:=1 to n do Begin
Tong := tong + DT(a[1, k], a[2,k], a[3,k]);
Writeln('Dien tich cua tam giac thu ',k,': ',DT(a[1, k], a[2, k], a[3,
k]):6:1);
End;
Writeln('Tong dien tich cua ',n,' tam giac la: ',tong:6:1);
End;
Begin
Tinh;
Readln
End.

5) Lật ngược vấn đề


Xuất phát, chúng ta cho học sinh thực hiện bài toán sau: “Viết chương trình đổi một
xâu ký tự thành chữ HOA”.

Var x:String;
Procedure Doi(x: String);
Var d, i:Integer;
Begin
d := 0;
Write('Doi sang chu hoa: ');
For I := 1 to Length(x) Do
Write(Upcase(x[i]));
End;
Begin
Write('Nhap xau: '); Readln(x);
Doi(x);
Readln
End.
Ngược lại, chúng ta đặt câu hỏi: Nếu ta cần đổi một xâu ký tự thành xâu chữ thường
thì làm thế nào?
Học sinh đã biết trong bảng mã ASCII mỗi ký tự viết hoa A, B, C, ... , Z được mã
hóa bằng các con số từ 65 đến 90. Còn các ký tự thường a, b, c, ... z được mã hóa bằng
các con số từ 97 đến 122. Ta thấy rõ mỗi ký tự viết hoa và viết thường của một chữ

Trang 17
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

cách nhau 32 đơn vị. Chính vì vậy, ta có thể sử dụng quy luật này để đổi một xâu ký tự
viết HOA thành xâu ký tự viết thường bằng cách dùng một vòng For chạy từ đầu xâu
đến cuối xâu và đổi từng ký tự thành mã ASCII, nếu gặp ký tự viết hoa, ta cộng mã
ASCII của nó thêm 32 đơn vị. Chương trình như sau:

Var x: String;
Procedure Doi(x: String);
Var d, i:Integer;
Begin
d := 0;
Write('Doi sang chu thuong: ');
For i := 1 to Length(x) Do Begin
d := ord(x[i]);
If (d >= 65) And (d <= 90) Then d := d + 32;
Write(chr(d));
End;
End;
Begin
Write('Nhap xau: '); Readln(x);
Doi(x);
Readln
End.

6) Xét tương tự
Xuất phát từ bài toán: “Viết chương trình tìm độ dài 3 đường cao của một tam giác
khi biết độ dài 3 cạnh của tam giác đó”.

Var a, b, c, S: Real;
Function Ktra(x, y, z: Real): Boolean;
Begin
Ktra := (x < y + z) And (y < x + z) And (z < x + y);
End;
Procedure Nhap(Var m, n, p: Real);
Begin
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(m);
Write('Nhap do dai canh thu hai : '); Readln(n);
Write('Nhap do dai canh thu ba : '); Readln(p);
If Not Ktra(m, n, p) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac!
Nhap lai:');
Until Ktra(a, b, c);
End;
Function DT :Real;
Var d: Real;

Trang 18
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Begin
d := (a + b + c) / 2;
DT := sqrt(d * (d - a) * (d - b) * (d - c));
End;
Procedure Dcao(m: Real);
Begin
Writeln('Duong cao qua canh ', m:0:2,' la: ',2 * S / m:0:2);
End;
Begin
Nhap(a, b, c);
S:=DT;
DCao(a); DCao(b); DCao(c);
Readln
End.

Tương tự, chúng ta yêu cầu học sinh giải bài toán sau:
“Viết chương trình tìm độ dài 3 đường trung tuyến của một tam giác khi biết ba cạnh
của tam giác”.

Var a, b, c, S: Real;
Function Ktra(x, y, z: Real): Boolean;
Begin
Ktra := (x < y + z) And (y < x + z) And (z < x + y);
End;
Procedure Nhap(Var a, b, c: Real);
Begin
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra(a, b, c) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac!
Nhap lai:');
Until Ktra(a, b, c);
End;
Procedure Trung_Tuyen;
Begin
Writeln('Trung tuyen qua canh ',a:0:2,' la: ',0.5 * sqrt(2 * (b * b +
c * c) - a * a):0:2);
Writeln('Trung tuyen qua canh ',b:0:2,' la: ',0.5 * sqrt(2 * (a * a +
c * c) - b * b):0:2);
Writeln('Trung tuyen qua canh ',c:0:2,' la: ',0.5 * sqrt(2 * (b * b +
a * a) - c * c):0:2);
End;

Trang 19
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Begin
Nhap(a, b, c);
Trung_Tuyen;
Readln
End.

7) Khái quát hóa


Xuất phát từ bài toán: “Tìm ước chung lớn nhất của 2 số ”.

Var a, b: Integer;
Begin
Repeat
Writeln('Nhap vao 2 so:'); Readln(a,b);
If (a<=0) Or (b<=0) then Writeln(‚Nhap lai!’);
Until (a>0) And (b>0);
Write('UCLN(',a,',',b,') = ');
While a <> b do Begin
If a > b Then a := a - b
Else b := b - a;
End;
Write(a);
Readln
End.

Tiếp theo, Chúng ta yêu cầu học sinh: “Sử dụng chương trình con để tìm ước chung
lớn nhất của ba số ”. Đến đây, để viết hàm tính ước chung lớn nhất của hai số, chúng ta
nên hướng dẫn học sinh sử dụng thuật toán Ơclit để viết chương trình nhằm tăng tốc độ
tính toán.

Var a, b, c, tam: Integer;


Function UCLN(Var x, y: Integer): Integer;
Var tam: Integer;
Begin
While y<>0 do Begin
tam := x mod y; x := y;
y := tam;
End;
UCLN := x;
End;
Begin
Writeln('Nhap ba so: '); Readln(a, b, c);
Write('UCLN(',a,',',b,',',c,') = ');
tam := UCLN(a, b);
Write(UCLN(tam, c));
Readln

Trang 20
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

End.

Sau khi thực hiện việc sử dụng chương trình con để tìm ước chung lớn nhất của ba số
thành công. Khái quát: chúng ta yêu cầu học sinh giải bài toán:
“Viết chương trình tìm ước chung lớn nhất của n số ”.
Để thực hiện, ta có thể hướng dẫn học sinh dùng thủ tục tìm ước chung lớn nhất của
hai số. Sau đó, dùng một biến tạm là u để lưu giữ giá trị đầu tiên của dãy số, tiếp theo ta
lần lượt xác định ước chung lớn nhất của u với từng giá trị của dãy từ vị trí thứ hai.
Cuối cùng, ước chung lớn nhất của dãy chính là giá trị u.

Var A: Array[1..100] Of Integer;


a1, u, i, n: Integer;
Procedure UCLN(Var x, y: Integer);
Var tam, tg: Integer;
Begin
While y<>0 do Begin
tam := x mod y;
x := y;
y := tam;
End;
End;
Begin
Write('Ban can tinh UCLN cua bao nhieu so? Nhap: '); Readln(n);
For i := 1 to n do Begin
Write('So thu ',i,': '); Readln(A[i]);
End;
Write('UCLN(');
For i := 1 to n-1 do Write(a[i],',');
Write(a[n],') = ');
u := a[1];
For i:= 2 to n do
UCLN(u, a[i]);
Write(u); Writeln;
Readln
End.

8) Tìm sự liên hệ và phụ thuộc


Nói riêng đối với cách gợi động cơ xuất phát từ những phương thức tư duy và hoạt
động phổ biến trong Tin học như xét tương tự, khái quát hóa, xét sự liên hệ và phụ
thuộc, sự quen thuộc đối với phương thức này không chỉ là kết quả mà còn là điều kiện
của việc gợi động cơ theo cách đó. Thật vậy, việc xét tương tự, việc xét khái quát hóa,
việc xét sự liên hệ và phụ thuộc chỉ có tác dụng gợi động cơ người học sinh đã quen
thuộc với những cách xem xét này, đã trải nghiệm thành công nhiều lần là việc theo
cách đó. Để thực hiện được điều này khi dạy học cho học sinh về chương trình con.
Chúng ta có thể yêu cầu học sinh giải bài toán sau:

Trang 21
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

“Có một cái túi chứa tối đa D (kg) với n đồ vật, Cần chọn các đồ vật sao cho giá trị
của túi là lớn nhất. Biết rằng mỗi đồ vật i có khối lượng là W[i] và giá trị là C[i] đồng
(i = 1, 2, ..., n ”.

Var C, W:Array[1..100] Of Integer;


CW: Array[1..100] Of Real;
n, i, j, d, d1, gt, t: Integer;
Procedure Nhap;
Begin
Write('Nhap so luong cac do vat: '); Readln(n);
Write('Nhap khoi luong cua tui: '); Readln(D); D1:=D;
Writeln('Nhap cac gia tri cua C va W: ');
For i:=1 to n do Begin
Write('C[',i,'] = '); Readln(C[i]);
Write('W[',i,'] = '); Readln(W[i]);
CW[i] := C[i] / W[i];
End;
End;
Procedure Sapxep;
Var t1, t2: Integer; t3: Real;
Begin
Nhap;
For i := 1 to n - 1 do
For j := n downto i + 1 do Begin
If CW[j] > CW[j-1] Then Begin
t1 := C[j]; C[j] := C[j-1]; C[j-1] := t1;
t2 := W[j]; W[j] := W[j-1]; W[j-1] := t2;
t3 := CW[j]; CW[j] := CW[j-1]; CW[j-1] := t3;
End;
End;
End;
Procedure Luachon;
Var temp: Integer;
Begin
Sapxep;
i := 1; gt := 0; t := 0;
While (i <= n) And (d > 0) And (W[i] > 0) Do Begin
Temp := d Div W[i]; {So do vat duoc chon cua W[i]}
If temp > 0 Then Begin
Writeln('Do vat C[',i,'] = ',C[i],' va W[',i,'] = ',W[i],' duoc chon
co so luong ',temp);
d := d - temp * W[i];
t := t + W[i] * temp;
gt := gt + temp * C[i];
End;

Trang 22
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

i := i + 1;
End;
Writeln('Gia tri toi uu co the dat duoc la:');
Writeln('Khoi luong do vat dung ',t,'.tui dung duoc ',d1,'. Con
thua ',d1 - t);
End;
Begin
Luachon;
Readln
End.

CHƯƠNG II: GỢI ĐỘNG CƠ TRUNG GIAN

1) Hướng đích
Xuất phát từ bài toán giải phương trình bậc hai:

Var a, b, c, d: Real;
Begin
Writeln('Nhap 3 he so cua phuong trinh:');
Write('a = '); Readln(a);
Write('b = '); Readln(b);
Write('c = '); Readln(c);
If a = 0 Then
If b = 0 Then
If c = 0 Then Writeln('Phuong trinh co vo so nghiem!')
Else Writeln('Phuong trinh vo nghiem!')
Else Writeln('Phuong trinh co mot nghiem: x = ',-c/b:0:1)
Else Begin
d := b * b - 4 * a * c;
If d < 0 Then Writeln('Phuong trinh vo nghiem!')
Else
If d = 0 Then Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-
b / (2 * a):0:1)
Else Begin
Writeln('Phuong trinh co hai nghiem phan biet:');
Writeln('x1 = ',(-b + sqrt(d)) / (2 * a):0:1);
Writeln('x2 = ',(-b - sqrt(d)) / (2 * a):0:1);
End;
End;
Readln
End.

Mục tiêu là chia bài toán ban đầu thành những bài toán nhỏ độc lập. Chẳng hạn:Ta
sử dụng chương trình con thành hai bài toán :

Trang 23
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

T1: Giải phương trình bậc nhất


T2: Giải phương trình bậc hai

Var a, b, c: Real;
Procedure ptb1(m,n:Real);
Begin
If m = 0 Then
If n = 0 Then Writeln('Phuong trinh co vo so nghiem!')
Else Writeln('Phuong trinh vo nghiem!')
Else Writeln('Phuong trinh co mot nghiem: x = ',-n/m:0:1)
End;
Procedure ptb2(x, y, z: Real);
Var d: Real;
Begin
D := y * y - 4 * x * z;
If d < 0 Then Writeln('Phuong trinh vo nghiem!')
Else
If d = 0 Then Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-
y / (2 * x):0:1)
Else Begin
Writeln('Phuong trinh co hai nghiem phan biet:');
Writeln('x1 = ',(-y + sqrt(d)) / (2 * x):0:1);
Writeln('x2 = ',(-y - sqrt(d)) / (2 * x):0:1);
End;
End;
Begin
Writeln('Nhap 3 he so cua phuong trinh:');
Write('a = '); Readln(a);
Write('b = '); Readln(b);
Write('c = '); Readln(c);
If a=0 Then ptb1(b, c)
Else ptb2(a, b, c);
Readln
End.

Ta lại thấy trong bài toán trên việc giải phương trình bậc hai có ba trường hợp xảy ra.
Ta nên chia tiếp thành 5 bài toán nhỏ như sau:
T1: Giải phương trình bậc nhất
T2: ∆ > 0
T3: ∆ = 0
T4: ∆ < 0
T5: Giải phương trình bậc hai

Var a, b, c, d: Real;
Procedure ptb1(m, n : Real);

Trang 24
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Begin
If m = 0 Then
If n = 0 Then Writeln('Phuong trinh co vo so nghiem!')
Else Writeln('Phuong trinh vo nghiem!')
Else Writeln('Phuong trinh co mot nghiem: x = ',-n / m:0:1)
End;
Procedure denta_am;
Begin
Writeln('Phuong trinh vo nghiem!');
End;
Procedure denta_0(p, q: Real);
Begin
Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-q / (2 * p):0:1)
End;
Procedure denta_duong(i, j: Real);
Begin
Writeln('Phuong trinh co hai nghiem phan biet:');
Writeln('x1 = ',(-j + sqrt(d)) / (2 * i):0:1);
Writeln('x2 = ',(-j - sqrt(d)) / (2 * i):0:1);
End;
Procedure ptb2(x, y, z: Real);
Begin
d := y * y - 4 * x * z;
If d < 0 Then denta_am
Else
If d = 0 Then denta_0(x, y)
Else denta_duong(x, y);
End;
Begin
Writeln('Nhap 3 he so cua phuong trinh:');
Write('a = '); Readln(a);
Write('b = '); Readln(b);
Write('c = '); Readln(c);
If a = 0 Then ptb1(b, c)
Else ptb2(a, b, c);
Readln
End.

2) Quy lạ về quen
n!
Xét bài toán : Tính C nk . Học sinh đã biết công thức : C nk =
k! ( n − k )! .
Bài toán này
ta quy về bài toán quen thuộc là tính n! Ở đây chúng ta cần lưu ý với học sinh rằng: Để
tính C nk ta cần xây dựng chương trình con tính n! sau đó, ta tìm C nk bằng công thức
trên. Tuy nhiên, cũng cần phải xây dựng một chương trình con Nhap để tránh việc
người sử dụng nhập các số âm và nhập k > n.

Trang 25
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Var k, n: Integer; C:Real;


Procedure Nhap;
Begin
Repeat
Write('Nhap k = '); Readln(k);
Write('Nhap n = '); Readln(n);
If (k < 0) Or (n < 0) Or (k > n) Then Writeln('Nhap lai!');
Until (k > 0) And (n > 0) And (k < n);
End;
Function GT(a:Integer): Integer;
Var kq, i:Integer;
Begin
kq:=1;
For i:=1 to a do kq:=kq * i;
GT:=kq;
End;
Begin
Nhap;
C := GT(n) / (GT(k) * GT(n - k));
Writeln('C = ', C:0:0);
Readln
End.

3) Xét tương tự
Xuất phát từ bài toán: “Tính n! bằng thuật toán đệ quy”.

Var n: Integer;
Function GT(a:Integer): Real;
Begin
If a = 0 Then GT:=1
Else GT:=GT(a - 1) * a;
End;
Begin
Write('Nhap n = '); Readln(n);
Writeln(n,'! = ', GT(n):0:0);
Readln
End.

Tương tự, chúng ta yêu cầu học sinh thực hiện giải bài toán: “Tính an bằng thuật
toán đệ quy”

Var a, n: Integer;
Function Mu(x:Integer; y:Integer):Real;
Var T: Real;

Trang 26
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Begin
If y = 0 Then Mu:=1
Else Begin
Mu:=Mu(x, y - 1) * x;
End;
End;
Begin
Write('Nhap a = '); Readln(a);
Write('Nhap n = '); Readln(n);
Writeln(a,' mu ',n,' = ',Mu(a , n):0:0);
Readln
End.

4) Khái quát hóa


Xuất phát từ bài toán: “Sắp xếp ba số a, b, c theo thứ tự tăng dần”.

Var a,b,c: Real;


Procedure Sapxep(Var x, y, z: Real);
Var tg: Real;
Begin
If x > y Then Begin
tg := x; x := y; y := tg;
End;
If y > z Then Begin
tg := y; y := z; z := tg;
End;
If x > y Then Begin
tg := x; x := y; y := tg;
End;
End;
Begin
Writeln('Nhap vao ba so: ');
Write('So thu nhat: '); Readln(a);
Write('So thu hai : '); Readln(b);
Write('So thu ba : '); Readln(c);
Sapxep(a, b, c);
Writeln('Ba so sau khi sap xep la:');
Write(a:6:0, b:6:0, c:6:0);
Readln
End.

Ở đây chúng ta cần lưu ý với học sinh rằng : lệnh gán nhận giá trị mới thì mất giá trị
cũ. Vì vậy mà trước khi thực hiện lệnh gán x := y để máy nhận giá trị của b ta phải gửi
giá trị cũ của x vào biến tg. Tại sao lệnh thứ ba lại giống lệnh thứ nhất? đó là vì x, y, z,
tg là các địa chỉ lưu trữ những giá trị. Những giá trị này bị thay đổi qua những lệnh gán.

Trang 27
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Địa chỉ của biến thì không đổi, nhưng nội dung của biến thì đã thay đổi khi thực hiện
lệnh gán.
Tiếp theo, chúng ta có thể nêu câu hỏi: Khái quát, nếu phải sắp xếp n số theo thứ tự
tăng dần ta phải làm thế nào? Ta có chương trình như sau:

Var a: Array[1..100] Of Real;


i,j,n: Integer;
Procedure Doicho(Var x,y:Real);
Var tg:Real;
Begin
Tg := x; x := y; y := tg;
End;
Procedure Sapxep;
Begin
For i := 1 to n - 1 do
For j := i + 1 to n do
If a[i] > a[j] Then Doicho(a[i], a[j]);
End;
Begin
Write('Nhap so phan tu cua day so: '); Readln(n);
For i := 1 to n do Begin
Write('So thu ',i,': '); Readln(a[i]);
End;
Sapxep;
Writeln('Day so sau khi sap xep la:');
For i := 1 to n do Write(a[i]:6:0);
Readln
End.

5) Xét sự biến thiên và phụ thuộc


Xét bài toán sau : “Viết chương trình cho máy nhập vào 3 cạnh của một tam giác.
Xét xem ba số đó có phải là ba cạnh của tam giác hay không? nếu có thì tam giác đó là
tam giác có ba góc nhọn hay tam giác vuông hay tam giác tù? ”
Trước hết, học sinh phải kiểm tra ba số thực phải thỏa mãn điều kiện là ba số đo của
tam giác. Tức là một số phải nhỏ hơn tổng của hai số còn lại (điều này xảy ra với cả ba
số). Sau đó, nếu chúng là ba số đo của ba cạnh một tam giác thì dạng của tam giác phụ
thuộc vào bình phương của cạnh lớn nhất nhỏ hơn hay bằng hay lớn hơn tổng hai bình
phương của hai cạnh còn lại mà nó là tam giác có ba góc nhọn hay tam giác vuông hay
tam giác tù.

Var p,q,r: Real;


Function Ktra(x, y, z: Real): Boolean;
Begin
Ktra := (x < y + z) And (y < x + z) And (z < x + y);
End;

Trang 28
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Procedure Nhap(Var a, b, c: Real);


Begin
Writeln('Nhap vao ba canh cua tam giac: ');
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra(a, b, c) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac!
Nhap lai:');
Until Ktra(a, b, c);
End;
Procedure DangTG(m, n, p: Real);
Var tg: Real;
Begin
If m < n Then Begin
tg := n; n := m; m := tg;
End;
If m < p Then Begin
tg := p; p := m; m := tg;
End;
m := sqr(m); n := sqr(n); p := sqr(p);
If m < n + p Then Writeln('la tam giac co ba goc nhon!')
Else
If m = n + p Then Writeln('La tam giac vuong!')
Else Writeln('La tam giac co mot goc tu!');
End;
Begin
Nhap(p, q, r);
DangTG(p, q, r);
Readln
End.

CHƯƠNG III: GỢI ĐỘNG CƠ KẾT THÚC

Gợi động cơ kết thúc cũng có tác dụng nâng cao tính tự giác trong hoạt động học tập
của học sinh như các cách gợi động cơ khác. Mặc dù nó không có tác dụng kích thích
đối với nội dung đã qua hoặc hoạt động đã thực hiện, nhưng nó góp phần gợi động cơ
thúc đẩy hoạt động nói chung và nhiều khi việc gợi động cơ kết thúc ở trường hợp này
lại là sự chuẩn bị gợi động cơ cho những trường hợp tương tự sau này.
Trong thực tế của hoạt động dạy học, nhiều khi ngay từ đầu hoặc trong khi giải quyết
vấn đề, ta chưa thể làm rõ tại sao lại học nội dung này, tại sao lại thực hiện hoạt động
kia. Những câu hỏi này phải đợi mãi về sau mới được giải đáp hoặc giải đáp trọn vẹn.

Trang 29
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Như vậy, ta đã gợi động cơ kết thúc, nhấn mạnh hiệu quả của nội dung hoặc hoạt động
đó với việc giải quyết vấn đề đặt ra.
Xét bài toán sau: “Lập chương trình cho máy tính tìm các đường trung tuyến của
một tam giác khi biết số đo ba cạnh là a, b, c được nhận vào từ bàn phím”.
Trong bài toán này chúng ta yêu cầu học sinh chia ra thành nhiều bài toán nhỏ độc
lập. Cụ thể là:

Var a, b, c, S: Real;
Function Ktra: Boolean;
Begin
Ktra := (a < b + c) And (b < a + c) And (c < a + b);
End;
Procedure Nhap;
Begin
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac!
Nhap lai:');
Until Ktra;
End;
Procedure Trung_Tuyen(m, n, p: Real);
Begin
Writeln('Trung tuyen qua canh ',m:0:2,' la: ',0.5 * sqrt(2* (n * n +
p * p) - m * m):0:2);
End;
Procedure BaTT;
Begin
Trung_tuyen(a, b, c);
Trung_tuyen(b, a, c);
Trung_tuyen(c, b, a);
End;
Begin
Nhap;
BaTT;
Readln
End.

Sau khi chương trình đã chạy thông suốt, ta gọi lại chương trình và cho học sinh thấy
được trong bài toán này là tính các đường trung tuyến của một tam giác nên các hàm
Ktra, thủ tục Nhap, thủ tục BaTT không có tham chiếu. Việc sử dụng những chương
trình con này sẽ được đề cập đến với những tham chiếu trong bài toán cần tính các

Trang 30
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

đường trung tuyến của nhiều tam giác mà cách xác định ba cạnh của từng tam giác có
thể khác nhau. Để thực hiện được ý định trên, ta yêu cầu học sinh giải bài toán sau:
“Lập trình cho máy tính in lên màn hình các đường trung tuyến của tam giác theo độ
dài ba cạnh của tam giác đó.
- Tam giác thứ nhất có độ dài ba cạnh là a1, b1, c1.
- Tam giác thứ hai có độ dài ba cạnh là a2, b2, c2.
- Tam giác thứ ba có độ dài ba cạnh là a1 + a2, b1 + b2, c1 + c2”.

Var a1, b1, c1,a2, b2, c2, S: Real;


Function Ktra(x, y, z: Real): Boolean;
Begin
Ktra := (x < y + z) And (y < x + z) And (z < x + y);
End;
Procedure Nhap(Var a, b, c: Real; k: Byte);
Begin
Writeln('Tam giac thu ',k,':');
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra(a, b, c) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac!
Nhap lai:');
Until Ktra(a, b, c);
End;
Procedure Trung_Tuyen(m, n, p: Real);
Begin
Writeln('Trung tuyen qua canh ',m:0:2,' la: ',0.5* sqrt(2* (n * n + p
* p) - m * m):0:2);
End;
Procedure BaTT(a, b, c:Real; i:Byte);
Begin
Writeln('Do dai ba trung tuyen cua tam giac thu ',i,':');
Trung_tuyen(a, b, c);
Trung_tuyen(b, a, c);
Trung_tuyen(c, b, a);
End;
Begin
Nhap(a1, b1, c1, 1);
Nhap(a2 ,b2, c2, 2);
BaTT(a1, b1, c1, 1);
BaTT(a2, b2, c2, 2);
BaTT(a1 + a2, b1 + b2, c1 + c2, 3);
Readln
End.

Trang 31
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

CHƯƠNG IV : PHỐI HỢP NHIỀU CÁCH GỢI ĐỘNG CƠ TẬP TRUNG VÀO
NHỮNG TRỌNG ĐIỂM

Trên đây chúng ta đã xét đến những khả năng gợi động cơ xuất phát từ nội dung dạy
học. Ngoài ra, còn có những khả năng gợi động cơ không gắn với nội dung như khen,
chê, cho điểm, ... Để phát huy tác dụng kích thích, thúc đẩy hoạt động học tập, cần phải
phối hợp những cách gợi động cơ khác nhau có chú ý đến xu hướng phát triển của cá
nhân học sinh, tạo ra một sự hợp đồng tác dụng của nhiều cách gợi động cơ, cách nọ bổ
xung cách kia. Chẳng hạn, có thể gợi động cơ cho một nội dung dạy học hoặc một hoạt
động nào đó bằng cách nhấn mạnh tầm quan trọng của nội dung hoặc của một hoạt
động này đối với một nghề nào đó trong xã hội. Tuy nhiên cách gợi động cơ hướng
nghiệp này lại có nhược điểm là nó không hấp dẫn đối với học sinh không có dự định
làm nghề đó sau này. Vì vậy có thể bổ xung bằng cách nhấn mạnh rằng nắm được nội
dung đó, thực hiện được hoạt động đó là một yếu tố văn hóa phổ thông của tất cả mọi
người trong xã hội.
Cũng cần lưu ý rằng, muốn gợi động cơ cho mọi nội dung và mọi hoạt động là không
hợp lý và không khả thi. Trong một tiết học, việc gợi động cơ cần tập trung vào một số
nội dung hoặc hoạt động nhất định mà việc quyết định cần căn cứ vào những yếu tố sau
đây:
- Tầm quan trọng của nội dung hoạt động cần được xem xét.
- Khả năng gợi động cơ ở nội dung đó hoặc hoạt động đó.
- Kiến thức có sẵn và thời gian cần thiết.
Thí dụ : Viết chương trình nhập các điểm của một môn trong một học kỳ. Sau đó tính
hs1 + hs 2 * 2 + hs 3 * 3
điểm trung bình môn của môn học đó theo công thức : . Trong
l1 + l 2 * 2 + 3
đó :
hs1 : tổng các điểm hệ số 1 l1: số lần điểm hệ số 1
hs2 : tổng các điểm hệ số 2 l2 : số lần điểm hệ số 2
hs3 : Điểm thi học kỳ
Yêu cầu chỉ nhập 3 lần là đủ, tức là các điểm nhập vào cần phải xử lý theo xâu ký tự
sau đó đổi sang số để tính toán.
Đây là một chương trình tính điểm mà học sinh có thể ứng dụng ngay trong thực tế
học tập của mình. Để làm được bài toán này, học sinh cần phải ứng dụng vấn đề thực tế
là cần phải biết cách tính điểm TBm sau đó áp dụng các kiến thức về chương trình con
và kiến thức về xử lý xâu ký tự để áp dụng thực hiện chương trình. Tuy nhiên chúng ta
cũng cần lưu ý khi nhập điểm, điểm hệ số 1 và hệ số 2 là các số nguyên với số lần điểm
nhập vào không hạn chế, còn điểm hệ số 3 có thể là số thực chỉ có một điểm duy nhất.
Chính vì vậy cần phải có hai thủ tục nhập điểm. Hơn nữa, việc nhập điểm cần lưu ý

Trang 32
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

nhất hai trường hợp điểm 10 và điểm 0 nên chúng ta có thể sử dụng một biến Char để
xác định rõ điểm 10 vừa nhập là điểm 10 hay là hai điểm 0 và 1. Trong công việc tính
toán, chúng ta cũng cần phải có hai hàm: hàm tính tổng các điểm và hàm đếm số lần
điểm của mỗi loại điểm, nếu là các điểm từ 0 đến 9 vấn đề rất đơn giản, nhưng khi có
điểm 10 việc đếm số lần điểm cũng như là việc tính tổng các điểm cần phải chia ra
thành hai trường hợp:
+ Trường hợp có điểm 10: Ta xử lí hàm đếm bằng cách nếu gặp ký tự 1 và 0 thì đếm
giữ nguyên, đến số 0 thì tính từ đó. Như vậy, gặp điểm 10 sẽ chỉ đếm là 1.
+ Trường hợp điểm từ 0 đến 9: Đếm bình thường và việc tính tổng cũng vậy, có điều
để tính tổng các phần tử chúng ta cần sử dụng một vòng For duyệt toàn bộ các phần tử
của xâu, với mỗi ký tự ta lại dùng hàm Val để đổi ký tự đó sang số để tính toán.
Cuối cùng, ta sử dụng hàm Tinh để tính điểm trung bình môn theo các hàm tính tổng
và hàm đếm đã thực hiện như trên.
Chương trình như sau:

Var hs1, hs2 , h3: String; hs3: Real; k: Integer;


Procedure Nhap1(Var st1: String; t1: Byte);
Var a1, c1, i, tam: Integer; ch: Char; t: Char;
Begin
Repeat
Write('Nhap diem he so ',t1,': '); Readln(st1);
For i:=1 to Length(st1) do Begin
If (st1[i] = '1') And (st1[i+1] = '0') Then Begin
Write('Diem 10 o tren la diem 1 va diem 0(y)hay diem
10(n):');
Readln(ch);
If ch='y' then Begin
t:=st1[i]; st1[i] := st1[i+1]; st1[i+1]:=t;
Writeln('Diem ban nhap se la: ',st1)
End;
End;
End;
Val(st1, a1, c1);
If (c1 <> 0) Or (a1<0) Then
Writeln('Nhap lai!');
Until (c1 = 0) And (a1>=0);
End;
Procedure Nhap2(Var st2:String; t2: Byte);
Var c2:Integer; a2: Real;
Begin
Repeat
Write('Nhap diem he so ',t2,': '); Readln(st2);
Val(st2, a2, c2);
If (c2 <> 0) Or (a2 > 10) Or (a2<0) Then
Writeln('Nhap lai!');

Trang 33
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Until (c2 = 0) and (a2 <= 10) And (a2>=0);


End;
Function Tong(a : String):Integer;
Var i, s, d, c : Integer; x:String;
Begin
s := 0;
For i := 1 to Length(a) Do Begin
If (a[i] = '1') And (a[i+1] = '0') Then Begin
Val(a[i] + a[i+1], d, c);
s := s + d;
End
Else Begin
Val(a[i], d, c);
s := s + d;
End;
End;
Tong := s;
End;
Function Dem(a : String): Integer;
Var i, l : Integer; x: String;
Begin
l := 0;
For i := 1 to Length(a) Do Begin
If (a[i] = '1') And (a[i+1] = '0') Then
l := l
Else
l := l + 1;
End;
Dem := l;
End;
Function Tinh(x, y: String; z: Real): Real;
Begin
Val(h3, hs3, k);
Tinh:=(Tong(hs1) + Tong(hs2)*2 + hs3*3)/(Dem(hs1) +
Dem(hs2)*2 + 3);
End;
Begin
Writeln('CHUONG TRINH TINH DIEM TRUNG BINH MON');
Nhap1(hs1,1);
Nhap1(hs2,2);
Nhap2(h3,3);
Writeln('Diem he so 1: ',hs1);
Writeln('Diem he so 2: ',hs2);
Writeln('Diem he so 3: ',h3);
Writeln('Ket qua TBm : ',Tinh(hs1,hs2,hs3):0:1);

Trang 34
ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
Giáo viên hướng dẫn: Đào Tố Mai. Sinh viên thực hiện: Đỗ Trung Thành.

Readln
End.

Trang 35

You might also like