Giáo án Tin học khối 8, kì II

Tuần 20

Tiết 39 Bài thực hành 5

SỬ DỤNG LỆNH LẶP FOR . DO

I. Mục tiêu

1. Kiến thức

• Viết chương trình Pascal có sử dụng câu lệnh lặp for.do

• Viết đúng được lệnh for.do

2. Kĩ năng

• Rèn luyện kỹ năng ban đầu về viết các chương trình đơn giản có sử dụng câu lệnh lặp for do

• Có kỹ năng trình đọc hiểu chương trình.

3. Thái độ

• Có thái độ nghiêm túc trong học tập.

• Giáo dục kỹ năng, tư duy của học sinh.

II. Chuẩn bị

1. Giáo viên:

• Giáo án, SGK.

• Máy tính, máy chiếu, phần mềm máy tím kiếm.

2. Học sinh

• Học bài cũ, xem các thuật toán đã học.

 

doc 24 trang Người đăng minhkhang45 Lượt xem 596Lượt tải 1 Download
Bạn đang xem 20 trang mẫu của tài liệu "Giáo án Tin học khối 8, kì II", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
_bang;
Uses Crt;
Var
	i: byte;	{chi so cua hang}
	j: byte;	{chi so cua cot}
Begin
Clrscr;
For i:=0 to 9 do	
begin 
For j:=0 to 9 do 	write(10*i+j:4);
	writeln; {xuong hang moi}
	end;	
	readln	
end. 
HS: Cho chạy chương trình và quan sát kết quả:
GV: Chạy chương trình bằng tay lên bảng cho học sinh nắm rõ câu lệnh lồng nhau.
HS: Quan sát theo dõi.
GV: Cho học sinh thực hành trên máy Sử dụng thêm các câu lệnh GotoXY(a,b) để điều chỉnh (một cách tương đối) bảng kết quả ra giữa màn hình.
HS: Thực hành trên máy dưới sự giám sát hỗ trợ của giáo viên.
Gv: nhận xét chung
Bài 3: Sử dụng các câu lệnh fordo lồng nhau để in ra màn hình các số từ 0 đến 99. (sgk/64)
a/ Tìm hiểu chương trình
b/ Gõ và chạy chương trình, quan sát kết quả trên màn hình. Sử dụng các câu lệnh GotoXY(a,b) để điều chỉnh (một cách tương đối) bảng kết quả ra giữa màn hình.
Program Tao_bang;
Uses Crt;
Var
	I, j: byte;
Begin
Clrscr;
For i:=0 to 9 do	
	begin 
	For j:=0 to 9 do 	write(10*i+j:4);
	writeln;	
	end;	
readln	
end. 
Củng cố kiến thức. (2’)
	Hãy viết lại cú pháp câu lệnh lặp trong Pascal?
