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

Лаба 3 / Лабораторная работа №3_Токарев_0421

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

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра Электротехнологической и преобразовательной техники

отчет

по лабораторной работе № 3

по дисциплине «Информационные технологии»

Тема: Операторы языка С++

Студент гр. 0421

Токарев А.А.

Преподаватель

Чмиленко Ф.В.

Санкт-Петербург

2021

Цель работы: исследование стандартных операторов языка С++.

Задания:

  1. Арифметические операторы

  2. Операторы отношения

  3. Логические операторы

  4. Побитовые операторы

  5. Операторы инкремента и декремента

  6. Знакомство с отладчиком

Дополнительные задания:

  1. Составные операторы присваивания

Ход работы:

Задание 1.

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

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int a;

double b;

system("chcp 1251");

system("cls");

cout << "Введите целое число a: " << endl;

cin >> a;

cout << "a = " << a << endl;

cout << "a * 12 / 4 = " << a * 12 / 4 << endl;

cout << "(a - 3) % 2 = " << (a - 3) % 2 << endl;

cout << "Введите вещественное число b: " << endl;

cin >> b;

cout << "b = " << b << endl;

cout << "b / (12 + 3) = " << b / (12 + 3) << endl;

cout << "b * 3.3 - 2.83 = " << b * 3.3 - 2.83 << endl;

system("pause");

return 0;

}

Рисунок 1 – Программа, демонстрирующая примеры применения арифметических операторов

Задание 2.

Разработаем программу, показывающую работу операторов отношения:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

double a, b;

bool c;

system("chcp 1251");

system("cls");

cout << "Введите число a: " << endl;

cin >> a;

cout << "Введите число b: " << endl;

cin >> b;

c = (a != b);

cout << "Результат отношения a != b: " << boolalpha << c << endl;

cout << "Введите число a: " << endl;

cin >> a;

cout << "Введите число b: " << endl;

cin >> b;

c = (a < b);

cout << "Результат отношения a < b: " << noboolalpha << c << endl;

cout << "Введите число a: " << endl;

cin >> a;

cout << "Введите число b: " << endl;

cin >> b;

c = (a <= b);

cout << "Результат отношения a <= b: " << c << endl;

system("pause");

return 0;

}

Рисунок 2 – Программа, демонстрирующая примеры применения операторов сравнения

Задание 3.

Разработаем программу, демонстрирующую работу логических операторов:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

double a, b;

bool c;

system("chcp 1251");

system("cls");

cout << "Введите число a: " << endl;

cin >> a;

cout << "Введите число b: " << endl;

cin >> b;

c = (a >= 0 && b >= 0);

cout << "Оба ли введенных числа являются положительными?: " << boolalpha << c << endl;

cout << "Введите число a: " << endl;

cin >> a;

cout << "Введите число b: " << endl;

cin >> b;

c = (a >= 0 || b >= 0);

cout << "Хотя бы одно из введенных чисел является положительным?: " << boolalpha << c << endl;

cout << "Введите число a: " << endl;

cin >> a;

cout << "Введите число b: " << endl;

cin >> b;

c = !(a >= 0) && !(b >= 0);

cout << "Оба ли введенных числа являются отрицательными?: " << boolalpha << c << endl;

system("pause");

return 0;

}

X

Рисунок 3 – Программа, демонстрирующая применение логических операторов

Задание 4.

Разработаем программу, демонстрирующую работу побитовых операторов:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int a, b, c, d;

system("chcp 1251");

system("cls");

cout << "Введите число a: " << endl;

cin >> a;

cout << "Введите число b: " << endl;

cin >> b;

c = (a & b);

cout << "Результат побитового И между числами a и b: " << c << endl;

c = (a | b);

cout << "Результат побитового ИЛИ между числами а и b: " << c << endl;

c = (a ^ b);

cout << "Результат побитового исключающего ИЛИ между числами а и b: " << c << endl;

c = ~a;

d = ~b;

cout << "Результат инвертирования битов числа а: " << c << endl;

cout << "Результат инвертирования битов числа b: " << d << endl;

system("pause");

return 0;

}

Рисунок 4 – Программа, демонстрирующая работу побитовых операторов

Разработаем программу, в которой реализован побитовый сдвиг вправо и влево на заданное пользователем с клавиатуры число:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int a, b, c, d;

system("chcp 1251");

system("cls");

cout << "Введите число, для которого надо осуществить побитовый сдвиг: " << endl;

cin >> a;

cout << "Введите число, на которое нужно осуществить побитовый сдвиг вправо: " << endl;

cin >> b;

c = a >> b;

cout << "Введите число, на которое нужно осуществить побитовый сдвиг влево: " << endl;

cin >> b;

d = a << b;

cout << "Исходное число = " << a << endl;

cout << "Результат побитового сдвига исходного числа вправо = " << c << endl;

cout << "Результат побитового сдвига исходного числа влево = " << d << endl;

system("pause");

return 0;

}

Рисунок 5 – Программа, демонстрирующая применение побитового сдвига на заданное с клавиатуры число

Задание 5.

Разработаем программу, в которой продемонстрируем различие между префиксной и постфиксной формами инкремента:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int a, b, c, d;

system("chcp 1251");

system("cls");

cout << "Введите целое число а: " << endl;

cin >> a;

cout << "Введите целое число b: " << endl;

cin >> b;

