 
        
        лаба ввит 2
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ
КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Прикладная Информатика»
Лабораторная работа №2
«Разработка простейших проектов с использованием основных средств языка программирования VC++»
по теме «Основные средства алгоритмического языка
программирования VC++»
Вариант №9
по дисциплине
«Введение в информационные технологии»
Выполнил: студент гр. БПС2402
Головачева С.М.
Проверил:
Волков А.И.
Москва, 2024 г.
Оглавление
1. Постановка задачи 3
2. Формализация и уточнение задания 4
3. Схема алгоритма решения задачи 5
4. Код программы проекта 6
5. Результаты выполнения программы 7
6. Тестирование программы и доказательство правильности результатов и их объяснения 8
1. Постановка задачи
- Изучить основные средства языка программирования VС++, типы данных и их представление в оперативной памяти компьютера. 
- Выбрать индивидуальный вариант задания из таблицы 2.1. 
- Провести формализацию заданного арифметического выражения. Для этого запишите выражение по правилам языка программирования с учетом приоритета операций. 
- Реализовать различные возможности преобразования вещественного числа в целое: с усечением (явное и неявное), с округлением в большую сторону, с округлением в меньшую сторону. Запишите для них четыре оператора по правилам языка VС++ для присваивания результатов четырем любым переменным целого типа. 
- Записать операции префиксного и постфиксного инкремента для переменных, получивших свои значения усечением в результате неявного и явного преобразования вещественного числа в целый тип. 
- Запишите операции вывода всех используемых переменных и инкрементных выражений. Повторите операции вывода переменных в инкрементных выражениях после вывода самих выражений. 
- Создать схему алгоритма решения задачи (функции main) средствами MS Visio. 
- Создайте программный код проекта с функцией main решения задачи средствами VС++. 
- Получите результаты, проанализируйте, объясните и докажите их правильность. Перечислите все неявные преобразования типов данных при выполнении программы. 
Получить отметку о выполнении и защите работы.
 
2. Формализация и уточнение задания
Для формализации и уточнения задания определим, что исходные данные x, y – вещественного типа double. Результаты вычислений – переменная d также должна быть вещественного типа double.
Для изучения различных возможностей преобразования вещественного числа в целое определим четыре целые переменные k, l, m, n – переменные целого типа int. Этим переменным будем присваивать значения, полученные разными способами преобразования вещественного числа в целое: с усечением (неявное и явное преобразования типа), с округлением в большую сторону с помощью функции ceil, с округлением в меньшую сторону посредством функции floor.
Перечисленные операции будут записываться следующими операторами присваивания VС++:
| f = pow(5.2, 3) * log10(x + y) / (x - 1 / (0.45 * sin(x - 8 * y))) + 0.5; k = f;l = int(f);m = ceil(f);n = floor(f); | 
Для изучения операций префиксного и постфиксного инкремента добавим следующие операции вывода:
| cout<<endl<<"Значение префиксного инкремента ++k= "<<++k; cout<<endl<<"Значение постфиксного инкремента l++= "<<l++; cout<<endl<<"Значение k после приращения = "<<k; cout<<endl<<"Значение l после приращения = "<<l; | 
3. Схема алгоритма решения задачи
Для выполнения лабораторной работы нарисовала схему алгоритма решения задач по написанному коду программы. (рис. 1)
 
	1 
 
 
 
	1 
 
Рисунок 1 – Схема алгоритма main
4. Код программы проекта
Написала код программы проекта по индивидуальному заданию.
#include <iostream>
#include <cmath>
#include <limits>
using namespace std;
int main() // создаем функцию main
{
setlocale(LC_ALL, "rus");
double f, x, y; // вводим переменные типа double
int k, m, l, n; // вводим переменные типа int
cout << "Введите x = ";
while (!(cin >> x) || cin.get() != '\n') //проверяет, является ли следующим символом вводимого потока символ новой строки.
{
cout << "Введена буква, введите число ";
cin.clear();// Очистка потока от некорректных данных
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // функция пропустит все символы в буфере до следующего символа \n
}
cout << "Введите y = ";
while (!(cin >> y) || cin.get() != '\n') //проверяет, является ли следующим символом вводимого потока символ новой строки.
{
cout << "Введена буква, введите число ";
cin.clear();// Очистка потока от некорректных данных
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // функция пропустит все символы в буфере до следующего символа \n
}
double sum = (x + y); // введение переменной sum
if ((x / 8 == y)) // ставим условие чтобы знаменатель не был равен 0
{
cout << "Ноль в знаменателе невозможен" << endl;
return 0;
}
if (sum <= 0) // ставим условие чтобы значение десятичного логарифма было меньше и не равно 0
{
cout << "Значение десятичного логарифма меньше 0" << endl;
return 0;
}
f = pow(5.2, 3) * log10(x + y) / (x - 1 / (0.45 * sin(x - 8 * y))) + 0.5; // пишем заданное уравнение
k = f; // выделяем целую часть результата (неявно)
l = int(f); // выделяем целую часть результата (явное преобразование)
m = ceil(f); // округление в большую сторону
n = floor(f); // округление в меньшую сторону
cout << endl << "Вещественное f= " << f;
cout << endl << "Целая часть результат (неявно) k=" << k;
cout << endl << "Целая часть результат (явное преобразование) l= " << l;
cout << endl << "Округление в большую сторону m= " << m;
cout << endl << "Округление в меньшую сторону n= " << n << endl;
cout << endl << "Значение префиксного инкремента ++k= " << ++k;
cout << endl << "Значение постфиксного инкремента l++=" << l++;
cout << endl << "Значение k после приращения = " << k;
cout << endl << "Значение l после приращения = " << l << endl << endl;
system("PAUSE");
return 0;
}
5. Результаты выполнения программы
Получила результаты выполнения программы, введя значения из индивидуального задания (рис. 2)
 
Рисунок 2 – Результат выполнения программы
6. Тестирование программы и доказательство правильности результатов и их объяснения
В таблице 1 представлены результаты тестирования программы
Таблица 1 – Результаты выполнения программы
| Номер теста | Проверяемый случай | Значение x | Значение y | Результат | 
| 1 | Значения из индивидуального задания | 12,678 | 6,9 | 17.8942 | 
| 2 | Значения, когда знаменатель равен 0 | 16.96 | 2.12 | Ноль в знаменателе невозможен | 
| 3 | Значения, аргумент логарифма <= 0 | 1.658 | -2.25 | Аргумент логарифма не может быть 0 или меньше нуля | 
| 4 | Положительный х и отрицательный y | 12,678 | -6,9 | 7.62654 | 
Правильность расчета арифметического выражения подтверждается
вычислением на калькуляторе или в среде MS Excel.
Целые части переменной f, полученные путем неявного (k) и явного (l) преобразования типа данных совпадают и равны 17.
Так как значение f положительно, то его округление в большую сторону (m) равно 18, а округление в меньшую сторону (n) равно 17.
Выводимое значение префиксного инкремента ++k равно 18, так как увеличение на 1 выполняется до вывода результата операции. Выводимое значение постфиксного инкремента l++ равно 17, так как увеличение на 1 выполняется после вывода результата операции.
Выводимое значение переменной k после приращения остается неизменным, так как увеличение на 1 выполнено еще перед выводом инкрементирующего выражения. Выводимое значение переменной l после приращения увеличилось на 1, так как это увеличение выполнено уже после вывода инкрементирующего выражения.
