MỤC LỤC A. PHẦN MỞ ĐẦU .............................................................................................................. 2 I. Lý do chọn đề tài ........................................................................................................... 2 II. Định hướng nghiên cứu ............................................................................................... 3 1. Mục đích nghiên cứu ................................................................................................. 3 2. Nhiệm vụ nghiên cứu ................................................................................................ 3 B. NỘI DUNG ....................................................................................................................... 4 I. Cơ sở lý luận ................................................................................................................. 4 1. Nghiên cứu lý luận ................................................................................................... 4 2. Quan sát - điều tra ..................................................................................................... 4 3. Tổng kết kinh nghiệm ................................................................................................ 4 II. Cơ sở thực tiễn: ............................................................................................................ 4 1. Thuận lợi: .................................................................................................................. 4 2. Khó khăn: .................................................................................................................. 5 III. Nội dung đề tài gợi động cơ hoạt động trong việc giảng dạy chương trình con ...... 5 1. Gợi động cơ mở đầu: ................................................................................................ 5 a. Đáp ứng nhu cầu xóa bỏ sự hạn chế ..................................................................... 6 b. Hướng tới sự tiện lợi hợp lý hóa công việc .......................................................... 8 c. Chính xác hóa một khái niệm ............................................................................... 9 d. Hướng tới sự hoàn chỉnh hệ thống ..................................................................... 10 e. Lật ngược vấn đề ................................................................................................. 11 f. Xét tương tự ......................................................................................................... 12 g. Khái quát hóa ...................................................................................................... 14 h. Tìm sự liên hệ và phụ thuộc ............................................................................... 15 2. Gợi động cơ trung gian ........................................................................................... 17 a. Hướng đích .......................................................................................................... 17 b. Quy lạ về quen .................................................................................................... 19 c. Xét tương tự ........................................................................................................ 20 d. Khái quát hóa ...................................................................................................... 20 e. Xét sự biến thiên và phụ thuộc ........................................................................... 22 3. Gợi động cơ kết thúc ............................................................................................... 23 C. KẾT LUẬN .................................................................................................................... 29 D. KIẾN NGHỊ………………………………………………………………………………30

Trang 1

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

A. PHẦN MỞ ĐẦU

I. Lý do chọn đề tài

- 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.

- Trong nghiệp vụ của người giáo viên 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 cơ bản. Thứ hai là thực tiễn

về nghiệp vụ - 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 giáo viên,

nó đánh giá chất lượng giảng dạy của giáo viên. 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. Giáo viên 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. Chính vì vậy để

có thể phát huy khả năng nghiệp vụ, giáo viên cần phải biết kích thích tính

tích cực, sáng tạo say mê học hỏi của học sinh trong việc học tập giúp học

sinh 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 chính là gợi động

cơ trong dạy học.

- 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ý, 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. Đặ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

Trang 2

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ấn đề đặt ra là: gợi

- Với tất cả những lý do nêu trên, tôi quyết định chọn đề tài này.

độ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 tôi hết sức quan tâm.

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 3

B. NỘI DUNG

- Trong nghiên cứu lý luận dựa vào những tài liệu sẵn có, những lý thuyết đã

I. Cơ sở lý luận 1. Nghiên cứu lý luận

đượ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. Bên cạnh đó

cũng nghiên cứu 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.

2. Quan sát - điều tra

- Quan sát - điều tra giúp 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.

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 và môi trường tự nhiên là nguồn cung

cấp dữ liệu trực tiếp. Người nghiên cứu đến trực tiếp một nơi nào đó mà họ

quan tâm 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.

- Tổng kết kinh nghiệm là đánh giá và khái quát hóa những kinh nghiệm đã thu

3. Tổng kết kinh nghiệm

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.

II. Cơ sở thực tiễn: * Một số thuận lợi và khó khăn khi thực hiện chuyên đề:

1. Thuận lợi:

- Tuy môn Tin học mới chỉ là môn học mới được đưa vào học trong

 Nhà trường:

những năm gần đây nhưng nhà trường đã tạo điều kiện để học sinh có

thể học từ khối lớp 10, tạo điều kiện sắm sửa máy móc, trang thiết bị

phục vụ cho việc dạy và học môn Tin học.

 Giáo viên:

- Giáo viên được đào tạo chuẩn chuyên ngành về Tin học để đáp ứng yêu

cầu cho dạy và học môn Tin học trong bậc THPT.

Trang 4

- Phần lớn giáo viên quan tâm đến Tin học, quan tâm đến lập trình và tạo

được động cơ hứng thú cho học sinh qua từng đoạn chương trình, cho

