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

лабы / Laba_varik6_6

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

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

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

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

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

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

Лабораторная работа № 6

«Программная реализация алгоритмов решения сложных задач»

По теме

«Функции VC++ и консольные проекты Visual Studio»

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

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

Выполнил:

Вариант 6

Проверил:

Москва, 2021 г.

1. Общее задание на разработку программного проекта 3

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

3. Формализация задания 4

4. Разработка алгоритмов решения задачи 4

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

6. Исходные данные для тестирования проекта 10

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

8. Доказательство правильности результатов выполнения проекта 11

9. Выводы 11

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

12

  1. Общее задание на разработку программного проекта

  1. Повторить материал, изложенный в темах 2-4.

  2. Изучить материал Темы 5 «Программная реализация алгоритмов решения сложных задач».

  3. Выберите индивидуальный вариант задания.

  4. Запишите заданные или полученные в процессе формализации математические формулы на языке программирования VС++.

  5. Проанализируйте разработанные в лабораторной работе 3 функциональные алгоритмы на различных этапах метода пошаговой детализации и схему их иерархии. Изобразите все схемы, используя средства MS Visio.

  6. Разработайте программный код функций VC++ по алгоритмам из п. 5.

  7. Создайте консольный проект, содержащий три файла исходного кода: файл с главной функцией main, файл с функциями ввода и вывода данных и файл с функциями, решающими предписанные задачи. Обмен данными между функциями должен осуществляться возвращаемые значения, без использования глобальных переменных. Главная функция main должна содержать только операторы вызова разработанных функций.

  8. Подготовьте варианты исходных данных для тестирования проекта.

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

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

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

Вариант 6

Вычислите R (расстояние между двумя точками A и B), заданными сферическими координатам. Соотношение между сферическими координатами и декартовыми:

  1. Формализация задания

В качестве вводимых параметров фиксируются 6 переменных r, R, O, F, типа double. Зная их, координаты точки А и B вычисляются по вышеописанным формулам, которые будут выражаться через переменные xa, xb, ya, yb, za, zb.

  1. Разработка алгоритмов решения задачи

Алгоритм проектируется методом «сверху вниз»:

На самом верхнем (первом) уровне алгоритм решения задачи укрупненно представлено в виде вызова главной процедуры с именем main (рисунок 1), где CalcCoords (процедура) вычисления значений координат точек A и B.

Рисунок 1 - Укрупненная схема алгоритма main.

На следующем, втором уровне, детализируется алгоритм процедуры CalcCoords путем представления его в виде последовательности 3-х следующих процедур (рисунок 2):

• процедура ввода значения координат O, F c именем GetAngle для каждой из трех тригонометрических функций;

• процедура вычисления значений координат точек A и B CompAB;

• процедура вывода вычисленных значений координат точек A и B PutAB.

Рисунок 2 - Второй уровень детализации алгоритма.

Третий уровень детализации. Процедуры GetAngle и PutAB в дальнейшей детализации не нуждаются, так как средства ввода и вывода имеются в любом языке программирования. Поэтому на следующем уровне детализируется алгоритм процедуры вычисления координат точек A и B CompAB (рисунок 3).

Рисунок 3 - Схема алгоритма процедуры CompRE.

На этом уровне детализации процедуры calcA и calcB идентичными по своим алгоритмам и вызываются лишь с различными параметрами.

На последнем уровне детализации разработаны схемы алгоритмов процедур calcA и calcB, вычисляющие полярные координаты по заданным параметрам (рисунок 4).

Рисунок 4 - схемы алгоритмов calcA и calcB

Теперь можно перейти к вычислению расстояния между двумя точками R. Её процедура calcR представлена на рисунке 5.

Рисунок 5 - Схемы алгоритмов calcR.

Схема иерархии процедур для решения задачи изображена на рисунке 6

Рисунок 6 - Схема иерархии процедур.

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

Реализуем процедуру calcR сразу в файле заголовка main.

Для решения задачи был создан проект, включающий 3 файла исходного кода: помимо файла с главной функцией mainmain.cpp создан файл с функцией calcABcalcCoords.cpp и файл для получения значений (функцией getAngle) – getAngle.cpp

