Giáo án Tin học Lớp 8 - Tiết 37 đến 40 - Năm học 2008-2009 - Nguyễn Anh Nghĩa

Giáo án Tin học Lớp 8 - Tiết 37 đến 40 - Năm học 2008-2009 - Nguyễn Anh Nghĩa

Lưu ý: Cần dành thời để giới thiệu về câu lệnh ghép. Khác với chương trình Lap, sau từ khoá do chỉ có một câu lệnh cần thực hiện, ở chương trình Chao_hoi, sau từ khoá do có hai câu lệnh cần thực hiện. Muốn vậy, hai câu lệnh này cần phải được "gói" trong từ khoá begin.end. Một cách đơn giản có thể hiểu cấu trúc begin.end là một câu lệnh của Pascal, câu lệnh này có thể chứa nhiều câu lệnh khác của Pascal. Lưu ý HS trong cấu trúc câu lệnh ghép này sau end là dấu chấm phẩy (;), không phải là dấu chấm (.).

 Cần lấy thêm một số ví dụ khác để HS biết và tập làm quen với các tình huống sử dụng câu lệnh for.do và lệnh ghép. Có thể yêu cầu HS đọc hiểu ví dụ có trong SGK (như chương trình Tinh_tong, Tinh_giai_thua) hoặc đưa ra bài toán đơn giản cần sử dụng đến câu lệnh for.do và hướng dẫn HS viết chương trình.

 GV cần khái quát cho HS cấu trúc lặp với số lần biết trước có ở mọi ngôn ngữ lập trình, mỗi ngôn ngữ lập trình có câu lệnh riêng để mô tả cấu trúc này. Trên đây các em đã được tìm hiểu về câu lệnh lặp với số lần biết trước trong Pascal (for.do).

 Cuối bài này, giao nhiệm vụ cho HS hoàn thiện chương trình thực hiện chào hỏi các bạn trong lớp (hoặc trong nhóm) để chuẩn bị cho buổi thực hành tới.

 Căn cứ vào tình hình tiếp thu của HS, GV cần lựa chọn và giao một số bài tập cho HS luyện tập, không nhất thiết phải làm hết tất cả các bài tập cuối bài này.

 

doc 9 trang Người đăng tuvy2007 Lượt xem 658Lượt tải 0 Download
Bạn đang xem tài liệu "Giáo án Tin học Lớp 8 - Tiết 37 đến 40 - Năm học 2008-2009 - Nguyễn Anh Nghĩa", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Ngµy d¹y: 14/1/2009
TiÕt 37, 38:	 C©u lÖnh lÆp (lÆp víi sè lÇn biÕt tr­íc)
1. Mục đích, yêu cầu
Biết nhu cầu cần có cấu trúc lặp trong ngôn ngữ lập trình.
Biết ngôn ngữ lập trình dùng cấu trúc lặp để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc nào đó một số lần.
Hiểu hoạt động của câu lệnh lặp với số lần biết trước for...do trong Pascal.
Viết đúng được lệnh for...do trong một số tình huống đơn giản.
Hiểu lệnh ghép trong Pascal
2. Những điểm cần lưu ý và gợi ý dạy học
	Giống với cấu trúc rẽ nhánh, cần xuất phát từ những hoạt động trong đời sống thực tiễn có tính chất lặp đi lặp lại để HS hiểu về khái niệm lặp. Ví dụ, tiếng gà trống gáy, tiếng chim hót, tiếng chuông đồng hồ báo thức gọi em dạy mỗi buổi sáng; Các ngày trong tuần các em đều lặp đi lặp lại hoạt động buổi sáng đến trường và buổi chiều trở về nhà; Hoặc trên lớp, giờ trả bài kiểm tra cô giáo lặp đi lặp lại việc gọi tên HS và ghi điểm của HS vào sổ điểm, cô giáo sẽ ngừng lại khi đã vào điểm cho tất cả HS trong lớp. 
	Giả sử cô giáo đề nghị em viết chương trình Pascal để chào từng bạn của lớp em (hoặc của nhóm em), cụ thể chương trình cho phép từng bạn nhập tên của mình từ bàn phím và in ra lời chào tương ứng, ví dụ khi một bạn nhập tên là Mai, thì chương trình sẽ in ra 'Chao ban Mai', một bạn khác nhập tên là Trung thì sẽ in ra 'Chao ban Trung'. Như vậy em sẽ cần viết một chương trình Pascal cho phép lặp đi lặp lại việc nhập tên và hiển thị ra màn hình lời chào. Làm thế nào để chương trình Pascal của em có thể thực hiện việc lặp này?
	Giả sử lớp của em có 40 bạn, em hoàn toàn có thể viết 40 lần lệnh để nhập tên và lệnh hiển thị dòng chào. Các lệnh này hoàn toàn giống nhau. Tuy nhiên, một chương trình như vậy thì vừa dài, vừa nhàm chán, dễ sai sót.
	Trong Pascal cung cấp một câu lệnh lặp như sau:
