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ấ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 hin 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 thsẽ 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 ) thta sẽ gặp nhiều khú khăn
trong việc sử dụng 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 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 thtừ 1 đến 10
)
1. CỎC HOT độNG LP VI S LN
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
:
Khiệu
S
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 đồ
khối
+ G : Nờu nhận xột
+ G : 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
n
stự nhiờn
nhnhấ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 d
trên, ta thsử 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 LNH LP VI S LN
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à dtrong
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à mt phép so
sánh;
-
cõu lệnh
thlà 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 lnh
sb
bqua 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
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
nhnhất để
1
n
nhhơn một sai số
cho trước :
uses
crt;
var
x: real;
dụ 3 )
+ G : gii 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:ớng dẫn về nhà
-
Học bài theo sách giáo khoa và vở ghi.