Phương án chuyển: đầu tiên ta cho biến đếm có giá trị bằng giá trị đầu, điều kiện là biến đếm <= giá trị cuối ở vòng lặp while, và trong câu lệnh ở vòng lặp while có câu lệnh cuối là biến đếm:=biến đếm+1.
Cấu trúc for:
for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do câu lệnh>;
1/ Cách chuyển đổi từ For – do sang While – do:
– Câu lệnh For – do:
+ Dạng tiến:
For <biến điếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
+ Dạng lùi:
For <biến điếm>:= <giá trị cuối> downto <giá trị cuối> do <câu lệnh>;
– Câu lệnh While – do:
While <điều kiện> do <câu lệnh>;
– Chuyển For – do thành While – do:
+ Cách 1:
<Biến đếm> := <giá trị đầu>;
While (<Biến đếm> <= <giá trị cuối>) do
Begin
<câu lệnh>;
<tăng biến đếm 1 đơn vị>;
End;
+ Cách 2:
<Biến đếm> := <giá trị cuối>;
While (<Biến đếm> >= <giá trị đầu>) do
Begin
<câu lệnh>;
<giảm biến đếm 1 đơn vị>;
End;
2/ Ví dụ minh họa:
a/ Ví dụ 1: Tính và đưa ra tổng các số từ 1 đến n? (n là số nguyên dương được nhập vào từ bàn phím)
Sử dụng For – do:
Var i, n: integer;
s: word;
Begin
Readln(n);
For i:=1 to n do s:= s+i;
Write(s);
End.
Chuyển thành While – do:
+ Dạng 1:
Var i, n: integer;
s: word;
Begin
Readln(n);
i:=1;
While (i <= n) do
Begin
s:= s+i;
i:=i+1;
end;
Write(s);
End.
+ Dạng 2:
Var i, n: integer;
s: word;
Begin
Readln(n);
i:=n;
While (i >= 1) do
Begin
s:= s+i;
i:=i-1;
end;
Write(s);
End.
b/ Ví dụ 2: Lập trình để giải bài toán cổ sau:
“Vừa gà vừa chó.
Bó lại cho tròn.
Ba mươi sáu con,
Một trăm chân chẵn.
Hỏi có bao nhiêu con mỗi loại?”
Sử dụng For – do:
Var ga: byte;
Begin
For ga:=1 to 24 do
If (2*ga + (100-ga)*4 = 100) then
Write(‘so ga la:’,ga,’ so cho la:’, 36-ga);
End.
Chuyển thành While – do:
+ Dạng 1:
Var ga: byte;
Begin
ga:=1;
While (i<= 24) do
Begin
If (2*ga + (100-ga)*4 = 100) then
Write(‘so ga la:’,ga,’ so cho la:’, 36-ga);
ga:=ga+1;
End;
End.
+ Dạng 2:
Var ga: byte;
Begin
ga:=24;
While (i>=1) do
Begin
If (2*ga + (100-ga)*4 = 100) then
Write(‘so ga la:’,ga,’ so cho la:’, 36-ga);
ga:=ga-1;
End;
End.
hơi lâu nhóa
Phương án chuyển: đầu tiên ta cho biến đếm có giá trị bằng giá trị đầu, điều kiện là biến đếm <= giá trị cuối ở vòng lặp while, và trong câu lệnh ở vòng lặp while có câu lệnh cuối là biến đếm:=biến đếm+1.
Cấu trúc for:
for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do câu lệnh>;
Cấu trúc while:
while <điều kiện> do <câu lệnh>;
Chuyển:
<biến đếm>:=<giá trị đầu>;
while <biến đếm> <= <giá trị cuối> do
begin
<câu lệnh>;
<biến đếm>:=<biến đếm>+1;
end;