Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / Laba_varik15_5.docx
Скачиваний:
9
Добавлен:
10.06.2023
Размер:
714.22 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций российской федерации

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

__________________________________________________________________

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

Лабораторная работа № 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

Нет, ничего не изменится, так как на вход все равно принимаются те же вводимые значения и от названия они не зависят.

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