5) Xét sự biến thiên và phụ thuộc
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
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 điểm trung bình môn của môn học đó theo công thức :
32 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;
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