Đỗ Thị Lan Hương
Active member
- Xu
- 16,068
Các bạn có biết viết chương trình Pascal không? Để viết chương trình thuật toán trên Pascal cùng tìm hiểu qua bài 8: Lặp với số lần chưa biết trước nhé!
Bài 8: Lặp với số lần chưa biết trướcBài 1 (trang 66 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.
Trả lời:
- Tập đi cho đến khi biết đi.
- Tập nấu cho đến khi nấu ăn giỏi.
- Múc nước cho đến khi đầy thùng.
Bài 2 (trang 66 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.
Trả lời:
Câu lệnh lặp với số lần biết trước :
- Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần đã được xác định từ trước.
- Điều kiện là 1 giá trị của 1 biến đếm có giá trị nguyên
Câu lệnh lặp với số lần chưa biết trước :
- Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần lặp chưa biết trước.
- Điều kiện tổng quát hơn, có thể là kiểm tra của 1 giá trị có thực, cũng có thể là 1 điều kiện tổng quát khác.
Bài 3 (trang 66 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.
Trả lời:
a) Thuật toán 1:
- Kết quả thuật toán có 10 vòng lặp, giá trị S=5.
- Chương trình Pascal:
b) Thuật toán 2:
- Kết quả thuật toán có 0 vòng lặp do điều kiện vòng lặp không thỏa mãn, giá trị S=10.
- Chương trình Pascal:
Bài 4 (trang 67 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) S:=0; n:=0;
while S <= 10 do
begin n:= n+1; S:= S+n end;
b) S:= 0; n:= 0;
while S >=10 do
n:= n+1; S:=S+n;
Trả lời:
a) Chương trình thực hiện 10 vòng lặp.
b) Chương trình thực hiện vô hạn vòng lặp do giá trị của S luôn luôn nhỏ hơn 10.
Nhận xét: Cần chú ý về lỗi vòng lặp vô hạn. Ở phần b do thiếu đoạn begin end để đóng mở nên sau lệnh lặp chỉ thực hiện lệnh tăng n lên 1, còn lệnh tăng S lên 1 không thực hiện được. Do đó S luôn bằng 0 như ban đầu. Lỗi lặp vô hạn xuất hiện.
Hi vọng qua bài học này các bạn biết cách viết chương trình Pascal để giải được các bài toán khó.
Bài 8: Lặp với số lần chưa biết trước
Trả lời:
- Tập đi cho đến khi biết đi.
- Tập nấu cho đến khi nấu ăn giỏi.
- Múc nước cho đến khi đầy thùng.
Bài 2 (trang 66 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.
Trả lời:
Câu lệnh lặp với số lần biết trước :
- Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần đã được xác định từ trước.
- Điều kiện là 1 giá trị của 1 biến đếm có giá trị nguyên
Câu lệnh lặp với số lần chưa biết trước :
- Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần lặp chưa biết trước.
- Điều kiện tổng quát hơn, có thể là kiểm tra của 1 giá trị có thực, cũng có thể là 1 điều kiện tổng quát khác.
Bài 3 (trang 66 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.
Trả lời:
a) Thuật toán 1:
- Kết quả thuật toán có 10 vòng lặp, giá trị S=5.
- Chương trình Pascal:
b) Thuật toán 2:
- Kết quả thuật toán có 0 vòng lặp do điều kiện vòng lặp không thỏa mãn, giá trị S=10.
- Chương trình Pascal:
Bài 4 (trang 67 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) S:=0; n:=0;
while S <= 10 do
begin n:= n+1; S:= S+n end;
b) S:= 0; n:= 0;
while S >=10 do
n:= n+1; S:=S+n;
Trả lời:
a) Chương trình thực hiện 10 vòng lặp.
b) Chương trình thực hiện vô hạn vòng lặp do giá trị của S luôn luôn nhỏ hơn 10.
Nhận xét: Cần chú ý về lỗi vòng lặp vô hạn. Ở phần b do thiếu đoạn begin end để đóng mở nên sau lệnh lặp chỉ thực hiện lệnh tăng n lên 1, còn lệnh tăng S lên 1 không thực hiện được. Do đó S luôn bằng 0 như ban đầu. Lỗi lặp vô hạn xuất hiện.
Hi vọng qua bài học này các bạn biết cách viết chương trình Pascal để giải được các bài toán khó.
_Chúc các bạn học tốt!_