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

Sử dụng pp

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 (212.51 KB, 22 trang )


BÀI 8
BÀI 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC

1.Các hoạt động lặp với số 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
Ví dụ 1: Một ngày chủ nhật, bạn Long
gọi điện cho Trang. Không có ai
nhấc máy. Long quyết định gọi điện
thêm 2 lần nữa. Nếu vẫn không có ai
nhấc máy thì chắc không ai ở nhà.
-
Một ngày khác, Long quyết định cứ
10 phút gọi điện một lần cho Trang
đến khi nào có người nhấc máy.


Tối nay Long phải đọc thuộc
bài thơ “Tre xanh”, Long quyết
định đọc bài thơ, nếu chưa
thuộc thì lại đọc lại đến khi nào
thuộc thì thôi.

Ví dụ 2
Ví dụ 2
T=1+2+3+4+…
Cần cộng bao nhiêu số tự nhiên đầu tiên để


được tổng nhỏ nhất lớn hơn 1000.
T1=1
T2=1+2
T3=1+2+3
Như vậy việc cộng với số tiếp theo vẫn
tiếp tục cho đến khi nào tổng>1000

Thuật toán
Thuật toán
B1. S<-0, n<-0.
B2. Nếu S<=1000, n<-n+1; Ngược
lại chuyển đến b4.
B3.S<-S+n và quay lại b2.
B4. In ra S, n là số tự nhiên nhỏ
nhất sao cho S>1000.

- Như vậy ở ví dụ 1. Việc để kết thúc
vòng lặp là có người nhấc máy hay
điều kiện để vòng lặp vẫn tiếp tục là
không có ai nhấc máy, hay chưa
thuộc bài thơ
- Ở ví dụ 2. Việc kết thúc vòng lặp là
tổng >1000 hay điều kiện để vòng lặp
vẫn tiếp tục là Tổng vẫn còn<=1000.

Từ các ví dụ trên suy ra sơ đồ
cho hoạt động lặp với số lần
chưa biết trước.
Điều kiện
Câu lệnh

Đúng
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>;
Câu lệnh thực hiện như sau:
B1. Kiểm tra điều kiện.
B2. Nếu điều kiện SAI, câu lệnh bị bỏ
qua . Nếu điều kiện đúng, thực hiện
câu lệnh và quay lại b1.

MỘT SỐ VÍ DỤ
MỘT SỐ VÍ DỤ
Vd1.Tính số n nhỏ nhất để 1/n nhỏ hơn
một sai số cho trước (ví dụ 0.005).(n
là số tự nhiên, khác 0).
N càng lớn thì 1/n càng nhỏ, công việc ở
đây là cứ tăng n để tính giá trị 1/n đến khi
nào 1/n <0.0005 thì dừng. Hay điều kiện
để tiếp tục vòng lặp (công việc tăng n)
là1/n<=0.005.

Thuật toán
Thuật toán

B1: n<-1;

B2: Nếu 1/n>=0.005 chuyển đến
b3. Ngược lại chuyển đến bước

kết thúc

B3: n=n+1; quay lại b2

B4: in ra n và kết thúc.
Vd1.Tính số n nhỏ
nhất để 1/n nhỏ hơn
một sai số cho trước
(ví dụ 0.005).(n là số
tự nhiên, khác 0).

Chương trình
Chương trình
Program tinhn;
Uses crt;
Var n:integer;
Begin
N:=1
While n>=0.005 do n:=n+1;
Writeln(‘gia tri nho nhat cua n’,n);
Readln
End.
Vd1.Tính số n nhỏ nhất
để 1/n nhỏ hơn một sai số
cho trước (ví dụ 0.005).(n
là số tự nhiên, khác 0).

Ví dụ 2.
Ví dụ 2.
T=1+2+3+…

Cần cộng bao nhiêu số tự nhiên đầu tiên
để tổng nhỏ nhất lớn hơn 1000


Program tong;

Uses crt

Var n,s:integer;

Begin

S:=0;n:=0;

While s<=1000 do begin n:=n+1;S:=s+n end;
Writeln(‘so n nho nhat la’,n);
Writeln(‘tong s’,s);
Readln
End.
1+2+3+…
Cần cộng bao nhiêu số tự nhiên đầu tiên để
tổng nhỏ nhất lớn hơn 1000

Ví dụ 3
Ví dụ 3
Ở đây số vòng lặp biết trước: ta dùng câu lệnh
for to Do để tính tổng.
T:=0;
For i:=1 to 100 do T:=T+i;
Writeln(T);

Nhưng ta cũng có thể dùng câu lệnh while do
T:=0; i:=1;
While i<=100 do begin T:=T+i; i:=i+1 end;
Writeln(T);
Tính tổng T=1+2+3+
…+100
Qua ví dụ này chúng ta thấy có thể dùng câu lệnh while Do
thay cho for to do

Lặp vô hạn lần – lỗi cần tránh
Lặp vô hạn lần – lỗi cần tránh
Program ct;
Uses crt;
a:integer;
Begin
a:=5;
While a<6 do writeln (‘A’);
Readln
End.

Trong các thuật toán sau, cho
Trong các thuật toán sau, cho
biết
biết
số vòng lặp
số vòng lặp


S
S

ở mỗi thuật
ở mỗi thuật
toán? Viết chương trình thể hiện
toán? Viết chương trình thể hiện
các thuật toán đó.
các thuật toán đó.

Thuật toán 1
Thuật toán 1
Bước 1. S->10, x<-0.5
Bước 2. Nếu S≤5.2, chuyển tới
bước 4.
Bước 3. S<S-x và quay lại bước 2.
Bước 4. Thông báo S và kết thúc
thuật toán
cho biết số vòng lặp
và S ở mỗi thuật
toán? Viết chương
trình thể hiện các
thuật toán đó.

Thuật toán 2
Thuật toán 2

B1. S<-10, n<-0

B2. Nếu S≥10 chuyển tới b4.

B3. n<-n+3, S<-s-n quay lại b2.


B4. Thông báo S và kết thúc
thuật toán
cho biết số
vòng lặp và S
ở mỗi thuật
toán? Viết
chương trình
thể hiện các
thuật toán đó.

Bài 4. Tính số vòng lặp
Bài 4. Tính số vòng lặp
và nhận xét
và nhận xét
Câu a.

S:=0;n:=0;

While s<=10 do

Begin n:=n+1;s:=s+n end;
Câu b
S:=0, n:=0;
While s<=10 do
n:=n+1; s:=s+n;

Hãy chỉ ra lỗi trong các câu lệnh
Hãy chỉ ra lỗi trong các câu lệnh
sau đây
sau đây

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


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×