for := to do ;
trong đó:
biến đếm là biến đơn có kiểu nguyên;
giá trị đầu và giá trị cuối là các biểu thức có cùng kiểu với biến đếm và giá trị cuối phải lớn hơn giá trị đầu;
câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.
	Hoạt động của câu lệnh lặp này như sau: Ban đầu biến đếm được gán bằng giá trị đầu, mỗi lần câu lệnh viết sau từ khoá do được thực hiện biến đếm được tăng lên một đơn vị, câu lệnh được thực hiện cho đến khi biến đếm lớn hơn giá trị cuối.
	Lưu ý:
+ Để tránh phức tạp, gây khó hiểu với HS, mô tả hoạt động của lệnh for...do ở trên là dựa trên mặc định biến đếm, giá trị đầu, giá trị cuối là số nguyên. Một cách tổng quát, biến đếm, giá trị đầu, giá trị cuối có thể là kiểu kí tự, kiểu đoạn con. Tuy nhiên, ở đây không đề cập đến những vấn đề này với mục đích để giản lược nội dung, giúp HS dễ tiếp thu kiến thức mà vẫn đảm bảo những kiến thức, kĩ năng cần thiết theo yêu cầu.
+ Trong Pascal cấu trúc for...do có hai dạng tiến và lùi:
Dạng tiến: 
for := to do ;
Dạng lùi: 
for := downto do ;
	Trong SGK chỉ giới thiệu dạng tiến. Về cơ bản dạng tiến gần gũi với cách suy nghĩ tự nhiên của HS THCS hơn và chỉ cần dạng tiến là đủ, không yêu cầu phải giới thiệu thêm dạng lùi. 
	Khi thực hiện câu lệnh lặp for...do các giá trị đầu và giá trị cuối phải được xác định trước. Chính vì thế mà ta biết trước được số lần thực hiện câu lệnh sau từ khóa do (số lần lặp bằng giá trị cuối - giá trị đầu + 1). Chính vì vậy, câu lệnh for...do còn được gọi là câu lệnh lặp với số lần biết trước.
	GV nên sử dụng chương trình Lap trong SGK, phân tích ví dụ này để cho HS hiểu rõ về hoạt động của câu lệnh lặp, hiểu về biến đếm, giá trị đầu, giá trị cuối và câu lệnh. 
program Lap;
var i: Integer;
begin 
for i := 1 to 10 do
writeln('Day la lan lap thu ',i);
end. 
Có thể hướng dẫn học sinh lập bảng quá trình thực hiện chương trình trên như dưới đây:
Lần lặp thứ
i
Kết quả viết ra màn hình
1
1
Day la lan lap thu 1
2
2
Day la lan lap thu 2
3
3
Day la lan lap thu 3
4
4
Day la lan lap thu 4
5
5
Day la lan lap thu 5
6
6
Day la lan lap thu 6
7
7
Day la lan lap thu 7
8
8
Day la lan lap thu 8
9
9
Day la lan lap thu 9
10
10
Day la lan lap thu 10
	Sau khi cùng với HS phân tích chương trình Lap, GV có thể cùng HS sử dụng câu lệnh for...do để viết đoạn câu lệnh nhập tên và hiển thị ra màn hình dòng chào hỏi. Giả sử lớp có 40 bạn thì đoạn câu lệnh có thể như sau:
	For i:= 1 to 40 do 
	Begin
	write('Nhap ten cua ban'); Readln(Ten);
	write('Chao ban ', Ten);
	end;
	Lưu ý: Cần dành thời để giới thiệu về câu lệnh ghép. Khác với chương trình Lap, sau từ khoá do chỉ có một câu lệnh cần thực hiện, ở chương trình Chao_hoi, sau từ khoá do có hai câu lệnh cần thực hiện. Muốn vậy, hai câu lệnh này cần phải được "gói" trong từ khoá begin...end. Một cách đơn giản có thể hiểu cấu trúc begin...end là một câu lệnh của Pascal, câu lệnh này có thể chứa nhiều câu lệnh khác của Pascal. Lưu ý HS trong cấu trúc câu lệnh ghép này sau end là dấu chấm phẩy (;), không phải là dấu chấm (.).
	Cần lấy thêm một số ví dụ khác để HS biết và tập làm quen với các tình huống sử dụng câu lệnh for...do và lệnh ghép. Có thể yêu cầu HS đọc hiểu ví dụ có trong SGK (như chương trình Tinh_tong, Tinh_giai_thua) hoặc đưa ra bài toán đơn giản cần sử dụng đến câu lệnh for...do và hướng dẫn HS viết chương trình.
	GV cần khái quát cho HS cấu trúc lặp với số lần biết trước có ở mọi ngôn ngữ lập trình, mỗi ngôn ngữ lập trình có câu lệnh riêng để mô tả cấu trúc này. Trên đây các em đã được tìm hiểu về câu lệnh lặp với số lần biết trước trong Pascal (for...do).
	Cuối bài này, giao nhiệm vụ cho HS hoàn thiện chương trình thực hiện chào hỏi các bạn trong lớp (hoặc trong nhóm) để chuẩn bị cho buổi thực hành tới.
	Căn cứ vào tình hình tiếp thu của HS, GV cần lựa chọn và giao một số bài tập cho HS luyện tập, không nhất thiết phải làm hết tất cả các bài tập cuối bài này.
