BÀI 8: 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;
- 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 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.
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
)
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
T
n
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.
+ 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
+ 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
>
;
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 ….;
+ 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ớ
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.
+ 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;
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 ;
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
.
+ 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 chưa biết trước.