Какую задачу решает следующая программа

Как быстро выучить стихотворение наизусть? Запоминание стихов является стандартным заданием во многих школах.

Как научится читать по диагонали? Скорость чтения зависит от скорости восприятия каждого отдельного слова в тексте.

Как быстро и эффективно исправить почерк? Люди часто предполагают, что каллиграфия и почерк являются синонимами, но это не так.

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

  • Обратная связь
  • Правила сайта

Источник: www.soloby.ru

Уроки 21 — 25
Ветвления

Что такое Flexbox и какие задачи решает (быстрый старт)


Использование двухшаговой детализации
(§ 7. Ветвление и последовательная детализация алгоритма)
Использование метода последовательной детализации для построения алгоритма
Использование ветвлений

Вернемся к вопросу об использовании процедур при составлении программ управления исполнителями алгоритмов (см. § 5 нашего учебника). Но это будет особый вид процедур, которые называются рекурсивными процедурами.

image

Рекурсивной называется процедура, в которой имеется обращение к самой себе.

Не все учебные исполнители алгоритмов допускают использование рекурсивных процедур (рекурсии). Такая возможность имеется в учебной программе «Стрелочка», реализующей один из вариантов графического исполнителя алгоритмов (ГРИС). При программировании некоторых задач рекурсия может служить альтернативой циклу.

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

Пусть начальное положения «Стрелочки» — произвольная точка в первой строке рабочего поля, направление «вправо» (рис. 1.16). Требуется построить линию, идущую из этой точки до правой границы области.

Рис. 1.16

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

алгоритм ПУТЬ_1_0

Дано: исполнитель в точке А

Надо: воспроизвести образец

нач

пока впереди НЕ стена

нц

шаг

кц

кон

А теперь воспользуемся рекурсией, для чего опишем процедуру ЛИНИЯ_1.

алгоритм ПУТЬ_1_1

Дано: Исполнитель в точке А

Надо: Воспроизвести образец

Выполняем ЗАДАНИЯ по АЛФАВИТУ Челлендж !

нач

делай ЛИНИЯ_1

кон

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

шаг

делай ЛИНИЯ_1

конец процедуры

В теле этой процедуры присутствует команда обращения к самой себе: делай ЛИНИЯ_1.

Пошаговое исполнение (трассировка) такой программы иллюстрируется следующей трассировочной таблицей в случае, если «Стрелочка» вначале располагается за два шага до стенки.

Трассировка алгоритма

В этом случае завершение исполнения алгоритма произойдет аварийным образом (ситуация НЕ МОГУ).

Дело в том, что в данном алгоритме мы имеем дело с бесконечно повторяющимся рекурсивным обращением к процедуре, что недопустимо. Количество обращений процедуры к самой себе при ее исполнении называется глубиной рекурсии. Глубина рекурсии должна быть конечной.

Для исполнителя «Стрелочка» естественным ограничением количества обращений процедуры самой к себе может служить только достижение стены. Следовательно, рекурсивный вызов в процедуре надо поместить в команду ветвления, проверяющую условие достижения стены. Вот новый вариант алгоритма.

алгоритм ПУТЬ_1_2

Дано: Исполнитель в точке А

Надо: Воспроизвести образец

нач

делай ЛИНИЯ 2

кон

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

если впереди НЕ стена

то

шаг

делай ЛИНИЯ 2

все

конец процедуры

Трассировка этого алгоритма представлена в следующей таблице:

Трассировка алгоритма

Поскольку в описании алгоритма присутствует «точка остановки» (условие окончания исполнения алгоритма), исполнитель «Стрелочка», дойдя до стены, остановится.

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

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

алгоритм ПУТЬ_2

Дано: Исполнитель в точке А

Надо: Воспроизвести образец

нач

делай ЛИНИЯ_3

кон

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

если впереди НЕ стена

то

шаг

делай ЛИНИЯ_3

прыжок

иначе

поворот

поворот

все

конец процедуры

Трассировка алгоритма ПУТЬ_2 для исходного положения исполнителя за два шага до стенки показана в следующей таблице.

Трассировка алгоритма

Если при выполнении процедуры происходит рекурсивное обращение к ней самой, то это значит, что не произошел выход из этой процедуры при предыдущем обращении. Этот выход откладывается на будущее. Затем, после окончания рекурсивных обращений, все отложенные выходы отрабатываются в порядке, обратном порядку рекурсивных обращений. В приведенной программе отработка отложенных выходов начинается с выполнения команды поворот.

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

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

Рекурсивной называется процедура, в которой имеется обращение к самой себе.

Использование рекурсии может быть эквивалентом использованию цикла.

Существуют задачи, для которых рекурсивное решение является наиболее оптимальным или единственно возможным.

Вопросы и задания

1. Что такое рекурсивная процедура?

2. В каком порядке происходит выход из последовательности рекурсивных обращений?

3. Попробуйте разобраться, какую задачу решает следующая программа, содержащая рекурсивную процедуру. Реализуйте ее в среде исполнителя «Стрелочка».

алгоритм ФИГУРА-1

Дано: Исполнитель в точке А

Надо: Воспроизвести образец

нач

делай ЛИНИЯ

поворот

поворот

поворот

шаг

шаг

кон

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

если впереди НЕ стена

то

шаг

делай ЛИНИЯ

шаг

иначе

поворот

поворот

поворот

шаг

шаг

поворот

поворот

поворот

все

конец процедуры

4. Составьте программу с рекурсивной процедурой, по которой исполнитель, находящийся в произвольной точке поля, дойдет до стенки, затем повернется на 90 градусов по часовой стрелке и дойдет до конца этой стенки вдоль нее. В результате будет нарисован угол.

Система основных понятий главы I

Следующая страница Компьютерный практикум ЦОР. Ветвление и последовательная детализация алгоритма

Источник: xn—-7sbbfb7a7aej.xn--p1ai

3. попробуйте разобраться, какую решает следующая программа,
содержащая рекурсивную процедуру. реализуйте ее в среде исполните-
ля «стрелочка».​

+

1 Смотреть ответы Добавь ответ +10 баллов

Ответы 1

Ответ разместил: aleksandrsein74
Доступ после просмотра рекламы
Ответы будут доступны после просмотра рекламы
Показать ответы

Я люблю тебя за то что ты есть на белом свете, вот как то так потому что ты красивый(ая) я тебя буду любить вечно.

Удалить ответ +1 балл

Другие вопросы по Информатике

Категория

Информатика, hahatiktok542

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

Категория

Информатика, arskripkin

Нужносимволом f обозначено одно из указанных ниже логических выражений от аргументов: x y zx y z f1 1 1 11 1 0 11 0 1 1какое выражение соответствует f? 1)x/¬y / z2)x^y^¬z3)x^y^z4.

Категория

Информатика, dmitriybatulin

10. составьте программу вычисления значення функции согласно предложеному варианту т = (k – п/k — n sin( 2а 13) при n-0.508; k=0.756; а= 45 градусов , ставлю 100 .

Категория

Информатика, m8666124
Даны 2 числа a и b. вычислить k= a-b : √a^2+b^2. составить блок схему и программу на языке бейсик.

Категория

Информатика, vadimkvashnin22

Ввести строку s длиной до 50 символов, заменить в нем все буквы «р» на буквосочетание «pu» ввести рядок s завдовжки до 50 символів, замінити в ньому всі літери “р” на буквосполучен.

Источник: 0tvet.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru