Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие_С++.docx
Скачиваний:
88
Добавлен:
11.04.2015
Размер:
842.63 Кб
Скачать

Обращение к функции

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

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

printf("max=%d\n", maximum(x,y));

Результат выполнения функции возвращается в точку вызова функции через ее имя.

Пример программы с функцией

Вычислить значение: Z =,

где а - заданное вещественное число.

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

где i – номер шага вычисления (умножения);

n – число шагов.

Поскольку в задаче требуется вычислить три раза операцию возведения в степень, то в главной функции main() будет организован вызов этой функции из выражения.

#include "stdafx.h"

float ST(float x, int n) // начало функции ST

{

int i;

float P; //локальные переменные i и P

P=1;

for( i=1; i<= n; i++)

P = P*x; //накопление произведения

return P;

} // конец функции ST

void main()

{

float a,Z;

printf("Введите число а:");

scanf("%f",&a);

Z = (ST(a, 5) + ST(1/a, 5))/(2* ST(a, 7));

printf("Z=%f\n", Z);

}

В процессе выполнения программы после ввода заданного числа а вычисляется значение Z по формуле. В данной формуле обращение к функции ST() осуществляется с помощью трех операндов. При вычислении выражения операнд обращения к функции заменяется значением возвращаемого функцией значения. Далее вычисляется значение Z и выводится на экран.

Предыдущую программу можно скомпоновать так:

#include "stdafx.h"

float ST(float , int ); // прототип функции ST

void main()

{ float a,Z;

printf("Введите число а:");

scanf("%f",&a);

Z = (ST(a, 5) + ST(1/a, 5))/(2* ST(a, 7));

printf("Z=%f\n", Z);

}

// текст функции ST

float ST(float x, int n)

{

int i;

float P;

P=1;

for( i=1; i<= n; i++)

P = P*x;

return P;

}

Передача параметров в функцию

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

Z = (ST(a, 5) + ST(1/a, 5))/(2* ST(a, 7));

при обращении к функции ST параметры a, 5, 1/a, 7 – фактические данные, с которыми будет работать функция ST в каждом своем вызове.

В заголовке функции ST

float ST(float x, int n)

x и n - это формальные параметры, которые примут в себя копии значений фактических параметров.

Формальные и фактические параметры должны быть согласованы друг с другом по количеству, типу и порядку следования. Это означает, что количество формальных параметров должно быть равно количеству фактических параметров, и каждый формальный параметр должен иметь тот же тип и занимать в списке то же место, что и соответствующий ему фактический параметр.