Hướng dẫn về nhà. (2’)
Về nhà xem lại các phần lý thuyết về câu lệnh lặp và các bài vừa thực hành.
Làm lại các bài tập trong bài 7 sgk/61 xem trước bài 8: Lặp với số lần chưa biết trước
Rút kinh nghiệm:	
Tuần 21
Tiết 42
Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
I. Mục tiêu
Kiến thức
Biết được nhu cầu có cấu trúc lặp với số lần chưa biết trước 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 với số lần chưa biết trước để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc đến khi một điều kiện nào đó được thoả mãn.
Hiểu được hoạt động của câu lệnh lặp với số lần chưa biết trước while do trong ngôn ngữ Pascal.
Kỹ năng:
Rèn khả năng đọc chương trình, phân tích tác dụng các câu lệnh.
Viết được câu lệnh lặp ở những bài toán đơn giản.
Thái độ
Có thái độ nghiêm túc trong học tập. 
Giáo dục kỹ năng, tư duy của học sinh.
II. Chuẩn bị
Giáo viên:
Giáo án, SGK.
Máy tính, máy chiếu, phần mềm máy tím kiếm.
Học sinh
Học bài cũ, xem các thuật toán dã học.
III. Phương pháp: Trực quan, thử, luyện tập, nhóm.
IV.Tiến trình dạy học:
Ổn định lớp: Kiểm tra sĩ số. (1’)
Kiểm tra bài cũ: (5’)
Hãy viết cú pháp của câu lệnh lặp với số lần biết trước trong Pascal và giải thích các thành phần trong câu lệnh?
Bài mới:
Ở bài trước các em đã được học về câu lệnh lặp với số lần lặp đã biết trước. Nhưng cũng có những hoạt động lặp mà số lần lặp chưa biết trước. Em hãy cho 1 ví dụ về hoạt động lặp với số lần chưa biết trước đó. Vậy thế nào là lặp với số lần chưa biết trước và trong Pascal sử dụng câu lệnh nào để giải quyết bài tóan về số lần lặp chưa biết trước. 
Hoạt động của Giáo viên & Học sinh
Nội dung
Hoạt động 1: Các hoạt động lặp lại với số lần chưa biết trước (10’)
GV: Các em mở SGK trang 67 và đọc cho cô ví dụ 1.
GV: Yêu cầu Hs đọc ví dụ 1.
HS: Đọc bài.
GV: Yêu cầu Hs đọc ví dụ 2
HS: Đọc bài.
GV: Đề bài yêu cầu ta làm gì?
HS: Tính tổng Tn của n số tự nhiên đầu tiên sao cho tổng Tn nhỏ nhất > 1000
GV: Ta cần cộng bao nhiêu số tự nhiên đầu tiên để có tổng Tn nhỏ nhất lớn hơn 1000?
HS: Không biết.
GV: Trong trường hợp này, để quyết định thực hiện phép cộng với số tiếp theo hay dừng, trong từng bước ta cần kiểm tra điều gì?
HS: Tổng đã lớn hơn 1000 hay chưa.
GV: Qua ví dụ 2 này ta không biết cần cộng thêm bao nhiêu số tự nhiên vào để tổng Tn nhỏ nhất lớn hơn 1000, đây là 1 hoạt động lặp với số lần chưa biết trước. 
GV: Chúng ta hãy cùng tìm hiểu các bước của thuật toán trong ví dụ này một cách cụ thể hơn. 
GV: Tương tự như bài tóan tính tổng S=1+2+3+...+n thì B1 ta phải làm gì?
HS: Ta gán S ¬ 0 và n ¬ 0
GV: Để quyết định việc cộng thêm hay dừng thì ta phải kiểm tra điều kiện gì?
HS: S <= 1000 
GV: Sau khi đã kiểm tra điều kiện và tăng biến n lên thì S ¬ S + n và quay lại B2
GV: Khi đã tìm ra tổng S > 1000 và n là số nhỏ nhất ta in kết quả ra màn hình và kết thúc thuật toán.
GV: Cho Hs ghi thuật toán vào vở.
HS: Ghi bài.
GV: Các em quan sát trên bảng, bây giờ cô sẽ chạy tay thử chương trình với điều kiện là S <= 10.
Trước khi kiểm tra điều kiện: n = 0, S = 0
Khi bắt đầu kiểm tra điều kiện
Bước
1
2
3
4
5
6
S<=10
Đ
Đ
Đ
Đ
Đ
S
n
1
2
3
4
5
6
S
1
3
6
10
15
 3. Kết thúc: n = 6, S = 15
GV: Các em vừa tìm hiểu về việc thực hiện phép cộng được lặp lại với số lần chưa biết trước, hoạt động đó phụ thuộc vào điều kiện gì, phép cộng dừng khi nào?
HS: Điều kiện S 10).
1. Các hoạt động lặp lại với số lần chưa biết trước:
a. Ví dụ 1: SGK
b. Ví dụ 2: SGK
* Thuật toán:
- B1: S ¬ 0, n ¬ 0
- B2: Nếu S <= 1000, n ¬ n + 1; Ngược lại, chuyển tới B4
- B3: S ¬ S + n và quay lại B2.
- B4: In kết quả: S và n là số tự nhiên nhỏ nhất sao cho S > 1000. Kết thúc thuật toán.
 Ta có sơ đồ hoạt động sau:
