История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Топ:
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Это свойство тоже очевидно: цикл заканчивается в тот момент, когда при очередной проверке условие оказалось невыполненным.
10.8. Составление алгоритмов с циклом пока
Всякий раз, когда число повторений каких-то действий заранее неизвестно, используется цикл пока. Составление таких циклов — трудная задача. Короткий цикл пока может описывать длинную последовательность действий. Чтобы не запутаться и что-нибудь не забыть, лучше всего придумывать цикл пока по частям.
1) Понять, когда цикл должен закончиться, т. е. сформулировать условие окончания цикла. Записать после пока противоположное условие — условие продолжения цикла.
2) Выяснить, что и как будет меняться в цикле, описать промежуточные состояния после нескольких повторений цикла.
3) Описать, что происходит при однократном выполнении цикла (принято говорить «за один шаг цикла»), т. е. составить тело цикла.
4) Проверить, что цикл рано или поздно закончится, а не будет повторяться вечно.
Примеры построения алгоритмов
Закрашивание ряда
Робот находится у левой стены внутри прямоугольника, огороженного со всех сторон стенами (рис. 15). Внутри прямоугольника стен нет, его размеры неизвестны. Требуется закрасить горизонтальный ряд клеток от исходного положения Робота до правой стены и вернуть Робота в исходное положение.

Рис.15
Ясно, что алгоритм должен состоять из двух частей: сначала Робота надо довести до правой стены, по дороге закрашивая клетки, а затем вернуть в исходное положение.
|
дано | Робот стоит у левой стены внутри огороженного
| с четырех сторон прямоугольника (рис. 15)
надо | горизонтальный ряд, в левой клетке которого стоял Робот
| полностью закрашен. Робот в исходном положении
Нач
вправо до стены с закрашиванием
влево до стены
Кон
Вспомогательный алгоритм "влево до стены" составляется аналогично А17
|
нач
нцпока слева свободно
влево
Кц
Кон
Займемся теперь алгоритмом "вправо до стены с закрашиванием". В соответствии с методом последовательного уточнения, записав вызов этого алгоритма, мы фактически задали его заголовок:
алг вправо до стены с закрашиванием
дано | где-то справа от Робота есть стена
надо | Робот у стены, все клетки от исходной до стены закрашены
Построим тело алгоритма. Поскольку расстояние до стены неизвестно, надо использовать цикл пока. После цикла Робот должен стоять у стены, следовательно, условие окончания цикла – «справа стена». Тогда условие продолжения цикла – «справа свободно».
На каждом шаге цикла Робот должен сместиться вправо и закрасить клетку. Получится такой цикл:
нцпока справа свободно
вправо
закрасить
Кц
Ясно, что зацикливания не произойдет: по условию задачи стена где-то справа есть, при каждом выполнении цикла Робот делает шаг вправо и расстояние до стены уменьшается. Когда оно станет равным нулю, цикл закончится.
При выполнении этого цикла окажутся закрашенными все клетки правее исходного положения Робота, но сама исходная клетка останется незакрашенной. Поэтому перед выполнением цикла ее нужно закрасить отдельно. Необходимость дополнительной команды закрасить можно объяснить и так: количество закрашенных клеток должно быть на одну больше, чем количество шагов, сделанных Роботом (это видно из рисунка); в цикле выполняется один шаг и одно закрашивание, следовательно, требуется одно дополнительное закрашивание вне цикла.
Окончательно получаем алгоритм:
|
дано | где-то справа от Робота есть стена
надо | Робот у стены, все клетки от исходной до стены закрашены
Нач
закрасить
нц пока справа свободно
вправо
закрасить
Кц
кон
|
|
|
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!