Отправляет email-рассылки с помощью сервиса Sendsay

Программирование для всех

  Все выпуски  

Программирование для всех выпуск 12


Циклы. Продолжение

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

В избранное