Цикл while достаточно прост. Записывается обычная циклическая конструкция, как это было продемонстрировано в предыдущем разделе, а впереди нее - ключевое слово ``while'' и условие. Выполнение инструкций внутри цикла while повторяется до тех пор, пока условие остается истинным. Ниже приведен пример цикла, который выводит N и увеличивает его на единицу, пока N остается меньше 20.
while N < 20 loop Put(N); N := N + 1; end loop;
Цикл for выглядит очень похоже, и начинается с ключевого слова ``for''. Сначала локальному параметру цикла присваивается нижнее граничное значение. Затем циклически проверяется, меньше ли этот парметр верхнего граничного значения, и, если это так, выполняется последовательность инструкций, и значение параметра увеличивается на единицу. Ниже приведен пример цикла, котрый выводит "Hello" 20 раз:
for Count in 1 .. 20 loop Put_Line("Hello"); end loop;
Есть ключевые моменты относительно циклов for , о которых стоит упомянуть:
Как в цикле ``while'', так и в ``for'', перед каждой итерацией выполняется проверка условия. Это значит, что цикл может выполниться "ноль" раз, если условие изначально ложно. Это - западня для начинающих программистов на Ada. Конструкция
for J in 10 .. 1 loop
Конструкция
for J in reverse 10 .. 1 loopтакже выполняется ноль раз; в Ada 10 .. 1 считается пустым списком, а изменение порядка выполнения ничего не меняет. Вероятно, вместо этого необходимо записать:
for J in reverse 1 .. 10 loop
Если необходимо повторить что-то ровно 10 раз, какая схема итераций подходит лучше всего?
Перейти к предыдущему разделу | Перейти к следующему разделу | Вернуться к содержанию Урока 5 |
---|
David A. Wheeler (dwheeler@ida.org)
Исходная копия этого документа находится по адресу
"http://www.adahome.com/Tutorials/Lovelace/s5sf.htm".
Исходная копия перевода размещена на сайте http://www.ada-ru.org
Перевод: Юрий Королев
Общая редакция перевода: Г.Ю. Сисюк