 
        
        1) Реализация 1-го проекта:
1.1) Разработаем алгоритм процедуры с параметрами и возвращаемым значением. Схема алгоритма этой процедуры func1 приведена на рисунке 11.
 
Рисунок 11 – Схема алгоритма процедуры func1 с параметрами и возвращаемым значением для первого проекта
1.2) Разработаем программные коды двух функций в соответствии со схемами алгоритмов. Программные коды разработанных функций запишем в файл с именем ex1.cpp в следующем порядке:
- сначала определение функции func1 с параметрами и возвращаемым значением; 
- после него главную функцию main. 
 
	#include
	<iostream> #include
	<cmath> using
	namespace
	std; double
	numb(double&
	nu){……} double
	zero(double&
	z){……} double
	func1(double
	x,
	double
	y) { 	double
	d; 	d
	= (x
	* y
	* y
	- sqrt(abs(x
	* x
	- 2.5E-3 * y)))
	/ (2 * sin(x
	* y))
	+ 0.5; 	return
	d; } 
	 int
	main() { 	setlocale(LC_ALL,
	"rus"); 	double
	x, y, d; 
	 	cout
	<<
	"Введите
	х
	= "; 	cin
	>>
	x; 	numb(x);//проверка
	является ли введенный х числом 
	 	zero(x);//проверка
	на обращение знаменателя в ноль 
	 	cout
	<<
	"Введите
	y = "; 	cin
	>>
	y; 	numb(y);//проверка
	является ли введенный у числом 
	 	zero(y);//проверка
	на обращение знаменателя в ноль 
	 	d
	= func1(x, y); 	cout
	<<
	endl <<
	"Вещественное
	d = "
	<<
	d <<
	endl; 	system("PAUSE"); 	return
	0; } 
1.3) Откомпилируем файл ex1.cpp, выполним построение решения ProjectLab3 и выполнение проекта Project_1. Получим следующие результаты при заданных значениях исходных данных (рис.12).
 
Рисунок 12 – Результат запуска программы
1.4) Проведем следующие эксперименты, используя при необходимости пошаговую отладку:
Проверим, зависит ли результат выполнения проекта от порядка фактических параметров в функции main, заменив оператор вызова функции d=func1(x, y) на оператор d=func1(y,x).
Результат выполнения программы представлен на рисунке 13.
 
Рисунок 13 – Результат запуска программы
Вывод: результат выполнения проекта зависит от порядка фактических параметров, так как они передаются в функцию в том порядке, в котором записаны в скобках, и не зависят от имён формальных.
Проверим, изменится ли значение переменной x в функции main, если внутри функции funс1 до оператора return d изменить значение x, например, добавив оператор x++:
 
	double
	func1(double
	x,
	double
	y) { 	double
	d; 	d
	= (x
	* y
	* y
	- sqrt(abs(x
	* x
	- 2.5 * pow(10, -3) * y)))
	/ (2 * sin(x
	* y))
	+ 0.5; 	x++; 	return
	d; } 
Результат запуска программы представлен на рисунке 14.
 
Рисунок 14 – Результат программы с добавлением оператора x++
Вывод: результат выполнения проекта не изменился, так изменение параметра х произошло после вычисления значения d.
Проверим, можно ли при вызове функции в списке фактических параметров указывать не имя переменной, а константу или выражение для следующих операторов:
 
	d
	= func1(1.3802, -1.9); 
Результат запуска программы представлен на рисунке 15.
 
Рисунок 15 – Результат выполнения программы при указании в списке фактических параметров констант
Вывод: при вызове функции в списке фактических параметров можно указывать константы и выражения для фактических операторов.
Результат программы будет неизменным при введении любых допустимых данных, так как на вход функции мы передаём заданные числа, а не значения переменных.
Проверим, изменится ли результат работы проекта, если, ничего не меняя в главной функции main, изменить имена формальных параметров при определении функции func1 следующим образом:
 
	double
	func1(double
	a,
	double
	b) { 	double
	d; 	d
	= (a
	* b
	* b
	- sqrt(abs(a
	* a
	- 2.5E-3 * b)))
	/ (2 * sin(a
	* b))
	+ 0.5; 	return
	d; } 
Результат запуска программы представлен на рисунке 16.
 
Рисунок 16 – Результат выполнения программы после изменения имен формальных параметров
Вывод: результат программы не изменился, так как имена формальных и фактических параметров никак не зависят друг от друга.