Điều kiện ?
Câu lệnh
Sai
Đúng
Hoạt động 2: Ví dụ về lệnh lặp với số lần chưa biết trước. (25’)
GV: Yêu cầu Hs đọc ví dụ 1
HS: Đọc bài.
GV: Đề bài yêu cầu ta làm gì?
HS: Tính tổng Tn của n số tự nhiên đầu tiên sao cho tổng Tn nhỏ nhất > 1000
GV: Ta cần cộng bao nhiêu số tự nhiên đầu tiên để có tổng Tn nhỏ nhất lớn hơn 1000?
HS: Không biết.
GV: Trong trường hợp này, để quyết định thực hiện phép cộng với số tiếp theo hay dừng, trong từng bước ta cần kiểm tra điều gì?
HS: Tổng đã lớn hơn 1000 hay chưa.
GV: Qua ví dụ này ta không biết cần cộng thêm bao nhiêu số tự nhiên vào để tổng Tn nhỏ nhất lớn hơn 1000, đây là 1 hoạt động lặp với số lần chưa biết trước. 
GV: Chúng ta hãy cùng tìm hiểu các bước của thuật toán trong ví dụ này một cách cụ thể hơn. 
GV: Tương tự như bài tóan tính tổng S=1+2+3+...+n thì B1 ta phải làm gì?
HS: Ta gán S ¬ 0 và n ¬ 0
GV: Để quyết định việc cộng thêm hay dừng thì ta phải kiểm tra điều kiện gì?
HS: S <= 1000 
GV: Sau khi đã kiểm tra điều kiện và tăng biến n lên thì S ¬ S + n và quay lại B2
GV: Khi đã tìm ra tổng S > 1000 và n là số nhỏ nhất ta in kết quả ra màn hình và kết thúc thuật toán.
GV: Giới thiệu câu lệnh While do. Hướng dẫn Hs viết câu lệnh và giải thích ý nghĩa các thành phần.
GV: Để hiểu rõ việc thực hiện của câu lệnh While... do.... như thế nào, một em hãy đọc đề ví dụ 2.
GV: Hãy nhìn vào chương trình trong SGK. Các em hãy thảo luận nhóm để phân tích ý nghĩa câu lệnh trong chương trình.
HS: Thảo luận và phân tích.
GV: Điều kiện là: x >= sai_so
 Câu lệnh là: n:=n+1; x:=1/n;
GV: Câu lệnh ở đây là câu lệnh ghép nên nó được đặt trong cặp Begin...end
GV: Bây giờ cô và các em hãy chạy thử chương trình để hiểu rõ hơn về câu lệnh while... do....với điều kiện sai_so = 0.3
1. Trước khi bắt đầu vòng lặp while...do...
 n = 1, x = 1
2. Khi bắt đầu vòng lặp while...do...
Bước
1
2
3
4
x>=sai_so
Đúng
Đúng
Đúng
Sai
n
2
3
4
x
1/2
1/3
1/4
3. Kết thúc: n = 4, x= 1/4
GV: Cho Hs ghi chương trình vào vở.
HS: Ghi bài.
GV: Yêu cầu Hs viết chương trình và chạy thử. Sau đó sửa giá trị sai_so = 0.3, 0.002, 0.001.
HS: Thực hành.
GV: Ta đã tìm hiểu thuật toán tính tổng n số trong ví dụ 1, thuật toán đó được thể hiện bằng ngôn ngữ Pascal như thế nào các em qua ví dụ 3.
GV: Tính S=1+2+ >1000
 Sß0
 Sß S+1
 Sß S+2
 Sß S+3
