Метод последовательной детализации

Использованный нами подход облегчает программирование сложных задач. Задача разбивается на более простые подзадачи. Решение каждой оформляется в виде вспомогательного алгоритма, а основной алгоритм организует связку между ними.

Метод последовательной детализации - student2.ru Метод программирования, при котором сначала пишется основная программа, в ней записываются обращения к пока еще не составленным подпрограммам, а потом описываются эти подпрограммы, называется методом последовательной (пошаговой) детализации. Причем количество шагов детализации может быть гораздо большим, чем в нашем примере, поскольку сами подпрограммы могут содержать внутри себя обращения к другим подпрограммам.

Сборочный метод

Возможен и другой подход к построению сложных программ: первоначально составляется множество подпрограмм, которые могут понадобиться при решении задачи, а затем пишется основная программа, содержащая обращения к ним. Подпрограммы могут быть объединены в библиотеку подпрограмм и сохранены в долговременной памяти компьютера. Такую библиотеку можно постепенно пополнять новыми подпрограммами.

Например, если для управления графическим исполнителем создать библиотеку процедур рисования всех букв и цифр, то программа получения любого текста будет состоять из команд обращения к библиотечным процедурам.

Метод последовательной детализации - student2.ru Описанный метод называется сборочным программированием. Часто в литературе по программированию используется такая терминология: метод последовательной детализации называют программированием сверху вниз, а сборочный метод — программированием снизу вверх.

Коротко о главном

Для упрощения программирования сложных задач используются вспомогательные алгоритмы.

Вспомогательный алгоритм — это алгоритм решения некоторой подзадачи исходной (основной) задачи.

Вспомогательный алгоритм, записанный на языке программирования, называется процедурой.

Вспомогательный алгоритм должен быть описан. После этого в основном алгоритме можно использовать команду обращения к этому вспомогательному алгоритму.

Метод программирования, при котором сначала записывается основной алгоритм, а затем описываются использованные в нем вспомогательные алгоритмы, называется методом последовательной детализации, или программированием сверху вниз. Обратный порядок программирования называется программированием снизу вверх.

Метод последовательной детализации - student2.ru Вопросы и задания

1. Что такое основной алгоритм; вспомогательный алгоритм?

2. Чем отличается описание вспомогательного алгоритма от обращения к вспомогательному алгоритму?

3. Каковы правила описания вспомогательных алгоритмов (процедур) для исполнителя ГРИС?

4. Как записывается команда обращения к процедуре в языке исполнителя ГРИС?

Метод последовательной детализации - student2.ru 5. В чем суть метода последовательной детализации?

6. Что такое программирование снизу вверх; сверху вниз?

Метод последовательной детализации - student2.ru 7. Используя вспомогательные алгоритмы, запрограммируйте рисование следующих фигур.

Метод последовательной детализации - student2.ru

Метод последовательной детализации - student2.ru ЕК ЦОР: часть 2, глава 5, § 29. ЦОР № 6, 9-12, 14, 15.

§6

Циклические алгоритмы

Основные темы параграфа:

■ команда цикла;

■ цикл в процедуре;

■ блок-схемы алгоритмов;

■ цикл с предусловием.

Команда цикла

Обсудим решение следующей задачи.

Задача 3. Исходное положение: ГРИС — у левого края поля, направление — на восток. Требуется нарисовать горизонтальную линию через весь экран.

Задачу можно решить, написав 15 раз команду шаг (если поперек поля рисунка 15 шагов). Но есть и более короткий вариант программы. Вот он:

покавпереди не край повторять

нц

Шаг

кц

Здесь использована команда, которая называется циклом. Формат команды цикла следующий:

пока <условие> повторять

нц

<тело цикла>

кц

Служебное слово нц обозначает начало цикла, кц — конец цикла. Это первая команда из СКИ, которая реализует обратную связь между графическим исполнителем и управляющим им компьютером. Она заключается в том, что проверяется, не вышел ли ГРИС на край поля, не грозит ли ему следующий шаг или прыжок в этом направлении аварией. Проверяемые условия звучат так: «впереди край?» или «впереди не край?». На что машина получает от исполнителя ответ «да» или «нет».

В приведенном примере проверяется условие «впереди не край?». Если «да», то делается шаг (т. е. выполняется <тело цикла>). Затем происходит возврат на проверку условия, и всё повторяется. Если проверка условия дает отрицательный результат (т. е. впереди край), то выполнение цикла завершается и исполняется следующая после цикла команда программы.

При программировании цикла важно думать о том, чтобы цикл был конечным. Цикл, записанный выше, конечный. Двигаясь в одном направлении, исполнитель обязательно достигнет края, и на этом выполнение цикла закончится.

