TuÇn 25 Tiết 49 - 50: Lặp với số lần chưa 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ấ[r]
Trang 1
Tuần 25
Tiết 49 - 50: Lặp với số lần chưa 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;
- Nhận biết được đõu là hoạt động lặp với số lần chưa biờt trước.
- Nghiờm tỳc trong quỏ trỡnh nghiờn cứu và thực hành
II/ Chuẩn bị của học sinh và giáo viên:
III/ Tiến trình dạy học:
1.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
Trả lời
Bước 1 SUM 0; i 0.
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.
2/ Bài mới:
Hoạt động 1: 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
+ Hs : 2-3 hs đọc vớ dụ sgk
+ G : Phõn tớch vớ dụ
+ Hs : Chỳ ý lắng nghe
+ G : y/c hs đọc vớ dụ 1sgk/67
+ Hs : 2-3 hs đọc vớ dụ sgk
+ G : Phõn tớch vớ dụ
+ Hs : chỳ ý lắng nghe
+ GV : Hướng dẫn hs xõy dựng thuật toỏn
+ Hs : Nghe giỏo viờn hướng dẫn, sau đú tự
xõy dựng thuật toỏn
1 Cỏc hoạt động lặp với số lần chưa biết trước
a/ Vớ dụ 1(sgk).
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 T n nhỏ nhất lớn hơn 1000?
Trang 2+ G : Chạy tay cho học sinh xem ( Chỉ nờn
chạy tay thử từ 1 đến 10 )
+ Hs : Chỳ ý nghe
Hs ghi vở vớ dụ 2
+ 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 ….;
+ hs : chỳ ý nghe và ghi chộp
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
Hoạt động 2:Ví dụ về lênghj lặp với số lần + G : Xột vớ dụ 3 2 Vớ dụ về lệnh lặp với số lần
Trang 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 )
+ Hs : Đọc ví dụ 3 ( Phim trong)
+ 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 )
+ Hs : quan sát
+ G : Chạy tay cho học sinh xem
+ Hs : chú ý nghe và tự chạy tay lại
+ 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 )
+ Hs : thực hiện
+ G : Cho học sinh chạy chương trình trên
máy
+ Hs : thực hiện
+ G : Yêu cầu hs thay điều kiện sai_so =
0.003 thành 0.002 ; 0.001 ; 0.005 ;
+ Hs : thực hiệ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.
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
Với giá trị nào của n ( n>o ) thì < 1
n
0.005 hoặc < 0.003? Chương trình 1
n dưới đây tính số n nhỏ nhất để nhỏ hơn 1
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 do begin n:=n+1;
x:=1/n end;
writeln('So n nho nhat de 1/n <
',sai_so:5:4, 'la ',n);
readln
end.
Trang 4+ 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
Xét ví dụ 4
+ G : Cho học sinh quan sát phim trong
chương trình
+ Hs : quan sát
+ G : Chạy tay cho học sinh xem
+ Hs : chú ý nghe và tự chạy tay lại
+ G : Yêu cầu học sinh mở máy tính và mở
chương trình ví dụ 4 ( giáo viên chuẩn bị
chương trình mẫu và đưa lên các máy )
+ Hs : thực hiện
+ G : Cho học sinh chạy chương trình trên
máy
+ Hs : thực hiện
+ G : chạy chương trình này, ta nhận được giá
trị ntn?
+ 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
+ G : giới thiệu ví dụ 5 sgk
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 phim trong
chương trình
+ Hs : quan sát
+ G : Chạy tay ( cả hai chương trình ) cho học
sinh xem
+ Hs : chú ý nghe và tự chạy tay lại
+ G : so sánh kết quả khi chạy hai chương
trình
+ Hs : Kết quả bằng nhau
+ 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
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:
var S,n: integer;
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.
Ví dụ 5 Viết chương trình tính tổng
1 1 1
1
2 3 100
T
Giải :
Để viết chương trình tính tổng
ta có thể sử dụng
1 1 1
1
2 3 100
T
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);
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);
Trang 5
Hoạt động3: Củng cố:
- Ghi nhớ sgk
- Làm bài tập 2,3a,bài 5 SGK/71
- Học bài và làm lại cỏc bài tập
- Nghiờn cứu trước bài thực hành
Tổ chuyên môn ký duyệt ngày 01/ 03 / 2010
TTCM
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.
+ Hs : Quan sỏt
+ 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"
+ Hs : Chỳ ý nghe
* 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