Hoạt động 1: Kiểm tra bài củ
Viết thuật toỏn tớnh tổng 100 số tự nhiờn đầu tiờn 1,2,3,…,99,100
Bước 1. SUM ← 0; i ← 0.
Trang 63
Bước 2. i ← i + 1.
Bước 3. Nếu i ≤ 100, thỡ SUM ← SUM + i và quay lại bước 2.
Bước 4. Thụng bỏo kết quả và kết thỳc thuật toỏn.
Đặt vấn đề: Với bài toỏn trờn, trong TP ta sử dụng vũng lặp for…to…do thỡ sẽ thực hiện dễ dàng . Nhưng nếu ta thay số 100 bởi n ( tớnh tổng n số tự nhiờn đầu tiờn ) thỡ ta sẽ gặp nhiều khú khăn trong việc sử dụng vũng lặp for…to…do bởi lỳc này số lần lặp khụng biết trước. Vậy ta phải làm như thế nào ? Giới thiệu bài mới .
Hoạt động 2: Cỏc hoạt động lặp với số lần chưa biết trước
+ G : y/c hs đọc vớ dụ 1sgk/67 + G : Phõn tớch vớ dụ
+ G : Hướng dẫn hs xõy dựng thuật toỏn
+ G : Chạy tay cho học sinh xem ( Chỉ nờn chạy tay thử từ 1 đến 10 )
+ G : Giới thiệu sơ đồ khối
+ G : Nờu nhận xột
+ G : Cú thể sử dụng lệnh lặp với số lần lặp chưa biết trước trong cỏc chương trỡnh lập trỡnh . Sau đõy ta xột cõu lệnh và vớ dụ trong TP
+ G : Giới thiệu cỳ phỏp lệnh
while … do ….;
1. Cỏc hoạt động lặp với số lần chưa biết trước
a/ Vớ dụ 1(sgk).
+ Hs : 2-3 hs đọc vớ dụ sgk + Hs : Chỳ ý lắng nghe
b/ Vớ dụ 2 : Nếu cộng lần lượt n số tự nhiờn đầu tiờn (n = 1, 2, 3,...), Cần cộng bao nhiờu số tự nhiờn đầu tiờn để ta nhận được tổng Tn
nhỏ nhất lớn hơn 1000?
+ Hs : Nghe giỏo viờn hướng dẫn, sau đú tự xõy dựng thuật toỏn + Hs : Chỳ ý nghe .
Hs ghi vở vớ dụ 2
Giải :
Kớ hiệu S là tổng cần tỡm và ta cú thuật toỏn như sau:
+ Bước 1.S ← 0, n ← 0.
+ Bước 2. Nếu S ≤ 1000, n ← n + 1; ngược lại chuyển tới bước 4.
+ Bước 3.S ← S + n và quay lại bước 2.
+ Bước 4. 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ơ đồ khối :
* Nhận xột : Để viết chương trỡnh chỉ dẫn mỏy tớnh thực hiện cỏc hoạt động lặp như trong cỏc vớ dụ trờn, ta cú thể sử dụng cõu lệnh cú
dạng lặp với số lần chưa biết trước
2. Vớ dụ về lệnh lặp với số lần chưa biết trước
Trong Pascal cõu lệnh lặp với số lần chưa biết trước cú dạng:
while <điều kiện> do <cõu lệnh>; 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 giản hay cõu lệnh ghộp.
Cõu lệnh lặp này được thực hiện như sau: Bước 1 : Kiểm tra điều kiện.
Trang 64
+ G : Xột vớ dụ 3
Chỳng ta biết rằng, nếu n càng lớn thỡ 1
n càng nhỏ, nhưng luụn luụn lớn
hơn 0. Với giỏ trị nào của n thỡ 1
n <
0.005 hoặc 1
n < 0.003 ?
( Gv đưa phim trong vớ dụ 3 )
+ G : giới thiệu chương trỡnh mẫu sgk ( Giỏo viờn in chương trỡnh mẫu trờn phim trong )
+ G : Chạy tay cho học sinh xem + G : Yờu cầu học sinh mở mỏy tớnh và mở chương trỡnh vớ dụ 3 ( giỏo viờn chuẩn bị chương trỡnh mẫu và đưa lờn cỏc mỏy )
+ G : Cho học sinh chạy chương trỡnh trờn mỏy
+ G : Yờu cầu hs thay điều kiện sai_so = 0.003 thành 0.002 ; 0.001 ; 0.005 ; ...
Bước 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 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.
+ Hs : Đọc vớ dụ 3 + Hs : quan sỏt
Với giỏ trị nào của n ( n>o ) thỡ 1
n < 0.005 hoặc
1
n < 0.003?
Chương trỡnh dưới đõy tớnh số n nhỏ nhất để 1
n nhỏ hơn một sai số cho trước : uses crt; var x: real; n: integer; const sai_so=0.003; begin clrscr; x:=1; n:=1;
while x>=sai_so dobegin n:=n+1; x:=1/n end; writeln('So n nho nhat de 1/n < ',sai_so:5:4, 'la ',n); readln
end.
+ Hs : thực hiện
Hoạt động 3: Củng cố
- Giáo viên hệ thống lại toàn bộ kiến thức đã học.
Hoạt động 4: Hớng dẫn về nhà
- Học bài theo sách giáo khoa và vở ghi. - Làm bài tập 1, 2, 3 SGK trang71.
- Đọc trớc Bài 8: lặp với số lần cha biết trớc.
Tiết 50 Ngày soạn: 12/02/2009
Ngày dạy: 03/03
Bài 8: lặp với số lần cha biết trớc
I.Mục tiờu
- Biết nhu cầu cần 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 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 Pascal.
II. Chuẩn bị
- GV: Giỏo ỏn, mỏy chiếu, mỏy tớnh. - HS: Sỏch, vởđọc trước bài ở nhà.
III. Tiến trỡnh dạy - học
Hoạt động 1: Kiểm tra bài củ
?Viết cú pháp câu lệnh lặp với số lần cha biết trớc rồi giải thích. ?Làm bài tập 2 trang 71.
Hoạt động 2: Xột cỏc vớ dụ.
+ G : ta tiếp tục xột cỏc vớ dụ mà trong chương trỡnh cú cõu lệnh với số lần lặp chưa biết trước
+ G : Chạy tay cho học sinh xem
+ G : Cho học sinh chạy chương trỡnh trờn mỏy + G : chạy chương trỡnh này, ta nhận được giỏ trị
Vớ dụ 4 . Chương trỡnh Pascal dưới đõy thể hiện thuật toỏn tớnh số n trong vớ dụ 2: + Hs : chỳ ý nghe . + Hs : thực hiện var S,n: integer; Trang 65
ntn?
Viết chương trỡnh tớnh tổng 1 1 1 ... 1
2 3 100
T = + + + ++ G : Cho học sinh quan sỏt. + G : Cho học sinh quan sỏt.
+ G : Chạy tay ( cả hai chương trỡnh ) cho học sinh xem
+ G : so sỏnh kết quả khi chạy hai chương trỡnh + G : Vớ dụ này cho thấy rằng chỳng ta cú thể sử dụng cõu lệnh while…do thay cho cõu lệnh for…do.
+ G : Giới thiệu phần 3
+ G : Khi viết 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 + Hs : Chỳ ý nghe
+ G : Chẳng hạn, chương trỡnh dưới đõy sẽ lặp lại vụ tận:
var a:integer;
begin
a:=5;
while a<6 do writeln('A');
end.
+ G : 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.
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".
begin
S:=0; n:=1;
while S<=1000 do begin n:=n+1; S:=S+n end;
writeln('So n nho nhat de tong > 1000 la ',n); writeln('Tong dau tien > 1000 la ',S);
end.
+ Hs : Nếu chạy chương trỡnh này ta sẽ nhận được n
= 45 và tổng đầu tiờn lớn hơn 1000 là 1034.
Vớ dụ 5 . Viết chương trỡnh tớnh tổng 1 1 1 1 ... 2 3 100 T = + + + + + Hs : quan sỏt Để viết chương trỡnh tớnh tổng 1 1 1 1 ... 2 3 100 T = + + + + ta cú thể sử dụng lệnh lặp với số lần lặp biết trước for…do:
T:=0;
for i:=1 to 100 do T:=T+1/i; writeln(T);
+ Hs : chỳ ý nghe và tự chạy tay lại + Hs : Kết quả bằng nhau
Nếu sử dụng lệnh lặp while…do, đoạn chương trỡnh dưới đõy cũng cho cựng một kết quả:
T:=0; i:=1;
while i<=100 do begin T:=T+1/i; i:=i+1 end;
writeln(T);
* Nhận xột : Vớ dụ này cho thấy rằng chỳng ta cú thể sử dụng cõu lệnh while…do thay cho cõu lệnh for…
do.
3. Lặp vụ hạn lần – Lỗi lập trỡnh cần trỏnh
Khi viết 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.
+ Hs : Chỳ ý nghe
Hoạt động 3: Củng cố
- Giáo viên hệ thống lại toàn bộ kiến thức đã học.
Hoạt động 4: Hớng dẫn về nhà
- Học bài theo sách giáo khoa và vở ghi. - Làm bài tập 4, 5 SGK trang71.
- Đọc trớc Bài TH 6.
Tuần 27 Ngày soạn: 19/02/2009
Trang 66
Tiết 51 Ngày dạy: 04/03
Bài thực hành 5:
Sử dụng lệnh While do…
I. Mục tiêu
- Vận dụng kiến thức của vòng lặp while ... do để viết chơng trình. Biết lựa chọn câu lệnh lặp while ... do hoặc For ... do cho phù hợp với tình huống cụ thể.
- Rèn luyện kỹ năng về khai báo và sử dụng biến, kĩ năng đọc hiểu chơng trình. Biết vai trò của việc kết hợp các cấu trúc điều khiển.
- Thái độ học tập nghiêm túc, tích cực làm các bài tập thực hành.
II. Chuẩn bị