Основы программирования для автоматизированного проектирования и решения творческих задач - 46 стр.

UptoLike

Составители: 

2)
поиск тривиального случая и его решения. На этом этапе должно быть найдено решение задачи
не содержащее рекурсивного определения;
3) декомпозиция общего случая, требующая привести его к одной или нескольким более простым
задачам меньшей размерности.
В случае с факториалом управляющим параметром является текущее значение числа n. Тривиаль-
ный случай представляет собой
0! = 1, а декомпозиция общего случая выглядит n! = n*(n – 1)!.
Обычно функции имеют локальные объекты, определенные в функции и недоступные за ее преде-
лами. При каждом рекурсивном вызове функции порождается новое множество локальных переменных.
Они имеют те же имена, что и переменные функции "предыдущего поколения", однако имеют собст-
венные значения. Все конфликты по именам между переменными разрешены следующим правилом:
идентификаторы всегда относятся к самому последнему порожденному множеству переменных. Поэто-
му нужно убедится, что максимальная глубина рекурсии достаточно мала, так как при каждом новом
рекурсивном вызове функции значения всех ее локальных переменных и "состояние вычислений" со-
храняется в стеке программы. При достаточно большой вложенности рекурсии стек может быть быстро
исчерпан, а программа будет аварийно завершена.
Таким образом, рекурсивные алгоритмы подходят там, где рекурсивно определяются обрабатывае-
мые данные, а там, где есть очевидное итерационное решение, рекурсии следует избегать.
13.6 Параметры функции main
С точки зрения стандарта языка С функция main является обычной функцией, которой можно пере-
дать параметры. Однако то, что эта функция запускается из операционной системы накладывает опре-
деленный отпечаток на список ее формальных параметров, он не может быть произвольным. Прототип
функции main выглядит следующим образом:
int main(int argc, char *argv[], char *envp[])
здесь argvмассив указателей на строки; argcчисло элементов в массиве argv; envpмассив указа-
телей на символьные строки, содержащие описание переменных окружения.
Данный список формальных параметров обеспечивает связь функции main с командной строкой, из
которой можно передавать данные программе. Если функция main не обрабатывает параметры из ко-
мандной строки, то их описание опускается.
Параметры в командной строке разделяются пробелами. Каждый такой параметр заносится в стро-
ку, соответствующую argv[i]
(0 < i < argc). Элементу argv[0] соответствует название программы, обязательно указываемое в команд-
ной строке.
14 ДИРЕКТИВЫ ПРЕПРОЦЕССОРА В ЯЗЫКЕ С
Обычно, вместе с компилятором языка С в пакет программ, обеспечивающих программирование на
языке С, входит еще одна программапрепроцессор. Ее главным назначением является предшествую-
щая компиляции обработка исходного текста разрабатываемой программы с целью внесения в него оп-
ределенных изменений. В состав действий, выполняемых препроцессором, входит выполнение особых
команд в тексте программыдиректив препроцессора. Каждая директива препроцессора должна зани-
мать одну строку в тексте программы и начинаться с символа '#', что позволяет отличать их от операто-
ров программы. Сами директивы препроцессора приведены ниже.
1 Включение текстов из файлов.
#inclule <имя_файла>
или