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 đ[r]
Trang 18) 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 ”.
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;
Trang 2Var 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);
Trang 3End; Begin Luachon; Readln End