Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / Laba_varik6_8.1

.docx
Скачиваний:
9
Добавлен:
10.06.2023
Размер:
99.35 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ

КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Информатика»

Лабораторная работа № 8 – Проект 1

«Разработка проекта, решающего задачу построения

таблицы значений функции одной переменной»

По теме

«Циклические алгоритмические структуры. Регулярные

циклические структуры и их программная реализация»

по дисциплине

«Информатика»

Выполнил:

Вариант 6

Проверил:

Москва, 2021 г.

Содержание.

1. Общее задание. 2

2. Индивидуальное задание на разработку проекта. 3

3. Формализация и уточнение задачи. 4

4. Разработка функциональных алгоритмов. 4

5. Разработка программного кода проекта. 6

6. Результат выполнения проекта. 8

7. Доказательство правильности результатов. 9

8. Выводы. 9

9. Список используемой литературы. 10

  1. Общее задание.

1. Изучите вопросы программирование алгоритмов циклических структур.

2. Выберите вариант задания из таблицы 8.1.

3. Проведите формализацию поставленной задачи.

4. Решите задачу вашего индивидуального задания, используя разработанные функции пользователя.

Для этого разработайте схемы алгоритмов и программные коды

следующих функций:

• функции вычисления значения функции y = f(x) одного аргумента в одной

точке согласно вашему индивидуальному заданию;

• функции построения таблицы значений y = f(x) одного аргумента на заданном отрезке с заданным шагом изменения аргумента, причем использовать в качестве параметра цикла переменную целого типа;

• функции ввода исходных данных;

• функции вывода результатов;

• главной функции main, которая вызывает описанные выше функций для решения поставленной задачи.

5. Создайте консольный проект, содержащий откомпилированных файла:

• файл, содержащий функцию ввода исходных данных и функцию вывода результатов;

• файл с функциями вычисления значения функции y = f(x) и построения таблицы значений y = f(x);

• файл с главной функцией, которая должна содержать только операторы вызова пользовательских функций (ввода, функции построения таблицы и вывода), причем обмен данными между функциями осуществляться через параметры, без использования переменных.

6. Выполните проект и получите результаты.

7. Докажите правильность полученных результатов.

  1. Индивидуальное задание на разработку проекта.

Постройте таблицу и найдите наибольшее значение функции y = f(x) при изменении x на отрезке [a; b] c шагом h.

  1. Формализация и уточнение задачи.

Для реализации проекта разработаем следующие пользовательские функции:

• Функция function; вычисляет f(x) в заданной точке x;

• Функция doTable, которая формирует и выводит таблицу значений f(x) на заданном отрезке значений x. Определяет наибольшее и наименьшее значение на этом отрезке и число положительных и отрицательных значений функции f(x);

• Функция get, выполняющая ввод исходных данных:

• Границы отрезка [a, b];

• Шаг табуляции h.

• Функция put, выводящая найденные наибольшее и наименьшее значения f(x) и число положительных и отрицательных значений f(x);

• Главная функция main, которая последовательно вызывает функции get, doTable и put.

Для представление вещественных чисел будет использоваться тип данных с увеличенной точностью double.

  1. Разработка функциональных алгоритмов.

• Схема алгоритма функции function; вычисления значения заданной функции в одной точке изображена на рисунке 1.

Рисунок 1. – Схема алгоритма function, которая вычисляет значения заданной функции в одной точке.

• Схема алгоритма функции doTable решения задачи и формирования таблицы значений y = f(x) на отрезке [a, b] с шагом h изображена на рисунке 2.

Рисунок 2. – Схема алгоритма функции doTable, которая формирует таблицу значений функции y = f(x) на отрезке [a; b] с шагом h.

  1. Разработка программного кода проекта.

• Разработан программный код проекта, разбитый в три файла: getPut.cpp (Листинг 1), math.cpp (Листинг 2) и main.cpp (Листинг 3).

//Файл getPut.cpp

#include <iostream>

