Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры инфа.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.66 Mб
Скачать

3) Что такое рекурсия?

Рекурсией — называется ситуация, когда программа вызывает сама себя непосредственно или косвенно (через другие функции).

Косвенный вызов: А вызывает В, В вызывает А, обе функции рекурсивны

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

Рекурсивная задача в общем случае разбивается на ряд этапов. Для решения задачи вызывается рекурсивная функция. Эта функция знает, как решать только простейшую часть задачи — так называемую базовую задачу (или несколько таких задач). Если функция вызывается для решения базовой задачи, она просто возвращает результат. Если функция вызывается для решения более сложной задачи, то она делит эту задачу на две части: одну часть, которую функция решать умеет, и ту которую решать не умеет. Чтобы сделать рекурсию выполнимой, последняя часть должна быть похожа на исходную задачу, но по сравнению с ней проще или несколько меньше. Поскольку новая задача подобна исходной, функция вызывает новую копию самой себя, чтобы начать работать над меньшей проблемой — это называется рекурсивным вызовом или шагом рекурсии. Шаг рекурсии выполняется до тех пор, пока исходное обращение функции еще не закрыто. Шаг рекурсии может приводить к большому числу таких рекурсивных вызовов, поскольку функция продолжает деление каждой новой подзадачи на две части.

4) Структуры алгоритмов: структурный подход к разработке алгоритма.

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

В теории алгоритмов различают следующие структуры (построения, формы):

• следование (линейные);

• альтернатива (разветвляющиеся);

• обход;

• безусловный переход;

• циклические;

• процедуры (подпрограммы, функции пользователя).

Краткая характеристика основных структур.

1). Следование (Линейная) - последовательное размещение действий. В программе это достигается последовательным выполнением строк. На начальных этапах обучения рекомендуется строки нумеровать. В дальнейшем в этом нет необходимости.

Структограмма

Заголовок блока. Ввод значений А и В. Действие. Вывод результата.

Пример программы:

INPUT A

INPUT B

Y= A - B

PRINT “Y”=”; Y

END

3).Обход (условный переход) - частный случай разветвления, когда одна из ветвей не содержит никаких действий.

4).Безусловный переход - указание исполнителю перейти по указанному адресу (на указанную после оператора GOTO строку).

5)Глобальные переменные. Когда следует их использовать.

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

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

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

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

3.Использование большого числа глобальных переменных может вызвать ошибки в программе из-за неизвестных и нежелательных эффектов.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]