Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая работа №3.docx
Скачиваний:
0
Добавлен:
27.01.2025
Размер:
1.13 Mб
Скачать

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 – Результат выполнения программы после изменения имен формальных параметров

Вывод: результат программы не изменился, так как имена формальных и фактических параметров никак не зависят друг от друга.