Примеры фнукций в С++

В листинге ниже приведен пример программы с объявлением функции msum(int n), которая возвращает в качестве результата значение суммы нату­ральных чисел. Количество слагаемых в сумме определяется целочислен­ным аргументом функции.
#include
using namespace std;
int msum(int n){
 int s=0;
 for(int i=1; i <= n; i++) s+=i;
 return s;}
int main(){
int n;
cout << "Enter n = ";
cin >> n;
cout << "Sum is " << msum(n) << "\n";
return 0;
}
Функция не всегда должна возвращать результат Если функция результат не возвращает, в качестве типа функции указывается void В этом случае функция напоминает процедуру Пример такой функции приведен в следующем коде.
#include
using namespace std;
void msum2(){
int n;
cout << "Enter n = ";
cin >> n;
int s=0;
for(int i=1; i <=n; i++) s+=i;
cout << "Sum is " << s << "\n";
}
int main(){
msum2();
return 0;
}
Более того, функция не только не возвращает результат - у нее еще и нет аргументов (тем не менее, скобки после названия функции все равно указы­ваются, причем как при объявлении функции, так и при ее вызове). Функциональность программы после внесения исправлений не измени­лась: на экране выводится приглашения для пользователя ввести натураль­ное число (верхнюю границу для суммы натуральных чисел), это число считывается, после чего вычисляется сумма натуральных чисел. Что изме­нилось, так это организация программного кода. Фактически главный ме­ тод программы состоит всего из одной команды (если не считать стандартную инструкцию return 0) по вызову функции msum2(), Вся функциональность программы спрятана в этой функции. Вначале в рамках вызова функции msum2() запрашивается значение целочисленной переменной n (теперь это локальная переменная функции). Затем вводится переменная s для записи значения суммы натуральных чисел, выполняется оператор цикла и на экран выводится значение суммы (переменная s). На этом вы­полнение функции заканчивается.

Все переменные, использованные в теле функции, являются локальными. Это означает, что они доступны только в теле функции, но никак не за ее пределами. Вообще же доступность переменных определяется простым правилом: переменные доступны в пределах того блока, где они объявлены. Напомним, что блок в С++ ограничивается парой фигурных скобок. Несмотря на то что функция, объявленная с типом void, результат не воз­вращает, она может содержать инструкцию return, и не одну. В этом слу­чае инструкция return является командой завершения функции. Пример такой функции приведен в коде.
void InvFunc(double z){
if(z==0){
 cout << "Division by zero!" << endl;
 return;}
double x;
x=1/z;
cout << "1/z =" << x << endl;
}
В результате выполнения функции, в зависимости от значения аргумента, возможны два сценария. При ненулевом аргументе на экран выводится зна­чение, обратное к аргументу. Если аргумент у функции нулевой, выводится сообщение соответствующего содержания. Проверка аргумента на предмет равенства нулю осуществляется в услов­ ном операторе. Блок условного оператора, выполняющийся при нуле­вом аргументе, состоит из двух команд: выводится сообщение (команда cout<<"Division by zero!"<
В обеих командах вывода в функции использована инструкция завершения строки епdl. Кроме того, в данном случае фактически инструкция return использована как альтернатива к еlse-блоку условного оператора: можно было бы ту часть кода, что выполняется при ненулевом аргументе функции, разместить в еlse-6локе условного оператора, отказавшись при этом от инструкции завершения функции return. Тем не менее, в более слож­ных программах использование такой инструкции часто бывает не только оправданным, но и существенно упрощает структуру кода. Что касается непосредственно объявления функции, то в С++ допускается в начале программы указывать прототип функции (прототипом функции называется «шапка» с типом возвращаемого результата, именем функции и списком аргументов), а непосредственно объявление функции перено­сить в конец программы. Корректным является такой программный код (смотрите следующий листинг).
#include 
using namespace std;
//Прототип функции InvFunc():
void InvFunc(double z);
//Функция InvFunc() использована в программе:
int main(){
double s;
cout << " Enter number: ";
cin >> s;
InvFunc(s);
return 0;
}
//Объявление функции InvFunc():
void InvFunc(double z){
if(z==0){
 cout << "Division by zero!" << endl;
 return;}
double x;
x=1/z;
cout << "1/z =" << x << endl;
}
Онлайн всего: 3
Гостей: 3
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте