Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба ввит 2

.docx
Скачиваний:
0
Добавлен:
10.03.2025
Размер:
136.1 Кб
Скачать

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

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

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

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

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

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

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

по теме «Основные средства алгоритмического языка

программирования VC++»

Вариант №9

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

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

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

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

Проверил:

Волков А.И.

Москва, 2024 г.

Оглавление

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

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

3. Схема алгоритма решения задачи 5

4. Код программы проекта 6

5. Результаты выполнения программы 7

6. Тестирование программы и доказательство правильности результатов и их объяснения 8

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

  1. Изучить основные средства языка программирования VС++, типы данных и их представление в оперативной памяти компьютера.

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

  3. Провести формализацию заданного арифметического выражения. Для этого запишите выражение по правилам языка программирования с учетом приоритета операций.

  4. Реализовать различные возможности преобразования вещественного числа в целое: с усечением (явное и неявное), с округлением в большую сторону, с округлением в меньшую сторону. Запишите для них четыре оператора по правилам языка VС++ для присваивания результатов четырем любым переменным целого типа.

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

  6. Запишите операции вывода всех используемых переменных и инкрементных выражений. Повторите операции вывода переменных в инкрементных выражениях после вывода самих выражений.

  7. Создать схему алгоритма решения задачи (функции main) средствами MS Visio.

  8. Создайте программный код проекта с функцией main решения задачи средствами VС++.

  9. Получите результаты, проанализируйте, объясните и докажите их правильность. Перечислите все неявные преобразования типов данных при выполнении программы.

Получить отметку о выполнении и защите работы.

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

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