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

Карасев Н.И.

Методология объектно-ориентированного программирования

Обзорные лекции по курсу

Лекция 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, является указателем на массив символьных строк, содержащих эти аргументы.

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

// Объявление функций:

Соседние файлы в папке ЛекцииКарасева