Gợi động cơ kết thúc

Một phần của tài liệu skkn gợi ĐỘNG cơ HOẠT ĐỘNG TRONG VIỆC GIẢNG dạy CHƯƠNG TRÌNH CON (Trang 23 - 30)

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

- 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 đườ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.

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

3 2

* 2 1

3

* 3 2

* 2 1

+ +

+ +

l l

hs hs

hs

. Trong đó :

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

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

Readln End.

Một phần của tài liệu skkn gợi ĐỘNG cơ HOẠT ĐỘNG TRONG VIỆC GIẢNG dạy CHƯƠNG TRÌNH CON (Trang 23 - 30)

Tải bản đầy đủ (DOC)

(31 trang)
w