НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

§ 16. Последовательное построение алгоритмов

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

Давайте составим для ЧЕРТЕЖНИКА алгоритм рисования на бесконечном листе бумаги слова (высота каждой буквы - 4 см, ширина - 1 см, расстояние между буквами - 1 см).

Рис. 33. Алгоритм рисования на бесконечном листе бумаги
Рис. 33. Алгоритм рисования на бесконечном листе бумаги

Попробуем сначала записать весь алгоритм "с ходу":

 Сделать шаг. 
 Сделать шаг. 
 Сделать шаг. 
 Сделать шаг. 
 Повернуть налево. 
 Повернуть налево. 
 Повернуть налево. 
 Сделать шаг. 
 Повернуть налево. 
 Повернуть налево. 
 Повернуть налево. 
 Сделать шаг. 
 Сделать шаг. 
 Повернуть налево. 
 Повернуть налево. 
 Повернуть налево. 
 Сделать шаг. 
 Повернуть налево. 
 Прыгнуть. 
 Прыгнуть. 
 ...

Уф!.. А ведь мы всего лишь описали, как рисовать букву Р. Если продолжать в том же духе, то получится очень длинный и нерациональный алгоритм. К тому же он наверняка будет содержать ошибки, которые трудно обнаружить, глядя на эту запись.

Традиционный метод составления алгоритмов в данном случае, как видите, малоэффективен. Попробуем иначе подойти к решению задачи. Ясно, что ЧЕРТЕЖНИК должен последовательно нарисовать буквы Р, О, Б, О, Т. Таким образом, наша задача разбивается на пять этапов (рис. 34):

Рис. 34. Последовательность рисования
Рис. 34. Последовательность рисования

Считая, что вспомогательные алгоритмы рисования букв уже составлены, запишем сразу основной алгоритм:

 Выполнить алгоритм "Р". 
 Выполнить алгоритм "О". 
 Выполнить алгоритм "Б". 
 Выполнить алгоритм "О". 
 Выполнить алгоритм "Т".

Теперь можно приступить к составлению вспомогательных алгоритмов. При этом нужно позаботиться о двух вещах. Во-первых, чтобы ЧЕРТЕЖНИК правильно нарисовал отдельные буквы, а во-вторых, чтобы, выполнив основной алгоритм, он сложил из них слово РОБОТ. Иначе говоря, надо заботиться не только о рисовании самих букв, но и об их "стыковке". Это напоминает строительство дома: надо заботиться не только о качестве кирпичей, но и о том, чтобы между ними не оставалось щелей. Таким образом, основной алгоритм предъявляет дополнительные требования к "стыковке" вспомогательных алгоритмов.

Лучше две простые задачи, чем одна сложная - пользуйтесь методом пошаговой детализации!

В нашем случае эти требования могут быть, например, такими. Будем считать, что ЧЕРТЕЖНИК начинает рисование каждой буквы с ее левой нижней точки, глядя вправо. Каждый из вспомогательных алгоритмов должен выводить ЧЕРТЕЖНИКА в исходную позицию для рисования следующей буквы.

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

Легко обнаружить общий элемент у букв Р, О и Б. Назовем его "угол" (рис. 35). Вы без труда напишете вспомогательный алгоритм рисования "угла". Воспользовавшись этим алгоритмом, а также алгоритмом "Направо" (см. задачу 3 из § 14), можно записать каждый из пяти вспомогательных алгоритмов. Вот, например, вспомогательный алгоритм "Р":

Выполнить вспомогательный алгоритм "Угол".

Выполнить вспомогательный алгоритм

 "Направо". 
 Сделать шаг. 
 Сделать шаг.

Выполнить вспомогательный алгоритм

 "Направо". 
 Сделать шаг. 
 Налево. 
 Прыгнуть. 
 Прыгнуть. 
 Налево. 
 Прыгнуть. 
 Прыгнуть.

Остальные вспомогательные алгоритмы напишите самостоятельно.

Рис. 35. Угол
Рис. 35. Угол

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

Вопросы

1. В чем состоит метод пошаговой детализации алгоритмов?

2. Какого рода требования предъявляет основной алгоритм к вспомогательным?

Задания для самостоятельного выполнения

1. Для рисования квадрата, изображенного на рисунке 36, был составлен следующий алгоритм:

Рис. 36. Квадрат
Рис. 36. Квадрат

Выполнить алгоритм "Уголок".

Выполнить алгоритм "Уголок".

Сформулируйте требования к вспомогательному алгоритму "Уголок" и запишите его.

2. Используя метод пошаговой детализации, выделите вспомогательные алгоритмы, необходимые для того, чтобы ЧЕРТЕЖНИК нарисовал слово "РЕБУС" (рис. 37). Составьте соответствующий алгоритм.

Рис. 37. Алгоритм рисования 'Ребус'
Рис. 37. Алгоритм рисования 'Ребус'

3. ЧЕРТЕЖНИК помещен на квадратный лист бумаги, сторона которого длиннее 3 см. Составьте для ЧЕРТЕЖНИКА алгоритм рисования квадрата со стороной 1 см.

4. ЧЕРТЕЖНИК помещен на прямоугольный лист бумаги. Составьте для ЧЕРТЕЖНИКА алгоритм рисования квадрата наибольшей возможной площади (воспользуйтесь алгоритмом решения задачи 2 к § 15).

5°. Составьте для ВЫЧИСЛИТЕЛЯ алгоритм разложения числа на простые множители (используйте ранее составленные алгоритмы в качестве вспомогательных).

6°. Составьте для ВЫЧИСЛИТЕЛЯ алгоритм решения уравнения ax2 + bx + c = 0 (коэффициенты а, b, с могут равняться нулю), используя в качестве вспомогательных алгоритмы нахождения корней квадратного и линейного уравнений.

7°. Составьте для ВЫЧИСЛИТЕЛЯ алгоритм, с помощью которого он из трех данных чисел выберет то, которое находится между двумя другими.

8. Составьте для себя расписание на неделю вперед методом пошаговой детализации.

предыдущая главасодержаниеследующая глава

Получите удовольствие и приятный отдых в компании красивых спутниц с сайта https://kolomna.inditok.info. | Встречайте самых красивых спутниц на сайте https://moskovsk.indi-hub.com! | Если ты ищешь красивых и стильных спутниц для свидания, то рекомендую заглянуть на сайт https://sposad.inditok.info и удивиться выбору. | Загляни на https://vyborg.inditail.net и окунись в мир удовольствий с красивыми незнакомками.








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru
Поможем с курсовой, контрольной, дипломной
1500+ квалифицированных специалистов готовы вам помочь