
Лаба 3 / Лабораторная работа №3_Токарев_0421
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра Электротехнологической и преобразовательной техники
отчет
по лабораторной работе № 3
по дисциплине «Информационные технологии»
Тема: Операторы языка С++
Студент гр. 0421 |
|
Токарев А.А. |
Преподаватель |
|
Чмиленко Ф.В. |
Санкт-Петербург
2021
Цель работы: исследование стандартных операторов языка С++.
Задания:
Арифметические операторы
Операторы отношения
Логические операторы
Побитовые операторы
Операторы инкремента и декремента
Знакомство с отладчиком
Дополнительные задания:
Составные операторы присваивания
Ход работы:
Задание 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 были использованы такие его функции, как точка останова, пошаговое выполнение программы и отображение имён и значений каждой из локальных переменных. Это позволяет качественно выполнять тестирование программ и быстро находить в них логические ошибки.