Bài 8: Lặp với số lần chưa biết trước
Bài tập cuối bài.
Bài 1 trang 70 sgk Tin học lớp 8: Nêu một vài ví dụ về hoạt động lặp với số lần chưa biết trước.
Lời giải:
- Luyện chữ cho đến khi chữ đẹp.
- Thảo luận cho đến khi quyết định được địa điểm đi chơi.
- Chạy bộ cho đến khi chạy hết con đường.
Bài 2 trang 70 sgk Tin học lớp 8: Hãy phát biểu sự khác biệt giữa câu lệnh lặp với số lần lặp cho trước và câu lệnh lặp với số lần lặp chưa biết trước.
Lời giải:
Lặp với số lần biết trước Lặp với số lần chưa biết trước Chỉ thị Máy tính thực hiện 1 hay 1
nhóm lệnh với số lần lặp biết trước
Máy tính thực hiện 1 hay 1 nhóm lệnh với số lần lặp chưa biết trước
Điều kiện 1 giá trị của 1 biến đếm có giá trị nguyên
Có thể kiểm tra của 1 giá trị thực hay một điều kiện tổng quát khác
Bài 3 trang 70 sgk Tin học lớp 8: Hãy tìm hiểu các thuật toán sau đây và cho biết khi thực hiện thuật toán, máy tính sẽ 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? Viết chương trình Pascal thể hiện các thuật toán đó.
a) 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.
b) Thuật toán 2
Bước 1. S ←10, n ← 0.
Bước 2. Nếu S ≥ 10, chuyển tới bước 4.
Bước 3. n ← n+3, S ← S-n và quay lại bước 2.
Bước 4. Thông báo S và kết thúc thuật toán.
Lời giải:
a)
- Thuật toán có 10 vòng lặp, kết quả giá trị S=5.
- Chương trình:
b)
- Thuật toán có 0 vòng lặp vì điều kiện lặp không thỏa mãn, kết quả giá trị S=10.
- Chương trình:
Bài 4 trang 70 sgk Tin học lớp 8: Hãy tìm hiểu mỗi đoạn chương trình Pascal sau đây và cho biết với đoạn lệnh đó chương trình thực hiện bao nhiêu vòng lặp.
Hãy rút ra nhận xét của em.
a)
b)
Lời giải:
a)
Chương trình thực hiện 10 vòng lặp.
b)
Chương trình thực hiện lặp vô hạn vì S luôn nhỏ hơn 10.
Nhận xét: ở câu b, thiếu đoạn begin …end; nên lệnh lặp chỉ thực hiện n tăng thêm 1, còn S chỉ tăng 1 và không lặp nên xuất hiện lỗi lặp vô hạn.
Bài 5 trang 70 sgk Tin học lớp 8: Hãy chỉ ra lỗi trong các câu lệnh 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 ; Lời giải:
a) Câu lệnh “While x:=10…” sửa thành “While x=10 …”.
b) Sau “do” phải viết x:= x+5;
c) Thêm đoạn begin … end; gồm 2 lệnh n:=n+1; và s:=s+n; để tránh vòng lặp vô hạn.