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

1.9.2 Определение новых функций

Определение (реализация) функции

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

в общем виде

пример

тип имя(список аргументов с типами)

{

инструкции

return возвращ.знач.;

}

double plus(double x, double y)

{

return x+y;

}

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

void print_value(double res)

{

cout<<"result is: "<<res<<endl;

}

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

Описание функции (прототип)

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

в общем виде

пример

возвращ.тип имя (список аргументов с типами);

double plus(double x, double y)

Компилятор сверяется с прототипом функции, чтобы проверить, содержат ли вызовы функции правильное число аргументов нужных типов и перечислены ли типы аргументов в правильном порядке. Кроме того, прототип функции необходим компилятору для того, чтобы убедиться, что возвращаемое функцией значение корректно используется в вызвавшем функцию выражении (например, вызов функции, возвращающий void, не может входить в правую часть оператора присваивания). Каждый аргумент должен быть совместим с типом соответствующего параметра. Например, параметр типа double может принимать значения 7.35, 22 или -0.03456, но не строку вроде "hello". Если передаваемые функции аргументы не совпадают по типу с параметрами, указанными в прототипе функции, компилятор пытается преобразовать аргументы к соответствующему типу.

Обращение к функции (вызов функции)

Каждому параметру в определении функции (формальный параметр функции) должен соответствовать один аргумент в вызове функции. В данном примере, когда функция вызывается, параметр функции х инициализируется значением аргумента b, параметр у инициализируется значением аргумента c, а возвращаемое значение присваивается переменной a.

в общем виде

пример

имя (список аргументов);

double a, b, c;

a=plus(b, c);

1.9.3 Пример функции (пример 12)

В примере используются две функции – функция сложения двух чисел и функция печати числа на экран. Значение функции plus можно присвоить какой-то переменной, или использовать прямо при вызове другой функции или при использовании оператора cout.

/////////////////////////////////////////////////////////////////////////////

// Прикладное программирование

// Пример 12. Функция сложения двух чисел

//

// Кафедра Прикладной и компьютерной оптики, http://aco.ifmo.ru

// СПб НИУ ИТМО

/////////////////////////////////////////////////////////////////////////////

// подключение библиотеки ввод-вывода

#include <iostream>

// подключение стандартного пространства имен для использования библиотек

using namespace std;

// объявление функции (прототип функции)

// функция складывает два числа

double plus(double x, double y);

// функция печати результата

void print_value(double res);

/////////////////////////////////////////////////////////////////////////////

// функция main начинает исполнение программы

void main()

{

// объявление и инициализация двух переменных

double x1=1, x2=2;

// обращение к функции - пример 1

double res = plus(x1, x2);

// обращение к функции - пример 2

res = plus(55.5, res);

print_value(res);

// обращение к функции - пример 3

cout<<plus(res, x2)<<endl;

// обращение к функции - пример 4

print_value(plus(res, x2));

}

/////////////////////////////////////////////////////////////////////////////

// Определение (реализация) функции сложения двух чисел

double plus(double x, double y)

{

return x+y;

}

/////////////////////////////////////////////////////////////////////////////

// Определение (реализация) функции печати результата

void print_value(double res)

{

cout<<"result is: "<<res<<endl;

}

/////////////////////////////////////////////////////////////////////////////