Учебно-методический комплекс дисциплины для обучающегося «Языки программирования» для специальности 5В010900 Математика



бет29/142
Дата03.01.2022
өлшемі1.33 Mb.
#450516
түріУчебно-методический комплекс
1   ...   25   26   27   28   29   30   31   32   ...   142
УМКДО -ЯзыкиПрограммирования

for-to и for-downto

В случае когда количество однотипных действий заранее известно (например, необходимо обработать все компоненты массива), стоит отдать предпочтение циклу с параметром (for).


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

Общий вид оператора for-to:

for i:= first to last do <оператор>;

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

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



  1. вычисляется значение верхней границы last;

  2. переменной i присваивается значение нижней границы first;

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

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

  5. значение переменной i увеличивается на единицу;

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

Из этой последовательности действий можно понять, какое количество раз отработает цикл for-to в каждом из трех случаев:

  • first < last : цикл будет работать last-first+1 раз;

  • first = last : цикл отработает ровно один раз;

  • first > last : цикл вообще не будет работать.

После окончания работы цикла переменная-счетчик может потерять свое значение. Таким образом, нельзя с уверенностью утверждать, что после того, как цикл завершил работу, обязательно окажется, что i=last+1. Поэтому попытки использовать переменную-счетчик сразу после завершения цикла (без присваивания ей какого-либо нового значения) могут привести к непредсказуемому поведению программы при отладке.

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

Существует аналогичный вариант цикла 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 раз.

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


Достарыңызбен бөлісу:
1   ...   25   26   27   28   29   30   31   32   ...   142




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет