Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба ввит3.docx
Скачиваний:
0
Добавлен:
10.03.2025
Размер:
370.42 Кб
Скачать

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

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

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

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

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

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

«Разработка консольных проектов с использованием основных средств языка программирования VC++»

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

Вариант №9

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

«Введение в информационные технологии»

Выполнил: студент гр. БПС2402

Головачева С.М.

Проверил:

Волков А.И.

Москва, 2024 г.

Оглавление

1.Постановка задачи 3

2.Формализация и уточнение задания 4

3.Разработка пяти программных проектов в одном решение и получение результатов их работы 4

3.1 Реализация 1-го проекта: 4

3.2 Реализация 2-го проекта: 8

3.3 Реализация 3-го проекта: 10

3.4 Реализация 4-го проекта: 13

3.5 Реализация 5-го проекта: 15

4.Тестирование программы и доказательство правильности результатов 17

1.Постановка задачи

  1. Изучить структуру программного кода консольных проектов Visual Studio и правила определения, объявления и вызова функций VC++.

  2. Выбрать индивидуальный вариант задания из таблицы 3.1.

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

  • схемы алгоритмов для вычисления заданного арифметического выражения:

  • схему алгоритма процедуры с входными параметрами и возвращаемым значением;

  • схему алгоритма процедуры с входными и выходными параметрами и без возвращаемого значения;

  • схему алгоритма без параметров и без возвращаемого значения;

  • программные коды трех функций и функции main в соответствии со схемами алгоритмов.

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

  • функция с параметрами и возвращаемым значением, причем определение функции должно быть записано перед функцией main.

  • функция с параметрами и возвращаемым значением, причем определение функции должно быть записано после функции main.

  • функция с параметрами и без возвращаемого значения.

  • функция без параметров и без возвращаемого значения (с глобальными переменными).

  • функция с параметрами и возвращаемым значением, причем определения функции и main должны находиться в разных файлах.

Каждый способ должен быть реализован в отдельном проекте, а все пять проектов должны быть объединены в одном решении.

  1. Выполнить созданные проекты и получите результаты. Убедитесь в идентичности и правильности результатов, полученных при выполнении каждого из пяти проектов.

  2. Провести эксперименты, описанные в примере выполнения задания. Внесение изменений в программный код выполняйте путем комментирования исходного кода с последующим удалением комментария для возврата к исходному состоянию. После внесения изменений выполнить повторную компиляцию и перестроение решения.

2.Формализация и уточнение задания

Для формализации и уточнения задания определим, что исходные данные x, y – вещественного типа double. Результаты вычислений – переменная f также должна быть вещественного типа double. Операция вычисления f будет записываться следующим оператором VC++:

f = pow(5.2, 3) * log10(x+y) / (x – 1 /( 0,45 * sin(x-8*y))) + 0,5;

Вычисление f реализуем в функциях VC++ тремя различными способами в соответствии с общим заданием.

3.Разработка пяти программных проектов в одном решение и получение результатов их работы

    1. Реализация 1-го проекта:

Алгоритм главной процедуры не зависит от способа обмена данными и приведен на рисунке 1. (Рис. 1)

1

1

Рисунок 1 – Схема алгоритма главной процедуры

Разработаем алгоритм процедуры с параметрами и возвращаемым значением. Схема алгоритма этой процедуры func1 представлена ниже (Рис.2)

Рисунок 2 – Схема алгоритма Func1

Разработаем программные коды двух функций в соответствии со схемами алгоритмов. Программные коды разработанных функций запишем в файл с именем z1.cpp.

#include <iostream>

#include <cmath>

#define _USE_MATH_DEFINES

#include "math.h"

using namespace std;

//Определение функции func1

double func1(double x, double y)

{

double f;

f = (pow(5.2, 3) * (log10(x + y) / (x - (1 / (0.45 * sin(x - 8 * y)))))) + 0.5;

return f;

}

int main() //функция main

{

setlocale(LC_ALL, "rus");

double x, y, f; //переменные типа double

cout << "Ввод х= ";

while (!(cin >> x)) // “защита от дурака”

{

cout << "Введите корректные данные";

cin.clear(); // Очистка потока от некорректных данных

cin.ignore(numeric_limits<streamsize>::max(), '\n'); // функция пропустит все символы в буфере до следующего символа \n

}

cout << endl << "Ввод у= ";

while (!(cin >> y))

{

cout << "Введите корректные данные";

cin.clear(); // Очистка потока от некорректных данных

cin.ignore(numeric_limits<streamsize>::max(), '\n'); //функция пропустит все символы в буфере до следующего символа \n

}

if ((x+y)<=0) //условие, что аргумент логарифма больше 0

{

cout << "Аргумент логарифма не может быть 0 или меньше нуля";

return 0;

}

if ((x / 8 == y)) //условие, что знаменатель не равен 0

{

cout << "Знаменатель равен 0, на 0 делить нельзя";

return 0;

}

f = func1(x, y); //вставляем в функцию main

cout << endl << "результат f= " << f << endl;

system("PAUSE");

return 0;

}

Откомпилируем файл zad1.cpp, выполним построение решения lab3 и выполнение проекта proj1. Получим следующие результаты при заданных значениях исходных данных.

Рисунок 3 – Результаты выполнения проекта proj1

Проверим, зависит ли результат выполнения проекта от порядка фактических параметров в функции main, заменив оператор вызова функции f=func1(x, y) на оператор f=func1(y, x). (Рис. 4)

Рисунок 4 – Замена оператора вызова функции z=func1(x, y) на оператор z=func1(y, x).

Разным результатам способствует то, что при замене оператор вызова функции z=func1(x, y) на оператор z=func1(y, x) значение y становится значением x в самой функции.

Соседние файлы в предмете Введение в информационные технологии