Slide 1

Slide 1 text

24 сентября 2021 [email protected] Анастасия Олеговна Хлобыстова Представление чисел в ЭВМ

Slide 2

Slide 2 text

2/15 Двоичная система счисления 1 2 1 0 2 1 2 1 0 1 2 1 0 2 2 2 2 , n n n n n n A a a a a a a a a − − − − − − = =  +  + +  +  Система счисления — это способ записи (представления) чисел. i a где — одна из цифр 0 или 1. Алфавит двоичной системы счисления: 0 и 1. Представление числа в двоичной системе: Перевод из десятичной в двоичную:

Slide 3

Slide 3 text

3/15 Машинное представление чисел: целые числа Беззнаковые Со знаком 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 Прямой код Обратный код Дополнительный код 0…255 − 126 знаковый бит: 0 “+”, 1 “−” − 127…127

Slide 4

Slide 4 text

4/26 Машинное представление чисел: сложение Беззнаковые Со знаком 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 Прямой код Обратный код Дополнительный код 01111110 10000010 + 00000000 − 128…127

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

6/26 Операторы Результат любого вычисления будет преобразовыват ься к наиболее точному типу данных, из тех типов данных, которые участвуют в вычислении.

Slide 7

Slide 7 text

7/26 Оператор присваивания Особенность оператора присваивания в C++ состоит в том, что он возвращает значение. выражение с оператором присваивания может, в свою очередь, быть частью другого выражения. переменная=выражение → Операции присваивания имеют правосторонний порядок. → Переменной в качестве значения присваивается результат, возвращаемый при вычислении выражения. → Результат выражения является тем значением, которое возвращает оператор присваивания.

Slide 8

Slide 8 text

8/26 Арифметические операторы 6. n=3, i=4 7. m=4, j=4 8. n=6, i=2 9. m=4, j=2 10. n=2, i=2 12. n=4, i=2 11. m=4, j=2 Оператор Символ Пример Операция Префиксный инкремент (пре-инкремент) ++ ++x Инкремент x, затем вычисление x Префиксный декремент (пре-декремент) −− −−x Декремент x, затем вычисление x Постфиксный инкремент (пост-инкремент) ++ x++ Вычисление x, затем инкремент x Постфиксный декремент (пост-декремент) −− x−− Вычисление x, затем декремент x

Slide 9

Slide 9 text

9/26 Арифметические операторы 11110000 01100011 ________ 01100000 & 11110000 01100011 ________ 11110011 | 11110000 01100011 ________ 10010011 ^ 240 | 99=243 240 & 99=96 240 & 99=147 55 << 2=220 55 >> 2=13 00110111 ________ 00001101 00110111 ________ 11011100 >> 2 << 2 00110111 ________ 11001000 ~ ~ 55 = -56 • Неопределённое поведение: int A = 10; int A = 10; int B = A << -5; int B = A << 100; • Оператор ~ следует использовать осторожно и следить за тем, куда записывается результат.

Slide 10

Slide 10 text

10/26 Некоторые особенности операторов Оператор запятая читает аргументы слева направо и возвращает значение последнего элемента после запятой. Операторы && и || Оператор "запятая": , Второй операнд вычисляется только в том случае, если первый операнд принимает значение true (отличное от нуля). Такое сокращенное вычисление, например, можно использовать для предотвращения разыменования пустого указателя: Оператор sizeof() Возвращает размер операнда по отношению к размеру типа char . Самый низкий приоритет.

Slide 11

Slide 11 text

11/26 Условный оператор if() → позволяет выполнять разные блоки операторов в зависимости от того, выполняется ли некое условие if (bool-expression) statement; Идеальный вариант писать фигурные скобки везде Создавайте переменные только при необходимости Описывайте сперва нормальный ход событий В качестве условия следует использовать только логические величины. Разделяйте логические выражения на части Управляющие инструкции: операторы выбора

Slide 12

Slide 12 text

12/26 Условный оператор if() Разделяйте логические выражения на части Выражения в условиях Присваивание в условиях Очень частой ошибкой, является написание одного "=", вместо двух ("=="). Управляющие инструкции: операторы выбора

Slide 13

Slide 13 text

13/26 Условный оператор switch() → применяется, когда проверяется больше одного условия switch(выражение){ case значение1: операторы break; case значение2: операторы break; ... default: операторы } Условия завершения: Достигнут конец блока switch. Выполняется оператор return. Выполняется оператор goto. Выполняется оператор break. Если ни одного из этих условий завершения не будет, то выполняться будут все кейсы после того кейса, который совпал с выражением switch. Управляющие инструкции: операторы выбора

Slide 14

Slide 14 text

14/26 Управляющие инструкции: операторы выбора (1) (3) (2) (4)

Slide 15

Slide 15 text

15/26 Управляющие инструкции: операторы перебора while ( expression ) statement; do statement while ( expression ) ; • Проверка expression выполняется после каждого выполнения цикла. • Проверка expression происходит перед каждым выполнением цикла. • Инструкция выполняется повторно, пока expression не примет значение false.