học sinh thấy được tầm quan trọng trong lập trình nhất là các em học

sinh khối 11 được học môn học lý thú là lập trình pascal.

2. Khó khăn:

- Do chương trình tin học những năm gần đây mới được đưa vào trong trường THPT nên còn nhiều bỡ ngỡ và mới mẽ, giáo viên chưa sẵn sàng

trang bị cho mình kiến thức thật tốt để truyền đạt những kiến thức tốt

nhất về bộ môn tin học đến cho học sinh đặc biệt trong lập trình pascal

- Nhà trường còn nhiều khó khăn nên chưa đáp ứng được phòng dạy thực

nên việc truyền đạt kiến thức đến cho học sinh còn nhiều bỡ ngỡ.

hành tốt nhất nên việc thực hành học sinh trong các giờ học lập trình

pascal còn khó khăn.

III. 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, giáo viên 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

- 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

ngày càng trở nên quan trọng.

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 tôi 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.

1. Gợi động cơ mở đầu:

- Để Gợi động cơ mở đầu 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

Trang 5

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, 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ì:

+ 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:

a. Đá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));

Trang 6

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); Readln End.

- Chương trình trên để thực hiện được yêu cầu của đề bài, 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, 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,':');

Trang 7

- 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

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. b. Hướng tới sự tiện lợi hợp lý hóa công việc

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; 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 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:

+ Dòng lệnh : If NgTo(A[k]) Then Write(A[k]:6) ta thay bằng dòng lệnh If

Writeln(‘Cac so la hop so cua day so tren la:’);.

Not NgTo(A[k]) Then Write(A[k]:6).

Trang 8

c. 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ì 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ị, 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 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

Trang 9

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. d. 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

Không Có tham chiếu

ra sơ đồ sau:

Thủ tục

Chương trình con

Tham trị

Có tham chiếu

Hàm

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

Trang 10

- Xuất phát, ta cho học sinh thực hiện bài toán sau: “Viết chương trình đổi một

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 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. e. Lật ngược vấn đề

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.

Trang 11

- Ngược lại, 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

- Học sinh đã biết trong bảng mã ASCII mỗi ký tự viết hoa A, B, C, ... , Z được

thì làm thế nào?

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ữ 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:

- 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

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. f. Xét tương 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:');

Trang 12

Until Ktra(a, b, c); End; Function DT :Real; Var d: Real; 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; Begin Nhap(a, b, c);

Trang 13

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

Trung_Tuyen; Readln End.

g. Khái quát hóa 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 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ố ”.

Trang 14

- Để 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.

h. 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:

“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) ”.

Trang 15

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; 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;

Trang 16

Xuất phát từ bài toán giải phương trình bậc hai:

Begin Luachon; Readln End.

2. Gợi động cơ trung gian a. Hướng đích 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 :

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);

Trang 17

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); 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

Trang 18

- Xét bài toán : Tính

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. b. Quy lạ về quen

. Học sinh đã biết công thức : . 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 ta cần xây dựng chương trình con tính n! sau đó, ta tìm

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.

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

Trang 19

Nhap; C := GT(n) / (GT(k) * GT(n - k)); Writeln('C = ', C:0:0); Readln End.

Xuất phát từ bài toán: “Tính n! bằng thuật toán đệ quy”.

c. Xét tương tự 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

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”.

thuật toán đệ quy”

Var a, n: Integer; Function Mu(x:Integer; y:Integer):Real; Var T: Real; 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. d. Khái quát hóa 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;

Trang 20

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. Đị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

Trang 21

End.

e. 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ì

- 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ố

tam giác đó là tam giác có ba góc nhọn hay tam giác vuông hay tam giác tù? ”

đ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; 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);

Trang 22

DangTG(p, q, r); Readln End. 3. 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. 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.

- 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ỏ

- 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”.

độ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);

Trang 23

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 đườ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);

Trang 24

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.

- 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 thức : đó trung bình môn của môn học đó theo công tính điểm

. Trong đó :

l1: số lần điểm hệ số 1 l2 : số lần điểm hệ số 2

hs1 : tổng các điểm hệ số 1 hs2 : tổng các đ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 Trang 25

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 ý 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;

Trang 26

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!'); 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);

Trang 27

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); Readln End.

Trang 28

C. KẾT LUẬN

- Chúng ta đang bước vào thế kỷ XXI - thế kỷ của khoa học và công nghệ. Sự chuẩn bị nguồn nhân lực cho thời kỳ mới của đất nước là một trong những

