
- •Предисловие
- •4. Функции
- •4.1. Объявление функций. Прототипы функций
- •4.2. Вызов функции
- •4.3. Завершение работы функции и возвращение результата.
- •4.4. Локальные переменные
- •4.5. Глобальные переменные
- •4.6. Аргументы функции
- •5. Массивы
- •5.1.Понятие массива. Одномерные массивы
- •5.2. Двумерные массивы
- •6. Передача массивов в функции
4.1. Объявление функций. Прототипы функций
Для использования функций их следует сначала объявить, а затем описать. Посредством объявления функции компилятору сообщается, что существует функция с заданным именем, типом возвращаемого значения и параметрами заданных типов. Объявление функции называется прототипом. Прототип функции совпадает с ее заголовком, после которого ставится точка с запятой. Например, объявление
int MyFunction ( int x, float y );
есть прототип функции MyFunction.
Имена формальных параметров в объявлении функции можно опускать. Таким образом, объявление функции MyFunction может иметь вид:
int MyFunction ( int , float );
Если в программе отсутствует прототип функции, то такая функция может вызываться только из функций, расположенных ниже по тексту программы. Для того чтобы функцию можно было вызвать из функций, расположенных по тексту выше, или в другом файле, в начале текста программы следует прописать прототип этой функции. Рекомендуется объявлять все функции, т. е. в начале текста программы следует прописать прототипы всех используемых в программе функций пользователя.
4.2. Вызов функции
При вызове функции следует указать ее имя и список аргументов в круглых скобках.
ИмяФункции (СписокАргументов)
Если аргументы у функции отсутствуют, то и при объявлении функции, и при ее вызове после имени функции следует оставлять пустые круглые скобки.
Функция может быть вызвана двумя способами.
1. Если функция имеет тип возвращаемого значения void, т. е. не возвращает никакого значения, либо возвращаемое значение не имеет в данном случае существенного значения, тогда функция вызывается отдельно стоящим оператором, например, system("pause"); Вызывается функция system. Аргументом функции является строка "pause".
2. Если функция возвращает значение, тогда ее вызов может быть использован в качестве операнда выражения: Например, трижды вызывается функция sin.
F = sin(x) + sin(y) + 5;
cout<<sin(x+y);
4.3. Завершение работы функции и возвращение результата.
Функция завершает свою работу и возвращает управление в вызывающую функцию в двух случаях:
- выполнен последний оператор тела функции, и достигнута закрывающая фигурная скобка };
- встретился оператор возврата return.
Общий вид оператора return:
return Выражение;
Оператор return завершает работу функции и возвращает в точку вызова значение Выражения, как результат работы функции. Выражением в операторе return может быть константа, переменная, арифметическое или логическое выражение.
Если функция не возвращает значение, то можно использовать первый способ завершения функции или оператор return. В этом случае выражение в операторе return не указывается, и оператор записывается в виде: return;
Функция может содержать несколько операторов return.
Пример 4.1. Вычисление f=n! оформить в виде функции. Использовать функцию для вычисления 6!, 7!, 8!, 9!, 10!, 11!, 12! .
#include <iostream.h>
#include <conio.h>
long Fact( int ); //Прототип функции Fact
int main ()
{
for ( int n=6; n<=12; n++)
cout<<"n= "<<n <<"f= "<<Fact(n)<<endl; //Вызов функции Fact
char c=getch(); //Вызов встроенной функции getch
return 0;
}
long Fact( int n) //Функция Fact
{
long f=1;
for ( int i=1; i<=n; f*=i++ );
return f;
}
Пример 4.2. Определение количества цифр в целом числе Number оформить в виде функции. Использовать функцию для вычисления количества цифр в заданном целом числе.
#include <iostream.h>
#include <stdlib.h>
int Quantity(long ); //Прототип функции Quantity
int main()
{
long Number;
cout << "Enter number: ";
cin >> Number;
cout<<"Number: " << Number << endl;
cout<<" Quantity: "
<< Quantity( Number)<<endl; //Вызов функци Quantity
system("pause"); //Вызов встроенной функци system
return 0;
}
int Quantity(long Number) //Функция Quantity
{
int k = 0;
while (Number)
{
k++;
Number = Number / 10;
}
return k;
}
Пример 4.3. Вычисление значения полинома в точке х по схеме Горнера оформить в виде функции. Использовать функцию для полинома, коэффициенты которого вводятся.
#include <iostream.h>
#include <stdlib.h>
double Value(int n, double x); //Прототип функции Value
int main()
{
int n;
double x;
cout << "Enter n, x :" << endl;
cin >> n >> x;
cout << " The value of polinom int the point x = "
<< Value( n, x) << endl; //Вызов функции Value
system("pause");
return 0;
}
double Value(int n, double x) //Функция Value
{
double Coeff, V = 0;
int i = n;
while(i >=0)
{
cout << "Enter coefficient for degree "<< i << " for x ";
cin >> Coeff;
V =V*x + Coeff ;
i--;
}
return V;
}