Программный код проекта представлен ниже после описания всех файлов.

  1. В первом файле с именем calcCoords.cpp записаны формулы для поиска координат. Обе эти функции типа double. Так как функции этого файла используют библиотеку cmath, то в нем присутствует директива

#include <cmath>

  1. /* Файл calcCoords.cpp */

#include <cmath>

double calcXA(double r, double O) {

  1. return r * sin(O) * cos(O);

  2. } // Счет XA

double calcYA(double r, double O, double F) {

  1. return r * sin(O) * sin(F);

  2. } // Счет YA

double calcZA(double r, double F) {

  1. return r * cos(F);

  2. } // Счет ZA

double calcXB(double rr, double O) {

  1. return rr * sin(O) * cos(O);

  2. } // Счет XB

double calcYB(double rr, double O, double F) {

  1. return rr * sin(O) * sin(F);

  2. } // Счет YB

double calcZB(double rr, double F) {

  1. return rr * cos(F);

  2. } // Счет ZB

Во втором файле с именем getAngle.cpp присутствует ввод параметров O, F и r. Здесь присутствует библиотека iostream и поэтому необходима данная директива:

#include <iostream>

/* Файл getAngle.cpp */

#include <iostream>

void coords(double& rCin, double& rrCin, double& OCin, double& FCin) {

setlocale(LC_ALL, "rus"); // Локализация

std::cout << "Введите r до точки A" << "\n";

std::cin >> rCin; // Ввод rCin

std::cout << "Введите r до точки B" << "\n";

std::cin >> rrCin; // Ввод rrCin

std::cout << "Введите угол O" << "\n";

std::cin >> OCin; // Ввод OCin

std::cout << "Введите угол F" << "\n";

std::cin >> FCin; // Ввод FCin

}

  1. В третьем файле с именем main.cpp записана функция main и присутствует вывод и подсчёт R. Здесь используются библиотеки iostream и cmath, а также вызывается заголовок calcCoords.cpp, и файл getAngle.cpp поэтому присутствуют данные директивы:

#include <iostream>

#include <cmath>

#include "calcCoords.cpp"

#include "getAngle.cpp"

/* Файл main.cpp */

#include <iostream>

#include <cmath>

#include "calcCoords.cpp"

#include "getAngle.cpp"

void coords(double&, double&, double&, double&);

int main() {

double rCin, rrCin, OCin, FCin;

double R = sqrt(pow((calcXB(rrCin, OCin) - calcXA(rCin, OCin)), 2) + pow((calcYB(rrCin, OCin, FCin) - calcYA(rCin, OCin, FCin)), 2) + pow((calcZB(rrCin, FCin) - calcZA(rCin, FCin)), 2));

// Посчёт R

std::cout << "Результат: " << R << "\n";

// Вывод R

}

  1. Исходные данные для тестирования проекта

Протестируем проект на следующих входных параметрах:

• Расстояние до A = 5;

• Расстояние до B = 4;

• Угол O = 45°

• Угол F = 45°

Расчеты на калькуляторе дают результат R = 0.98957

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

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

Рисунок 7 - Вывод в консоль результата выполнения проекта.

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

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

Правильность результатов выполнения проекта подтверждается их совпадением с результатами контрольных вычислений на калькуляторе.

  1. Выводы

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

  2. Были разработаны блок-схемы уровней детализации проекта методом «Сверху вниз», а также блок-схемы алгоритмов вычисления координат.

  3. В соответствии с блок-схемами, были реализованы коды программных проектов для каждого из файлов.

  4. Для проверки правильности работы программы, были подобраны тесты, результаты которых были вычислены вручную при помощи калькулятора.

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

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

а) https://disk.yandex.ru/d/pDS_6P4Zed0bGg/Информатика/БИК_БИН_21 Лабораторная работа «Разработка простейших проектов с использованием основных средств языка программирования VC++», подготовленная Московским Техническим Университетом Связи и Информатики (МТУСИ)

б) https://disk.yandex.ru/d/pDS_6P4Zed0bGg/Информатика/БИК_БИН_21 Лекция «Тема №4. Функции и консольные проекты», подготовленная Московским Техническим Университетом Связи и Информатики (МТУСИ)

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