GV: Cần cộng bao nhiêu số tự nhiên để tổng nhỏ nhất >1000?
HS: Không biết.
GV: Các em quan sát thấy các câu lệnh giống nhau. Nếu cô thay i=1,2, thì tổng S thay bằng lệnh Sß S+?
HS: Sß S+i.
GV: Lệnh Sß S+i lặp lại bao nhiêu lần?
HS: Không biết.
GV: Ta sử dụng câu lệnh lặp nào để giải quyết bài toán?
HS: Lệnh lặp whiledo
GV: Điều kiện của câu lệnh lặp và câu lệnh?
HS: Trả lời
HS: Thực hành.
GV: Yêu cầu HS đọc đề bài.
HS: Đọc bài.
GV: Đề bài yêu cầu chúng ta làm gì?
HS: Viết chương trình tính tổng 
 T= 1+1/2+1/3+ +1/100
 Tß0
 Tß T+1/1
 Tß T+1/2
 Tß T+1/3
 Tß T+1/100
 GV: Các em quan sát thấy các câu lệnh giống nhau. Nếu cô thay i=1,2, thì tổng S thay bằng lệnh Tß T+?
HS: Tß T+1/i.
GV: Lệnh Tß T+1/i lặp lại bao nhiêu lần?
HS: 100 lần
GV: Ta sử dụng câu lệnh lặp nào để giải quyết bài toán?
HS: Lệnh lặp fordo
GV: Em hãy cho cô biết cú pháp của câu lệnh For...do...
GV: Em hãy cho cô biết giá trị đầu, giá trị cuối và câu lệnh là gì?
HS: Trả lời 
GV: Cho HS chép chương trình vào vở.
HS: Chép bài vào vở.
GV: Yêu cầu HS gõ chương trình vào máy và chạy thử.
HS: Thực hành.
GV: Nếu sử dụng câu lệnh while do thì điều kiện của chương trình là gì?
HS: i<=100
GV: Vòng lặp sẽ dừng lại khi nào?
HS: Dừng lại khi i>100.
2. Ví dụ về lệnh lặp với số lần chưa biết trước: 
* Cú pháp:
 While do ;
Trong đó: 
- while, do là các từ khóa
- Điều kiện thường là phép so sánh.
- Câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.
Thực hiệnlệnh:
1. Kiểm tra điều kiện.
 2. Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp sẽ kết thúc. Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1.
* Ví dụ 3: SGK
Program vd2;
Var x: real;
 n: integer;
Const sai_so = 0.003;
Begin
 x:=1; n:=1;
 while x >= sai_so do begin n:=n+1; x:=1/n end;
 writeln('so n nho nhat de 1/n <', sai_so:6:4,' la ',n);
 readln;
End.
 Ví dụ 3: Tính S=1+2+3+... sao cho tổng nhỏ nhất lớn hơn 1000.
Var S,n: integer;
Begin
 S:=0; n:=0;
 While S<=1000 do
 Begin 
	S:= S+n; 
	n:= n+1;
	end;
 Writeln ( ‘so ‘,n,’ nho nhat de tong >1000 la’,n);
 Writeln (‘Tong dau tien >1000 la’,S);
 Readln
End.
Ví dụ 4: SGK.
Program vidu4_1;
Var i: integer;
 T: real;
Begin
 T:=0;
 For i:=1 to 100 do T:=T+1/i;
 Writeln (T);
End.
Program vidu4_2;
Var i: integer;
 T: real;
Begin
 T:=0;
 i:=1;
 while i<=100 do begin T:=T+1/i; 
 i:=i+1; end;
end. 
Củng cố kiến thức. (2’)
Nêu những dạng câu lệnh lặp mà em đã được học?
a) Lặp với số lần biết trước:
For := to do ;
	Hoặc
For := to do
Begin
	;
	;
	. . .
End;
b) Lặp với số lần biết chưa trước:
While do ;
Hoặc
While do 
Begin
	;
	;
	. . .
