Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение

Этот механизм обмена информацией заложен в самом синтаксисе определения объекта типа функции:

тип_возвращаемого_значения имя_объекта_функции (список_формальных_параметров )

{

/* Здесь пишутся инструкции, которые определяют объекты, создаваемые внутри функции – локальные объекты.

Здесь пишутся инструкции, задающие действия над этими объектами - алгоритм работы функции

*/

// инструкция return вернет значение-результат в точку вызова этой функции

// этот результат надо будет « поймать» (сохранить) в точке вызова

// иначе он будет потерян

return выражение;

}

список_формальных_параметров (записывается в скобках) – это последовательность параметров, разделенных запятыми. Для каждого параметра, передаваемого по значению, указывается тип и имя.

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

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

тип_возвращаемого_значения - это тип того значения, которое будет одним из результатов работы функции и которое вернет инструкция return выражение; в точку вызова функции.

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

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

имя_вызываемой_функции (список_фактических_параметров )

список_фактических_параметров – это последовательность имен объектов или выражений или констант, разделенных запятыми, значения которых передаются в вызываемую функцию. Между списком формальных параметров в определении или описании функции и списком фактических параметров при ее вызове должно соблюдаться соответствие по их количеству и типам.

Рассмотрим пример1.

Составить функцию countX, которая, получив а, b и с через параметры по значению, вычисляет х и возвращает результат его вычисления через возвращаемое значение.

 
  Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru

В функции main необходимо ввести значения a, Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru , Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru . Используя функцию countX, вычислить значение X

 
  Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru

и выдать его на экран.

В функции main не использовать стандартные математические функции cos и sin, а использовать только свою функцию countX, которая будет их использовать.

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

Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru float а

Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru

float b float

Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru

float c

Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru

Заголовок функции countX должен быть таким:

float countX (float a, float b, float c )

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

Описания (прототипы) этих функций находятся в хэдерном файле math.h. Для того чтобы воспользоваться этими функциями, необходимо подключить этот файл директивой #include к тексту разрабатываемой функции.

// Текст функции в файле example1.cpp

#include <math.h>

float countX (float a, float b, float c )

{

float x;

x = (a * cos(b + c) - b * sin(a + c)) / (pow(a,3) + b * b);

return x;

}

Этот текст нужно компилировать, для выявления синтактических ошибок.

Попытка этот текст выполнить, приводит на этапе редактирования (линковки! LNK) к появлению сообщений.

Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

Error 2 fatal error LNK1120: 1 unresolved externals

Это сообщения о том , что нет main!!! Без main программа не работает!

В функции main нужно вычислить результат как сумму 1 + а выр1 + 1 / выр2, где

 
  Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru

выр1можно вычислить с помощью разрабатываемой функции countX, если вместо а использовать значение Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru , вместь b значение Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru , а вместо c значение Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru .

 
  Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru

выр2также можно вычислить с помощью разрабатываемой функции countX, но вместо а необходимо использовать значение Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru , вместь b значение Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru , а вместо c значение Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение - student2.ru .

При решении задачи необходимо знать число pi. Эту константу можно задать самим, но грамотней воспользоваться стандартными математическими константами, которые заданы в хэдерном файле math.h

Имена констант Вычисляемое выражение Значение константы
M_E e 2.71828182845904523536
M_LOG2E log2(e) 1.44269504088896340736
M_LOG10E log10(e) 0.434294481903251827651
M_LN2 ln(2) 0.693147180559945309417
M_LN10 ln(10) 2.30258509299404568402
M_PI pi 3.14159265358979323846
M_PI_2 pi/2 1.57079632679489661923
M_PI_4 pi/4 0.785398163397448309616
M_1_PI 1/pi 0.318309886183790671538
M_2_PI 2/pi 0.636619772367581343076
M_2_SQRTPI 2/sqrt(pi) 1.12837916709551257390
M_SQRT2 sqrt(2) 1.41421356237309504880

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

Define _USE_MATH_DEFINES

#include <math.h>

// Добавили в файл example1.cpp функцию main

Define _USE_MATH_DEFINES

#include <math.h>

#include <iostream>

#include <conio.h>

using namespace std;

float countX (float a, float b, float c )

{

float x;

x= (a * cos(b + c) - b * sin(a + c)) / (pow(a,3) + b * b);

return x;

}

void main ( void )

{

Наши рекомендации