- •Министерство цифрового развития, связи и массовых коммуникаций российской федерации
- •«Разработка консольных проектов Visual Studio
- •Введение.
- •1.Общее и индивидуальное задание на разработку программных проектов.
- •2.Формализация и уточнение задания.
- •3.Разработка пяти программных проектов в одном решении и получение результатов их работы.
- •4.Реализация 2-го проекта.
- •5.Реализация 3-го проекта.
- •6.Реализация 4-го проекта.
- •7.Реализация 5-го проекта.
- •8.Доказательство правильности результатов.
- •Заключение.
- •Список используемой литературы
Министерство цифрового развития, связи и массовых коммуникаций российской федерации
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «Московский технический университет связи и информатики»
__________________________________________________________________
Кафедра «Информатика»
Лабораторная работа № 5
«Разработка консольных проектов Visual Studio
с использованием функций VC++»
по теме
«Функции VС++ и консольные проекты
Visual Studio»
Выполнил:
Проверил:
Москва, 2021 г.
Введение.
Настоящий реферат написан с учетом требований к оформлению отчета по лабораторным работам в соответствии с ГОСТ 2.105-95. В ходе лабораторной работы были поставлены следующие задачи:
Изучить структуру программного кода консольных проектов Visual Studio и правила определения, объявления и вызова функции VC++.
Решение индивидуального варианта по вычислению заданного арифметического выражения с использованием функций VC++
Разработка схем алгоритмов программ.
Создание консольных решений и реализация их в отдельных проектах с получением результата работы.
Проверка правильности решения.
1.Общее и индивидуальное задание на разработку программных проектов.
Решить задачу вычисления арифметического выражения при значениях
исходных данных x=-1.462 и y=0.577: .
Реализовать различные возможности преобразования вещественного числа в целое: с усечением (явное и неявное), с округлением в большую сторону, с округлением в меньшую сторону и пояснить результаты преобразования. Записать для них четыре оператора по правилам языка VС++ для присваивания результатов четырем любым переменным целого типа.
Вывести префиксный и постфиксный инкременты получивших свои значения усечением в результате неявного и явного преобразования вещественного числа в целый тип.
2.Формализация и уточнение задания.
Для формализации и уточнения задания определим, что исходные данные x, y – вещественного типа double. Результаты вычислений - переменная с также должна быть вещественного типа double. Для изучения различных возможностей преобразования вещественного числа в целое определим четыре целые переменные, например, k, m, n, i – переменные целого типа int. Этим переменным будем присваивать значения, полученные разными способами преобразования вещественного числа в целое: с усечением (явное и неявное преобразования типа), с округлением в большую сторону с помощью функции ceil, с округлением в меньшую сторону посредством функции floor.
Перечисленные операции будут записываться следующими операторами присваивания VС++:
c = (1 / (2 * PI)) - x * (sqrt(2.5*pow(10, 3)*y)) * fabs(cos(pow(x, 3)));
3.Разработка пяти программных проектов в одном решении и получение результатов их работы.
Создадим пять проектов в одном решении. Для этого, в отличие от предыдущих лабораторных работ, при создании первого проекта необходимо
поставить галочку в переключателе Создать каталог для решения. Проектам и решению необходимо дать разные имена. Решению дадим имя Лаба, а проекту имя pr1 (рисунок 1).
Рисунок 1
Алгоритм главной процедуры не зависит от способа обмена данными и приведен на рисунке 2.
Рисунок 2 - Схема алгоритма главной процедуры main для всех проектов.
Разработаем алгоритм процедуры с параметрами и возвращаемым значением.
Схема алгоритма этой процедуры func1 представлена на рисунке 3.
Рисунок 3 - Схема алгоритма процедуры func1 с параметрами и возвращаемым значением для первого проекта.
Разработаем программные коды двух функций в соответствии со схемами алгоритмов.
Программные коды разработанных функций запишем в файл с именем zad1.cpp в следующем порядке (рисунок 4):
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
double func1(double x, double y)
//х=-1.462
//у=0.577
{
double c; // Локальный объект
c=(1/(2*M_PI))-x*(sqrt(2.5*pow(10,3) * y)) * fabs(cos(pow(x, 3)));
return c; // Возврат c в вызывающую функцию
}
int main()
{
setlocale(LC_ALL,"rus");
double x, y, c;
std::cout<<" Ввод x= ";
std::cin>>x;
std::cout<<"\n Ввод y= ";
std::cin>>y;
c = func1(x, y); // Вызов функции func1
std::cout << "\n результат c= " << c << "\n";
system("PAUSE");
return 0;
}
Рисунок 4 – Программный код.
Откомпилируем файл zad1.cpp, выполним построение решения Лаба и выполнение проекта pr1. Получим следующие результаты при заданных значениях исходных данных (рисунок 5).
Рисунок 5 – Результат работы программы.
Выполним проект с помощью отладчика по шагам и проведем следующие исследования:
В функции main заменим оператор вызова функции с=func1(x, y) на оператор с=func1(y,x), изменив порядок фактических параметров.
По итогу мы видим, что ответ меняется из-за того, что мы поменяли входные данные местами. (рисунок 6)
Рисунок 6 - Результат работы измененной программы.
Изменится ли значение переменной x в функции main, если внутри функции func1 до оператора return с изменить значение x, например, добавить оператор x++.
Нет, ничего не изменится, так строчка вычисления с была до строчки с x++. (рисунок 7)
Рисунок 7 - Результат работы измененной программы.
Можно ли при вызове функции в списке фактических параметров указывать не имя переменной, а константу или выражение?
Да, можно, но при этом значения после прохождении функции будут уже другие, так как функции принимают на вход не только вводимые с клавиатуры числа.
Изменится ли результат работы проекта, если, ничего не меняя в главной функции main, изменить имена формальных параметров при определении функции func1
Нет, ничего не изменится, так как на вход все равно принимаются те же вводимые значения и от названия они не зависят.