End;
Trả lời câu hỏi 1, 2 trang 71 SGK.
Hướng dẫn về nhà. (2’)
Về nhà học bài, trả lời câu hỏi sách giáo khoa.
Xem trước phần còn lại của bài
Rút kinh nghiệm:	
Tuần 22
Tiết 43
Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
I. Mục tiêu
Kiến thức
Biết được nhu cầu có cấu trúc lặp với số lần chưa biết trước 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 với số lần chưa biết trước để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc đến khi một điều kiện nào đó được thoả mãn.
Hiểu được hoạt động của câu lệnh lặp với số lần chưa biết trước while do trong ngôn ngữ Pascal.
Kỹ năng:
Rèn khả năng đọc chương trình, phân tích tác dụng các câu lệnh.
Viết được câu lệnh lặp ở những bài toán đơn giản.
Thái độ
Có thái độ nghiêm túc trong học tập. 
Giáo dục kỹ năng, tư duy của học sinh.
II. Chuẩn bị
Giáo viên:
Giáo án, SGK.
Máy tính, máy chiếu, phần mềm máy tím kiếm.
Học sinh
Học bài cũ, xem các thuật toán dã học.
III. Phương pháp: Trực quan, thử, luyện tập, nhóm.
IV.Tiến trình dạy học:
Ổn định lớp: Kiểm tra sĩ số. (2’)
Kiểm tra bài cũ
Bài mới: 2’
Ở tiết trước, chúng ta đã được tìm hiểu cú pháp của câu lệnh lặp với số lần chưa biết trước. Chúng ta tiếp tục tìm hiểu một số ví dụ vận dụng câu lệnh lặp với số lần chưa biết trước vào giải bài toán.
	Hoạt động của Giáo viên & Học sinh	
Nội dung
Hoạt động 1: Lặp vô hạn lần – lỗi lập trình cần tránh. (30’)
GV: Hãy cho biết cú pháp câu lệnh lặp với số lần chưa biết trước và giải thích ý nghĩa?
HS: * Cú pháp:
 While do ;
Trong đó: 
- while, do là các từ khóa
- Điều kiện thường là phép so sánh.
- Câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.
Thực hiệnlệnh:
1. Kiểm tra điều kiện.
 2. Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp sẽ kết thúc. Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1.
GV: Khi chương trình sử dụng cấu trúc lặp cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc. Đó được gọi là lặp vô hạn lần. Vậy thế nào là lặp vô hạn lần chúng ta qua phần 3.
GV: Các em quan sát ví dụ trong SGK.
Var a: integer;
Begin
 a:=5;
 while a<6 do writeln (‘A’);
end.
HS: Quan Sát.
GV: Em hãy cho biết điều kiện của bài toán là gì?
HS: điều kiện dừng là a<6.
GV: Trong chương trình trên, giá trị của biến a luôn luôn bằng 5, điều kiện a<6 luôn luôn đúng nên lệnh writeln (‘A’) luôn được thực hiện.
GV: Do vậy, khi thực hiện vòng lặp, điều kiện trong câu lệnh phải được thay đổi để sớm hay muộn giá trị của điều kiện được chuyển từ đúng sang sai. Chỉ như thế chương trình mới không rơi vào những vòng lặp vô tận.
Lưu ý: Khi thực hiện vòng lặp, While .do cần xác định được điều kiện trong câu lệnh sau một số lần sẽ chuyển từ đúng sang sai để thoát khỏi vòng lặp. Không rơi vào những “Vòng lặp vô tận”
- Trong vòng lặp While...do điều kiện được kiểm tra trước khi thực hiện cậu lệnh, do đó có thể có trường hợp câu lệnh không được thực hiện một lần nào.
GV: Cho HS ghi bài.
HS: Ghi bài.
GV: Cho H làm một vài ví dụ
VD1: Sau khi thực hiện đoạn lệnh sau chương trình sẽ lặp bao nhiêu vòng?
S:=0; n:=0;
While s<=10 do
n:=n+1;
S:=s+n;
GV: Gọi H lên bảng làm
GV: Gọi H khác nhận xét
GV: Chốt lại
Vòng lặp trong chương trình trên là vô tận vì sau câu lệnh n:= n+1 câu lệnh lặp kết thúc nên điều kiện s=0 luôn được thỏa mãn
VD 2: Sau khi thực hiện đoạn lệnh sau chương trình sẽ lặp bao nhiêu vòng? Khi kết thúc s sẽ bằng bao nhiêu?
S:=10; n:=0;
While s>=10 do n:=n+3;s:=s-n; end;
Write(s);
GV: Gọi H lên bảng làm
GV: Gọi H khác nhận xét
GV: Chốt lại
Không vòng lặp nào được thực hiện, khi kết thúc s=10
3. Lặp vô hạn lần – lỗi lập trình cần tránh.
- Khi thực hiện vòng lặp, điều kiện trong câu lệnh phải được thay đổi để sớm hay muộn giá trị của điều kiện được chuyển từ đúng sang sai. Chỉ như thế chương trình mới không rơi vào những “vòng lặp vô tận”
Ví dụ:
Var a: integer;
Begin
 a:=5;
 while a<6 do writeln (‘A’);
