- •Обзорные лекции по курсу
- •Параметры и аргументы функций
- •Int swap(int, int);
- •Void func();
- •Int MyFunction(int Number, float Point);
- •Int main ()
- •Void Out(double numb, double sig, bool fig)
- •Int. Main ()
- •Void PrintTest(void);
- •Int main о
- •Void PrintTest(void) {
- •Int main ()
- •Int main ()
- •Int main ()
- •Void ChangeFlag(void);
- •Void ChangeFlag(void)
- •Int main()
- •If(Flag)
- •Int Count(void);
- •Int main()
- •Int result;
- •Int Count(void)
- •Volatile short sTest;
- •Volatile const int vciTest;
- •Int main()
- •Int main ()
- •Int main 0
- •Int main()
- •Inline double sqr(double X)
- •Inline double Round(double X)
- •Int swap(int, int);
- •Void func();
- •Int main()
- •Int main 0
- •Упражнения для самопроверки
Карасев Н.И.
Методология объектно-ориентированного программирования
Обзорные лекции по курсу
Лекция 5. Функции, Области видимости, Локальные и глобальные переменные. Классы памяти. Встраиваемые функции
Программа, реализованная как множество взаимодействующих функций, требует большего времени на выполнение по сравнению с монолитной программой из-за большого количества обращений к функциям. Однако, монолитную программу трудно программировать, тестировать,отлаживать, сопровождать и развивать.
Расчленяйте свои программы на функции с позиции здравого смысла всегда учитывая хрупкий баланс между производительностью и хорошей техникой программирования.
Содержание лекции:
1.Функции, их параметры и аргументы
2. Области видимости. Локальные и глобальные переменные
3.Классы памяти
4.Встраиваемые, рекурсивные и математические функции
5.Резюме
6. Упражнения для самопроверки
В практике программирования задач используется функциональная декомпозиция, в процессе которой выделяют процедуры, несущие законченный функциональный смысл и называемые в С++ функциями.
Параметры и аргументы функций
Каждая функция, которую предполагается использовать в программе, должна быть в ней объявлена.Обычно объявления функций размещают в заголовочных файлах, которые затем подключаются к исходному тексту программы с помощью директивы#include.Объявление функции описывает еепрототип, который объявляется следующим образом:
возвр_тип FuncName (список объявляемых параметров);
Здесь возвр_тип- возвращаемый функцией тип данных, Если возвращаемый тип данных не указан, то по умолчанию компилятор считает, что возвращаемый функцией тип естьint.Список объявляемых параметров задает тип и имя каждого параметра функции, разделенные запятыми. Допускается опускать имя параметра. Список объявляемых параметров функции может быть пустым. Приведем примеры прототипов функций:
Int swap(int, int);
double max (double par1, double par2);
Void func();
Определение функции состоит из ее заголовка и собственно тела, заключенного в фигурные скобки и несущего смысловую нагрузку. Если функция возвращает значение, отличное от типа void, в теле функции обязательно должен присутствовать операторreturnс параметром того же типа, что и возвращаемое значение. В случае, если возвращаемое значение не будет использоваться в дальнейшем в программе (void), операторreturnследует без параметра или вообще может быть опущен, тогда возврат из функции осуществляется по достижении закрывающейся скобки.
Для того чтобы функция выполнила определенные действия, она должна быть вызвана в программе.При обращении к функции она выполняет поставленную задачу, а по окончании работы возвращает в качестве результата некоторое значение.
Вызов функциипредставляет собой указание идентификатора функции (ее имени), за которым в круглых скобках следует список аргументов, разделенных запятыми:
имя_функции (аргумент_1, аргумент _2...,аргумент_N);
Каждый аргумент функции представляет собой переменную, выражение или константу, передаваемые в тело функции для дальнейшего использования в вычислительном процессе. Список аргументов функции может быть пустым.
Функция может вызывать другие функции (одну или несколько), а те, в свою очередь, производить вызов третьих и т.д. Кроме того, функция может вызывать сама себя. Это явление в программировании называется рекурсией.Как уже было отмечено ранее, любая программа на C++ обязательно включает в себя главную функцию main (). Именно с этой функции начинается выполнение программы.
На рис. 5.1 показан схематический порядок вызова функций.
Рис. 5.1. Схема вызовов функций
Программа начинает выполняться с функция main () до вызова функции FUNC1 (х, у). С этого момента управление программой передается в функцию FUNC1 (х, у), причем в качестве значения переменной Radius данная функция использует величину переменной х, а в качестве переменной Symbol передается значение у (рис. 5.2 иллюстрирует передачу параметров в функции). Далее до оператора return выполняется тело функцин FUNC1 (х, у), после чего управление возвращается в тело функции main (), а именно, следующему за вызовом FUNC1 (х, у) оператору. После этого продолжается выполнение функции main() до вызова функции FUNC2(a, б, с). При вызове этой функции переменная а передает значение логической переменной YesNo, переменная b - целочисленной переменной Count, а переменная с - короткому целому Key.
Рис. 5.2. Передача параметров в функции
Функция main () часто не имеет аргументов, однако, если требуется при вызове программы передать ей какие-нибудь параметры, синтаксис функции main () меняется:
int main(argc, argv)
Здесь первый аргумент, argc, указывает количество передаваемых параметров, а второй, argv, является указателем на массив символьных строк, содержащих эти аргументы.
Рассмотрим несколько примеров объявления, вызова и определения функций.
// Объявление функций: