Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Программирование – 1 курс осень 2021 – 3.1 занятие

F21d69109b1c03921abf7d12f0fb6654?s=47 ТиМПИ
September 24, 2021

Программирование – 1 курс осень 2021 – 3.1 занятие

F21d69109b1c03921abf7d12f0fb6654?s=128

ТиМПИ

September 24, 2021
Tweet

Transcript

  1. 24 сентября 2021 aok@dscs.pro Анастасия Олеговна Хлобыстова Представление чисел в

    ЭВМ
  2. 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. Представление числа в двоичной системе: Перевод из десятичной в двоичную:
  3. 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
  4. 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
  5. Операторы и выражения

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

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

    том, что он возвращает значение. выражение с оператором присваивания может, в свою очередь, быть частью другого выражения. переменная=выражение → Операции присваивания имеют правосторонний порядок. → Переменной в качестве значения присваивается результат, возвращаемый при вычислении выражения. → Результат выражения является тем значением, которое возвращает оператор присваивания.
  8. 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
  9. 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; • Оператор ~ следует использовать осторожно и следить за тем, куда записывается результат.
  10. 10/26 Некоторые особенности операторов Оператор запятая читает аргументы слева направо

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

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

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

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

  15. 15/26 Управляющие инструкции: операторы перебора while ( expression ) statement;

    do statement while ( expression ) ; • Проверка expression выполняется после каждого выполнения цикла. • Проверка expression происходит перед каждым выполнением цикла. • Инструкция выполняется повторно, пока expression не примет значение false.
  16. 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 Обычно используется для приращения индексов цикла.
  17. 17/26 • break: завершает наименьший включающий цикл • continue: пропускает

    оставшуюся часть оператора цикла и вызывает следующую итерацию цикла Операторы перехода: break и continue
  18. 18/26 Операторы перехода: try, throw и catch • Оператор try

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

  20. 20/26 Функции — это блоки кода, выполняющие определенные операции. Функции

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

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

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

  24. 24/26 Рекурсия Рекурсивная функция — это функция, которая вызывает сама

    себя. (1) Условие завершения рекурсии — это условие, которое, при его выполнении, остановит вызов рекурсивной функции самой себя. (2)
  25. 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    = +    
  26. 26/26 Домашняя работа (до 29.10.2021) 1. Реализовать функцию, которой на

    вход подаётся числа x и i. В теле функции нужно переключить бит в i-ой позиции числа, вернуть и вывести результат. 2. Реализовать функцию, которая будет перемножать два числа с помощью побитовых операторов (без использования арифметических). 3. Реализовать функцию, на вход которой подаётся два целочисленных числа x и y и символ operator, который может принимать одно из следующих значений: +, -, *, /, %, ^. Результатом выполнения функции должно являться выражение вида: (x operator y). Пояснение: * — реализовать при помощи побитовых операторов, знак ^ — возведение в степень двойки (2, 4, 16, 32), реализовать самостоятельно при помощи побитовых операторов, с проверкой корректности y. Также учесть, что число y может быть равно 0.
  27. 24 сентября 2021 aok@dscs.pro Анастасия Олеговна Хлобыстова Представление чисел в

    ЭВМ