end.
VD1: Sau khi thực hiện đoạn lệnh sau chương trình sẽ lặp bao nhiêu vòng?
S:=0; n:=0;
While s<=10 do
n:=n+1;
S:=s+n;
VD 2: Sau khi thực hiện đoạn lệnh sau chương trình sẽ lặp bao nhiêu vòng? Khi kết thúc s sẽ bằng bao nhiêu?
S:=10; n:=0;
While s>=10 do n:=n+3;s:=s-n; end;
Write(s);
Củng cố kiến thức. (4’)
Nêu những dạng câu lệnh lặp mà em đã được học?
Trả lời câu hỏi 4, 5 trang 71 SGK.
Hướng dẫn về nhà. (2’)
Về nhà học bài.
Coi trước bài thực hành 6 “Sử dụng lệnh lặp While...do...”
Rút kinh nghiệm:	
Tuần 22
Tiết 44
Bài thực hành 5
SỬ DỤNG LỆNH LẶP WHILE ... DO
I. Mục tiêu
Kiến thức
Biết ngôn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc nào đó cho đến khi một điều kiện nào đó được thỏa mãn.
Kĩ năng
Có kỹ năng đọc hiểu chương trình, tìm hiểu tác dụng của các câu lệnh.
Thái độ
Có thái độ nghiêm túc trong học tập. 
Giáo dục kỹ năng, tư duy của học sinh.
II. Chuẩn bị
Giáo viên:
Giáo án, SGK.
Máy tính, máy chiếu, phần mềm máy tím kiếm.
Học sinh
Học bài cũ, xem các thuật toán dã học.
III. Phương pháp: Trực quan, thử, luyện tập, nhóm.
IV.Tiến trình dạy học:
Ổn định lớp: Kiểm tra sĩ số. (2’)
Kiểm tra bài cũ:(5’)
Câu hỏi: Hãy viết câu lệnh lặp với số lần chưa biết trước trong ngôn ngữ lập trình Pascal? Giải thích câu lệnh?
Trả lời: Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng: 
while do ;
Trong đó:
Điều kiện thường là một phép so sánh;
Câu lệnh có thể là câu lệnh đơn hay câu lệnh ghép.
Câu lệnh lặp này được thực hiện như sau:
Kiểm tra điều kiện.
Nếu điều kiện SAI, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc. Nếu điều kiện ĐÚNG, thực hiện câu lệnh và quay lại bước 1.
Bài mới:
Để hiểu rõ hơn về câu lệnh lặp với số lần chưa biết trước thì tiết học hôm nay chúng ta sẽ nghiên cứu bài thực hành 6. “SỬ DỤNG LỆNH LẶP WHILE...DO”.
	Hoạt động của Giáo viên & Học sinh	
Nội dung
Hoạt động 1: Bài 1 (35’)
GV: Cho học sinh đọc đề bài tập 1 sgk/72.
HS: Đọc bài. 
GV: Ý tưởng để làm bài tập này là gì?
HS: Sử dụng một biến đếm và lệnh lặp Whiledo để nhập và cộng dần các số vào một biến kiểu số thực cho đến khi nhập đủ n số.
GV: Cho chạy chương trình.
HS: Quan sát kết quả.
GV: Mô tả thuật toán của chương trình, các biến dự định sẽ sử dụng và kiểu của chúng.
HS: Input: Dãy số thực x1, x2...xn
Output: Giá trị trung bình (x1 + x2 + ... +xn)/n
	Thuật toán
