Функции. Основные принципы структурной методологии. Принцип формальности. Принцип иерархического упорядочивания, страница 26

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

·  точка возврата из функции определяется как место в программе, где описывается действие, которым продолжается программа по окончании выполнения вызова подпрограммы;

·  особенности return: оператор обязателен, если в заголовке функции тип результата отличен от void, т.е. возвращается одно значение;можно возвращать константу или значение одной переменной (как частный случай выражения); оператор может быть единственным в функции;таких операторов может быть в функции несколько, и находиться они могут не обязательно в конце функции, но выполняется всегда один из них;

·  безусловный выход из функции реализуется через операторы: return – завершение функции, переход к оператору, следующему за вызовом этой функции; exit(n) – завершение работы программы с кодом n, при этом возможно использование функции atexit() дляобработки завершения программы при выходе из нее;

·  локальная память функции (локальная память процесса выполнения вызова функции) – это совокупность участков памяти, где хранятся:

§  параметры-значения функции

§  собственные локальные переменные функции

§  точка возврата из функции

§  переменная, в которой запоминается значение, возвращаемое из вызова

·  статическая память программы – область под программу и ее переменные;

·  программный стек – это память, выделяемая при вызове функции и освобождаемая после завершения ее работы (автоматическая память программы, область локальной памяти функции); механизм работы стека – Last In First Out (первый пришел, последний ушел);

·  локальные статические переменные – это возможность сохранения переменных между вызовами функций:

§  размещение локальных статических переменных в памяти – вместе с глобальными переменными программы

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

Элементы оптимизации работы с функциями

Приемы создания надежных подпрограмм

·  устойчивость – идентификация вариантов завершения подпрограммы:

¨   отслеживание ошибок на входе и публикация сообщений об этом:

§ выдача сообщения и прекращение работы программы – плохой способ;

§ присваивание специальному параметру определенных значений – не очень хороший способ;

§ контролирующая функция – самый надежный способ для подпрограмм с несколькими вариантами завершения: подпрограмма определяется как функция, которой присваиваются значения, свидетельствующие о варианте ее завершения

·  корректность – правильность вычислений:

¨  отдельные алгоритмы – в функции;

¨  способы повышения корректности взаимодействия программы с подпрограммами:

§ функции при выполнении вычислений в качестве рабочих используют локальные переменные;

§ передача данных осуществляется через параметры, а не через глобальные переменные

§ для передачи исходных данных используются передача параметров по значению;

§ для передачи в функцию исходных данных большого размера используется передача параметров по указателю или по ссылке;

§ передача параметров по указателю используется для возврата из функции результатов;

§ использование в функциях глобальных переменных допускается только в исключительных случаях, например, при реализации набора операций над одной и той же общей (глобальной) переменной;

§ функции должны выполнять контроль своих параметров и вычислений, поэтому их надо оформлять в виде контролирующих функций, чтобы проверять все возвращаемые значения;

§ не надо смешивать в одной функции обработку информации и взаимодействие с внешними устройствами.



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