Показать сообщение отдельно
  #5  
Старый 17.10.2011, 11:15
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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) стоит проверка не на больше, а на меньше.
Ответить с цитированием