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.
a)
- 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.
a)
- 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)
-không thực hiện lặp do điều kiện thoát lặp là s>=10 mà ban đầu s=10
-kết thúc,s=10
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.