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

Программирование – 2 курс осень 2020 – 2 занятие

ТиМПИ
September 15, 2020
200

Программирование – 2 курс осень 2020 – 2 занятие

ТиМПИ

September 15, 2020
Tweet

More Decks by ТиМПИ

Transcript

  1. dscs.pro spbu.ru 2/18 2/18 Если вы считаете, что С++ труден,

    попытайтесь выучить английский. Bjarne Stroustrup * Операторы • элементы программы, которые контролируют способ и порядок обработки объектов • последовательности операторов и операндов Выражения
  2. dscs.pro spbu.ru 3/18 ВЫРАЖЕНИЯ 3/18 Для вычисления значений используются выражения,

    которые состоят из операндов, знаков операций и скобок. → Операнды задают данные для вычислений. → Операции задают действия, которые необходимо выполнить. → Каждый операнд является, в свою очередь, выражением или одним из его частных случаев, например, константой или переменной. → Операции выполняются в соответствии с приоритетами. → Для изменения порядка выполнения операций используются круглые скобки.
  3. dscs.pro spbu.ru 4/18 > < >= <= == != +

    - * / % ++ -- ОПЕРАТОРЫ 4/18 Арифмети- ческие Логические Поразрядные Отношения Cокращенная форма арифметических операторов: x=x+3; x+=3; & & || ! & | ^ ~ >> <<
  4. dscs.pro spbu.ru 5/18 ОПЕРАТОРЫ 5/18 В чём разница между префиксной

    и постфиксной формами операторов инкремента и декремента? Для префиксной формы сначала изменяется значение переменной, а затем рассчитывается выражение, а для постфиксной формы выражение вычисляется со старым значением переменной, а только после этого изменяется значение этой переменной. → проявляется в ситуации, когда эти операторы использованы в выражениях 8. n=3; i=4 9. m=4; j=4 10. n=9; i=2 11. m=4; j=2 12. n=1; i=2 14. n=4; i=2 13. m=9; j=2
  5. dscs.pro spbu.ru 7/18 Примеры использования побитовых операторов 7/18 & |

    ^ ~ >> << 5&3 101 011 001 1 5|3 101 011 111 7 5^3 101 011 110 6 ~5 00000101 -6 5>>2 101 001 1 11111010 5<<2 101 10100 20
  6. dscs.pro spbu.ru 8/18 Оператор присваивания 8/18 Особенность оператора присваивания в

    C++ состоит в том, что он возвращает значение. выражение с оператором присваивания может, в свою очередь, быть частью другого выражения. x=y=z=3 переменная=выражение → Операции присваивания имеют правосторонний порядок. → Переменной в качестве значения присваивается результат, возвращаемый при вычислении выражения. → Результат выражения является тем значением, которое возвращает оператор присваивания. Допускается многократное использование оператора присваивания в выражениях.
  7. dscs.pro spbu.ru 9/18 Неявное преобразование типов 9/18 переменная=выражение Тип 1

    ≠ Тип 2 → компилятор использует встроенные стандартные преобразования → компилятор пытается выполнить преобразования в четко определенной последовательности, пока она не завершится успешно → если выбранное преобразование является повышением, компилятор не выдает предупреждение → если преобразование является сужением, компилятор выдает предупреждение о возможной утрате данных Тип значения выражения приводится в соответствие с типом переменной. Проблемы?
  8. dscs.pro spbu.ru 10/18 Тернарный оператор 10/18 условие?выражение1:выражение2 На практике обычно

    прибегают к вызову в тернарных операторах функций, что позволяет не просто возвращать значение в зависимости от проверяемого условия, но и выполнять целые последовательности действий. → “conditional expression” Тип? типом тернарного оператора будет наиболее общий тип его двух последних операндов. Например, int и short общим типом будет int. Что значит наиболее общий? Т.е. наиболее общий тип это такой тип, к которому могу быть приведены оба операнда. Могут быть ситуации, когда общего типа нет.
  9. dscs.pro spbu.ru 11/18 Управляющие инструкции 11/18 Условный оператор if() →

    позволяет выполнять разные блоки операторов в зависимости от того, выполняется ли некое условие if(условие) {операторы 1} else {операторы 2} Идеальный вариант писать фигурные скобки везде Создавайте переменные только при необходимости Описывайте сперва нормальный ход событий В качестве условия следует использовать только логические величины. Разделяйте логические выражения на части
  10. dscs.pro spbu.ru 12/18 Управляющие инструкции 12/18 Условный оператор if() Разделяйте

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

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

    позволяет многократно выполнять серии однотипных действий. Действия выполняются до тех пор, пока остается справедливым (или пока не будет выполнено) некоторое условие. for(инициализация; условие; изменение переменных) {команды} Хотя в циклах for обычно используется только один счетчик, иногда могут возникать ситуации, когда нужно работать сразу с несколькими переменными.
  13. dscs.pro spbu.ru 15/18 Управляющие инструкции 15/18 Оператор цикла while() while(условие){

    команды } Оператор цикла do- while() do{ команды } while(условие)
  14. dscs.pro spbu.ru 16/18 Управляющие инструкции 16/18 Инструкция безусловного перехода goto

    позволяет выполнять переход к заранее определенному месту программы. → Место, к которому осуществляется переход, помечается с помощью специального идентификатора — метки. → Чтобы вставить в программный код метку, необходимо ввести в соответствующем месте имя метки с двоеточием в конце. → Чтобы перейти к помеченному месту кода, необходимо после инструкции goto указать метку, определяющую место перехода. Дурной тон?
  15. dscs.pro spbu.ru 17/18 Самопроверка 17/18 → Что такое оператор инкремента

    и декремента? → Какие основные операторы для выполнения побитовых операций используются в C++? → Как в C++ выполняется неявное приведение типов? → В чем особенности оператора присваивания, используемого в C++? → Что такое тернарный оператор? → Каковы особенности оператора if()? → Что Вы знаете при условия завершения оператора switch()? → Какая запись оператора for эквивалентна while (true) {тело цикла};