3. Hướng dẫn trả lời câu hỏi và bài tập
Có thể nêu rất nhiều vài ví dụ về các hoạt động lặp. Dưới đây là một số ví dụ:
Hàng ngày em đặt đồng hồ báo thức lúc 6 giờ để dậy sớm tập thể dục.
Hàng ngày (hoặc hàng tuần) bác lái xe khách lái xe để chuyên chở hành khách xuất phát từ một địa điểm và thời gian nhất định và đi theo một tuyến đường đã được xác định trước.
Mỗi lần được khởi động, máy tính của em sẽ thực hiện cùng các hoạt động tự kiểm tra các thành phần máy tính, sau đó khởi động hệ điều hành theo một trình tự đã được quy định trước. 
a) Có thể thấy, để vẽ được hình ...a, thao tác chính cần thực hiện là vẽ nửa đường tròn có bán kính 1 đơn vị từ một điểm A tới điểm B theo một trong bốn hướng: lên trên, xuống dưới, sang trái, sang phải (chẳng hạn, hình...b là nửa đường tròn được vẽ từ điểm A tới điểm B theo hướng lên trên). 
a)	b)
Hình 1
Có thể mô tả các bước của thuật toán để vẽ hình ... a) như sau:
Bước 1. Xác định điểm bắt đầu vẽ là X. 
Bước 2. Vẽ nửa đường tròn theo hướng lên trên. 
Bước 3. Vẽ nửa đường tròn theo hướng sang trái. 
Bước 4. Vẽ nửa đường tròn theo hướng xuống dưới.
Bước 5. Vẽ nửa đường tròn theo hướng sang phải. 
Bước 6. Tô màu và kết thúc thuật toán. 
Lưu ý đối với giáo viên. Có thể trình bày thuật toán vẽ hình trên dưới dạng một cách hình thức như sau.
Ta gọi thao tác vẽ nửa đường tròn theo hướng x là vẽ nửa đường tròn có bán kính 1 đơn vị bắt đầu từ một điểm xác định, đường kính nối điểm đầu và điểm cuối của nửa đường tròn vuông góc với hướng x và nửa đường tròn "cong về hướng x". Ta chỉ xét x là một trong bốn hướng: lên trên, xuống dưới, sang trái, sang phải.
Với các hướng, ta định nghĩa phép toán sau: lên trên + 1 = sang trái, sang trái +1 = xuống dưới, xuống dưới +1 = sang phải, sang phải +1 = lên trên. Khi đó có thể mô tả các bước của thuật toán để vẽ hình 1a như sau:
Có thể mô tả các bước của thuật toán để vẽ hình ... a) như sau:
Bước 1. Xác định điểm bắt đầu vẽ là X. 
Bước 2. Đặt i = 0 và đặt hướng = lên trên.
Bước 3. Vẽ nửa đường tròn theo hướng đã đặt. 
Bước 4. i = i + 1. 
Bước 5. Nếu i > 4, chuyển bước 6; ngược lại, đặt hướng = hướng + 1 và quay lại bước 3.
Bước 6. Tô màu và kết thúc thuật toán. 
b) Thuật toán tương tự như trên. Thao tác chính cần lặp lại là vẽ hình vuông. Tại mỗi bước, giữ nguyên tâm hình vuông và thay đổi hướng vẽ một góc 30o.
Lưu ý đối với giáo viên. Bài này không yêu cầu học sinh mô tả một cách chính xác các bước của thuật toán. Điều quan trọng là học sinh nhận biết được: muốn vẽ được các hình đã cho chỉ cần lặp thao tác vẽ nửa đường tròn bốn lần hoặc lặp thao tác vẽ hình vuông ba lần.
Câu lệnh lặp có tác dụng chỉ dẫn cho máy tính thực hiện lặp lại một câu lệnh hay nhóm câu lệnh với một số lần nhất định. Câu lệnh lặp làm đơn giản và giảm nhẹ công sức của người viết chương trình.
Chúng ta nói rằng khi thực hiện các hoạt động lặp, chương trình kiểm tra một điều kiện. Với lệnh lặp 
for := to do ;
của Pascal, điều kiện cần phải kiểm tra chính là giá trị của biến đếm lớn hơn giá trị cuối. Nếu điều kiện không được thoả mãn, câu lệnh được tiếp tục thực hiện; ngược lại, chuyển sang câu lệnh tiếp theo trong chương trình.
Tuy có vòng lặp 1000 lần, nhưng chương trình Pascal nêu trong câu hỏi không thực hiện bất kì một hoạt động nào. Tuy nhiên đây vẫn là câu lệnh hợp lệ.
Thuật toán tính tổng A = 
Bước 1. Gán A ¬ 0, i ¬ 1. 
Bước 2. A ¬ .
Bước 3. i ¬ i + 1. 
Bước 4. Nếu i £ n, quay lại bước 2. 
Bước 5. Ghi kết quả A và kết thúc thuật toán.
Trừ d), tất cả các câu lệnh đều không hợp lệ: 
a) Giá trị đầu của biến đếm phải nhỏ hơn giá trị cuối của biến đếm; 
b) Các giá trị đầu và giá trị cuối của biến đếm phải là số nguyên; 
c) Thiếu dấu hai chấm khi gán giá trị đầu; 
d) Thừa dấu chấm phẩy thứ nhất, nếu như ta muốn lặp lại câu lệnh writeln('A') mười lần, ngược lại câu lệnh là hợp lệ; 
e) Biến x đã được khai báo như là biến có dữ liệu kiểu số thực và vì thế không thể dùng để xác định giá trị đầu và giá trị cuối trong câu lệnh lặp.
Thuật toán:
Bước 1. Nhập các số n và x. 
Bước 2. A ¬ 1, i ¬ 0 (A là biến lưu luỹ thừa bậc n của x). 
Bước 3. i¬i + 1, A ¬ A.x. 
Bước 4. Nếu i < n, quay lại bước 3.
Bước 5. Thông báo kết quả A là luỹ thừa bậc n của x và kết thúc thuật toán.
Chương trình Pascal có thể như sau:
var n,i,x: integer; a: longint;
begin
write('Nhap x='); readln(x);
write('Nhap n='); readln(n);
A:=1;
for i:=1 to n do A:=A*X;
writeln(x,' mu ',n,' bang ',A);
end.
Thuật toán:
Bước 1. Nhập số n. 
Bước 2. A¬ -32768 (gán số nhỏ nhất có thể trong các số kiểu nguyên cho A), i ¬1. 
Bước 3. Nhập số thứ i và gán giá trị đó vào biến A.
Bước 4. Nếu Max < A, Max ¬ A. 
Bước 5. i ¬i + 1.
Bước 6. Nếu i ≤ n, quay lại bước 3.
Bước 7. Thông báo kết quả Max là số lớn nhất và kết thúc thuật toán.
Chương trình Pascal có thể như sau:
uses crt;
var n,i,Max,A: integer;
begin
clrscr;
write('Nhap N='); readln(n);
Max:=-32768;
for i:=1 to n do
 begin write('Nhap so thu ',i,':'); readln(A);
 if Max<A then Max:=A end;
