КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Параметры функции
Прототип функции If (triangle(point1_2, point1_3, point2_3)) Do Double square(double a, double b, double c) Double line(double x1, double y1, double x2, double y2) { //функция возвращает длину отрезка, заданного координатами // x1,y1 и x2,y2 return sqrt(pow(x1-x2,2)+pow(y1-y2,2)); } { //функция возвращает площадь треугольника, //заданного длинами сторон а,b,c double s, p=(a+b+c)/2; return s=sqrt(p*(p-a)*(p-b)*(p-c)); } int triangle(double a, double b, double c) { //возвращает 1, если треугольник существует, иначе 0 return (a+b>c&&a+c>b&&c+b>a); } void main() { double x1, y1, x2, y2, x3, y3; double point1_2, point1_3, point2_3; { cout<<"\nEnter koordinats of triangle:"; cin>>x1>>y1>>x2>>y2>>x3>>y3; point1_2=line(x1, y1, x2, y2); point1_3=line(x1, y1, x3, y3); point2_3=line(x2, y2, x3, y3); cout<<"S="<<square(point1_2, point2_3, point1_3)<<"\n"; else cout<<"\nTriagle doesn’t exist"; } while(!(x1==0&&y1==0&&x2==0&&y2==0&&x3==0&&y3==0)); } Для того чтобы к функции можно было обратиться, в том же файле должно находиться определение или описание функции (прототип). double line(double x1,double y1,double x2,double y2); double square(double a, double b, double c); bool triangle(double a, double b, double c); double line(double,double,double,double); double square(double, double, double); bool triangle(double, double, double); Это прототипы функций, описанных выше.
При наличии прототипов вызываемые функции не обязаны размещаться в одном файле с вызывающей функцией, а могут оформляться в виде отдельных модулей и храниться в откомпилированном виде в библиотеке объектных модулей. Это относится и к функциям из стандартных модулей. В этом случае определения библиотечных функций, уже оттранслированные и оформленные в виде объектных модулей, находятся в библиотеке компилятора, а описания функций необходимо включать в программу дополнительно. Это делают с помощью препроцессорных команд #include <имя файла> Имя_файла определяет заголовочный файл, содержащий прототипы группы стандартных для данного компилятора функций. Например, почти во всех программах мы использовали команду #include <iostream.h> для описания объектов потокового ввода-вывода и соответствующие им операции. При разработке своих программ, состоящих из большого количества функций и размещенных в разных модулях, прототипы функций и описания внешних объектов (констант, переменных, массивов) помещают в отдельный файл, который включают в начало каждого из модулей программы с помощью директивы #include ”имя_файла”
Основным способом обмена информацией между вызываемой и вызывающей функциями является механизм параметров. Существует два способа передачи параметров в функцию: по адресу и по значению. При передаче по значению выполняются следующие действия: - вычисляются значения выражений, стоящие на месте фактических параметров; - в стеке выделяется память под формальные параметры функции; - каждому фактическому параметру присваивается значение формального параметра, при этом проверяются соответствия типов и при необходимости выполняются их преобразования. При передаче по значению в стек заносятся копии фактических параметров, и операторы функции работают с этими копиями. Доступа к самим фактическим параметрам у функции нет, следовательно, нет возможности их изменить.
Пример: #include <iostream.h> void Change(int a, int b) //передача по значению {int r=a; a=b; b=r;}
Дата добавления: 2015-06-04; Просмотров: 374; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |