Числа и операторы. Лекция 2

Содержание

Слайд 2

Целые типы

Замечание 1: Размер типа int зависит от реализации. В Visual Studio

Целые типы Замечание 1: Размер типа int зависит от реализации. В Visual
размер int 4 байта.
Замечание 2: В таблице представлены «классические» целые типы. В современных стандартах присутствуют и другие дополнительные базовые типы, например, символьные: wchar_t, char8_t, char16_t, char32_t; числовые целые: long long int, unsigned long long int – занимают по 8 байт; целочисленные типы, определяемые корпорацией Microsoft: __int16 __int32 и __int64. 

Слайд 3

Арифметические операции с целыми

сложения +,
вычитания –,
умножения *,
деления нацело (с отбрасыванием остатка) /,
нахождения

Арифметические операции с целыми сложения +, вычитания –, умножения *, деления нацело
остатка от целочисленного деления %.

Замечание: арифметические операции над целыми дают целый результат.

Слайд 4

Операции сравнения над целыми

меньше <,
меньше или равно <=,
равно ==,
больше >,
больше или равно

Операции сравнения над целыми меньше меньше или равно равно ==, больше >,
>=,
не равно !=.

Замечание: Результатом сравнения целых является целое, равное 1, если результат сравнения истинный и 0, если ложный.

Слайд 5

Программа 2.1. Операции над целыми

#include
#include
using namespace std;
int main()
{ // Определение

Программа 2.1. Операции над целыми #include #include using namespace std; int main()
переменных
int a = 13, b = 7, sum, difference, prod, quotient, remainder; // Числа a и b, Сумма
// Разность, Произведение, Частное, Остаток
cout << "a = " << a << ", b = " << b << endl; // Вывод a и b
sum = a + b; // Вычисление суммы
cout << "a + b = " << sum << endl; // Вывод суммы
difference = a - b; // Вычисление разности
cout << "a - b = " << difference << endl; // Вывод разности
prod = a * b; // Произведение
cout << "a * b = " << prod << endl; // Вывод произведения
quotient = a / b; // Вычисление частного
cout << "a / b = " << quotient << endl; // Вывод частного
remainder = a % b; // Вычисление остатка
cout << "a % b = " << remainder << endl; // Вывод остатка
// См. далее ==============>>>>>>>>

Слайд 6

cout << "(a < b) = " << (a < b) <<

cout cout cout b) = " b) cout = b) = "
endl; // Вычисление и
cout << "(a <= b) = " << (a <= b) << endl; // вывод
cout << "(a > b) = " << (a > b) << endl; // результатов
cout << "(a >= b) = " << (a >= b) << endl; // сравнения
cout << "(a == b) = " << (a == b) << endl;
cout << "(a != b) = " << (a != b) << endl;
system("pause"); // Ждем нажатия клавиши
return 0; }
Результат выполнения
a = 13, b = 7
a + b = 20
a - b = 6
a * b = 91
a / b = 1
a % b = 6
(a < b) = 0
(a <= b) = 0
(a > b) = 1
(a >= b) = 1
(a == b) = 0
(a != b) = 1

Слайд 7

Целые константы

Десятичные константы записываются с помощью цифр от 0 до 9 и

Целые константы Десятичные константы записываются с помощью цифр от 0 до 9
могут иметь знак.
Пример: 123, -15, +9, -100.
Восьмеричные константы могут иметь знак, начинаются с цифры-приставки «нуль» (0) и должны включать только восьмеричные цифры от 0 до 7.
Пример: 0123, -015, но запись +09 или 09 является ошибкой, так как в восьмеричном числе использована недопустимая цифра 9.
Шестнадцатеричные константы могут иметь знак, начинаются с приставок 0x или 0X. В их записи можно использовать, кроме обычных цифр от 0 до 9 и латинские буквы a, b, c, d, e, f или A, B, C, D, E, F, имеющие, соответственно, значения 10, 11, 12, 13, 14, 15.
Пример: 0xA (это 10), 0Xf (это 15), 0x41(это 65 = 4*161+1*160).

Слайд 8

Целые константы Вывод в разных системах счисления

Манипуляторы

Целые константы Вывод в разных системах счисления Манипуляторы

Слайд 9

Числа с плавающей точкой

Числа с плавающей точкой имеют целую и дробную части,

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

Замечание: у Microsoft представление long double и double идентично (по 8 байт)
Под точностью в таблице понимается количество значащих цифр в десятичной записи числа.
Над числами с плавающей точкой можно выполнять операции сложения (+), вычитания (–), умножения (*) и нецелочисленного деления (/). В результате этих операций получается также число с плавающей точкой.
Числа с плавающей точкой можно сравнивать на равенство и неравенство, с помощью тех же операторов, что и целые числа.

Слайд 10

Плавающие константы

Числовые константы для типов чисел с плавающей точкой записываются в виде:

Плавающие константы Числовые константы для типов чисел с плавающей точкой записываются в
[s]m.mmmE/e[+/-]pp.
Здесь s – знак числа, m.mmm – мантисса, количество цифр которой определяет точность числа, pp – порядок числа, который может быть положительным или отрицательным. Если знак отсутствует, число считается положительным. Символ E (или e) заменяет 10.
123.321=1.23321E2=123321e-3.
По умолчанию считается, что числовые константы с плавающей
точкой имеют тип double. Если требуется константа типа float, ее можно явно определить с помощью суффиксов f или F, например,
3.14159265f, 2.0F, 1.23E5F. Для числовых констант типа long double используются суффиксы l или L: 2.71828182845904523536l, 3.14159265358979323846L.

Слайд 11

Вывод чисел

При включения заголовочного файла iostream становится доступной потоковая переменная std::cout,

Вывод чисел При включения заголовочного файла iostream становится доступной потоковая переменная std::cout,
связанная со стандартным выходным устройством stdin.
std::cout надо использовать при выводе результатов в консольное окно.
Числовые данные выводятся в выходной поток перегруженным оператором вывода <<.
precision() – функция-метод для управления точностью.
cout.precision() – возвращает установленную точность. cout.precision(n) – задается число выводимых цифр n.

Слайд 12

Ввод чисел

При включения заголовочного файла iostream становится доступной потоковая переменная std::cin,

Ввод чисел При включения заголовочного файла iostream становится доступной потоковая переменная std::cin,
связанная со стандартным входным устройством stdout. std::cin надо использовать при вводе значений с консоли (клавиатурный ввод).
Числовые данные вводятся из входного потока перегруженным оператором ввода >>.
При вводе чисел сначала пропускаются начальные пробелы, затем читаются символы числа. Ввод числа прекращается при поступлении пробела, табуляции или символа завершения строки. При вводе данных любых типов оператором >> разделителем отдельных порций данных является пробел. При вводе с клавиатуры, набранные символы будут обрабатываться после нажатия Enter.

Слайд 13

Программа Точность чисел с плавающей точкой

#include
#include
using namespace std;
int main()
{ float

Программа Точность чисел с плавающей точкой #include #include using namespace std; int
xf = 12345.678987654321; // 17 цифр
double yd;
cout << "Input yd: "; // Приглашение к вводу
cin >> yd; // Ввод переменной yd
cout << "precision = " << (cout.precision()); // Точность по умолчанию
cout << "\n xf = " << xf << ", yd = " << yd;
cout.precision(4); // Установка точности 4 цифры
cout << "\nprecision = " << (cout.precision());
cout << "\n xf = " << xf << ", yd = " << yd;
cout.precision(18); // Установка точности 18 цифр
cout << "\nprecision = " << (cout.precision());
cout << "\n xf = " << xf << ", yd = " << yd << endl;
cout.precision(6); // Восстановление точности по умолчанию
system("pause");
return 0; }

Слайд 14

Логический тип

В C++ введен специальный логический тип, bool, имеющий два значения: true

Логический тип В C++ введен специальный логический тип, bool, имеющий два значения:
– истина и false – ложь.
Замечание: в языке Си нет встроенного логического типа.
По определению C++, true имеет значение 1 при преобразовании к целому типу, а false преобразуется в 0.
Целые можно преобразовывать в логические значения, при этом ненулевое значение преобразуется в true, а нуль – в false.
Пример
bool bb = 7; // 7 преобразуется в bool и bb будет true
int i = true; // true будет преобразуется в 1, и i равно 1

Слайд 15

Логический тип

В арифметических и логических выражениях логические значения преобразуются в целые (int)

