Бывают ситуации, когда не определено сколько раз повторять цикл до наступления события, оканчивающего цикл. Рассмотрим алгоритм спуска с лестницы. В принципе, в конкретном подъезде на лестничном марше, количество ступеней известно, но дома бывают разные, соответственно количество ступеней меняется. Мы хотим написать алгоритм спуска с лестницы более универсальным, который подойдёт даже для "Потёмкинской лестницы", поэтому будем использовать цикл второго типа. Потом посмотрим отличие
в использовании двух типов цикла для этой задачи.
Оформляется данный тип цикла следующим образом:
ПОКА (Условие)
<тело цикла>
КОНЕЦ ЦИКЛА
Цикл работает следующим образом:
1. Проверяется истинность условного выражения
2. Если ложь, то цикл не выполняется и управление передаётся на оператор, следующий за циклом.
3. Один раз выполняются операторы, написанные в теле цикла.
4. Снова выполняется пункт 1.
Если мы не изменим переменные, участвующие в вычислении условного выражения и оно никогда не станет ложью, мы опять получим "любимую" ошибку программистов - зацикливание. Причем в этом типе цикла зацикливание получается чаще потому, что надо вручную изменить какую-то переменную. Здесь нет автоматического изменения счётчика, как в первом типе цикла. Учитывая то, что программисты тоже ленивые и забывчивые люди, этот оператор просто забывают написать :( .
Давайте до написания цикла напишем функцию На ступеньку вниз:
На ступеньку вниз()
Немного приподнимаем ногу
Ступню ноги выносим вперёд
Немного сгибаем в колене вторую ногу
Переносим центр тяжести вперед
Подправляем первую ногу, чтобы ступня была над ступенькой ниже
Выпрямляем первую ногу
Подгибаем вторую ногу в колене до тех пор, пока первая нога не встанет на ступеньку ниже
Переносим весь вес на первую ногу
Подгибаем в колене вторую ногу
Переносим ступню на уровень второй ноги
Выпрямляем вторую ногу
Ставим вторую ногу на ступень
КОНЕЦ
Примерно так выглядит эта функция "стариковского" способа спуска на ступеньку ниже, и то, если не придираться. Можете попробовать добавить сюда движения рук. Оставим это так потому, что наша цель другая.
Теперь напишем цикл спуска с марша лестницы:
ниже есть ступенька =ИСТИНА
ПОКА (ниже есть ступенька)
На ступеньку вниз()
Смотрим вниз перед ногами
ЕСЛИ (пол перед нами ниже наших ног)
ТОГДА
ниже есть ступенька =ИСТИНА
ИНАЧЕ
ниже есть ступенька =ЛОЖЬ
КОНЕЦ УСЛОВИЯ
КОНЕЦ ЦИКЛА
Если мы знаем сколько ступеней в пролёте лестницы, алгоритм можно написать так (используем цикл первого типа):
Количество ступеней =7
ДЛЯ (Пройдено ступеней = 0;1;Пройдено ступеней<Количество ступеней)
На ступеньку вниз()
КОНЕЦ ЦИКЛА
В случае необходимости в теле цикла можно использовать переменные, участвующие в заголовке цикла. Например, можно вслух считать ступени, используя переменную Пройдено ступеней.
Вот так в алгоритмах организуются циклы и условные выражения - основные конструкции языков программирования. Эти конструкции есть во всех современных языках в том виде, которые мы разобрали. Единственно, что в некоторых языках есть дополнительно модификация циклов второго типа - там условие записывается после тела цикла.
В следующем выпуске мы подробно рассмотрим переменные и их типы.
До встречи,
Михаил Шемякин
Смотрите архив рассылки: byteman.ru