Khi một nhóm lệnh được lặp đi lặp lại một số lần xác định trong
chương trình thì có thể thay cả một nhóm lệnh đó bằng một lệnh lặp có bước lặp
xác định,số bước lặp được xác đinh bằng một biến điều khiển (control variable)
có-kiểu đếm được. Lệnh này có thể có 2 dạng tuỳ thuộc sự thay đổi giá trị của
biến điều khiển là tăng hay giảm như sau:
FOR Tên biến
điểu khiển := Giá trị đầu TO Giá trị cuối DO Lệnh cần lặp;
hoặc
FOR Tên biến
diều khiển:=Gỉá trị đầu DOWNTO Giá trị cuối DO Lệnh cần lặp;
Trong đó sau DO chỉ có thể là một lệnh (đơn giản hay lệnh ghép của một
nhóm lệnh). Bắt đầu lệnh lặp này biến điều khiển nhận giá trị đầu. Mỗi khi lệnh
sau DO được thực hiện là đã qua một lần lặp và biến điều khiển nhận giá trị
tiếp theo nếu làdạng FOR…TO…DO (hay nhận giá trị ngay trước nó nếu là dạng
FOR…DOWNTO…DO). Lệnh kết thúc sau khi lần lập cuối cùng được thực hiện khi mà
biến điều khiển nhận giá trị cuối. Như vậy số giá trị từ giá trị đầu đến giá
trị cuối của biến điều khiển kiểu đếm được này sẽ xác định số-lần lập của lệnh
sau DO phải thực hiện và số giá trị này là xác định.
Một vài nhận
xét:
- Hai
chương trình trên về cơ bản là giống nhau, chỉ khác một dùng FOR tiến chương
trình còn lại dùng FOR lùi.
- Trong
chương trình 1 hoàn toàn có thể gán h:=1/n; thay cho việc gán h:=0; và khi đó
giá trị đầu của biến điều khiển sẽ là n-1 chứ không còn là n nữa.
- Việc nhập
giá trị cho biến n ở chương trình 1 có thông báo nên dễ nhập hơn ở chương trình
2 phải nhập “mò” nghĩa là người chạy chương trình phải biết lúc đó chương trình
đang chờ nhập giá trị cho biến n mà không có thống báo.
- Giá trị
của tổng h ở chương trình 1 sẽ được đưa ra dưới dạng không có qui cách nên sẽ
khó nhìn hơn ở chương trình 2 giá trị h được viết trên 12 vị trí trong đó có 10
vị trí sau dấu phẩy.
- Trong
chương trình 2 lệnh lặp ngoài việc tính h còn đưa ra màn hình biểu thức tính h
từ số hạng thứ 1 đến số hạng thứ n nên phải được bao bằng BEGIN và END, còn ở
chương trình 1 chỉ có một lệnh tính tổng nên không cần dùng lệnh hợp thành.
Đọc thêm tại: