28624

Оператор цикла for

Доклад

Информатика, кибернетика и программирование

Прежде всего это оператор цикла с параметром for. Такой тип цикла обычно применяют в тех случаях когда количество возможных повторов известно заранее. Он имеет 2 варианта написания: один для цикла с приращением и другой для цикла с уменьшением: for параметр := выражение 1 to выражение 2 do тело цикла ; for параметр := выражение 1 downto выражение 2 do тело цикла ; В первом случае с использованием цикла forto при каждом проходе цикла называемом итерацией значение параметра увеличивается на 1 а во втором fordownto...

Русский

2013-08-20

14.7 KB

0 чел.

Оператор цикла for

Для написания практически любой программы, помимо операторов условия, требуются операторы цикла, и в Object Pascal, они, разумеется, есть. Прежде всего, это оператор цикла с параметром - for. Такой тип цикла обычно применяют в тех случаях, когда количество возможных повторов известно заранее. Он имеет 2 варианта написания: один - для цикла с приращением, и другой - для цикла с уменьшением:

for <параметр> := <выражение 1> to <выражение 2> do <тело цикла>; for <параметр> := <выражение 1> downto <выражение 2> do <тело цикла>;

В первом случае (с использованием цикла for-to) при каждом проходе цикла, называемом итерацией, значение параметра увеличивается на 1, а во втором (for-downto) - уменьшается на 1. При этом в качестве начального значения используется "выражение 1", а в качестве конечного - "выражение 2". Разумеется, если для цикла to значение первого выражения изначально будет больше значения второго, или наоборот, меньше (для цикла downto), то цикл не будет выполнен ни разу. Практическое применение циклов крайне разнообразно. Если привести наиболее общий пример из программирования, то цикл - идеальный способ заполнения массива. Например, если требуется организовать цикл для заполнения массива из 10 числовых значений последовательно возрастающими числами, то можно записать:

for i := 0 to 9 do MyArray[i]=i;

В данном случае элементам массива MyArray последовательно назначаются значения от 0 до 9.

ПРИМЕЧАНИЕ
Сами массивы будут рассмотрены несколько позже, в главе, посвященной структурным типам данных.

Теперь рассмотрим цикл for с отрицательным приращением на примере вычисления математического факториала (последовательное произведение всех целых чисел от 1 до самого числа). Для этого нам понадобится следующий цикл:

var num, rez: integer; ... rez := 1; for num := num downto 1 do rez := rez * num;

Здесь нам потребовалась небольшая подготовительная работа: определена переменная rez, в которой будет храниться вычисляемое значение, и ей присвоено значение 1. В качестве числа, для которого вычисляется факториал, выступает переменная num, она же используется для самого цикла в качестве счетчика. Поскольку нам надо будет прекратить выполнение цикла, после того, как счетчик (num) достигнет значения 1, то именно это значение и указано в качестве конечного условия.

В итоге, если переменной num присвоить значение 5, то после прохождения цикла переменная rez получит значение 120. Хотя в результате работы такого цикла получится выполнение как бы наоборот (т.е. не вместо 1*2*3*4*5, на самом деле выполняется 5*4*3*2*1), это никак не помешает получить верный результат.

Наконец, в качестве тела цикла, как и в случае с уже рассмотренными операторами, может использоваться составной оператор. Кроме того, циклы могут быть вложены один в другой, при этом важно лишь следить за тем, где заканчивается вложенный цикл и начинается внешний. Для этого полезно следить за правильным оформлением программы, в частности, использовать отступы, в качестве которых можно использовать либо знак табуляции, либо пробелы, в последнем случае их желательно ставить не менее 2 (листинг 4.2).

Листинг 4.2. Вложенные циклы и форматирование кода

for x := 5 to 10 do begin z := x; for y := 10 to 20 do begin z := z + x * y; writeln(z); end; // конец вложенного цикла writeln(x); end; // конец внешнего цикла

При использовании циклов с параметром важно помнить, что изменение значения параметра в теле цикла недопустимо.


 

А также другие работы, которые могут Вас заинтересовать

6644. Гепатолентикулярная дегенерация. Гепатоцеребральная дистрофия, болезнь Вильсона-Вестфаля-Коновалова 32.79 KB
  Гепатолентикулярная дегенерация Гепатолентикулярная дегенерация (гепатоцеребральная дистрофия, болезнь Вильсона-Вестфаля-Коновалова) - наследственное заболевание, характеризующееся поражением паренхиматозных органов, в первую очередь – гол...
6645. Хорея Гентингтона - хроническое прогрессирующее наследственно-дегенеративное заболевание 32.99 KB
  Хорея Гентингтона Хорея Гентингтона - хроническое прогрессирующее наследственно-дегенеративное заболевание, характеризующееся хореическим гиперкинезом и другими экстрапирамидными нарушениями, расстройствами психики и деменцией. Частота встречаемости...
6646. Нервно-мышечные заболевания. Х - сцепленные прогрессирующие мышечные дистрофии Дюшенна и Беккера 25.58 KB
  Нервно-мышечные заболевания Наследственные нервно-мышечные заболевания - гетерогенная группа болезней, в основе которых лежит генетически детерминированное поражение нервно-мышечного аппарата. Прогрессирующие мышечные дистрофии. Прогрессирующие мыше...
6647. Прогрессирующая мышечная дистрофия Эмери-Дрейфуса 19.07 KB
  Прогрессирующая мышечная дистрофия Эмери-Дрейфуса. Заболевание описано Дрейфусом в 1961 г. Наследуется по рецессивному, сцепленному с Х-хромосомой типу, реже по аутосомно-доминантному типу с локализацией дефекта на 1 хромосоме (1q11- q23). Первичный...
6648. Лице-лопаточно-плечевая прогрессирующая мышечная дистрофия (Ландузи-Дежерина) 19.57 KB
  Лице-лопаточно-плечевая прогрессирующая мышечная дистрофия (Ландузи-Дежерина) Заболевание описано Ландузи и Дежерином в 1884 г. Частота 3-4 на 100.000 населения. Наследуется по аутосомно-доминантному типу. До 20-30% случаев заболевания рассматривают...
6649. Конечностно-поясные прогрессирующие мышечные дистрофии 20.71 KB
  Конечностно-поясные прогрессирующие мышечные дистрофии Генетически гетерогенная группа заболеваний, объединенная общим клиническим симптомокомплексом - нарастающей слабостью и атрофией мышц преимущественно в проксимальных отделах конечностей. К...
6650. Спинальные амиотрофии 22.71 KB
  Спинальные амиотрофии Спинальные амиотрофии - одни из наиболее тяжело протекающих групп заболеваний детского и подросткового возраста. Выделяют три формы спинальных амиотрофий: форма Верднига-Гофмана (тип I), промежуточная форма (тип II) и форм...
6651. Невральные амиотрофии 21.94 KB
  Невральные амиотрофии Невральные амиотрофии - гетерогенная группа заболеваний, объединенная клинической картиной полиневропатии. Невральные амиотрофии на основании электрофизиологических критериев (ЭНМГ) разделяются на две группы: демиелинизирующие ...
6652. Пароксизмальные миоплегии 22.94 KB
  Пароксизмальные миоплегии Наследственные пароксизмальные миоплегии - группа заболеваний, объединенная общим клиническим синдромом, который проявляется внезапными приступами мышечной слабости. Пароксизмальные миоплегии относятся к группе болезней, св...