c = a++;

d = ++b;

cout << "c = a++ = " << c << endl;

cout << "a = " << a << endl;

cout << "d = ++b = " << d << endl;

cout << "b = " << b << endl;

system("pause");

return 0;

}

Рисунок 6 –Программа, демонстрирующая различие между постфиксной и префиксной формой инкремента

Разработаем программу, в которой продемонстрируем различие между префиксной и постфиксной формами декремента:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int a, b, c, d;

system("chcp 1251");

system("cls");

cout << "Введите целое число а: " << endl;

cin >> a;

cout << "Введите целое число b: " << endl;

cin >> b;

c = a--;

d = --b;

cout << "c = a-- = " << c << endl;

cout << "a = " << a << endl;

cout << "d = --b = " << d << endl;

cout << "b = " << b << endl;

system("pause");

return 0;

}

Рисунок 7 – Программа, демонстрирующая различие между постфиксной и префиксной формой декремента

Задание 6.

Изучим базовые возможности отладчика. Для этого добавим новый проект и вставим в начало функции main() приведенный ниже код:

int a = 0;

a = 3;

int b = 2;

a = b+2;

a = 3;

a++;

Установим точку останова на строке с кодом а = 3. Запустим программу, в окне Local variables будут отображаться имена и текущие значения локальных переменных:

Рисунок 8 – Значения и имена локальных переменных в точке останова

Далее зададим новое значение переменной a с помощью диалогового окна Evaluate/Modify:

Рисунок 9 – Значения и имена локальных переменных после изменения значения переменной a

Пройдем в пошаговом режиме последующие строки программы и пронаблюдаем изменение значения переменной a:

Рисунок 10 – Значения и имена локальных переменных после выполнения программы в пошаговом режиме

Дополнительное задание.

Разработаем программу, демонстрирующую примеры работы составных арифметических операторов присваивания:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int a;

double b;

system("chcp 1251");

system("cls");

cout << "Введите целое число a: " << endl;

cin >> a;

cout << "a = " << a << endl;

a *= 12;

a %= 5;

a -= 1;

cout << "a * 12 % 5 - 1= " << a << endl;

cout << "Введите целое число b: " << endl;

cin >> b;

cout << "b = " << b << endl;

b += 14;

b /= 2;

cout << "(b + 14) / 2 = " << b << endl;

system("pause");

return 0;

}

Рисунок 11 – Программа, демонстрирующая примеры работы составных арифметических операторов присваивания

Разработаем программу, демонстрирующую примеры работы составных побитовых операторов присваивания:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int a, b, c, d;

system("chcp 1251");

system("cls");

cout << "Введите число a: " << endl;

cin >> a;

cout << "Введите число b: " << endl;

cin >> b;

c = a;

d = a;

a &= b;

cout << "Результат побитового И между числами a и b: " << a << endl;

c |= b;

cout << "Результат побитового ИЛИ между числами а и b: " << c << endl;

d ^= b;

cout << "Результат побитового исключающего ИЛИ между числами а и b: " << d << endl;

system("pause");

return 0;

}

Рисунок 12 – Программа, демонстрирующая примеры работы составных побитовых операторов присваивания

Разработаем программу, демонстрирующую примеры работы составного побитового сдвига вправо и составного побитового сдвига влево:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int a, b, c, d, e;

system("chcp 1251");

system("cls");

cout << "Введите число, для которого надо осуществить побитовый сдвиг: " << endl;

cin >> a;

cout << "Введите число, на которое нужно осуществить побитовый сдвиг вправо: " << endl;

cin >> b;

c = a;

d = a;

a >>= b;

cout << "Введите число, на которое нужно осуществить побитовый сдвиг влево: " << endl;

cin >> e;

c <<= e;

cout << "Исходное число = " << d << endl;

cout << "Результат побитового сдвига исходного числа вправо = " << a << endl;

cout << "Результат побитового сдвига исходного числа влево = " << c << endl;

system("pause");

return 0;

}

Рисунок 13 - Программа, демонстрирующая примеры работы составного побитового сдвига вправо и составного побитового сдвига влево

Выводы:

В данной лабораторной работе были изучены основные операторы в языке программирования С++. Были изучены основные арифметические, логические, побитовые операторы, операторы отношения и инкремента/декремента. Также были изучены составные операторы присваивания и основы работы с отладчиком в C++ Builder.

С помощью арифметических операторов можно выполнять простые арифметические действия, такие как сложение, вычитание, умножение, деление, взятие остатка от деления. Их можно применять почти в любой программе, которая требует каких-либо математических вычислений.

Операторы отношения позволяют сравнить два операнда, в результате сравнения может быть получен результат true/false. Их можно использовать в программе, которая требует сравнить между собой какие-либо значения.

Логические операторы дают возможность пользоваться основными законами логики, такими как логическое И, логическое ИЛИ, логическое НЕ. Их можно использовать в том случае, когда в программе необходимо выполнение нескольких условий сразу.

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

Операторы инкремента/декремента позволяют прибавить/отнять единицу от той или иной переменной. Их можно использовать при переборе значений, например, в циклах.

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

При изучении отладчика в C++ Builder были использованы такие его функции, как точка останова, пошаговое выполнение программы и отображение имён и значений каждой из локальных переменных. Это позволяет качественно выполнять тестирование программ и быстро находить в них логические ошибки.