Bài 8. Lặp với số lần chưa biết trước
Chia sẻ bởi Lê Khánh Nam |
Ngày 24/10/2018 |
40
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 Cũ
- Hãy nêu cú pháp của câu lệnh lặp với số lần biết trước ?
Trả lời:
FOR: = TO DO ;
Trong đó, For, to, do là các từ khóa, biến đếm là biến kiểu nguyên, giá trị đầu và giá trị cuối là các giá trị nguyên.
Bài toán: tính tổng sau:
A= 1+2+3+…100
Thuật toán:
B1: S 0, n 0.
B2: n n + 1; Ngược lại chuyển tới B4.
B3: Nếu n <= 100 thì S S + n và quay lại B2.
B4: xuất kết quả và Kết thúc thuật toán.
Số lần lặp là 100
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Bài 8:
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:
a. Ví dụ 1: SGK
Một ngày chủ nhật, bạn Long gọi điện cho Trang.
Lần đầu không có ai nhấc máy!
Long quyết định gọi thêm 2 lần nữa
Long lặp lại hoạt động gọi điện mấy lần?
Bài 8:
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:
a. Ví dụ 1: SGK
Một ngày khác, Long quyết định cứ 10 phút gọi điện cho Trang 1 lần .
- Cho đến khi có người nhấc máy!
Các em có biết Long gọi điện cho Trang mấy lần hay không?
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
b. Ví dụ 2: SGK
1. Các hoạt động lặp với số lần chưa biết trước:
Nếu cộng lần lượt n số tự nhiên đầu tiên (n = 1, 2, 3,...), ta sẽ được các kết quả:
T1 =1
T2 =1 + 2
T3 =1 + 2 + 3
.... tăng dần.
Bài 8:
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:
b. Ví dụ 2: SGK
? Cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?
Trả lời: Không biết trước.
? Trong trường hợp này, để quyết định thực hiện phép cộng với số tiếp theo hay dừng, trong từng bước cần phải kiểm tra điều kiện gì?
Trả lời: Kiểm tra tổng đã lớn hơn 1000 hay chưa.
Bài 8:
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:
b. Ví dụ 2: SGK
Kí hiệu S là tổng cần tìm và ta có thuật toán như sau:
B1: S 0, n 0.
B2: Nếu S <= 1000, n n + 1; Ngược lại chuyển tới B4.
B3: S S + n và quay lại B2.
B4: 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.
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Bây giờ chúng ta sẽ chạy tay thử chương trình với điều kiện là S <= 10.
n = 6
S = 10+5 = 15
n = 5
lần 5
S = 6+4 = 10
n = 4
lần 4
S = 3+3 = 6
n = 3
lần 3
S = 1+2 = 3
n = 2
lần 2
S = 0+1 = 1
n = 1
lần 1
S = 0
n = 0
n n + 1
S S + n
Bài 8:
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:
Ta có sơ đồ hoạt động sau:
Bước 1: Kiểm tra điều kiện;
Bước 2:. Nếu điều kiện ĐÚNG, thực hiện câu lệnh và quay lại bước 1. 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.
Bài 8:
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:
* Cú pháp:
While <điều kiện> do;
Trong đó:
- Điều kiện thường là 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:
1. Kiểm tra điều kiện.
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 sẽ 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.
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. Tính tổng số tự nhiên từ 1 đến 20
B. Nhập các số nguyên từ phím cho đến khi đủ 50 số.
C. Tính tổng các số tự nhiên cho đến khi tổng là nhỏ nhất và lớn hơn 50
D. Mỗi ngày học bài hai lần.
C
Củng Cố
Câu 2: Trong các câu sau đây câu lệnh nào sai và hãy sửa lại cho đúng:
A. x:= 10; While X:= 10 do x := x+5;
B. s:=0; n:=0 ;While s<= 10 do
n:= n+1; s:=s+n;
C. x = 5 while x = 5 do x:= x+30;
X:= 10
n:= n+1; s:=s+n;
x = 5
A. x:= 10; While X= 10 do x := x+5;
B. s:=0; n:=0 ;While s<= 10 do
Begin n:= n+1; s:=s+n; end;
C. x := 5 while x = 5 do x:= x+30;
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (tt)
Bài 8:
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:
* Ví dụ 3: SGK
Program vd3;
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.
Điều kiện
Câu lệnh
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Bây giờ chúng ta sẽ chạy tay thử chương trình với điều kiện sai_so = 0.003
x = 1/4
n = 4
x = 1/3
n = 3
x = 1/2
n = 2
x = 1
n = 1
n := n + 1
x := 1/n
Bài 8:
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:
* Ví dụ 4: Tính tổng S = 1+2+3+.... > 1000
S 0
S S+1
S S+2
S S+3
...... Tổng S tăng dần
? Vậy cần cộng bao nhiêu số tự nhiên để tổng S > 1000
? Thay n=1, 2, 3,.... Thay n bằng 1 lệnh S S+ ?
? S S+n lặp lại bao nhiêu lần
? Ta sử dụng câu lệnh nào để giải bài toán
? Điều kiện và câu lệnh trong câu lệnh While..do.. là gì
Bài 8:
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:
* Ví dụ 4: SGK
Program vd4;
Var s, n: integer;
Begin
S:=0; n:=1;
while S<=1000 do begin S:=S+n; n:=n+1; end;
writeln (`so n nho nhat de tong > 1000 la`, n);
writeln(`Tong dau tien > 1000 la `,S);
readln
End.
Bài 8:
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:
* Ví dụ 5: Tính tổng T = 1+1/2+1/3+.... +1/100
T 0
T T+1/1
T T+1/2
......
T T+1/100
? Để tính được tổng T cần thực hiện bao nhiêu lệnh?
? Thay i=1, 2, 3,....,100
Thay i bằng 1 lệnh T T +1/i
Bài 8:
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:
* Ví dụ 5: Tính tổng T = 1+1/2+1/3+.... +1/100
? Đây là bài toán lặp với số lần biết trước hay chưa biết trước
? Hãy cho biết cú pháp của câu lệnh lặp với số lần biết trước.
? Vậy biến đếm, giá trị đầu, giá trị cuối và câu lệnh trong chương trình này là gì?
Bài 8:
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:
* Ví dụ 5: SGK
Program vd5_1;
Uses crt;
Var i: integer; T: real;
Begin
clrscr;
T := 0;
For i := 1 to 100 do
T := T + 1/i;
writeln(T);
readln;
End.
Program vd5_2;
Uses crt;
Var i: integer; T: real;
Begin
clrscr;
T := 0; i := 1;
While i<=100 do
begin
T := T + 1/i;
i := i +1
end;
writeln(T);
readln;
End.
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
3. Lặp vô hạn lần – Lỗi lập trình cần tránh:
* Ví dụ: SGK
Var a:integer;
Begin
a := 5;
while a<6 do writeln(‘a’);
End.
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
3. Lặp vô hạn lần – Lỗi lập trình cần tránh:
* Ví dụ: SGK
* Lưu ý:
- Khi thực hiện vòng lặp While…do... cần xác định được điều kiện trong câu lệnh sau một số lần sẽ chuyển từ đúng sang sai để thoát khỏi vòng lặp. Không rơi vào những “Vòng lặp vô tận”
- Trong vòng lặp While...do điều kiện được kiểm tra trước khi thực hiện câu lệnh, do đó có thể có trường hợp câu lệnh không được thực hiện một lần nào.
Hướng dẫn về nhà
- Ôn tập bài học hôm nay
- Trả lời một số câu hỏi trang 71sgk
- Chuẩn bị bài tiếp theo.
- Hãy nêu cú pháp của câu lệnh lặp với số lần biết trước ?
Trả lời:
FOR
Trong đó, For, to, do là các từ khóa, biến đếm là biến kiểu nguyên, giá trị đầu và giá trị cuối là các giá trị nguyên.
Bài toán: tính tổng sau:
A= 1+2+3+…100
Thuật toán:
B1: S 0, n 0.
B2: n n + 1; Ngược lại chuyển tới B4.
B3: Nếu n <= 100 thì S S + n và quay lại B2.
B4: xuất kết quả và Kết thúc thuật toán.
Số lần lặp là 100
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Bài 8:
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:
a. Ví dụ 1: SGK
Một ngày chủ nhật, bạn Long gọi điện cho Trang.
Lần đầu không có ai nhấc máy!
Long quyết định gọi thêm 2 lần nữa
Long lặp lại hoạt động gọi điện mấy lần?
Bài 8:
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:
a. Ví dụ 1: SGK
Một ngày khác, Long quyết định cứ 10 phút gọi điện cho Trang 1 lần .
- Cho đến khi có người nhấc máy!
Các em có biết Long gọi điện cho Trang mấy lần hay không?
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
b. Ví dụ 2: SGK
1. Các hoạt động lặp với số lần chưa biết trước:
Nếu cộng lần lượt n số tự nhiên đầu tiên (n = 1, 2, 3,...), ta sẽ được các kết quả:
T1 =1
T2 =1 + 2
T3 =1 + 2 + 3
.... tăng dần.
Bài 8:
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:
b. Ví dụ 2: SGK
? Cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?
Trả lời: Không biết trước.
? Trong trường hợp này, để quyết định thực hiện phép cộng với số tiếp theo hay dừng, trong từng bước cần phải kiểm tra điều kiện gì?
Trả lời: Kiểm tra tổng đã lớn hơn 1000 hay chưa.
Bài 8:
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:
b. Ví dụ 2: SGK
Kí hiệu S là tổng cần tìm và ta có thuật toán như sau:
B1: S 0, n 0.
B2: Nếu S <= 1000, n n + 1; Ngược lại chuyển tới B4.
B3: S S + n và quay lại B2.
B4: 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.
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Bây giờ chúng ta sẽ chạy tay thử chương trình với điều kiện là S <= 10.
n = 6
S = 10+5 = 15
n = 5
lần 5
S = 6+4 = 10
n = 4
lần 4
S = 3+3 = 6
n = 3
lần 3
S = 1+2 = 3
n = 2
lần 2
S = 0+1 = 1
n = 1
lần 1
S = 0
n = 0
n n + 1
S S + n
Bài 8:
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:
Ta có sơ đồ hoạt động sau:
Bước 1: Kiểm tra điều kiện;
Bước 2:. Nếu điều kiện ĐÚNG, thực hiện câu lệnh và quay lại bước 1. 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.
Bài 8:
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:
* Cú pháp:
While <điều kiện> do
Trong đó:
- Điều kiện thường là 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:
1. Kiểm tra điều kiện.
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 sẽ 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.
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. Tính tổng số tự nhiên từ 1 đến 20
B. Nhập các số nguyên từ phím cho đến khi đủ 50 số.
C. Tính tổng các số tự nhiên cho đến khi tổng là nhỏ nhất và lớn hơn 50
D. Mỗi ngày học bài hai lần.
C
Củng Cố
Câu 2: Trong các câu sau đây câu lệnh nào sai và hãy sửa lại cho đúng:
A. x:= 10; While X:= 10 do x := x+5;
B. s:=0; n:=0 ;While s<= 10 do
n:= n+1; s:=s+n;
C. x = 5 while x = 5 do x:= x+30;
X:= 10
n:= n+1; s:=s+n;
x = 5
A. x:= 10; While X= 10 do x := x+5;
B. s:=0; n:=0 ;While s<= 10 do
Begin n:= n+1; s:=s+n; end;
C. x := 5 while x = 5 do x:= x+30;
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (tt)
Bài 8:
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:
* Ví dụ 3: SGK
Program vd3;
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.
Điều kiện
Câu lệnh
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Bây giờ chúng ta sẽ chạy tay thử chương trình với điều kiện sai_so = 0.003
x = 1/4
n = 4
x = 1/3
n = 3
x = 1/2
n = 2
x = 1
n = 1
n := n + 1
x := 1/n
Bài 8:
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:
* Ví dụ 4: Tính tổng S = 1+2+3+.... > 1000
S 0
S S+1
S S+2
S S+3
...... Tổng S tăng dần
? Vậy cần cộng bao nhiêu số tự nhiên để tổng S > 1000
? Thay n=1, 2, 3,.... Thay n bằng 1 lệnh S S+ ?
? S S+n lặp lại bao nhiêu lần
? Ta sử dụng câu lệnh nào để giải bài toán
? Điều kiện và câu lệnh trong câu lệnh While..do.. là gì
Bài 8:
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:
* Ví dụ 4: SGK
Program vd4;
Var s, n: integer;
Begin
S:=0; n:=1;
while S<=1000 do begin S:=S+n; n:=n+1; end;
writeln (`so n nho nhat de tong > 1000 la`, n);
writeln(`Tong dau tien > 1000 la `,S);
readln
End.
Bài 8:
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:
* Ví dụ 5: Tính tổng T = 1+1/2+1/3+.... +1/100
T 0
T T+1/1
T T+1/2
......
T T+1/100
? Để tính được tổng T cần thực hiện bao nhiêu lệnh?
? Thay i=1, 2, 3,....,100
Thay i bằng 1 lệnh T T +1/i
Bài 8:
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:
* Ví dụ 5: Tính tổng T = 1+1/2+1/3+.... +1/100
? Đây là bài toán lặp với số lần biết trước hay chưa biết trước
? Hãy cho biết cú pháp của câu lệnh lặp với số lần biết trước.
? Vậy biến đếm, giá trị đầu, giá trị cuối và câu lệnh trong chương trình này là gì?
Bài 8:
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:
* Ví dụ 5: SGK
Program vd5_1;
Uses crt;
Var i: integer; T: real;
Begin
clrscr;
T := 0;
For i := 1 to 100 do
T := T + 1/i;
writeln(T);
readln;
End.
Program vd5_2;
Uses crt;
Var i: integer; T: real;
Begin
clrscr;
T := 0; i := 1;
While i<=100 do
begin
T := T + 1/i;
i := i +1
end;
writeln(T);
readln;
End.
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
3. Lặp vô hạn lần – Lỗi lập trình cần tránh:
* Ví dụ: SGK
Var a:integer;
Begin
a := 5;
while a<6 do writeln(‘a’);
End.
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
3. Lặp vô hạn lần – Lỗi lập trình cần tránh:
* Ví dụ: SGK
* Lưu ý:
- Khi thực hiện vòng lặp While…do... cần xác định được điều kiện trong câu lệnh sau một số lần sẽ chuyển từ đúng sang sai để thoát khỏi vòng lặp. Không rơi vào những “Vòng lặp vô tận”
- Trong vòng lặp While...do điều kiện được kiểm tra trước khi thực hiện câu lệnh, do đó có thể có trường hợp câu lệnh không được thực hiện một lần nào.
Hướng dẫn về nhà
- Ôn tập bài học hôm nay
- Trả lời một số câu hỏi trang 71sgk
- Chuẩn bị bài tiếp theo.
* 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ẻ: Lê Khánh Nam
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)