Bài 8. Lặp với số lần chưa biết trước
Chia sẻ bởi Võ Huỳnh Xuân Vũ |
Ngày 24/10/2018 |
44
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:
CHÀO MỪNG CÁC BẠN
ĐẾN VỚI BUỔI HỌC HÔM NAY
BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
1. Các hoạt động với số lần chưa biết trước.
Xét ví dụ 1:
Long quyết định gọi cho Trang thêm 2 lần nữa, nếu vẫn không có ai nhấc máy thì không có ai ở nhà.
Lặp lại với số lần biết trước là 2 lần
Long quyết định cứ 10 phút gọi 1 lần đến khi có người nhấc máy
Lặp với số lần chưa biết trước
Vận động viên cử tạ đẩy tạ lên, xuống cho đến khi không còn sức.
Học bài cho đến khi thuộc bài.
Nhặt từng cọng rau cho đến khi hết rau.
Vận động viên cầu lông đánh quả cầu qua lại cho đến khi quả cầu rơi xuống đất.
Hãy cho một số ví dụ thể hiện hoạt động lặp lại với số lần chưa biết trước ?
Ví dụ 2: Nếu cộng lần lượt n số tự nhiên đầu tiê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 nhỏ nhất lớn hơn 1000?
n
Các bước thuật toán:
Bước 1: S 0, n 1.
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 và n là số tự nhiên nhỏ nhất sao cho S > 1000. Kết thúc thuật toán
Xét ví dụ 2: Việc thực hiện phép cộng ở thuật toán trên được lặp lại với số lần chưa biết trước, phụ thuộc vào một điều kiện (S< 1000) và chỉ dừng 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;
Trong đó:
Điều kiện thường là một 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
2. Ví dụ về lệnh lặp với số lần chưa biết
Bước 1: Kiểm tra điều kiện.
Bước 2: Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lện lặp kết thúc. Nếu điều kiện đúng, thực hiện câu lệnh và quay lai bước 1.
Câu lệnh lặp này được thực hiện như sau:
Câu lệnh lặp while…do được thực hiện như thế nào?
Sơ đồ khối:
ĐIỀU KIỆN
CÂU LỆNH
ĐÚNG
SAI
Chương trình:
Ví dụ 3: Với giá trị nào của n thì 1/n <1.005 hoặc 1/n<0.003?
Thay sai_so = 0.002
Kết quả: n = 334
KQ: n=
Thay sai_so= 0.001
KQ: n=
501
1001
Tính tổng n số tự nhiên đầu tiên nhỏ nhất để tổng
S < 1000?
Ví dụ 4:
Chương trình:
Khi chạy chương trình này thì ta sẽ nhận được kết quả n=45 và tổng đầu tiên lớn hơn 1000 là 1034.
For…do
Ví dụ 5: viết chương trình tính tổng T=1+1/2+1/3+…+1/100
While…do
Hai chương trình trên cho cùng một kết quả giống nhau
Kết luận:
Trong chương trình lặp với số lần biết trước, chúng ta có thể sử dụng câu lệnh lặp while…do thay cho câu lệnh lặp for…do.
3. Lặp vô hạn lần–lỗi lập trình cần tránh
Chương trình mắc lỗi lặp vô hạn lần:
Var a:Integer;
Begin
a:=5;
While a < 6 do
Writeln(‘A’);
End.
Trong chương trình trên, giá trị của a luôn bằng 5, điều kiện luôn đúng (a<6) nên lệnh writeln (‘A’) luôn được thực hiện.
KQ
Lưu ý:
Khi thực hiện vòng lặp, điều kiện trong câu lệnh phải được thay đổi để sớm hay muộn giá trị của điều kiện được chuyển từ đúng sang sai. Chỉ như thế chương trình mới không rơi vào những vòng lặp vô tận.
BÀI TẬP:
CÂU 1: Câu lệnh nào sau đây là câu lệnh lặp với số lần chưa biết trước:
A. while…do…
B. for…do…
C. if…then…
D. Cả 3 câu trên đều sai.
BÀI TẬP
Câu 2: Câu lệnh while…do có cú pháp đúng nhất là:
A. While x>10 do x:=x+5;
B. While x>10 do begin x=x+5 end;
C. While x>10 do x=x+5
D. While x>10 do; x:=x+5;
BÀI HỌC HÔM NAY ĐÃ KẾT THÚC
CHÚC CÁC EM HỌC TỐT
ĐẾN VỚI BUỔI HỌC HÔM NAY
BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
1. Các hoạt động với số lần chưa biết trước.
Xét ví dụ 1:
Long quyết định gọi cho Trang thêm 2 lần nữa, nếu vẫn không có ai nhấc máy thì không có ai ở nhà.
Lặp lại với số lần biết trước là 2 lần
Long quyết định cứ 10 phút gọi 1 lần đến khi có người nhấc máy
Lặp với số lần chưa biết trước
Vận động viên cử tạ đẩy tạ lên, xuống cho đến khi không còn sức.
Học bài cho đến khi thuộc bài.
Nhặt từng cọng rau cho đến khi hết rau.
Vận động viên cầu lông đánh quả cầu qua lại cho đến khi quả cầu rơi xuống đất.
Hãy cho một số ví dụ thể hiện hoạt động lặp lại với số lần chưa biết trước ?
Ví dụ 2: Nếu cộng lần lượt n số tự nhiên đầu tiê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 nhỏ nhất lớn hơn 1000?
n
Các bước thuật toán:
Bước 1: S 0, n 1.
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 và n là số tự nhiên nhỏ nhất sao cho S > 1000. Kết thúc thuật toán
Xét ví dụ 2: Việc thực hiện phép cộng ở thuật toán trên được lặp lại với số lần chưa biết trước, phụ thuộc vào một điều kiện (S< 1000) và chỉ dừng 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
Trong đó:
Điều kiện thường là một 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
2. Ví dụ về lệnh lặp với số lần chưa biết
Bước 1: Kiểm tra điều kiện.
Bước 2: Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lện lặp kết thúc. Nếu điều kiện đúng, thực hiện câu lệnh và quay lai bước 1.
Câu lệnh lặp này được thực hiện như sau:
Câu lệnh lặp while…do được thực hiện như thế nào?
Sơ đồ khối:
ĐIỀU KIỆN
CÂU LỆNH
ĐÚNG
SAI
Chương trình:
Ví dụ 3: Với giá trị nào của n thì 1/n <1.005 hoặc 1/n<0.003?
Thay sai_so = 0.002
Kết quả: n = 334
KQ: n=
Thay sai_so= 0.001
KQ: n=
501
1001
Tính tổng n số tự nhiên đầu tiên nhỏ nhất để tổng
S < 1000?
Ví dụ 4:
Chương trình:
Khi chạy chương trình này thì ta sẽ nhận được kết quả n=45 và tổng đầu tiên lớn hơn 1000 là 1034.
For…do
Ví dụ 5: viết chương trình tính tổng T=1+1/2+1/3+…+1/100
While…do
Hai chương trình trên cho cùng một kết quả giống nhau
Kết luận:
Trong chương trình lặp với số lần biết trước, chúng ta có thể sử dụng câu lệnh lặp while…do thay cho câu lệnh lặp for…do.
3. Lặp vô hạn lần–lỗi lập trình cần tránh
Chương trình mắc lỗi lặp vô hạn lần:
Var a:Integer;
Begin
a:=5;
While a < 6 do
Writeln(‘A’);
End.
Trong chương trình trên, giá trị của a luôn bằng 5, điều kiện luôn đúng (a<6) nên lệnh writeln (‘A’) luôn được thực hiện.
KQ
Lưu ý:
Khi thực hiện vòng lặp, điều kiện trong câu lệnh phải được thay đổi để sớm hay muộn giá trị của điều kiện được chuyển từ đúng sang sai. Chỉ như thế chương trình mới không rơi vào những vòng lặp vô tận.
BÀI TẬP:
CÂU 1: Câu lệnh nào sau đây là câu lệnh lặp với số lần chưa biết trước:
A. while…do…
B. for…do…
C. if…then…
D. Cả 3 câu trên đều sai.
BÀI TẬP
Câu 2: Câu lệnh while…do có cú pháp đúng nhất là:
A. While x>10 do x:=x+5;
B. While x>10 do begin x=x+5 end;
C. While x>10 do x=x+5
D. While x>10 do; x:=x+5;
BÀI HỌC HÔM NAY ĐÃ KẾT THÚC
CHÚC CÁC EM HỌC TỐT
* 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ẻ: Võ Huỳnh Xuân Vũ
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)