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.
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.
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.
Thảo luận (3)Hướng dẫn giảiCâ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.
(Trả lời bởi Thời Sênh)
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ẽ 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 \(\leftarrow\) 10, x \(\leftarrow\) 0.5
Bước 2. Nếu S \(\leq\) 5.2, chuyển tới bước 4.
Bước 3. S \(\leftarrow\) 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 \(\leftarrow\) 10, n \(\leftarrow\) 0.
Bước 2. Nếu S ≥ 10, chuyển tới bước 4.
Bước 3. n \(\leftarrow\) n + 3, S \(\leftarrow\) S - n quay lại bước 2.
Bước 4. Thông báo S và kết thúc thuật toán.
Thảo luận (2)Hướng dẫn giảia)
- Máy thực hiện gồm 10 vòng lặp
- Khi kết thúc vòng lặp giá trị của S=5
- Chương trình :
Program hotrotinhoc;
var x,s:real;
begin
s:=10; x:=0.5;
while s>=5.2 do s:=s-x;
write(s:1:0);
readln
end.
b)
- Máy thực hiện gồm vô hạn vòng lặp
- Khi kết thúc vòng lặp giá trị của S không xác định
- Chương trình :
Program hotrotinhoc;
var n,s:byte;
begin
s:=10; n:=0;
while s<=10 do
begin
n:=n+3;
s:=s-n;
end;
write(s);
readln
end.
(Trả lời bởi Minh Lệ)
Hãy tìm hiểu các cụm câu lệnh sau đây và cho biết với các câu 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;
Thảo luận (1)Hướng dẫn giảia) Vòng lặp while thực hiện 5 vòng lặp:
Vòng thứ nhất s=0 => n=1, s=1;
Vòng thứ hai s=1 => n=2, s=3;
Vòng thứ ba s=3 => n=3, s=6;
Vòng thứ tư s=6 => n=4, s=10;
Vòng thứ năm s=10 => n=5, s=15 kết thúc vòng lặp.
=> Vòng while sẽ kết thúc khi giá trị của s thay đổi không đáp ứng điều kiện tiếp tục vòng.b) Vòng lặp while thực hiện vô hạn lần.
(Trả lời bởi Minh Lê)
=> Giá trị của s luôn thỏa mãn điều kiện tiếp tục vòng while vì trong vòng while không thấy sự thay đổi của biến s (s luôn bằng 0 bé hơn 10).
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;
Thảo luận (1)Hướng dẫn giảia) Thừa dấu hai chấm trong điều kiện;
b) Thiếu dấu hai chấm trong câu lệnh gán;
c) Thiếu các từ khóa begin và end trước và sau các lệnh n:=n+1; S:=S+n, do đó vòng lặp trở thành vô tận.
(Trả lời bởi Thảo Phương)