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

лабы / Laba_varik12_6

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

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

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

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

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

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

«Программная реализация метода пошаговой детализации»

по теме:

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

Visual Studio»

по дисциплине «Информатика»

Выполнил: студент гр. БИН2104 Книгин Е.А. Вариант №12

Проверил:

Москва, 2021 г.

СОДЕРЖАНИЕ

1)ЦЕЛЬ РАБОТЫ

2)ФОРМУЛИРОВКА ЗАДАЧИ №12

3)ФОРМАЛИЗАЦИЯ ЗАДАНИЯ

4)РАЗРАБОТКА АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ

5)РАЗРАБОТКА ПРОГРАММНОГО КОДА ПРОЕКТА

6)РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ПРОГРАММЫ

7)ДОКАЗАТЕЛЬСТВО ПРАВИЛЬНОСТИ РАБОТЫ ПРОГРАММЫ

1

ЦЕЛЬ РАБОТЫ

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

2)Оформить отчет по работе.

ФОРМУЛИРОВКА ЗАДАЧИ №12

Определить площадь сектора каждого из 3-х секторов с различными и центральными углами.

1) S = π * R2 *

360

ФОРМАЛИЗАЦИЯ ЗАДАНИЯ

Для формализации и уточнения задания нужно понять, что исходные данные не определены, следовательно, они могут быть абсолютно разные, поэтому все переменные должны быть типа double. Функция вычисления площади (S) будет состоять из одной операции, которая запишется следующим образом:

2) s = M_PI * pow(r, 2) * a / 360;

2

РАЗРАБОТКА АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ

Самый верхний уровень состоит из процедуры main, в которой трижды повторяется операция CalcS, вычисляющая площадь сектора S из переменных r и a. (см. рис. 1)

Рисунок 1 – схема процедуры main

Следом детализируем процедуру CalcS. Она состоит из трех функций:

1)Функция ввода радиуса r и угла a – Input

2)Функция вычисления площади из радиуса r и угла a – ploshyad

3)Функция вывода площади сектора S – Output

(см. рис. 2)

3

Рисунок 2 – детализация второго уровня алгоритма

Затем детализируем процедуру ploshyad, обделяя вниманием функции Input и Output, потому что они выполняют лишь ввод и вывод данных. ploshyad состоит из выражения, вычисляющего площадь сектора из радиуса и угла. (см. рис. 3)

Рисунок 3 – схема алгоритма процедуры ploshyad

4

Схема иерархии процедур для решения задачи изображена ниже. (см. рис. 4)

Рисунок 4 – схема иерархии процедур для решения задачи

РАЗРАБОТКА ПРОГРАММНОГО КОДА ПРОЕКТА

Создадим обычное консольное приложение, где реализуем процедуру main в которой трижды будут вызваны все три функции в следующей очередности: Input, ploshyad, Output. Перед функцией main нужно подключить созданные нами библиотеки с функциями: “input-output.h” и “ploshyad.h”.

(см. рис. 5)

1 #include "input-output.h"

2 #include "ploshyad'.h"

3

4 void main(void)

5{

6 double r, a, s;

7Input(r, a);

8 ploshyad(r, a, s);

5

9 Output(s);

10Input(r, a);

11ploshyad(r, a, s);

12Output(s);

13Input(r, a);

14ploshyad(r, a, s);

15Output(s);

16}

Рисунок 5 – программный код процедуры main

Далее напишем программный код для библиотеки под названием input-output.h. Сначала запишем директиву #pragma once, чтобы библиотека подключалась один раз на все время работы программы, оставаясь в оперативной памяти. Затем подключим библиотеку #iostream для ввода, вывода данных и объявим стандартное пространство имен. Создадим функцию без возвратного значения для ввода данных и такую же для вывода.

(см. рис. 6)

1 #pragma once

2 #include <iostream>

3 using namespace std;

4 void Input(double& r, double& a) 5 {

6 cout << "Input Radius = ";

7cin >> r;

8 cout << "Input Angle = ";

9 cin >> a;

10}

11void Output(double s)

12{

13cout << "S =" << s << endl;

14}

Рисунок 6 – программный код библиотеки input-output.h

6

И наконец напишем код для библиотеки с функцией, вычисляющей выражение. Запишем такую же первую строку как в предыдущей библиотеке. Затем подключим библиотеку cmath для вычисления выражения. Создадим функцию без возвращаемого значения. В ней мы объявим константу PI и запишем само выражение.

1)#pragma once

2)#include <cmath>

3)#define _USE_MATH_DEFINES

4)#include <math.h>

5)

6)double ploshyad(double r, double a, double s)

7){

8)return s = M_PI * pow(r, 2) * a / 360;

9)}

Рисунок 7 – программный код библиотеки ploshyad.h

РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ПРОГРАММЫ

Возьмем три любые числа для радиуса и три числа, лежащие в промежутке от 0 до 360, для угла. Пусть R1 = 1, a1 = 360;

R2 = 2, a2 = 90; R3 = 3, a3 = 20, тогда результат будет такой – (см. рис. 8)

Рисунок 8 – результат работы программы

7

ДОКАЗАТЕЛЬСТВО ПРАВИЛЬНОСТИ РАБОТЫ ПРОГРАММЫ

Для проверки правильности результата в качестве гаранта мы будем использовать приложение Microsoft EXCEL из стандартного офисного пакета приложений от Microsoft. (см. рис. 9)

Рисунок 9 – доказательство правильности работы программы

8

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