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

6. Функции

6.1. Общие сведения

Программа на языке С++ состоит из одной или нескольких функций.

Функция – это логически самостоятельная именованная часть программы, которой могут передаваться параметры и которая может возвращать какое-то значение.

Все функции в языке С++ имеют рекомендуемый стандартами языка единый формат определения:

тип имя_функции ([спецификация параметров])

{

тело функции

[return;]

}

Первая строка – это, по существу, заголовок функции, который отличается от ее прототипа только отсутствием точки с запятой в конце и обязательным присутствием имен формальных параметров.

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

Имя_функции либо main – для основной (главной) функции программы, либо произвольно выбираемое программистом имя (идентификатора), не совпадающее со служебными словами и с именами других объектов (и функций) программы.

Спецификация_параметров – это либо пусто, либо список формальных параметров, каждый элемент которого имеет вид:

обозначение_типа имя_параметра

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

Тело_функции - это часть определения функции, ограниченная фигурными скобками и состоящая из операторов языка С++. Особенность языка С++ состоит в невозможности внутри тела функции определить другую функцию. Другими словами, определения функций не могут быть вложенными.

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

return;

return выражение;

Первая форма соответствует завершению функции, не возвращающей никакого значения, т.е. функции, перед именем которой в ее определении указан тип void. Выражение во второй форме оператора return должно иметь тип, указанный перед именем функции в ее определении.

Если программист не использовал оператор return внутри тела функции, возвращающей значение типа void, то компилятор автоматически добавляет оператор return в конец тела функции перед закрывающейся фигурной скобкой “}”.

Пример определения функции, возводящей число d в степень s:

float step ( float d, int s)

{

float rez=1;

for (int i=1; i <= s; i++)

rez *= d; // rez = rez*d

return (rez);

}

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

6.2. Описание функции и ее тип

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

Это «предварительное» объявление, называемое прототипом функции, извещает компилятор о типе возвращаемого значения, количестве и типе аргументов.

Форма объявления функции (прототип):

тип имя_функции ([список типов формальных аргументов]);

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

Например, для функции step можно использовать один из следующих прототипов:

float step ( float d, int s);

или

float step ( float, int );