writeln('So lon nhat: ',Max);
end.
Lưu ý. Trong chương trình trên chúng ta chỉ sử dụng hai biến A và Max để giải bài toán. Một cách tự nhiên, để nhập n số chúng ta cần tới n biến. Tuy nhiên, ở đây việc xử lí các giá trị trong dãy số có thể thực hiện bằng cách chỉ cần so sánh các giá trị đã được nhập vào, do đó chúng ta chỉ cần một biến để lưu lần lượt các giá trị nhập vào là đủ. Một cách giải quyết khác là sử dụng biến mảng (xem bài tập 6, bài 9).
Lời giải bài này tương tự như lời giải của bài 9 ở trên (xem thuật toán trong lời giải bài tập 5a, bài 5). Chương trình Pascal có thể như sau:
uses crt;
var n,i,SoDuong,A: integer;
begin
clrscr;
write('Nhap N='); readln(n);
if n>0 then
 begin
 SoDuong:=0;
 for i:=1 to n do
 begin write('Nhap so thu ',i,':'); readln(A);
 if A>0 then SoDuong:=SoDuong+1 end;
 writeln('So cac so duong = ',SoDuong)
 end
 else writeln('n phai > 0!');
end.
Ngµy d¹y: 21/1/2009
TiÕt 39; 40:	Bµi thùc hµnh sè 5: Sö dông lÖnh lÆp FoR . DO
1. Mục đích, yêu cầu
Viết được chương trình có sử dụng vòng lặp for...do;
Sử dụng được câu lệnh ghép;
Rèn luyện kĩ năng đọc hiểu chương trình có sử dụng vòng lặp for...do.
2. Những điểm cần lưu ý và gợi ý dạy học
	Trước khi tiến hành các bài của bài thực hành 5, để tạo hứng thú cho HS, GV có thể dành thời gian để HS gõ và chạy một hoặc hai chương trình các em đã viết trong giờ học lí thuyết. Như đã nói, việc thực hành và được quan sát trực quan kết quả chạy chương trình đã học ở tiết lí thuyết là cần thiết, hữu ích để HS ôn lại lí thuyết, gắn kết lí thuyết-thực hành và tạo niềm tin trong học tập. Chương trình thực hiện chào hỏi các bạn trong lớp (hoặc trong nhóm) có thể như sau:
Program Chao_hoi;
uses crt;
	var Ten: string;
Begin
For i:= 1 to 3 do 
	Begin
	write('Nhap ten cua ban'); Readln(Ten);
	write('Chao ban ', Ten);
	end;
readln;
End.
Lưu ý: để tránh mất thời gian thử chương trình, yêu cầu HS cho giá trị cuối nhỏ. Nếu HS đã lỡ để giá trị cuối quá lớn, chương trình lặp lại nhiều lần gây mất thời gian, GV có thể nhấn tổ hợp phím Ctrl+Break để ngắt chương trình.
	Yêu cầu HS thay đổi giá trị cuối và nhận xét về số lần nhập tên và hiển thị lời chào hỏi. HS cần giải thích được sự thay đổi này để hiểu về hoạt động của câu lệnh for...do. Số lần lặp bằng Giá trị cuối - Giá trị đầu + 1.
	Sau ví dụ này, HS về cơ bản đã hiểu rõ, giải thích được hoạt động của câu lệnh for...do, hiểu và sử dụng được câu lệnh ghép.
	Với bài 1 của bài thực hành này, HS cần tập trung tìm hiểu câu lệnh: 
for i:=1 to 10 do writeln(N,' x ',i:2,' = ',N*i:3);
	Đặc biệt HS cần phải nhận thấy được sự thay đổi của biến đếm i và các tham số của câu lệnh write để viết ra bảng cửu chương. Các tham số :2, :3 chỉ có ý nghĩa trong việc quy định quy cách trình bày bảng cửu chương trên màn hình, lưu ý học sinh không cần quan tâm đến quy cách trình bày, chỉ cần quan tâm đến sự thay đổi của biến đếm i, thông tin được lệnh writeln() viết ra màn hình. 
Có thể cho HS thảo luận theo nhóm để hoàn thành một bảng tiến trình thực hiện của câu lệnh trên như sau:
	Giả sử với N=3
Bước
i
i £ 10 ?
writeln(N,'.',i,' = ',N*i)
1
1
Đúng
3.1 = 3
2
2
Đúng
3.2 = 6
3
3
Đúng
3.3 = 9
4
4
Đúng
3.4 = 12
5
5
Đúng
3.5 = 15
6
6
Đúng
3.6 = 18
7
7
Đúng
3.7 = 21
8
8
Đúng
3.8 = 24
9
9
Đúng
3.9 = 27
10
10
Đúng
3.10 = 30
11
11
Sai
Không thực hiện lệnh writeln(). Kết thúc vòng lặp
	Bài 2, cung cấp cho HS một câu lệnh mới là thủ tục đưa con trỏ tới một ví trị mong muốn trên màn hình (màn hình soạn thảo văn bản) GotoXY(). Giới thiệu cùng với thủ tục GotoXY là các hàm lấy vị trí cột WhereX, vị trí dòng WhereY hiện thời của con trỏ. Việc giới thiệu thủ tục này nhằm cung cấp cho HS một công cụ để trình bày màn hình. Hơn thế nữa, việc giới thiệu hàm, thủ tục ở đây còn nhằm mục đích hướng dẫn HS tìm hiểu về thư viện chương trình, sử dụng, khai thác hàm, thủ tục có sẵn trong Pascal. Tuy nhiên, đây không phải là yêu cầu bắt buộc trong Chuẩn kiến thức, kĩ năng cho nên GV có thể cho thực hành bài này trên lớp hoặc giao cho học sinh tự nghiên cứu. Không cần đi sâu vào việc sử dụng các thủ tục này để trình bày màn hình.
	Bài 3, giới thiệu về việc sử dụng hai vòng for...do lồng nhau. GV có thể sử dụng bài 3 này hoặc lấy một ví dụ khác để giới thiệu về vòng for...do lồng nhau. Có một ví dụ vui, hay được sử dụng để minh hoạ cho việc sử dụng vòng lặp for...do lồng nhau đó là bài toán cổ:
Vừa gà vừa chó
Bó lại cho tròn
Ba mươi sáu con
Một trăm chân chẵn.
Bài toán dân gian này có thể sẽ làm HS hứng thú hơn. Lưu ý, HS lớp 8 chưa được học giải phương trình bậc nhất hai ẩn số.
	Chương trình giải bài toán này có thể như sau:
	Var ga, cho : byte;
	Begin
	for ga:=1 to 35 do
	for cho:=1 to 35 do 
	if (ga*2 + cho*4 = 100) and (ga + cho = 36) then
	writeln('So ga la: ', ga, '; So cho la: ', cho);
	Readln;
	End.
	GV có thể giới thiệu chương trình trước rồi yêu cầu HS tìm hiểu, giải thích tại sao chương trình này cho phép giải bài toán đặt ra. 
	Thuật toán này rất đơn giản, ý tưởng cơ bản là xét tất cả các trường hợp và kiểm tra xem trường hợp nào thảo mãn: ga + cho= 36 và ga*2 + cho*4 = 100 thì đó là một đáp số của bài toán.
	Qua bài toán này cũng có thể nêu cho HS thấy ưu điểm nổi bật của máy tính trong việc tính toán nhờ tốc độ xử lý rất cao. Với cách giải như trên máy tính tìm ra kết quả trong nháy mắt, nhưng nếu để con người thực hiện thì sẽ lâu hơn rất nhiều.
	Nhưng nhược điểm của máy tính lại là chỉ biết làm việc theo sự điều khiển của con người mà không hề có tư duy sáng tạo. Trong quá trình tính toán tìm ra kết quả, con người còn có khả năng phán đoán, dự đoán xu hướng để có thể bỏ qua một số công đoạn tính toán nhằm đi đến kết quả nhanh hơn. Do đó, con người cần lựa chọn, xây dựng thuật toán sao cho có thể nâng cao hiệu quả làm việc của máy tính.
GV có thể yêu cầu học sinh cải tiến để có chương trình hiệu quả hơn.
var ga, cho:byte;
Begin
For cho:= 1 to 24 do
 Begin
 ga:= 36 - cho;
 if (2*ga + 4*cho = 100) then 
	writeln('Ga: ', ga, ', Cho: ',cho);
 end;
readln;
End.
GV có thể phân tích, hướng dẫn để HS nhận thấy số lượng các phép tính ở chương trình sau ít hơn với chương trình ban đầu. Điều đó cũng có nghĩa là thuật toán ở chương trình sau hiệu quả hơn. Việc xây dựng, lựa chọn thuật toán hiệu quả có vai trò quan trọng trong lập trình, nhất là với những bài toán có khối tượng tính toán lớn. Luôn cần có ý thức xây dựng, lựa chọn thuật toán hiệu quả nhất khi giải bài toán trên máy tính.
Việc phân tích về số lượng phép toán có thể gây quá tải đối với HS. Do vậy, GV căn cứ vào mức độ tiếp thu của HS để có thể tiến hành giới thiệu hoặc không giới thiệu nội dung về số lượng phép toán, so sánh tính hiệu quả giữa các thuật toán.

Tài liệu đính kèm:

  • docTin hoc 8.doc