Общие сведения о функциях и области видимости переменных
Функция – это логически самостоятельная именованная часть программы, в которую может передаваться любое количество значений аргументов (или не передаваться), а функция может возвращать (или не возвращать) значение.
Объявление функции
При объявлении функции указывается (слева направо):
· тип возвращаемого функцией значения;
· имя функции;
· в круглых скобках – типы и имена параметров (переменных).
Как и всякое объявление, конструкция заканчивается точкой с запятой. Пример.
int buf (int a);
Данное объявление означает, что функция с именем buf будет возвращать целочисленный значение. В скобках указан один целочисленный параметр а, значение которого следует передать в функцию при её вызове.
Определение функции
Определение функции – это описание операций, которые выполняются в ее рамках. Если объявление функции должно предшествовать её использованию, то определение функции может быть сделано в любом месте программы (за исключением случая «функция в функции»).
Пример функции, которая выполняет сложение двух чисел и возвращает сумму:
Int summa(int x, int y)
{
int z;
z=x+y;
return z;
}
Вызов функции
Для вызова функции надо указать 1) ее имя и 2) в скобках – список аргументов в соответствии с прототипом. Если функция возвращает значение, и оно дальше будет использоваться в программе, то его необходимо присвоить какой-либо переменной. Например:
w = delta (x,y);
В данном примере вызывается функция delta, которой передаются два аргумента. После выполнения функция возвращает значение, которое присвоится переменной w.
Любая программа на Си++ начинает выполняться с главной функции main (). Обычно из нее вызываются другие функции. В общем случае любая функция может быть вызвана из любой. Одна из функций становится вызывающей и временно передает управление вызываемой функции, которая, выполнив определенные операции, возвращает управление вызывающей.
Далее приведен пример программы, в которой используются две функции. По условию требуется вычислить z = x². Возведение числа в квадрат оформляется в виде отдельной функции.
# include<iostream>
int square (int a); // объявление функции square()
Int main ()
{
int z;
int x = 3;
z = square(x);
cout<< ” square =” << z << ”\n”;
return 0;
}
// определение функции square
Int square (int a)
{
int b;
b = a*a;
return b; // оператор возврата управления
}
Особенности передачи массива в функцию
В функцию можно передавать произвольное число значений. Эти значения могут быть оформлены в виде массива.
Чтобы передать в функцию массив, следует при вызове функции в качестве аргумента указать только имя массива без квадратных скобок, а в заголовке функции в качестве параметра объявить массив.
Ниже приведён пример, в котором в функцию с именем sum передаётся массив. В заголовке функции указано, что она принимает целочисленный массив:
int sum(int p[]).
При вызове функции в скобках указывается только имя массива:
Sum(arr).
#include <iostream>
using namespace std;
int sum(int p[])
{
int s=0;
for(int i=0; i<6; i++)
s=s+p[i];
return s;
}
Int main()
{
setlocale(0,"");
int a, arr[6];
for(a=0; a<6; a++)
{
cout<<"Введи "<<a+1<<"-тый элемент массива: ";
cin>> arr[a];
}
cout<<"Сумма = "<< sum(arr)<<endl;
return 0;
}
Локальные и глобальные переменные
Переменные, которые объявлены внутри функции, называются внутренними переменными или локальными. Эти переменные могут использоваться только в тех функциях, где они объявлены, и никакие другие функции доступа к ним не имеют.
Каждая локальная переменная функции возникает только в момент обращения к этой функции и исчезает после выхода из нее. Такие переменные называются автоматическими, т. к. они образуются и исчезают одновременно с входом в функцию и выходом из нее; они не сохраняют своих значений от вызова к вызову.
Чтобы переменная не только сохраняла свои значения в течение работы программы, но и чтобы ею могли пользоваться другие функции, она должна быть не локальной, а глобальной переменной. Глобальные (внешние) переменные доступны повсеместно. Их можно использовать в любом месте программы, в любой функции. Кроме того, поскольку внешние переменные существуют постоянно, а не возникают и не исчезают на период выполнения функции, свои значения они сохраняют и после возврата из функций, их установивших.
Внешняя переменная должна быть объявлена вне тела любой функциии только один раз; в этом случае ей будет выделена память. Обычно внешние переменные объявляются в начале программы, после директив препроцессора.
Практикум
Задание 1. Используя локальные переменные разработать программу в соответствии со следующими условиями. В главной функции заполнить 8 -элементный целочисленный массив с клавиатуры и задать два дробных числа. Спроектировать две отдельные функции:
1) запись элементов массива в файл в виде матрицы 2˟4;
2) нахождение наибольшего из двух дробных чисел; вывод результата произвести в главной функции.
Интерфейс программы оформить в виде меню. Выход из программы по – желанию пользователя.
Задание 2. Используя глобальные переменные разработать программу в соответствии с условиями Задания 1.
Задание 3(дополнительно). Объединить две разработанные программы в одну и сделать общее меню.