ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Лабораторная работа №5. Функции и многомерные массивы в С++Функции и многомерные массивы в С++
Функция — это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие. Функция может принимать параметры и возвращать значение. Любая программа на C++ состоит из функций, одна из которых должна иметь имя main (с нее начинается выполнение программы). Функция начинает выполняться в момент вызова. Любая функция должна быть объявлена и определена. Объявление функции должно находиться в тексте раньше ее вызова для того, чтобы компилятор мог осуществить проверку правильности вызова. Объявление функции задает ее имя, тип возвращаемого значения и список передаваемых параметров. Определение функции содержит, кроме объявления, тело функции, представляющее собой последовательность операторов и описаний в фигурных скобках:
[ класс ] тип имя ([ список параметров ])[throw (исключения) ] { тело функции } В квадратных скобках указана необязательная часть. Тип возвращаемого функцией значения может быть любым, кроме массива и функции (но может быть указателем на массив или функцию). Если функция не должна возвращать значение, указывается тип void. Список параметров определяет величины, которые требуется передать в функцию при ее вызове. Элементы списка параметров разделяются запятыми. Для каждого параметра, передаваемого в функцию, указывается его тип и имя (в объявлении имена можно опускать). Имена функций подчиняются тем же ограничениям, что и имена переменных. В определении, в объявлении и при вызове одной и той же функции типы и порядок следования параметров должны совпадать. Тип возвращаемого значения и типы параметров совместно определяют тип функции. Для вызова функции в простейшем случае нужно указать ее имя, за которым в круглых скобках через запятую перечисляются имена передаваемых аргументов. Например вызов функции ожидания нажатия произвольной клавиши на клавиатуре - функция getch(), объявление которой находится в библиотеке conio.h, можно произвести следующим образом .... getch(); .... Существует несколько способов возврата управления к точке, из которой была вызвана функция:
Если функция должна возвращать результат, то оператор
возвращает значение выражение в обращение к функции. Таким образом, оператор возврата имеет две формы:
return;
В этом случае, когда выполняется оператор возврата, управление программой немедленно передается обратно в вызвавшую среду. Используется когда функция не возвращает значение.
return выражение;
Например: return; не возвращает значения; return 3; возвращаемое значение = 3; return (a + b); возвращаемое значение = значению выражения (а + b);
Пример определения функции
#include<iostream.h> #include<conio.h> double cube(double x) //объявление функции – заголовок. Функция cube возводит в 3 степень вещественное число х, возвращает результат вещественного типа { return x*x*x; //возвращает в основную программу х в 3 степени }
int main() { double x,y; cout<<"Input x = "; cin>>x; //ввод с клавиатуры числа х y=1+cube(x); //вызов функции cube cout<<y; //вывод результата getch(); }
Параметры функции Механизм параметров является основным способом обмена информацией между вызываемой и вызывающей функциями. Параметры, перечисленные в заголовке описания функции, называются формальными параметрами, или просто параметрами, а записанные в операторе вызова функции — фактическими параметрами, или аргументами. При вызове функции в первую очередь вычисляются выражения, стоящие на месте аргументов; затем в стеке выделяется память под формальные параметры функции в соответствии с их типом, и каждому из них присваивается значение соответствующего аргумента. При этом проверяется соответствие типов и при необходимости выполняются их преобразования. При несоответствии типов выдается диагностическое сообщение.
Пример #include<iostream.h> #include<conio.h>
int fun(int х,int у) { return(х+у); }
int main() { int a=1,b=9,c=2.5; cout<<fun(a,c); несоответствие типов, результат будет 3, с - округлится /*cout<<fun(a,b,c);*/ будет ошибка getch(); }
Пример #include<iostream.h> #include<conio.h>
int fun(int x,char y) { cout<<"y="<<y<<'\n'; вторая переменная просто проигнорируется int fun(int x, double y) – даст верный результат return(x+y); }
int main() { int a=2,b=100000000,c=2.5; cout<<fun(a,b); getch(); }
Существует два способа передачи параметров в функцию: по значению и по адресу.
Результат работы программы: i j k 1 2 3 1 3 4 Первый параметр (1) передается по значению. Его изменение в функции не влияет на исходное значение. Второй параметр (j) передается по адресу с помощью указателя, при этом для передачи в функцию адреса фактического параметра используется операция взятия адреса, а для получения его значения в функции требуется операция разыменования. Третий параметр (к) передается по адресу с помощью ссылки. Не нашли, что искали? Воспользуйтесь поиском:
|