Bước 1. - Nhập N là số lượng số thực sẽ được nhập từ bàn phím:
- Gán biến đếm bằng 0 i¬ 0;
- Gán tổng Sum ¬ 0.
Bước 2. Trong khi i < N thì 
- Nhập giá trị số thực x từ bàn phím;
- Cộng thêm x vào tổng Sum: Sum ¬ Sum + x;
- Tăng biến dem thêm 1 đơn vị: i ¬ i+ 1;
Bước 3. Tính trung bình dãy số vừa nhập TB ¬ Sum/N.
Bước 4. Đưa TB ra màn hình, rồi kết thúc.
GV: Đưa ra chương trình được viết sẵn cho học sinh so sánh sự tương xứng:
Program Tinh_Trung_binh;
uses crt;
Var n, i: Integer;
x, TB: real;
begin
 clrscr;
 i:=0 ; TB:=0 ;
 write('Nhap so cac so can tinh n = '); readln(n);
 while i<n do
 begin
	i:=i+1;
	write('Nhap so thu ',i,'= '); readln(x);
         TB:=TB+x; 
      end;
  TB:=TB/n;
  writeln('Trung binh cua ',n,' so la = ',TB:10:3);
  readln
end.
HS: Quan sát và so sánh.
 GV: Yêu cầu học sinh gõ chương trình trên máy, dịch chạy chương trình tìm hiểu từng câu lệnh.
HS: Thực hành dưới sự quan sát hỗ trợ của giáo viên.
GV: Viết lại chương trình bằng cách sử dụng câu lệnh For...do thay cho câu lệnh While ... do ta viết như thế nào?
HS: 
Program Tinh_Trung_binh;
uses crt;
Var n, i: Integer;
x, tong, TB: real;
begin
 clrscr;
 TB:=0 ;
 write('Nhap so cac so can tinh n = '); readln(n);
 For i:=1 to n do
 begin
        write('Nhap so thu ',i,'= '); readln(x);
         Tong:=Tong+x; 
      end;
  TB:=Tong/n;
  writeln('Trung binh cua ',n,' so la = ',TB:10:3);
  writeln('Nhan Enter de thoat ...');
  readln
end.
GV: Yêu cầu học sinh sửa lại câu lệnh bằng cách sử dụng lệnh lắp For ... do
HS: Thực hành trên máy.
Bài 1. Viết chương trình sử dụng lệnh lặp Whiledo để tính trung bình n số thực  x1, x2, x3,..., xn. Các số n và x1, x2, x3,..., xn được nhập vào từ bàn phím.
* Xác định bài toán
Input: Dãy số thực x1, x2...xn
Output: Giá trị trung bình (x1 + x2 + ... +xn)/n
* Thuật toán
Bước 1. - Nhập N là số lượng số thực sẽ được nhập từ bàn phím:
i¬ 0;
Sum ¬ 0.
Bước 2. Trong khi i < N thì 
- Nhập giá trị số thực x từ bàn phím;
 Sum ¬ Sum + x;
i ¬ i + 1;
Bước 3. TB ¬ Sum/N.
Bước 4. Đưa TB ra màn hình, rồi kết thúc.
Program Tinh_Trung_binh;
uses crt;
Var n, i: Integer;
x, TB: real;
begin
 clrscr;
 i:=0 ; TB:=0 ;
 write('Nhap so cac so can tinh n = '); readln(n);
 while i<n do
 begin
	i:=i+1;
	write('Nhap so thu ',i,'= '); readln(x);
         Tong:=Tong+x; 
      end;
  TB:=Tong/n;
  writeln('Trung binh cua ',n,' so la = ',TB:10:3);
  readln