Логический тип В арифметических и логических выражениях логические значения преобразуются в целые
и операции выполняются над преобразованными величинами. Если результат приводится обратно к логическому типу, то 0 преобразуется в false, а ненулевое значение – в true.
Логический тип можно использовать для выражения результатов логических операций.
Пример
int a, b;

bool a_more_b = a > b;
Здесь a_more_b будет true, если a больше b и false в противном случае.

Слайд 16

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

&& - логическое умножение И,
! - логическое отрицание НЕ,
|| - логическое

Логические операторы && - логическое умножение И, ! - логическое отрицание НЕ,
сложение ИЛИ.

Приоритет операций
! - логическое отрицание НЕ,
&& - логическое умножение И,
3) || - логическое сложение ИЛИ.

Слайд 17

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

a || b && !c (a || b) && !c
Сначала

Логические операторы a || b && !c (a || b) && !c
будет вычислено Первым будет выполняться
!c, затем b && !c и потом логическое сложение в
логическое сложение. скобках (приоритет скобок).
Замечание: Выражения с использованием логических операторов вычисляются только до тех пор, пока не станет известной истинность или ложность результата.
Проверка существования треугольника по сторонами :
double a, b, c; // Стороны треугольника

if (a + b > c && a + c > b && b + c > a)
cout << ”Треугольник существует \n”;
else cout << ”Не существует \n”;

Операции сравнения в C++ приоритетнее любых логических операций!

Слайд 18

Математические функции

Библиотека математических функций: cmath (или math.h)

#define _USE_MATH_DEFINES
#include

В math.h определены константы

Математические функции Библиотека математических функций: cmath (или math.h) #define _USE_MATH_DEFINES #include В
M_PI для числа
π и M_E для числа e с точностью до 21-й цифры.

Слайд 19

Математические функции

Примеры:

На C++: (fabs(x)- fabs(y))/(1+ fabs(x*y))

(sqrt(fabs(x+1))–pow(fabs(y),1/3))/(1+pow(x, 2.0)/2+pow(y, 2.0)/4)

Неверно на C++:

Верно

Математические функции Примеры: На C++: (fabs(x)- fabs(y))/(1+ fabs(x*y)) (sqrt(fabs(x+1))–pow(fabs(y),1/3))/(1+pow(x, 2.0)/2+pow(y, 2.0)/4) Неверно
на C++:

(sqrt(fabs(x+1))–pow(fabs(y),1.0/3))/(1+pow(x, 2.0)/2+pow(y, 2.0)/4)

Слайд 20

Математические функции

Треугольник образован тремя вершинами, координаты которого задаются с клавиатуры. Найти площадь

Математические функции Треугольник образован тремя вершинами, координаты которого задаются с клавиатуры. Найти
и периметр треугольника.
Длина отрезка между двумя точками:
Формула Герона: , где p – полупериметр; a,b,c – длины сторон

#include “pch.h"
#include
#include
#include
#include
using namespace std;

int main()
{ setlocale(LC_ALL, "Russian");
double x1, y1, x2, y2, x3, y3, // Координаты вершин
a1, a2, a3, // Длины сторон
p, s; // Полупериметр и площадь
cout<<"Введите координаты вершин"< cin>>x1>>y1>>x2>>y2>>x3>>y3; // ввод переменных координат
a1=sqrt(pow((x2-x1),2)+ pow((y2-y1),2)); // вычисление
a2=sqrt(pow((x3-x1),2)+ pow((y3-y1),2)); // длин
a3=sqrt(pow((x2-x3),2)+ pow((y2-y3),2)); // сторон треугольника
p=(a1+a2+a3)/2; // полупериметр
S=sqrt(p*(p-a1)*(p-a2)*(p-a3)); // площадь
cout<<"Периметр = "<<2*p<system("pause");
return 0; }

Слайд 21

Операторы

Операторы выполняют действия над данными, например, производят сложение двух чисел, выводят значения

Операторы Операторы выполняют действия над данными, например, производят сложение двух чисел, выводят
и т.д.
Операторы различаются числом операндов, участвующих в соответствующей операции. Существуют унарные, бинарные операторы и один тернарный оператор.
Примеры операторов:
Арифметические операторы : +, –,*, /, %.
Оператор вызова функции: ().
Оператор доступа к элементу массива: [].