void get(double& a, double& b, double& h)

{

setlocale(LC_ALL, "rus");

std::cout << "[a] Введите нижнюю границу отрезка: ";

std::cin >> a;

std::cout << "[b] Введите верхнюю границу отрезка: ";

std::cin >> b;

std::cout << "[h] Введите шаг таблицы: ";

std::cin >> h;

std::cout << "\n";

}

void put(double ymax)

{

setlocale(LC_ALL, "rus");

std::cout << "\t\t\t\t|| [>] Наибольшее значение функции: " << ymax << "\t ||\n";

std::cout << "\t\t\t\t========================================================";

std::cout << "\n";

}

Листинг 1. – Программный код файла getPut.cpp

//Файл math.cpp

#include <iostream>

#include <cmath>

double function(double x)

{

double y;

y = 0.5 * exp(sin(x)) - x - 1;

return y;

}

void doTable(double a, double b, double h, double& ymax)

{

setlocale(LC_ALL, "rus");

double n = ((b + h / 2 - a) / h) + 1;

ymax = -1000000;

double x, y;

std::cout << "\t\t\t\t========================================================\n";

std::cout << "\t\t\t\t|[Номер ч-ла.]|[Значение перем. X]|[Значение перем. Y]||\n";

for (int i = 1; i <= n; i++)

{

x = a + (i - 1) * h;

y = function(x);

if (y > ymax)

{

ymax = y;

}

std::cout << "\t\t\t\t|| " << i << ".\t || " << x << "\t || " << y << "\t ||" << "\n";

}

std::cout << "\t\t\t\t||====================================================||";

std::cout << "\n";

}

Листинг 2. – Программный код файла math.cpp.

//Файл main.cpp

#include <iostream>

void get(double& a, double& b, double& h);

void doTable(double a, double b, double h, double& ymax);

void put(double ymax);

int main()

{

double a, b, h, ymax;

get(a, b, h);

doTable(a, b, h, ymax);

put(ymax);

std::cout << "\n";

system("PAUSE");

system("CLS");

return main();

}

Листинг 3. – Программный код файла main.cpp.

  1. Результат выполнения проекта.

• Ниже (рис. 3) представлен результат выполнения программы со следующими параметрами:

Рисунок 3. – Консольный вывод результатов проекта.

  1. Доказательство правильности результатов.

• Доказательство правильности результатов будет осуществлено в MS Excel с помощью данной формулы:

Таблица 1. – Результаты вычисления из MS Excel

Номер числа

Значение X

Значение Y

1

0

-0,5

2

0,5

-0,692426852

3

1

-0,840111588

4

1,5

-1,144259491

5

2

-1,758711136

6

2,5

-2,590331504

7

3

-3,424218582

8

3,5

-4,147931813

9

4

-4,765417907

10

4,5

-5,311880391

11

5

-5,808347502

12

5,5

-6,253079167

13

6

-6,621887186

14

6,5

-6,879994663

15

7

-7,035514598

16

7,5

-7,222566744

17

8

-7,655246041

18

8,5

-8,388911759

19

9

-9,24499333

20

9,5

-10,03619835

21

10

-10,70979517

• Наибольшее число из значений y это -0.5, что и требовалось доказать.

  1. Выводы.

  1. Проведен анализ поставленной задачи. Необходимо её решить, реализовав проект с помощью разветвлений.

  2. Были разработаны блок-схемы алгоритмов function и doTable методом «Сверху Вниз».

  3. В соответствии с блок-схемами были реализованы программные коды этих алгоритмов

  4. Была проверена правильность выполнения программы.

  5. Результат выполнения программы совпал с тестовыми данными, следовательно программа отработала без ошибок.

  1. Список используемой литературы.

а) https://disk.yandex.ru/d/pDS_6P4Zed0bGg/Информатика/БИК_БИН_21

• Лекция №7 “Циклические алгоритмические структуры. Регулярные циклические структуры и их программная реализация”.

Соседние файлы в папке лабы