Bài 8. Lặp với số lần chưa biết trước

Chia sẻ bởi Trần Thị Thu Trang | Ngày 24/10/2018 | 31

Chia sẻ tài liệu: Bài 8. Lặp với số lần chưa biết trước thuộc Tin học 8

Nội dung tài liệu:

BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
KIỂM TRA BÀI CŨ
Cú pháp:
For := to do
;
VD: For j:= 1 to 10 do A:= A+1;
VD1: Viết chương trình tính tổng các số tự nhiên từ 1 đến 100
S = 1 + 2 + 3 + . . .+100
Lặp 100 lần
Hãy quan sát
VD2: Viết chương trình nhập vào các số cho đến khi gặp 0 thì dừng lại. Tính tổng các số vừa nhập.
Chua bi?t l?p m?y l?n
Lặp với số lần biết trước, sử dụng câu lệnh lặp For…Do để viết chương trình
Lặp với số lần chưa biết trước, sử dụng câu lệnh gì để viết chương trình?
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
 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 thêm những ví dụ về hoạt động 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 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.
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
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 thể 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.
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
T1 = 1
T2 = 1 + 2
T3 = 1 + 2 + 3
....
Cần cộng bao nhiêu số tự nhiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?
VD2(Sgk):
1. Các hoạt động lặp với số lần chưa biết trước:
Đ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 Tn nhỏ nhất lớn hơn 1000 thì kết thúc hoạt động lặp
tăng dần
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
1. Các hoạt động lặp với số lần chưa biết trước:
Phân tích bài toán: Tn = 1 + 2 + 3 + … +N
1
T1 = 1
Đúng
2
T2 = 1 + 2
Đúng
3
T3 = 1 + 2 + 3
Đúng



?
Tn = 1 + 2 + 3 + … +? (Sao cho Tn lớn hơn 1000)
Sai, kết thúc việc tính tổng
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Bước 1:
Bước 2:
Bước 3:
Bước 4:
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.
1. Các hoạt động lặp với số lần chưa biết trước:
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:
Điều kiện
Câu lệnh
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
2. Ví d? v? l?nh l?p v?i s? l?n chua bi?t tru?c
VD1: While a<=b do a:=a+1;
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).
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à Write(‘a>b’) và a:=a-1 (câu lệnh ghép).
Hãy nêu cấu trúc câu lệnh lặp vơi số lần chưa biết trước
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
2. Ví dụ về lệnh lặp với số lần chưa biết trước:
Điều kiện: thường là phép so sánh.
Câu lệnh: là môt câu lệnh trong Pascal (có thể là câu lệnh đơn hay câu lệnh ghép)
While <điều kiện> do ;
VD1: While a<=b do a:=a+1;
VD2: While S<=10 do
Begin n:=n-1; S:=S+n End;
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
2. Ví d? v? l?nh l?p v?i s? l?n chua bi?t tru?c
Quan sát sơ đồ khối, hãy cho biết sự thực hiện của câu lệnh lặp?
Sự hoạt động của câu lệnh:
Bước 1:
Kiểmtra<điềukiện>
Bước 2:
Nếu <điều kiện>đúng thì:
+ thực hiện lệnh lặp.
+ quay lại bước 1
Nếu <điều kiện> sai bỏ qua câu lệnh và kết thúc vòng lặp
Ví dụ:cho đoạn chương trình sau:
S:=0; while S<5 do s:= S + 2;
Sau khi thực hiện đoạn chương
trình trên giá trị của S=?
ĐK:S<5
S:= S+2
S
0
Đúng
2
2
Đúng
4
4
Đúng
6
6
Sai
Dừng
Vậy S=6
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Bài tập1: Hãy chỉ ra đâu là <điều kiện> và
của các câu lệnh sau?
a) While a>b do a:=a-b;
b) While x<>2 do x:= x+1;
c) While n<=10 do begin x:= x+5; n:=n+1;end;
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Bài tập 2: Hãy chỉ ra lỗi trong các câu lệnh sau
a) While x:= 10 do x:= x+5;
b) While x =10 do x = x+5;
c) While x:=10 do x:= x+5; n:=n+1;
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Bài tập 3: Sau khi thực hiện đoạn chương trình sau
giá trị của i bằng bao nhiêu?
i:=1;
While i<6 do i:=i+1;
Đáp án: i= 6
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Dặn Dò:
- Về nhà học bài và làm các bài tập 1, 2, 5 sgk(71)
- Xem trước mục 3.
B1: Khởi tạo S=0; N=0;
B2: Nếu S<= 1000 thì thực hiện
tăng N thêm 1 đơn vị,
ngược lại chuyển tới B4
B3: Cộng N vào S => sang B2
B4: In kết quả: N là số tự nhiên nhỏ nhất sao cho S>1000, Tổng S và kết thúc
S:=0; N:=0;
WHILE S<=1000 DO
Begin
N:=N+1;
S:=S+N;
END;
Writeln(`Số N nhỏ nhất để S>1000`, N)
Writeln(` Tổng đầu tiên >1000`,S);
Thuật toán
Chương trình
Ví dụ 1 :
cho đến khi S>1000. Cho biết N
Tính tổng
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
VD 4: 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)
2. Ví dụ về lệnh lặp với số lần chưa biết trước:
Begin
begin
end;
End.
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
VD 5:
Để viết chương trình tính tổng:
2. Ví dụ về lệnh lặp với số lần chưa biết trước:
Begin
begin
end;
End.
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Baøi 8:
sử dụng for…do:
sử dụng while…do
T:=0;
for i:=1 to 100 do T:=T+1/i;
writeln(T);
T:=0;
i:=1;
while i<=100 do
begin T:=T+1/i; i:=i+1 end;
writeln(T);
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Biến đếm là i;
Giá trị đầu là 1, giá trị cuối là 100
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
3. Lặp vô hạn - lỗi lập trình cần tránh:
Ví dụ :
Var
a:integer ;
Begin
a:=5;
While a< 6 do
Write(` Chuong trinh chay mai khong thoat duoc`);
End.
Lưu ý: Khi viết chương trình với câu lệnh lặp, điều kiện phải được thay đổi để chương trình không gặp lỗi lặp vô hạn.
Học sinh thảo luận
BÀI TẬP
Câu 1
Câu 2
Câu 3
Câu 4
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
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 ;

Câu 2: Hãy chỉ ra lỗi trong các câu lệnh sau đây?
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

In ra các số từ 1 đến 9

In ra các số từ 1 đến 10

In ra các số 1

Không phương án nào đúng.
Câu 3: Đoạn lệnh sau đây cho kết quả là gì?

S:=1; While s < 10 do
Begin writeln(s); s:=s+1; end;
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
B. 10 vòng lặp, S=5

D. 12 vòng lặp, S=4
B. 10 vòng lặp, S=5
A. 9 vòng lặp, S=5.5
C. 11 vòng lặp, S=4.5
SAI RỒI!
SAI RỒI!
SAI RỒI!
35
Câu 4: Thuật toán sau thực hiện bao nhiêu vòng lặp? Khi kết thúc, giá trị của S bằng bao nhiêu?

- Bước 1: S ? 10, x ? 0.5.
- Bước 2: Nếu S ? 5.2 chuy?n t?i bu?c 4.
- Bu?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.
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
- 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.
GHI NHỚ
- 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 ;
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
DẶN DÒ
- 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 3 Sgk trang 71.
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Trần Thị Thu Trang
Dung lượng: | Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)