Метод последовательной детализации - student2.ru Ситуация, при которой выполнение цикла никогда не заканчивается, называется зацикливанием. Пусть ГРИС находится в середине поля. Исполнение следующего цикла:

пока впереди не край повторять

нц

Шаг

Поворот

кц

никогда не закончится. ГРИС будет бесконечно рисовать квадратик, так как проверка условия «впереди не край?» всегда будет давать положительный ответ.

Цикл в процедуре

Задача 4. Теперь составим программу, по которой графический исполнитель нарисует прямоугольную рамку по краю поля (рис. 1.6). Исходное положение: ГРИС находится в левом верхнем углу, смотрит на юг.

Рамка состоит из четырех линий, поэтому разумно воспользоваться процедурой, проводящей линию от края до края поля. Опять будем действовать методом последовательной детализации. Напишем сначала основную программу.

Метод последовательной детализации - student2.ru

Программа проведения линии нами уже рассматривалась. Осталось оформить ее в виде процедуры.

процедура ЛИНИЯ

Нач

пока впереди не край повторять

нц

Шаг

кц

Кон

При составлении этой программы использовалась одношаговая детализация в такой последовательности:

Метод последовательной детализации - student2.ru

Блок-схемы алгоритмов

Начиная с 50-х годов прошлого века, т. е. еще с эпохи ЭВМ первого поколения, программисты стали использовать графические схемы, изображающие алгоритмы, которые получили название блок- схем.

Блок-схема состоит из фигур (блоков), обозначающих действия исполнителя, и стрелок, соединяющих эти блоки и указывающих на последовательность их выполнения. Внутри каждого блока записывается выполняемое действие. Форма блока подсказывает характер действия, которое он обозначает. Для придания наглядности и единообразия схемам алгоритмов все графические элементы стандартизированы.

Посмотрите на рис. 1.7, где показана блок-схема алгоритма рисования рамки. Она состоит из двух частей: блок-схемы основного алгоритма и блок-схемы вспомогательного алгоритма ЛИНИЯ.

Метод последовательной детализации - student2.ru

Из этих схем понятно назначение блоков различной формы (рис. 1.8).

Метод последовательной детализации - student2.ru

Цикл с предусловием

Команда цикла изображается не отдельным блоком, а целой структурой, показанной на рис. 1.8. Такую структуру называют циклом с предусловием (так как условие предшествует телу цикла). Есть и другой вариант названия: цикл-пока (пока условие истинно, повторяется выполнение тела цикла).

При решении следующей задачи снова будем использовать метод

последовательной детализации.

Задача 5.Требуется расчертить поле горизонтальными линиями (рис. 1.9). Исходное состояние исполнителя: верхний левый угол, направление — на юг.

Метод последовательной детализации - student2.ru

В программе для решения этой задачи используется та же процедура ЛИНИЯ. Другая процедура — ВОЗВРАТ — возвращает ГРИС к левому краю поля для рисования следующей линии.

 
  Метод последовательной детализации - student2.ru

Блок-схемы основного и вспомогательного алгоритмов представлены на рис. 1.10.

Метод последовательной детализации - student2.ru

Коротко о главном

Для программирования повторяющихся действий применяется команда цикла, которая имеет следующую структуру:

пока <условие> повторять

нц

<тело цикла>

кц

Команда цикла реализует обратную связь между объектом управления и управляющей системой. Проверка условия дает информацию управляющей системе о состоянии объекта управления.

В цикле с предусловием, если проверяемое условие выполняется (истинно), то выполняются команды, составляющие тело цикла. Если условие ложно, то происходит выход из цикла.

При программировании цикла необходимо следить за тем, чтобы не допускалось зацикливание.

Блок-схема — это графический способ описания алгоритма. Блоки обозначают действия исполнителя, а соединяющие их стрелки указывают на последовательность выполнения действий.

Метод последовательной детализации - student2.ru Вопросы и задания

Метод последовательной детализации - student2.ru 1. Что такое цикл? Как записывается команда цикла?

Метод последовательной детализации - student2.ru 2. Что такое условие цикла? Что такое тело цикла?

3. В каком случае происходит зацикливание алгоритма?

4. Что такое блок-схема?

5. Из каких блоков составляются блок-схемы (как они изображаются и что обозначают)?

6. Что обозначают стрелки на блок-схемах?

Метод последовательной детализации - student2.ru 7. Составьте программу, переводящую ГРИС в угол поля из любого исходного состояния.

Метод последовательной детализации - student2.ru 8. Составьте программу рисования прямоугольной рамки вдоль края поля при любом начальном состоянии исполнителя.

Метод последовательной детализации - student2.ru ЕК ЦОР: часть 2, глава 5, § 30. ЦОР № 5, 10-13, 16-18.

§7

Наши рекомендации