Slide 16

Slide 16 text

16/26 Управляющие инструкции: операторы перебора for ( init-expression ; cond-expression ; loop-expression ) statement; for (for-range-declaration : expression) statement; • Оператор выполняется повторно до тех пор, пока cond-expression не станет false. init-expression Часто используется для инициализации индексов цикла. Может содержать выражения или объявления. cond-expression Выражение, значение которого относится к целочисленному типу или типу класса, для которого имеется однозначное преобразование к целочисленному типу. Обычно используется для проверки критериев завершения цикла for. loop-expression Обычно используется для приращения индексов цикла.

Slide 17

Slide 17 text

17/26 • break: завершает наименьший включающий цикл • continue: пропускает оставшуюся часть оператора цикла и вызывает следующую итерацию цикла Операторы перехода: break и continue

Slide 18

Slide 18 text

18/26 Операторы перехода: try, throw и catch • Оператор try позволяет вам определить блок кода, который будет проверяться на наличие ошибок во время его выполнения. • Ключевое слово throw вызывает исключение при обнаружении проблемы, что позволяет создать настраиваемую ошибку. • Оператор catch позволяет определить блок кода, который будет выполняться, если в блоке try возникает ошибка.

Slide 19

Slide 19 text

Функции

Slide 20

Slide 20 text

20/26 Функции — это блоки кода, выполняющие определенные операции. Функции result_type function_name (parameter_list){ function_body } • result_type — тип данных, который будет возвращать функция • function_name — имя (которое будет говорить за что отвечает эта функция) • parameter_list — список параметров, которые будут передаваться функции при ее вызове

Slide 21

Slide 21 text

21/26 • В списке параметров не разрешается использовать сокращенную запись, соотнося одно имя типа с несколькими параметрами int f( int x, y ); // ошибка int f( int x, int y); // правильно • Имена параметров не могут повторяться • Допускается сосуществование двух или более функций, имеющих одно и то же имя, но разные списки параметров (перегруженные функции) Параметры функции Параметры со значениями по умолчанию • C++ позволяет задавать для нескольких последних параметров в списке значения по умолчанию. • Если у какого-то параметра задано значение по умолчанию, то и у всех последующих параметров в списке тоже должны быть заданы значения по умолчанию.

Slide 22

Slide 22 text

22/26 Статические переменные • являются долговременными переменными, существующими на протяжении функции или файла • не известны за пределами функции или файла, но могут хранить свои значения между вызовами

Slide 23

Slide 23 text

23/26 Передача параметров по значению и по ссылке

Slide 24

Slide 24 text

24/26 Рекурсия Рекурсивная функция — это функция, которая вызывает сама себя. (1) Условие завершения рекурсии — это условие, которое, при его выполнении, остановит вызов рекурсивной функции самой себя. (2)

Slide 25

Slide 25 text

25/26 Практическая работа (до 08.10.2021) 1. Написать функцию, которой на вход подаётся целое число n. Результатом выполнения функции является вывод на экран n-ой производной функции sin. 2. Написать функцию, которой на вход подаётся числа x и i. В теле функции нужно установить бит в i-ую позицию числа (установить равным 1), вернуть и вывести результат. 3. Написать функцию, которой на вход подаётся числа x и i. В теле функции нужно сбросить бит в i-ой позиции числа (установить равным 0), вернуть и вывести результат. 4. При помощи побитовых операторов реализовать следующие функции: • определение чётности числа • поменять значения переменных местами • умножение на 8 5. Поезд метро едет на протяжении времени t с постоянной скоростью V, а затем такой же промежуток времени тормозит до полной остановки. Написать функцию, которая бы возвращала 𝑆1 — путь, пройденный поездом до торможения, 𝑆2 — путь, пройденный поездом во время торможения и 𝑆 — суммарный путь. ( ) (sin ) sin ) 2 n n x x    = +    

Slide 26

Slide 26 text

26/26 Домашняя работа (до 29.10.2021) 1. Реализовать функцию, которой на вход подаётся числа x и i. В теле функции нужно переключить бит в i-ой позиции числа, вернуть и вывести результат. 2. Реализовать функцию, которая будет перемножать два числа с помощью побитовых операторов (без использования арифметических). 3. Реализовать функцию, на вход которой подаётся два целочисленных числа x и y и символ operator, который может принимать одно из следующих значений: +, -, *, /, %, ^. Результатом выполнения функции должно являться выражение вида: (x operator y). Пояснение: * — реализовать при помощи побитовых операторов, знак ^ — возведение в степень двойки (2, 4, 16, 32), реализовать самостоятельно при помощи побитовых операторов, с проверкой корректности y. Также учесть, что число y может быть равно 0.

Slide 27

Slide 27 text

24 сентября 2021 [email protected] Анастасия Олеговна Хлобыстова Представление чисел в ЭВМ