Слайд 22

Унарные операторы

Одноместные (унарные) операторы – операторы, которые применяются к единственному операнду.

Унарные операторы Одноместные (унарные) операторы – операторы, которые применяются к единственному операнду.

Слайд 23

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

Предназначены для увеличения и уменьшения переменных. Оператор инкремента ++

Операторы инкремента и декремента. Предназначены для увеличения и уменьшения переменных. Оператор инкремента
добавляет 1 к своему операнду, а оператор декремента – вычитает 1.
Их можно использовать и префиксно (помещается перед переменной: ++i), и постфиксно (помещаются после переменной: i++). В обоих случаях значение i увеличивается на 1, но выражение ++i увеличивает i до того, как его значение будет использовано в выражении, а i++ после использования в выражении.
Пример.
n=5; n=5;
x=n++; //Получим x=5, n=6 x=++n; // Получим x=6, n=6
Замечания:
Операторы инкремента и декремента можно применить только к переменным. Выражение типа (i+j)++ недопустимо.
Если требуется только увеличить или уменьшить значение переменной (но не получить её значение), то безразлично, какой оператор выбирать – префиксный или постфиксный.
Задание: Вычислить значения переменных i и n после выполнения операций:
i=5; n=++i+i++; Замечание: Операция ++ приоритетнее сложения

Слайд 24

Бинарные операторы

Двухместные (бинарные) операторы – операторы требующие двух операндов.

Бинарные операторы Двухместные (бинарные) операторы – операторы требующие двух операндов.

Слайд 25

Оператор запятая

Несколько выражений, разделенных запятыми, вычисляются слева направо и рассматриваются как

Оператор запятая Несколько выражений, разделенных запятыми, вычисляются слева направо и рассматриваются как
одно выражение. Типом и значением результата является тип и значение правого выражения.
Пример: int k1, k2=1;
cout << (k1 = k2 + 2, k2 = 5 % 6, 3.14 + 6 – 4 + k1 + k2);
// Будет напечатано 13.14 т.к. 13.14 = 5.14 + 3 + 5
Запятые, разделяющие аргументы функций и переменные в описаниях, операторами не являются и не обеспечивают вычислений слева направо.
Пример:
double y = 1.;
double x = pow(1 + exp(2) + y, y = 3 + log(4)); //Запятая – не оператор!
Замечание: заранее нельзя сказать какое из выражений:
1 + exp(2) + y или y = 3+ log(4) будет вычислено первым, а от этого зависит значение x.

Слайд 26

Операторы присваивания

В языке C++, кроме обычного оператора присваивания, обозначаемого одним знаком =,

Операторы присваивания В языке C++, кроме обычного оператора присваивания, обозначаемого одним знаком
существуют операторы присваивания, совмещенные с основными операциями. Они позволяют писать инструкции вида:
a = a + b;
в более краткой форме:
a += b;

Слайд 27

Тернарный оператор «Условное выражение»

Оператор условного выражения – единственный, требующий трех
операндов.
Обозначение: (?

Тернарный оператор «Условное выражение» Оператор условного выражения – единственный, требующий трех операндов.
:).
Условное выражение имеет вид:
a ? b : c;
Если a есть истина (не нуль), то результатом всего выражения будет
значение выражения b, иначе результатом будет значение выражения c.
Пример:
В следующей инструкции переменной max присваивается максимум из x и y:
max = x > y ? x : y;

Слайд 28

Приоритеты операторов

В языке C++ операторы выполняются в очередности, определяемой
их приоритетами. Всего существует

Приоритеты операторов В языке C++ операторы выполняются в очередности, определяемой их приоритетами.
16 приоритетов операторов. При вычислении выражений сначала выполняются операторы, заключенные в самые внутренние круглые скобки. Если скобок нет, то сначала выполняются операторы с более высоким приоритетом. В случае одинакового приоритета операторы выполняются либо слева направо, либо справа налево.
Пример: арифметические операторы выполняются слева направо.
a = b + c + d + e;
Замечание: нужный порядок выполнения операторов можно задать явно с помощью скобок, например:
a = b + (c + (d + e) );
Пример: операторы присваивания выполняются справа налево
x = y = z = 10;
Замечание: всем трем переменным будет присвоено значение 10.