Цитата:
Сообщение от afagafa
сабж for to do, while, cashe объяснит по пальцам
|
1 цикл for. может быть двух вариантов - с увеличением и с уменьшением.
например
for переменная := выражение1 to выражение2 do оператор-тела-цикла ;
во первых
переменная должна быть локальной переменной той процедуры, где используется оператор цикла.
во вторых, переменная должна быть перечислимого типа - то есть целого(и всяких производных от него - int, longint, int64, byte, short и т.п.), char и boolean. Строки, вещественные типы не допускаются.
в третьих,
выражение1 и
выражение2 вычисляются
один раз перед выполнением оператора цикла. Если внутри цикла происходит что-нибудь изменяющее значение
выражения2, то
оператор-тела-цикла выполнится всё равно столько раз, сколько было задано в самом начале.
в четвёртых, значение
переменной после выполнения цикла - неопределено.
Работает так
a)Вычисляются
выражение1 и
выражение2.
b)
Переменной присваивается
выражение1
c)если значение
переменной больше значения
выражения2, то перейти к пункту g)
d) выполнить
оператор-тела-цикла. Если внутри встретится оператор
break, то переходим к пункту g); если встретится оператор
continue, то сразу переходим у пункту e)
e) увеличить значение
переменной на 1
f) перейти к пункту c)
g)закончить выполнение оператора цикла
Повторяю ещё раз, значение
переменной после выполнения цикла - неопределено.
Если в операторе вместо
toстоит
downto, то в пункте e) происходит не увеличение, а уменьшение, и соответственно в пункте c) стоит проверка не на больше, а на меньше.