end.
Củng cố kiến thức. (2’)
GV: Trong ngôn ngữ lập trình Pascal, cấu trúc lặp với số lần chưa biết trước được thể hiện bằng câu lệnh gì?
HS: while do ;
GV: khi viết chương trình dùng cấu trúc lặp thì cần tránh lỗi gì?
HS: cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc.
Hướng dẫn về nhà. (1’)
Về nhà học bài và tìm hiểu lại chương trình bài 1 sgk/72.
Nghiên cứu trước bài 2 sgk/73.
Rút kinh nghiệm:	
Tuần 23
Tiết 45
Bài thực hành 6
SỬ DỤNG LỆNH LẶP WHILE ... DO
I. Mục tiêu
Kiến thức
Biết ngôn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc nào đó cho đến khi một điều kiện nào đó được thỏa mãn.
Kĩ năng
Có kỹ năng đọc hiểu chương trình, tìm hiểu tác dụng của các câu lệnh.
Thái độ
Có thái độ nghiêm túc trong học tập. 
Giáo dục kỹ năng, tư duy của học sinh.
II. Chuẩn bị
Giáo viên:
-Giáo án, SGK.
-Máy tính, máy chiếu, phần mềm máy tím kiếm.
Học sinh
-Học bài cũ, xem các thuật toán dã học.
III. Phương pháp: Trực quan, thử, luyện tập, nhóm.
IV.Tiến trình dạy học:
Ổn định lớp: Kiểm tra sĩ số. (1’)
Kiểm tra bài cũ:(5’)
Câu hỏi: Hãy viết câu lệnh lặp với số lần chưa biết trước trong ngôn ngữ lập trình Pascal? Giải thích câu lệnh?
Trả lời: Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng: 
while do ;
Trong đó:
Điều kiện thường là một phép so sánh;
Câu lệnh có thể là câu lệnh đơn hay câu lệnh ghép.
Câu lệnh lặp này được thực hiện như sau:
Kiểm tra điều kiện.
Nếu điều kiện SAI, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc. Nếu điều kiện ĐÚNG, thực hiện câu lệnh và quay lại bước 1.
Bài mới:
Để hiểu rõ hơn và biết vận dụng câu lệnh lặp với số lần chưa biết trước thì tiết học hôm nay chúng ta sẽ tiếp tục nghiên cứu bài thực hành 6. “SỬ DỤNG LỆNH LẶP WHILE...DO”.
	Hoạt động của Giáo viên & Học sinh	
Nội dung
Hoạt động 1: Bài 2 (20’)
G: Cho học sinh đọc đề bài tập 2 sgk/73.
H: Đọc bài. 
G: Thế nào là số nguyên tố?
H: Số nguyên tố là số tự nhiên lớn hơn 1, chỉ có hai ước là 1 và chính nó.
G: Hãy xác định bài toán?
H: Input: Số tự nhiên N
Output: Trả lời N là số nguyên tố hoặc N không là số nguyên tố
G: Ý tưởng của bài toán này là gì?
H: Để kiểm tra N có phải số nguyên tố hay không ta sẽ đi kiểm tra xem N có chia hết các số từ 2 đến N - 1 hay không. Nếu N không chia hết cho số nào trong khoảng từ 2 đến N - 1 thì N là số nguyên tố, ngược lại N chia hết cho bất kì một số nào trong khoảng từ 2 đến N - 1 thì N không phải là số nguyên tố.
Sử dụng phép chia lấy phần dư mod để kiểm tra tính chia hết.
G: Cho học sinh đọc và tìm hiểu chương trình.
Uses Crt;
Var n,i:integer;
Begin
 Clrscr;
 write('Nhap vao mot so nguyen: '); readln(n);
 If n<=1 then writeln('N khong la so nguyen to')
 else
 begin
 i:=2;
 while (n mod i0) do i:=i+1;
 if i=n then writeln(n,' la so nguyen to!')
 else writeln(n,' khong phai la so nguyen to!');
 end;
readln
end.
H: Đọc và tìm hiểu từng câu lệnh để hiểu chương trình.
G: Cho học sinh thảo luận nhóm khoảng 3 phút để mô tả thuật toán.
H: Thảo luận.
H: Đưa ra thuật toán:
Bước 1: Nhập số tự nhiên N từ bàn phím.
Bước 2: Nếu N£ 1 thông báo N không phải là số nguyên tố, rồi chuyển đến bước 4.
Bước 3: Nếu N > 1:
	3.1. i¬2;
	3.2. Trong khi N mod i 0, i¬i+1;
	3.3. Nếu i = N thì t

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

  • docGiao an hoc ki 2_12260367.doc