
лаба ввит 4
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ
КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатика»
Лабораторная работа №4
««Разработка консольных проектов Visual Studio
с использованием функций VC++»
по теме
«Разработка алгоритмов решения сложных задач методом пошаговой детализации и их программная реализация»
по дисциплине
«Введение в информационные технологии»
Выполнил: студент гр. БПС2402
ГоловачеваС.М.
Вариант 9
Проверил: Волков А.И.
Москва, 2024 г.
Оглавлени
1 Общее задание 3
2 Индивидуальное задание 4
3 Формализация задания 4
4 Разработка алгоритмов для решения задачи 5
5 Разработка программного проекта 8
6 Исходные данные для тестирования проекта 11
7 Тестирование программы 12
8 Доказательство правильности результатов выполнения проекта 13
1 Общее задание 3
2 Индивидуальное задание 4
3 Формализация задания 4
4 Разработка алгоритмов для решения задачи 5
5 Разработка программного проекта 8
6 Исходные данные для тестирования проект 10
7 Тестирование программы 11
8 Доказательство правильности результатов выполнения проекта 12
1 Общее задание
Изучить основные положения технологий структурного проектирования алгоритмов и метода пошаговой детализации, средства MS Visio для графической визуализации алгоритмов.
Выбрать вариант индивидуального задания из таблицы 4.1.
Проанализировать постановку задачи своего варианта индивидуального задания и, если необходимо, уточнить ее у преподавателя.
Провести формализацию решения задачи. Определить этапы ее решения с использованием метода пошаговой детализации.
Разработать схемы алгоритмов процедур на различных этапах метода пошаговой детализации и схему иерархии процедур.
Утвердить у преподавателя результаты выполнения п.п. 4-5.
Разработать программный код функций VC++ по алгоритмам п. 5.
Создать консольный проект, содержащий несколько файлов. Обмен данными между функциями должен осуществляться через параметры и возвращаемые значения, без использования глобальных переменных. Главная функция main должна содержать только операторы вызова разработанных функций.
Подготовить варианты исходных данных для тестирования проекта.
Выполнить проект с тестовыми исходными данными и получить результаты. Проверить правильность результатов.
Оформить отчет по работе в среде MS Word. Изобразить все схемы, используя средства MSVisio.
Представить преподавателю отчет по работе.
Ответить на замечания преподавателя по выполненной работе и на заданные им вопросы по теме.
Получить отметку о выполнении и защите работы.
2 Индивидуальное задание
3 Формализация задания
Разработать алгоритм и программу для вычисления площади правильного n-угольника, вписанного в окружность заданного радиуса R.
Входные Данные:
R (радиус окружности): Вещественноечисло, представляющее радиус окружности, в которую вписан многоугольник. R > 0.
n (количество сторон): Целое число, представляющее количество сторон многоугольника. n >= 3.
Выходные Данные:
S (площадь n-угольника): Вещественное число, представляющее площадь n-угольника.
Промежуточные Вычисления:
a (длина стороны n-угольника): Вещественное число. Вычисляется по формуле: a = 2 * R * sin(180° / n)
r (радиус вписанной окружности): Вещественное число. Вычисляется по формуле: r = R * cos(180° / n)
g (центральный угол в радианах): Промежуточная переменная. Вычисляется как: angle = π / n
4 Разработка алгоритмов для решения задачи
Начнем проектирование алгоритма методом «сверху вниз».
На самом верхнем (первом) уровне алгоритм решения задачи можно укрупненно представить в виде вызова главной процедуры с именем main(рис. 1), где CalcR вычисления значений переменных r,a,S,g.
Рисунок 1 – Укрупненная схема алгоритма main
На следующем, втором уровне, детализируем алгоритм процедуры GetR путем представления его в виде последовательности следующих процедур (рис. 2):
процедура ввода значений радиуса и количества углов с именем GetR.
Рисунок 2 – Результат второго уровня детализации алгоритма
Перейдем к следующему, третьему уровню детализации. Поэтому на следующем, третьем шаге детализируем алгоритмы процедур функции PutS(рис.3) и вычисления r,a, S, g CalcR(рис. 4).
Рисунок 3 – Схема функции PutS
Рисунок 4 – Схема алгоритма процедуры CalcraSg
Схема иерархии процедур для решения задачи изображена на рисунке 5.
Рисунок 5 – Схема иерархии процедур для решения задачи
5 Разработка программного проекта
Для решения нашей задачи создадим проект, в котором будет три файла исходного кода: помимо файла с главной функцией main создадим файл с функциями GetRn и PutS для ввода и вывода и объединим в отдельный файл все остальные функции, участвующие в решении задачи.
Программный код проекта представлен ниже.
В первый файл с именем GetPut.cpp запишем функции ввода исходных данных GetRn и вывода результатов PutS. Обе эти функции типа void, так как не имеют возвращаемого значения.
Текст программ GetRn и PutS из файла GetPut.cpp:
// ФайлGetPut.ccp
#include <iostream>
using namespace std;
// Функция для ввода радиуса и количества углов многоугольника
void GetR(double& R)
{
setlocale(LC_ALL, "rus");
cout << "Введите радиус окружности (R): ";
cin >> R;
if (cin.fail() || R <= 0)
{
cout << "Ошибка: некорректные входные данные (R > 0)" << endl;
}
}
// Функция для вывода площади
void PutS(double S, int n)
{
setlocale(LC_ALL, "rus");
cout << "Площадь правильного " << n << "-угольника: " << S << endl;
}
Во второй файл с именем Calc.cpp запишем функцию, выполняющие необходимые вычисления для решения задачи.
Текст программ CalcraSg из файла Calc.cpp:
// Файл Calc.cpp
#include<cmath>// Для математических функций
#define_USE_MATH_DEFINES// ДляиспользованияM_PI
#include"math.h"
#include<iostream>
// Функция для вычисления площади правильного n-угольника
double CalcR(doubleR, intn)
{
double g = M_PI / n; // Угол в радианах
double a = 2 * R * sin(g); // Длина стороны многоугольника
double r = R * cos(g); // Радиус вписанной окружности
double S = 0.5 * a * n * r;
return S;
}
В третьем файле с именем main.cpp находится главная функция main, программный код которой содержит только вызовы разработанных функций ввода исходных данных, решения задачи и вывода результатов.
Текст программы функции main из файла main.cpp:
#include <iostream>
using namespace std;
void GetR(double&);
void PutS(double, int);
double calcR(double, int);
int main()
{
double R;
GetR(R);
double area10 = calcR(R, 10);
double area50 = calcR(R, 50);
double area100 = calcR(R, 100);
PutS(area10, 10);
PutS(area50, 50);
PutS(area100, 100);
return 0;
}
6 Исходные данные для тестирования проекта
Протестируем проект при разных вариантах входных переменныхR, n:
1 вариант исходных данных:R1=10, n1=10.
2 вариант исходных данных:R2=50, n2=50.
3 вариант исходных данных: R3=100, n3=100
Расчет на калькуляторе значенийS1, S2, S3 дает следующие результаты:S1=293.893, S2=7833.33, S3=31395.3.
7 Тестирование программы
В таблице 1 приведены результаты тестирования программы
Таблица 1 – Результаты тестирования программы
-
R
n
S
10
10, 50, 100
293.893
313.333
313.953 (рис.5)
50
10, 50, 100
7347.32
7833.33
7848.81(рис.6)
100
10, 50, 100
29389.3
31333.3
31395.3 (рис.7)
0
4
Ошибка (рис.8)
Рисунок 5 – Результат работы программы при R = 10, n = 10, 50, 100
Рисунок 6 – Результат работы программы при R = 50, n = 10, 50, 100
Рисунок 7 – Результат работы программы при R = 100, n = 10, 50, 100
Рисунок 8 – Результат работы программы при R = 0, n = 10, 50, 100
8 Доказательство правильности результатов выполнения проекта
Правильность результатов выполнения проекта подтверждается их совпадением с результатами контрольных вычислений на калькуляторе для обоих вариантов исходных данных.