nhiệm vụ trọng đại của toàn xã hội và của ngành giáo dục đào tạo nói riêng.

Muốn theo kịp với các nước tiên tiến, đón đầu sự phát triển đòi hỏi phải đổi

mới giáo dục một cách đồng bộ: chương trình, SGK, kiểm tra đánh giá và đặc

biệt là cơ sở vật chất, thiết bị, phương tiện dạy học hiện đại, một phương pháp

giảng dạy và học tốt nhất, học sinh đóng vai trò trung tâm trong việc tiếp thu và

lĩnh hội kiến thức.

- Sự ra đời của phương pháp dạy học mới, phương pháp dạy học tích cực, gợi động cơ học tập cho học sinh bao giờ cũng gặp những khó khăn, đòi hỏi phải có

ý thức và quyết tâm tìm tòi, thử nghiệm với những bước đi vững chắc mới có

thể đạt hiệu quả cao.

- Gợi động cơ hoạt động trong việc giảng dạy, đổi mới phương pháp dạy học hiện nay đang là vấn đề có ý nghĩa quan trọng trong việc nâng cao chất lượng

dạy học. Đó là một trong những mục tiêu quan trọng nhất trong cải cách giáo

dục ở nước ta hiện nay. Tuy nhiên gợi động cơ trong giảng dạy nhằm đổi mới

nội dung, phương pháp dạy học là một công việc lâu dài, khó khăn đòi hỏi rất

nhiều điều kiện về cơ sở vật chất, tài chính và năng lực của đội ngũ giáo viên. - Qua thực tế giảng dạy và học tập, được sự giúp dỡ của các thầy cô, các bạn đồng nghiệp, bản thân tôi đã tiếp thu được nhiều điều bổ ích, thiết thực cho quá

trình giảng dạy và công tác. Tôi mạnh dạn chọn đề tài này với mong muốn

được đóng góp một phần công sức nhỏ bé của mình vào sự nghiệp giáo dục

toàn ngành trong việc đổi mới phương pháp dạy học, dạy học tích cực gợi động

cơ học tập . Qua thực nghiệm tôi thấy đề tài này đã có tác dụng tốt trong việc

giảng dạy và học tập của thầy và trò . Và tôi sẽ cùng các đồng nghiệp áp dụng

sáng kiến kinh nghiệm này vào công tác giảng dạy tin học khối 11 môn lập

trình pascal cho những năm tiếp theo nhằm nâng cao hiệu quả dạy ở trường mình nói riêng và nâng cao chất lượng dạy học nói chung.

Trang 29

D. KIẾN NGHỊ

- Gợi động cơ hoạt động trong giảng dạy chương trình con nói riêng và cho tất cả bộ môn học ở trường THPT tôi xin kiến nghị: Các cơ quan ban ngành, nhà

trường luôn tạo điều kiện về cơ sở vật chất, tinh thần cho những giáo viên giảng

dạy đồng thời tạo điều kiện cho GV được đi tập huấn, học hỏi các trường bạn

về phương pháp dạy học tích cực cũng như kết hợp các chương trình ứng dụng

CNTT trong giảng dạy để bổ sung thêm kiến thức và học hỏi thêm kinh nghiệm

.Tôi mong rằng với kiến nghị này, các cơ quan ban ngành luôn tạo điều kiện và

giúp đỡ.

- Trên đây là một số kinh nghiệm của tôi trong bốn năm làm quen trong việc giảng dạy và chọn phương pháp giảng dạy theo phương pháp dạy học tích cực

nhằm giúp cho học sinh lĩnh hội kiến thức một cách tốt nhất trong chương trình

mà các em học ở nhà trường. Mặc dù chưa được đầy đủ, mang tính thuyết phục

cao, song tôi mong rằng các đồng chí cùng tham khảo và chia sẻ kinh nghiệm

để cùng nhau thực hiện tốt chủ đề năm học của Bộ giáo dục và Đào tạo phát

động, đặc biệt cùng nhau chia sẻ kinh nghiệm trong lĩnh vực trồng người ngày

càng đáp ứng với yêu cầu hội nhập quốc tế, đưa nước ta trở thành nước CNH -

HĐH trên mọi lĩnh vực.

- Trong quá trình viết đề tài, do điều kiện về thời gian và năng lực có hạn, đề tài không tránh khỏi những sai sót hạn chế . Tôi rất mong nhận được sự đóng góp

chỉ bảo của các thầy cô giáo và các đồng nghiệp để làm kinh nghiệm quý báu

cho bản thân trong quá trình giảng dạy.

Người thực hiện

Thái Huy Tâm

Trang 30