Декрементный цикл с параметром

Существует аналогичный вариант цикла for, который позволяет производить обработку не от меньшего к большему, а в противоположном направлении: for i:= first downto last do <оператор>;

 

Счетчик i (переменная), верхняя граница first (переменная, константа или выражение) и нижняя граница last (переменная, константа или выражение) должны иметь эквивалентные порядковые типы. Если тип нижней или верхней границы не эквивалентен типу счетчика, а лишь совместим с ним, то осуществляется неявное приведение типов.

Цикл for-downto работает следующим образом:

1. переменной i присваивается значение first;

2. производится проверка того, что i>=last;

3. если это так, то выполняется <оператор>;

4. значение переменной i уменьшается на единицу;

5. пункты 1-3 выполняются до тех пор, пока i не станет меньше, чем last; как только это произошло, выполнение цикла прекращается, а управление передается следующему за ним оператору.

Если при этом

· first < last, то цикл вообще не будет работать;

· first = last, то цикл отработает один раз;

· first > last, то цикл будет работать last-first+1 раз.

Замечание о неопределенности значения счетчика после окончания работы цикла справедливо и в этом случае.