Добавил:
Если чем-то мне удалось вам помочь, то благодарность принимаю на эту карту: 2200 2460 1776 0607 Для защищенки 5 сем: https://t.me/+h5cc9QNQe19kODVi Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laba_5.docx
Скачиваний:
0
Добавлен:
10.10.2023
Размер:
530.46 Кб
Скачать

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

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

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

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

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

«Разработка консольных проектов Visual Studio

с использованием функций VC++»

по теме:

«Основы алгоритмизации, базовые алгоритмические структуры и метод пошаговой детализации»

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

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

Выполнил: студент гр. БИН2104 Зайцева О.С.

Вариант 9

Проверил:

Москва, 2021 г.

Содержание

  1. Индивидуальное задание на разработку программного проекта…………. 3

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

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

3.1) Функция с параметрами и возвращаемым значением, причём определение функции должно быть записано перед функцией main…………… 4

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

3.3) Фуекция с параметрами и без возвращаемого значения……………… 8

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

3.5) Функция с параметрами и возвращаемым значением, причём определение функции и main должны находиться в разных файлах…………… 11

  1. Доказательство правильности результатов……………………………… 12

  1. Индивидуальное задание на разработку программного проекта.

Индивидуальный вариант задания:

Создать решение, состоящее из пяти программных проектов, для вычисления арифметического выражения:

при значениях исходных данных x=12.678 и y=6.9 с использованием различных способов обмена данными и местоположением функции в соответствии с общим заданием.

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

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

f = 5.2 * 5.2 * 5.2 * log10(x + y) / (x – 1.0 / (0.45 * sin(x – 8 * y))) + 0.5;

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

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

Создадим пять проектов в одном решении. Решению дадим имя laba5, а проекту имя pr1 (рис. 1).

Рис.1 - Создание нового проекта и решения

Далее, создадим пустой проект и добавим в него файл с пустым исходным кодом с именем zad1.cpp.

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

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

Рисунок 2- Схема алгоритма главной процедуры main для всех проектов

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

Схема алгоритма этой процедуры func1 представлена на рисунке 3.

Рисунок 3- схема алгоритма процедуры func1 с параметрами и возвращаемым значением для первого проекта

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

Программные коды разработанных функций запишем в файл с именем zad1.cpp в следующем порядке (рис.4)

  • Сначала определение функции func1 с параметрами и возвращаемым значением;

  • После него главную функцию main.

#include <iostream>

#include <cmath>

using namespace std;

double func1(double x, double y)

{

double f;

f = 5.2 * 5.2 * 5.2 * log10(x + y) / (x - (1.0 / 0.45 * sin(x - 8.0 * y))) + 0.5;

x++;

return f;

}

int main()

{

setlocale(LC_ALL, "rus");

double x, y, f;

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

cin >> x;

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

cin >> y;

f = func1(x, y);

cout << "при x=" << x << "\t" << "и y=" << y;

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

system("Pause");

return 0;

}

Рис. 4 – Программный код первого проекта

  • Откомментируем файл zad1.cpp, выполним построение решения laba5 и выполнение проекта pr1. Получим следующие результаты выполнения проекта (рис.5)

Рис. 5 -Результаты выполнения проекта pr1

  • Выполним проект с помощью отладчика по шагам и проведём следующие исследования:

  • в функции main заменим оператор вызова функции f=func1(x, y)

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

  • измениться ли значение переменной x в функции main, если внутри функции func1 до оператора return f изменить значение x, например, добавить оператор x++:

Значение переменной x в функции main не измениться, так как оператор x++ стоит после формулы, в которую уже были подставлены x и y и посчитана f

double func1(double x, double y)

{

double f;

f = 5.2 * 5.2 * 5.2 * log10(x + y) / (x - (1.0 / 0.45 * sin(x - 8.0 * y))) + 0.5;

x++;

return f;

}

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

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

  • Создадим втрой пустой проект с именами pr2 в существующем решении. Для этого выполним команду Файл/Добавить/Создать проект. В открывшемся окне Добавить новый проект зададим имя проекта pr2.

  • Запишем в файл с именем zad2.cpp программные коды разработанных в первом проекте функции в следующем порядке:

  • Откомпилируем файл zad2.cpp и выполним перестроение решения laba5.

  • Чтобы выполнить второй проект, его надо назначить запускаемым проектом. Для этого необходимо выделить в окне Обозреватель решений имя проекта pr2 и нажать правую кнопку мыши, а затем выполнить команду Назначить запускаемым проектом (риисунок 6)

  • Выполним проект pr2. Получим следующие результаты при заданных значениях исходных данных (рисунок 7)

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

  • Создадим третий проект с именем pr3 в уже имеющемся решении.

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

