ВУЗ:
Рис. 4.7. Операции управления циклом
псевдокода. Однако условие, задаваемое в инструкции while, – это условие продолжения цикла, а условие завершения – это
отрицание условия, заданного в инструкции while. Поэтому в инструкции while показанной на рис. 4.6, условие завершения
выглядит следующим образом:
(Искомое_Значение ≤ Проверяемое_Значение) или (больше нет не рассмотренных элементов)
Остальные две операции управления циклом гарантируют, что условие завершения обязательно возникнет. Операция
инициализации устанавливает начальное состояние, а операция модификации изменяет его в направлении достижения условия
завершения. Например, на рис. 4.6 операция инициализации выполняется инструкцией, предшествующей инструкции while.
В этой операции первый элемент списка устанавливается в качестве текущего проверяемого. Операция модификации в этом
случае реализуется в теле цикла, когда интересующая нас позиция (проверяемый элемент) перемещается к концу списка.
Таким образом, выполнение операции инициализации и многократное выполнение операции модификации приводят к тому,
что условие завершения обязательно будет достигнуто. (Или обнаружится проверяемый элемент, больший либо равный ис-
комому, или будет достигнут конец списка.)
Следует подчеркнуть, что операции инициализации и модификации обязательно должны приводить к заданному усло-
вию завершения. Это является важнейшим требованием организации надлежащего управления циклом, поэтому при разра-
ботке циклической структуры следует, как минимум, дважды убедиться в том, что оно выполняется. Если пренебречь по-
добной проверкой, то это может привести к ошибкам даже в простейших случаях. Типичным примером могут служить сле-
дующие инструкции:
Число ← 1
while (Число ≠ 6) do {Число ← Число + 2}
В данном случае условием завершения является выражение Число ≠ 6. Однако переменная Число инициализируется значе-
нием 1, а затем увеличивается на 2 на каждом этапе модификации. Таким образом, при выполнении цикла переменной Число
будут присваиваться значения 1, 3, 5, 7, 9, ... и ее значение никогда не будет равно 6. В результате выполнение данного цикла
никогда не закончится.
Существуют два варианта широко распространенных циклических структур, которые отличаются только порядком вы-
полнения операций управления циклом. Первая представлена инструкцией нашего псевдокода:
while (условие) do {действие}
Семантика этой циклической структуры представлена на рис. 4.8 в виде блок-схемы. На подобных схемах для представ-
ления отдельных этапов выполнения используются различные геометрические фигуры, а стрелки указывают порядок вы-
полнения этих этапов. Различные фигуры отражают отдельные типы деятельности, выполняемой на соответствующем этапе.
Ромб указывает на принятие решения, а прямоугольник представляет произвольную инструкцию или последовательность
инструкций. Обратите внимание, что в данной циклической структуре проверка условия завершения производится до того,
как выполняется тело цикла.
В противоположность этому, в структуре, представленной на рис. 4.9, указывается, что тело цикла должно выполняться до
проверки условия завершения. В результате тело цикла всегда выполняется хотя бы один раз, в то время как в структуре ти-
па while тело цикла может не выполниться ни разу (если условие завершения будет выполнено при первой же его провер-
ке).
Инициализация: Установить начальное состояние, которое будет моди-
фицироваться до тех пор, пока не будет выполнено условие окончания.
Проверка: Сравнить текущее состояние с условием завершения и
прекратить повторение тела цикла, если состояние соответствует условию
окончанию.
Модификация: Изменить состояние таким образом, чтобы прибли-
зиться к ситуации, в которой будет выполнено условие окончания.
Страницы
- « первая
- ‹ предыдущая
- …
- 87
- 88
- 89
- 90
- 91
- …
- следующая ›
- последняя »
