Tải bản đầy đủ (.ppt) (13 trang)

tiet 49 lặp với số lần chưa biết trước

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (681.86 KB, 13 trang )


KIỂM TRA BÀI CŨ
Câu 1: Hãy ghi cú pháp của câu lệnh lặp For…do ?
Câu 2: Hãy viết chương tình tính tổng của 5 số đầu tiên ?
For <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
Var i, Tong:integr;
Begin
Tong:=0;
For i:=1 to 5 do
Tong:=Tong+1;
Writeln(‘Tong=‘,Tong);
Readln;
End.

 Nam làm bài tập cho đến khi làm xong.
 Cô ấy phải đi bộ như vậy cho đến khi về tới nhà.
Các em hãy cho biết thêm
những ví dụ về hoạt động lặp
với số lần chưa biết trước?
 Tôi phải nhập dữ liệu vào máy tính cho đến
khi nhập xong.
1. CÁC HOẠT ĐỘNG LẶP VỚI SỐ LẦN CHƯA
BIẾT TRƯỚC


VD1
VD1(Sgk):
Long sẽ lặp lại hoạt
động gọi điện mấy lần?
1. CÁC HOẠT ĐỘNG LẶP VỚI SỐ LẦN CHƯA
BIẾT TRƯỚC


Chưa biết trước được. i u Đ ề
kiện để kết thúc hoạt động lặp
đó là có người nhấc máy.
Một ngày khác, Long quyết định cứ 10 phút gọi
điện một lần cho Trang cho đến khi nào có người nhấc
máy.

VD2
VD2(Sgk)
:
:
Điều kiện như thế nào
thì kết thúc hoạt động
lặp?
Điều kiện: Khi tổng T
n
nhỏ
nhất lớn hơn 1000 thì kết
thúc hoạt động lặp
tăng dần
1. CÁC HOẠT ĐỘNG LẶP VỚI SỐ LẦN CHƯA
BIẾT TRƯỚC

n Tổng T
n
Điều kiện T
n
≤ 1000
1
T

1
= 1 Đúng
2 T
2
= 1 + 2 Đúng
Đúng
… … …
?
T
n
= 1 + 2 + 3 + … +?
(Sao cho T
n

nhỏ nhất
lớn hơn 1000)
Sai, kết thúc việc tính
tổng
3 T
3
= 1 + 2 + 3
Phân tích bài toán:
1. CÁC HOẠT ĐỘNG LẶP VỚI SỐ LẦN CHƯA
BIẾT TRƯỚC

S ← 0, n ← 0.
Nếu S≤1000, n ← n+1; Ngược lại, chuyển tới bước 4.
S ← S + n và quay lại bước 2.
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.

Kí hiệu S là tổng cần tìm và ta có thuật toán như sau:
Các hoạt động lặp với số lần
chưa biết trước phụ thuộc
vào cái gì và chỉ dừng lại khi
nào?
* Có thể diễn tả bài toán
trên bằng sơ đồ như sau:
S≤1000?
Sai
n ← n+1;
S ← S+n;
Đúng
1. CÁC HOẠT ĐỘNG LẶP VỚI SỐ LẦN CHƯA BIẾT
TRƯỚC

2. Ví dụ về lặp với số lần chưa biết trước
VD1: While a<=b do a:=a+1;
VD2: While a>b do
Begin write(‘a>b’); a:=a-1; End;

Trong đó :  While, do là các từ khóa.
 Điều kiện là a<=b (chứa phép so sánh).
 Câu lệnh là a:=a+1 (câu lệnh đơn).

Trong đó :  While, do là các từ khóa.
 Điều kiện là a>b (chứa phép so sánh).
 Câu lệnh là Write(‘a>b’) và a:=a-1 (câu lệnh ghép).

2. Ví dụ về lệnh lặp với số lần chưa biết trước:
Ví dụ 3: Với giá trị nào của n để 1/n < 0.003 ?. Viết chương

Trình 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 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.

VD: Dùng câu lệnh lặp While … Do để viết chương trình thể
hiện thuật toán trong Ví dụ 2 (Sgk)
var S,n: integer;
Begin
S:=0; n:=0;
while S<=1000 do
begin
n:=n+1; S:=S+n ;
end;
write(‘Tong S= ’,S,‘ va ’,n,’ la so tu nhien nho nhat
sao cho S>1000’);
Readln;
End.
Hãy nêu Cú Pháp câu lệnh lặp

với số lần chưa biết trước?
Tong S= 1035 va 45 la so tu nhien nho nhat sao cho S>1000
LUYỆN TẬP – CŨNG CỐ:

A
A
Tính tổng các số tự nhiên từ 1 đến 20.
B
B
Nhập các số nguyên từ bàn phím cho đến khi đủ 50 số.
D
D
Nhập vào 1 số cho đến khi số nhập vào là số chẵn thì dừng.
C
C
Mỗi ngày học bài 2 lần.
Câu 1: Trong các hoạt động dưới đây
hoạt động nào là hoạt động lặp với số
lần chưa biết trước?

a) X:= 10; while X:= 10 do X:= X + 5;
b) X:= 10; while X = 10 do X = X + 5;
c) S:= 0; n:=0; while S <= 10 do n:= n + 1; S:= S + n ;
Thừa dấu :
Thiếu dấu:
Thiếu Begin
Thiếu End.
Câu 2:Hãy chỉ ra lỗi trong các lệnh sau đây?

- Các hoạt động lặp với số lần chưa biết trước

phụ thuộc vào một điều kiện cụ thể và chỉ
dừng lại khi điều kiện đó sai.
- 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>;

* Xem trước VD4; VD5; Lặp vô hạn – lỗi lập
trình cần tránh.
* Tìm thêm một vài ví dụ về hoạt động lặp với
số lần chưa biết trước.
* Về nhà học bài làm bài tập 2 Sgk tr71.

×