Схема алгоритма этой процедуры func3 представлена на рисунке 8.

Рисунок 8- Схема алгоритма процедуры func3 с параметрами и без возвращаемого значения для третьего проекта

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

Программные коды разработанных функций запишем в файл с именем zad3.cpp в следующем порядке (рисунок 9)

  • Объявление (прототип) функции func3;

  • Определение функции main;

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

#include <iostream>

#include <cmath>

using namespace std;

/*Объяаление (прототип) функции func3*/

void func3(double, double, double&);

int main()

{

setlocale(LC_ALL, "rus");

double x, y, f;

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

cin >> x;

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

cin >> y;

cout << "При x=" << x << "\tи y=" << y << endl;

func3(x, y, f); /*Вызов функции func3*/

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

system("PAUSE");

return 0;

}

void func3(double x, double y, double& f)

{

f = 5.2 * 5.2 * 5.2 * log10(x + y) / (x - (1.0 / 0.45 *

sin(x - 8.0 * y))) + 0.5;

}

Рисунок 9-Программный код третьего проекта

  • Откомпилируем файл zad3.cpp¸выполним перестроение решения laba5 и выполнение проекта pr3, назначив его запускаемым проектом. Получим следующие результаты при заданных значениях исходных данных (рисунок 10)

Рисунок 10- Результаты выполнения проекта pr3

  • Выполним проект с помощью откладчика по шагам, так же, как и в первом проекте, поставив точку останова после ввода исходных данных x и y на операторе вызова функции.

  • Проследим за изменением значений всех переменных в окнах Локалльные и Видимые.

  • Ответим на следующие вопросы:

  • Можно ли при вызове функции в списке фактических параметров записывать выражения? Например,

  • Измениться ли результат выполнения проекта, если при определении функции func3 удалить знак & перед формальным параметров f:

Символ «&» записывается перед именем формального параметра для явного указания способа передачи параметра

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

  • Создадим четвёртый проект с именем pr4 в уюе имеющемся решении.

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

Схема алгоритма этой процедуры func4 представлена на рисунке 11:

Рисунок 11- Схема алгоритма процедуры func4 без параметров и без возвращаемого значения для четвёртого проекта

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

Программные коды разработанных функций запишем в файл с именем zad4.cpp в следующем порядке (рисунок 12):

  • Объявление (прототип) функции func4;

  • Определение глобальных переменных;

  • Определение функции main;

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

#include <iostream>

#include <cmath>

using namespace std;

void func4(void);

double x, y, f;

int main()

{

setlocale(LC_ALL, "rus");

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

cin >> x;

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

cin >> y;

cout << "При x=" << x << "\tи y=" << y << endl;

func4();

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

system("Pause");

return 0;

}

Рисунок 12- Программный код четвёртого проекта

void func4()

{

f = 5.2 * 5.2 * 5.2 * log10(x + y) / (x - (1.0 / 0.45 * sin(x - 8.0 * y))) + 0.5;

}

  • Откомпилируем файл zad4.cpp, выполним перестроение решения laba5 и выполнение проекта pr4, назначив его запускаемым проектом. Получим следующие результаты при заданных исходных данных (рисунок 13).

  • Выполним проект с помощью откладчика по шагам, так же, как и в первом проекте, поставив точку останова после ввода данных x и y на операторе вызова функции.

  • Проследим за изменением значений всех переменных в окнах Локальные и Видимые.

  • В тело главной функции main добавим определение переменных x, y, f до оператора ввода исходных данных:

  • Перестроим решение и выполним проект. Проанализируем полученные результаты и ответим на вопрос: почему и как изменились результаты выполнения проекта?

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

Создадим в уже имеющемся решении пятый проект с именем pr5, состоящий из двух файлов. В первый файл с именем zad5_m.cpp поместим текст функции main из второго проекта. Во второй файл с именем zad5_f.cpp поместим текст функции func2 из того же проекта. После раздельной компиляции файлов выполним их совместную компанировку и выполнение проекта. Результаты выполнения при заданных значениях исходных данных приведены на рисунке 14.

Рисунок 14 - Результат выполнения проекта pr5

Соседние файлы в предмете Информатика