
лаба ввит 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, так как это увеличение выполнено уже после вывода инкрементирующего выражения.