🗊 Презентация Язык программирования C++

Нажмите для полного просмотра!
Язык программирования C++, слайд №1 Язык программирования C++, слайд №2 Язык программирования C++, слайд №3 Язык программирования C++, слайд №4 Язык программирования C++, слайд №5 Язык программирования C++, слайд №6 Язык программирования C++, слайд №7 Язык программирования C++, слайд №8 Язык программирования C++, слайд №9 Язык программирования C++, слайд №10 Язык программирования C++, слайд №11 Язык программирования C++, слайд №12 Язык программирования C++, слайд №13 Язык программирования C++, слайд №14 Язык программирования C++, слайд №15 Язык программирования C++, слайд №16 Язык программирования C++, слайд №17 Язык программирования C++, слайд №18 Язык программирования C++, слайд №19 Язык программирования C++, слайд №20 Язык программирования C++, слайд №21 Язык программирования C++, слайд №22 Язык программирования C++, слайд №23 Язык программирования C++, слайд №24 Язык программирования C++, слайд №25 Язык программирования C++, слайд №26 Язык программирования C++, слайд №27 Язык программирования C++, слайд №28 Язык программирования C++, слайд №29 Язык программирования C++, слайд №30 Язык программирования C++, слайд №31 Язык программирования C++, слайд №32 Язык программирования C++, слайд №33 Язык программирования C++, слайд №34 Язык программирования C++, слайд №35 Язык программирования C++, слайд №36 Язык программирования C++, слайд №37 Язык программирования C++, слайд №38 Язык программирования C++, слайд №39 Язык программирования C++, слайд №40 Язык программирования C++, слайд №41 Язык программирования C++, слайд №42 Язык программирования C++, слайд №43 Язык программирования C++, слайд №44 Язык программирования C++, слайд №45 Язык программирования C++, слайд №46 Язык программирования C++, слайд №47 Язык программирования C++, слайд №48 Язык программирования C++, слайд №49 Язык программирования C++, слайд №50 Язык программирования C++, слайд №51 Язык программирования C++, слайд №52 Язык программирования C++, слайд №53 Язык программирования C++, слайд №54 Язык программирования C++, слайд №55 Язык программирования C++, слайд №56 Язык программирования C++, слайд №57 Язык программирования C++, слайд №58 Язык программирования C++, слайд №59 Язык программирования C++, слайд №60 Язык программирования C++, слайд №61 Язык программирования C++, слайд №62 Язык программирования C++, слайд №63 Язык программирования C++, слайд №64 Язык программирования C++, слайд №65 Язык программирования C++, слайд №66 Язык программирования C++, слайд №67 Язык программирования C++, слайд №68 Язык программирования C++, слайд №69 Язык программирования C++, слайд №70 Язык программирования C++, слайд №71 Язык программирования C++, слайд №72 Язык программирования C++, слайд №73 Язык программирования C++, слайд №74 Язык программирования C++, слайд №75 Язык программирования C++, слайд №76 Язык программирования C++, слайд №77 Язык программирования C++, слайд №78 Язык программирования C++, слайд №79 Язык программирования C++, слайд №80 Язык программирования C++, слайд №81 Язык программирования C++, слайд №82 Язык программирования C++, слайд №83 Язык программирования C++, слайд №84 Язык программирования C++, слайд №85 Язык программирования C++, слайд №86 Язык программирования C++, слайд №87 Язык программирования C++, слайд №88 Язык программирования C++, слайд №89 Язык программирования C++, слайд №90 Язык программирования C++, слайд №91 Язык программирования C++, слайд №92 Язык программирования C++, слайд №93 Язык программирования C++, слайд №94 Язык программирования C++, слайд №95 Язык программирования C++, слайд №96 Язык программирования C++, слайд №97 Язык программирования C++, слайд №98 Язык программирования C++, слайд №99 Язык программирования C++, слайд №100 Язык программирования C++, слайд №101 Язык программирования C++, слайд №102 Язык программирования C++, слайд №103 Язык программирования C++, слайд №104 Язык программирования C++, слайд №105 Язык программирования C++, слайд №106 Язык программирования C++, слайд №107 Язык программирования C++, слайд №108 Язык программирования C++, слайд №109 Язык программирования C++, слайд №110 Язык программирования C++, слайд №111 Язык программирования C++, слайд №112 Язык программирования C++, слайд №113 Язык программирования C++, слайд №114 Язык программирования C++, слайд №115 Язык программирования C++, слайд №116 Язык программирования C++, слайд №117 Язык программирования C++, слайд №118 Язык программирования C++, слайд №119 Язык программирования C++, слайд №120 Язык программирования C++, слайд №121 Язык программирования C++, слайд №122 Язык программирования C++, слайд №123 Язык программирования C++, слайд №124 Язык программирования C++, слайд №125 Язык программирования C++, слайд №126 Язык программирования C++, слайд №127 Язык программирования C++, слайд №128 Язык программирования C++, слайд №129 Язык программирования C++, слайд №130 Язык программирования C++, слайд №131 Язык программирования C++, слайд №132 Язык программирования C++, слайд №133 Язык программирования C++, слайд №134 Язык программирования C++, слайд №135 Язык программирования C++, слайд №136 Язык программирования C++, слайд №137 Язык программирования C++, слайд №138 Язык программирования C++, слайд №139 Язык программирования C++, слайд №140 Язык программирования C++, слайд №141 Язык программирования C++, слайд №142 Язык программирования C++, слайд №143 Язык программирования C++, слайд №144 Язык программирования C++, слайд №145 Язык программирования C++, слайд №146 Язык программирования C++, слайд №147 Язык программирования C++, слайд №148 Язык программирования C++, слайд №149 Язык программирования C++, слайд №150 Язык программирования C++, слайд №151 Язык программирования C++, слайд №152 Язык программирования C++, слайд №153 Язык программирования C++, слайд №154 Язык программирования C++, слайд №155 Язык программирования C++, слайд №156 Язык программирования C++, слайд №157 Язык программирования C++, слайд №158 Язык программирования C++, слайд №159 Язык программирования C++, слайд №160 Язык программирования C++, слайд №161 Язык программирования C++, слайд №162 Язык программирования C++, слайд №163 Язык программирования C++, слайд №164 Язык программирования C++, слайд №165 Язык программирования C++, слайд №166 Язык программирования C++, слайд №167 Язык программирования C++, слайд №168 Язык программирования C++, слайд №169 Язык программирования C++, слайд №170 Язык программирования C++, слайд №171 Язык программирования C++, слайд №172 Язык программирования C++, слайд №173 Язык программирования C++, слайд №174 Язык программирования C++, слайд №175 Язык программирования C++, слайд №176 Язык программирования C++, слайд №177 Язык программирования C++, слайд №178 Язык программирования C++, слайд №179 Язык программирования C++, слайд №180 Язык программирования C++, слайд №181 Язык программирования C++, слайд №182 Язык программирования C++, слайд №183 Язык программирования C++, слайд №184 Язык программирования C++, слайд №185 Язык программирования C++, слайд №186 Язык программирования C++, слайд №187 Язык программирования C++, слайд №188 Язык программирования C++, слайд №189 Язык программирования C++, слайд №190 Язык программирования C++, слайд №191 Язык программирования C++, слайд №192 Язык программирования C++, слайд №193 Язык программирования C++, слайд №194 Язык программирования C++, слайд №195 Язык программирования C++, слайд №196 Язык программирования C++, слайд №197 Язык программирования C++, слайд №198 Язык программирования C++, слайд №199 Язык программирования C++, слайд №200 Язык программирования C++, слайд №201 Язык программирования C++, слайд №202 Язык программирования C++, слайд №203 Язык программирования C++, слайд №204 Язык программирования C++, слайд №205 Язык программирования C++, слайд №206 Язык программирования C++, слайд №207 Язык программирования C++, слайд №208 Язык программирования C++, слайд №209

Содержание

Вы можете ознакомиться и скачать презентацию на тему Язык программирования C++. Доклад-сообщение содержит 209 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Язык программирования C++ Лекция 1
Описание слайда:
Язык программирования C++ Лекция 1

Слайд 2


Язык С++ Компилируемый статически типизированный язык программирования общего назначения Совместим с языком C Но не C99 Поддержка разных парадигм...
Описание слайда:
Язык С++ Компилируемый статически типизированный язык программирования общего назначения Совместим с языком C Но не C99 Поддержка разных парадигм Процедурное, объектно-ориентированное, обобщенное, функциональное, метапрограммирование

Слайд 3


Программа Hello, World!
Описание слайда:
Программа Hello, World!

Слайд 4


Константы
Описание слайда:
Константы

Слайд 5


Константы Числовые константы Целые числа и числа с плавающей запятой Логические константы true и false Символьные константы Строковые константы...
Описание слайда:
Константы Числовые константы Целые числа и числа с плавающей запятой Логические константы true и false Символьные константы Строковые константы Документация

Слайд 6


Числовые константы Десятичные 12345, -34021 999999L, 99983UL Шестнадцатеричные 0xFeedBeef, 0x328aadb Восьмеричные 003, 0723 Вещественные 1.35, 8.45f...
Описание слайда:
Числовые константы Десятичные 12345, -34021 999999L, 99983UL Шестнадцатеричные 0xFeedBeef, 0x328aadb Восьмеричные 003, 0723 Вещественные 1.35, 8.45f 2e+10f, -3.835e-6L

Слайд 7


Логические константы Логическая константа true служит для обозначения логического значения «Истина», а константа false – значения «Ложь»
Описание слайда:
Логические константы Логическая константа true служит для обозначения логического значения «Истина», а константа false – значения «Ложь»

Слайд 8


Пример – определение простоты числа
Описание слайда:
Пример – определение простоты числа

Слайд 9


Символьные константы Записывается в виде символа, обрамленного одиночными кавычками 'A', '1' Значение символьной константы – числовой код символа из...
Описание слайда:
Символьные константы Записывается в виде символа, обрамленного одиночными кавычками 'A', '1' Значение символьной константы – числовой код символа из набора символов на данной машине Некоторые символы записываются в виде escape-последовательностей, начинающихся с символа \ '"', '\0', ‘\n', '\177', '\xff'

Слайд 10


Строковые константы (строковые литералы) Нуль или более символов, заключенных в двойные кавычки "Hello, world\n" "" "Hello...
Описание слайда:
Строковые константы (строковые литералы) Нуль или более символов, заключенных в двойные кавычки "Hello, world\n" "" "Hello " "world\n" эквивалентно "Hello world\n” Во внутреннем представлении строковая константа – массив символов, завершающийся символом с кодом 0 (‘\0’) Есть возможность объявления «сырых строковых литералов» (raw string literals), не требующих использования escape-последовательностей

Слайд 11


Язык программирования C++, слайд №11
Описание слайда:

Слайд 12


Что выведет программа?
Описание слайда:
Что выведет программа?

Слайд 13


Представление строковой константы в памяти
Описание слайда:
Представление строковой константы в памяти

Слайд 14


Типы данных
Описание слайда:
Типы данных

Слайд 15


Типы данных языка C++ Целые числа различных размеров со знаком или без int, short, char Числа с плавающей запятой различной размерности float,...
Описание слайда:
Типы данных языка C++ Целые числа различных размеров со знаком или без int, short, char Числа с плавающей запятой различной размерности float, double, long double Логический тип bool Перечисляемые типы (enum) Структуры (struct) Объединения (union) Массивы

Слайд 16


Базовые типы данных Типы данных целых чисел char int модификаторы short/long unsigned/signed Логический тип bool Типы данных вещественных чисел float...
Описание слайда:
Базовые типы данных Типы данных целых чисел char int модификаторы short/long unsigned/signed Логический тип bool Типы данных вещественных чисел float double

Слайд 17


Объявления переменных Переменные объявляются раньше их использования int lower, upper, step; char c, line[1000]; bool success; При объявлении...
Описание слайда:
Объявления переменных Переменные объявляются раньше их использования int lower, upper, step; char c, line[1000]; bool success; При объявлении переменные могут быть инициализированы char esc = '\"; int i = 0; int limit = MAXLINE + 1; float eps = 1.0e-5f; bool success = true; Модификатор const указывает, что значение переменной не будет далее изменяться const double e = 2.71828182845905; const char msg[] = "предупреждение: "; int strlen(const char str[]);

Слайд 18


Объявление локальных переменных и констант
Описание слайда:
Объявление локальных переменных и констант

Слайд 19


Автоматическое определение типа переменной
Описание слайда:
Автоматическое определение типа переменной

Слайд 20


Область видимости переменной
Описание слайда:
Область видимости переменной

Слайд 21


Объявление глобальных переменных
Описание слайда:
Объявление глобальных переменных

Слайд 22


Использование глобальных переменных
Описание слайда:
Использование глобальных переменных

Слайд 23


Ключевое слово typedef Язык Си++ предоставляет оператор typedef, позволяющий давать типам данных новые имена После этого новое имя типа может...
Описание слайда:
Ключевое слово typedef Язык Си++ предоставляет оператор typedef, позволяющий давать типам данных новые имена После этого новое имя типа может использоваться в качестве синонима оригинала Причины использования typedef Решение проблемы переносимости На разных платформах/компиляторах один и тот же тип может иметь различный размер Желание сделать текст программы более ясным

Слайд 24


Пример использования оператора typedef
Описание слайда:
Пример использования оператора typedef

Слайд 25


Using – альтернатива typedef
Описание слайда:
Using – альтернатива typedef

Слайд 26


Целочисленные типы данных Служат для хранения целых чисел различного размера char short (short int) int long (long int) Целые числа могут быть как со...
Описание слайда:
Целочисленные типы данных Служат для хранения целых чисел различного размера char short (short int) int long (long int) Целые числа могут быть как со знаком, так и без него signed unsigned Гарантируется следующее соотношение размеров целочисленных типов: sizeof(char)

Слайд 27


Знаковые и беззнаковые целые числа Типы int и short (без модификатора) являются знаковыми int = signed int short = signed short Тип char, как...
Описание слайда:
Знаковые и беззнаковые целые числа Типы int и short (без модификатора) являются знаковыми int = signed int short = signed short Тип char, как правило, тоже знаковый char = signed char Это поведение может изменяться при помощи настроек некоторых компиляторов

Слайд 28


Представление целых чисел в памяти компьютера Тип char занимает одну ячейку памяти (байт) размером, как правило, 8 бит Возможны системы, в которых...
Описание слайда:
Представление целых чисел в памяти компьютера Тип char занимает одну ячейку памяти (байт) размером, как правило, 8 бит Возможны системы, в которых разрядность байта не равна 8 битам Типы short и int, занимают размер, кратный размеру типа char Размер типа short

Слайд 29


Пример представления числа 666 в виде типа short и int
Описание слайда:
Пример представления числа 666 в виде типа short и int

Слайд 30


Типы данных с плавающей запятой Позволяют задавать вещественные числа различного размера и точности float double long double Гарантированы следующие...
Описание слайда:
Типы данных с плавающей запятой Позволяют задавать вещественные числа различного размера и точности float double long double Гарантированы следующие соотношения размеров вещественных типов данных sizeof(float)

Слайд 31


Пример использования вещественных чисел
Описание слайда:
Пример использования вещественных чисел

Слайд 32


Перечислимый тип данных
Описание слайда:
Перечислимый тип данных

Слайд 33


Перечисляемые типы данных (перечисления) Позволяет задать ограниченный набор именованных целочисленных значений День недели Состояние конечного...
Описание слайда:
Перечисляемые типы данных (перечисления) Позволяет задать ограниченный набор именованных целочисленных значений День недели Состояние конечного автомата Модель компьютера и т.д Особенности Имена в различных перечислениях должны отличаться друг от друга Значения внутри одного перечисления могут совпадать: enum Status {Ok, Failure, Success = Ok};

Слайд 34


Пример использования перечислимых типов
Описание слайда:
Пример использования перечислимых типов

Слайд 35


Scoped enum Появились в C++11 Ограничивают область видимости значений перечислимого типа именем перечисления Позволяют преодолеть ограничение...
Описание слайда:
Scoped enum Появились в C++11 Ограничивают область видимости значений перечислимого типа именем перечисления Позволяют преодолеть ограничение традиционного enum-а на уникальность значений

Слайд 36


Проблема традиционного enum-а
Описание слайда:
Проблема традиционного enum-а

Слайд 37


Решение со Scoped enum
Описание слайда:
Решение со Scoped enum

Слайд 38


Пример использования логического типа данных
Описание слайда:
Пример использования логического типа данных

Слайд 39


Набор используемых символов Используются почти все графические символы ASCII таблицы (кроме @ и $) Язык является чувствительным к регистру символов...
Описание слайда:
Набор используемых символов Используются почти все графические символы ASCII таблицы (кроме @ и $) Язык является чувствительным к регистру символов Для записи операторов используются строчные буквы Для записи идентификаторов – цифры, заглавные и строчные буквы и символ подчеркивания Идентификатор не может начинаться с цифры

Слайд 40


Основные операторы языка Си Общие Арифметические операторы и оператор присваивания Логические операторы и операторы сравнения Оператор sizeof...
Описание слайда:
Основные операторы языка Си Общие Арифметические операторы и оператор присваивания Логические операторы и операторы сравнения Оператор sizeof Управление ходом выполнения программы Условные операторы Операторы циклов Оператор множественного выбора Операторы для работы с массивами, структурами и объединениями Операторы для работы с указателями

Слайд 41


Арифметические операторы Бинарные + - * / % (остаток от деления – применяется только к целым) int i = 10 % 3; /* i = 1; */ Деление целых...
Описание слайда:
Арифметические операторы Бинарные + - * / % (остаток от деления – применяется только к целым) int i = 10 % 3; /* i = 1; */ Деление целых сопровождается отбрасыванием дробной части float f = 8 / 3; /* f = 2.0 */ Унарные (ставятся перед операндом) + int i = +1; - int j = -8;

Слайд 42


Пример
Описание слайда:
Пример

Слайд 43


Операторы отношения Операторы отношения > >=
Описание слайда:
Операторы отношения Операторы отношения > >=

Слайд 44


Пример
Описание слайда:
Пример

Слайд 45


Операторы инкремента и декремента Увеличивают или уменьшают значение операнда на 1 ++ -- Имеют две формы Префиксная форма (возвращает новое значение...
Описание слайда:
Операторы инкремента и декремента Увеличивают или уменьшают значение операнда на 1 ++ -- Имеют две формы Префиксная форма (возвращает новое значение аргумента) int i = 0; int j = ++i; /* i = 1; j = 1; */ Постфиксная форма (возвращает старое значение аргумента) int i = 0; int j = i--; /* i = -1; j = 0; */ Операторы инкремента и декремента можно применять только к переменным int i = (j + y)++; /* ошибка */

Слайд 46


Побитовые операторы Данные операторы позволяют осуществлять операции над отдельными битами целочисленных операндов & - побитовое И int i = 0xde &...
Описание слайда:
Побитовые операторы Данные операторы позволяют осуществлять операции над отдельными битами целочисленных операндов & - побитовое И int i = 0xde & 0xf0; /* i = 0xd0 */ | - побитовое ИЛИ int i = 0xf0 | 0x03; /* i = 0xf3 */ ^ - побитовое исключающее ИЛИ int i = 0x03 ^ 0x02; /* i = 0x01 */ - сдвиг вправо int i = 0xd0 >> 4; /* i = 0x0d */ ~ - побитовое отрицание (унарный оператор). char i = ~0x1; /* i = 0xfe (0xfe = 11111110b) */

Слайд 47


Пример: функция getbits
Описание слайда:
Пример: функция getbits

Слайд 48


Операторы и выражения присваивания Служат для присваивания переменным значения некоторого выражения i = 3; i += 8; i
Описание слайда:
Операторы и выражения присваивания Служат для присваивания переменным значения некоторого выражения i = 3; i += 8; i

Слайд 49


Пример: функция bitcount
Описание слайда:
Пример: функция bitcount

Слайд 50


Преобразование типов в стиле С Происходит, когда операнды оператора принадлежат к разным типам Неявное преобразование int i = 7.0 + 3 – 2.0f; Явное...
Описание слайда:
Преобразование типов в стиле С Происходит, когда операнды оператора принадлежат к разным типам Неявное преобразование int i = 7.0 + 3 – 2.0f; Явное преобразование int i = (int)(7.0 + 3 – 2.0f); Если один из аргументов является знаковым целым, а второй беззнаковым, результатом будет целое число без знака

Слайд 51


Опасность неявного приведения типов
Описание слайда:
Опасность неявного приведения типов

Слайд 52


Решение проблемы – явное приведение типов
Описание слайда:
Решение проблемы – явное приведение типов

Слайд 53


Недостатки оператора преобразования типов в стиле C Несмотря на свою простоту данный способ преобразования типов обладает рядом недостатков...
Описание слайда:
Недостатки оператора преобразования типов в стиле C Несмотря на свою простоту данный способ преобразования типов обладает рядом недостатков Допускаются потенциально некорректные преобразования типов, зачастую без информирования разработчика Сложно найти в тексте программы

Слайд 54


Пример
Описание слайда:
Пример

Слайд 55


Преобразование типов в стиле C++ В языке C++ введены 4 оператора приведения типов static_cast(arg) dynamic_cast(arg) const_cast(arg)...
Описание слайда:
Преобразование типов в стиле C++ В языке C++ введены 4 оператора приведения типов static_cast(arg) dynamic_cast(arg) const_cast(arg) reinterpret_cast(arg) Каждый из данных операторов применяется для определенного преобразования типов в конкретной ситуации В программах на C++ следует отдавать предпочтение данным операторам

Слайд 56


Оператор static_cast Применяется для статического преобразования одного типа к другому Также может применяться для статического преобразования типов...
Описание слайда:
Оператор static_cast Применяется для статического преобразования одного типа к другому Также может применяться для статического преобразования типов указателей в пределах иерархии классов

Слайд 57


Пример
Описание слайда:
Пример

Слайд 58


Оператор dynamic_cast Применяется для динамического преобразования типов в пределах иерархии классов (об этом позже)
Описание слайда:
Оператор dynamic_cast Применяется для динамического преобразования типов в пределах иерархии классов (об этом позже)

Слайд 59


Оператор const_cast Применяется для снятия константности с константного выражения
Описание слайда:
Оператор const_cast Применяется для снятия константности с константного выражения

Слайд 60


Оператор reinterpret_cast Может применяться для преобразования между целочисленными типами и указателями, а также между указателями на несвязанные...
Описание слайда:
Оператор reinterpret_cast Может применяться для преобразования между целочисленными типами и указателями, а также между указателями на несвязанные друг с другом типы данных

Слайд 61


Условное выражение Условное выражение имеет вид: выр1 ? выр2 : выр3 Сначала вычисляется выражение 1 Если оно истинно (не равно нулю), то вычисляется...
Описание слайда:
Условное выражение Условное выражение имеет вид: выр1 ? выр2 : выр3 Сначала вычисляется выражение 1 Если оно истинно (не равно нулю), то вычисляется выражение 2 и его значение становится значением всего условного выражения В противном случае вычисляется выражение 3 и становится значением всего условного выражения Пример z = (a > b) ? a : b; /* z = max(a, b)*/

Слайд 62


Приоритет и очередность выполнения операторов
Описание слайда:
Приоритет и очередность выполнения операторов

Слайд 63


Управление выполнением программы
Описание слайда:
Управление выполнением программы

Слайд 64


Инструкции и блоки Выражение (например, x = 0) становится инструкцией, если в конце поставить точку с запятой x = 0; printf(“Hello”); В Си точка с...
Описание слайда:
Инструкции и блоки Выражение (например, x = 0) становится инструкцией, если в конце поставить точку с запятой x = 0; printf(“Hello”); В Си точка с запятой является заключающим символом инструкции, а не разделителем, как в языке Паскаль. Фигурные скобки { и } используются для объединения объявлений и инструкций в составную инструкцию, или блок с т.з. синтаксиса языка блок воспринимается как одна инструкция

Слайд 65


Блоки и область видимости Переменные видимы внутри того блока, где она объявлена При покидании своего блока видимости переменная уничтожается, а...
Описание слайда:
Блоки и область видимости Переменные видимы внутри того блока, где она объявлена При покидании своего блока видимости переменная уничтожается, а занимаемая ею область памяти – освобождается (автоматическое управление памятью)

Слайд 66


Конструкция if-else Оператор if позволяет выполнить тот или иной участок кода в зависимости от значения некоторого выражения if () else if ()
Описание слайда:
Конструкция if-else Оператор if позволяет выполнить тот или иной участок кода в зависимости от значения некоторого выражения if () else if ()

Слайд 67


Конструкция else-if Позволяет осуществлять многоступенчатое решение if (выражение) инструкция else if (выражение) инструкция else if (выражение)...
Описание слайда:
Конструкция else-if Позволяет осуществлять многоступенчатое решение if (выражение) инструкция else if (выражение) инструкция else if (выражение) инструкция else if (выражение) инструкция else инструкция

Слайд 68


Пример, бинарный поиск
Описание слайда:
Пример, бинарный поиск

Слайд 69


Оператор switch Используется для выбора одного из нескольких путей Осуществляется проверка на совпадение значения выражения с одной из некоторого...
Описание слайда:
Оператор switch Используется для выбора одного из нескольких путей Осуществляется проверка на совпадение значения выражения с одной из некоторого набора целых констант, и выполняет соответствующую ветвь программы Инструкция break выполняет выход из блока switch

Слайд 70


Язык программирования C++, слайд №70
Описание слайда:

Слайд 71


Язык программирования C++, слайд №71
Описание слайда:

Слайд 72


Циклическое выполнение
Описание слайда:
Циклическое выполнение

Слайд 73


Что такое циклическое выполнение Цикл – последовательность из нескольких операторов, указываемая в программе один раз, которая выполняется несколько...
Описание слайда:
Что такое циклическое выполнение Цикл – последовательность из нескольких операторов, указываемая в программе один раз, которая выполняется несколько раз подряд Допускается существование бесконечного цикла Тело цикла - последовательность операторов, предназначенная для многократного выполнения в цикле

Слайд 74


Циклическое выполнение в языке Си Циклическое выполнение в языке Си осуществляется при использовании следующих операторов цикла: while for do..while...
Описание слайда:
Циклическое выполнение в языке Си Циклическое выполнение в языке Си осуществляется при использовании следующих операторов цикла: while for do..while Внутри циклов могут использоваться операторы управления работой цикла: break для досрочного выхода из цикла continue для пропуска текущей итерации

Слайд 75


Оператор while Оператор while служит для организации циклов с предусловием цикл, который выполняется, пока истинно некоторое условие, указанное перед...
Описание слайда:
Оператор while Оператор while служит для организации циклов с предусловием цикл, который выполняется, пока истинно некоторое условие, указанное перед его началом Синтаксис while (выражение) инструкция Инструкция (тело цикла) выполняется до тех пор, пока выражение принимает ненулевое значение

Слайд 76


Пример: нахождение наибольшего общего делителя
Описание слайда:
Пример: нахождение наибольшего общего делителя

Слайд 77


Оператор for Оператор for служит для организации циклов со счетчиком Синтаксис for (выр1; выр2; выр3) инструкция Выражение1 выполняется один раз...
Описание слайда:
Оператор for Оператор for служит для организации циклов со счетчиком Синтаксис for (выр1; выр2; выр3) инструкция Выражение1 выполняется один раз перед началом цикла Например, оператор инициализации счетчика цикла Выполнение инструкции (тело цикла) продолжается до тех пор, пока выражение2 имеет ненулевое значение если выражение2 отсутствует, то выполнение цикла продолжается бесконечно После каждой итерации цикла выполняется выражение3 Например, изменение счетчика цикла

Слайд 78


Простой цикл for
Описание слайда:
Простой цикл for

Слайд 79


Range-based for Версия цикла for, предназначенная для перебора элементов некоторого диапазона Массивы, строки, контейнеры стандартной библиотеки,...
Описание слайда:
Range-based for Версия цикла for, предназначенная для перебора элементов некоторого диапазона Массивы, строки, контейнеры стандартной библиотеки, пользовательские типы данных Синтаксис: for (тип идентификатор : диапазон) инструкция

Слайд 80


Пример: обход элементов массива
Описание слайда:
Пример: обход элементов массива

Слайд 81


Язык программирования C++, слайд №81
Описание слайда:

Слайд 82


Оператор do-while Оператор do-while служит для организации циклов с постусловием цикл, в котором условие проверяется после выполнения тела цикла тело...
Описание слайда:
Оператор do-while Оператор do-while служит для организации циклов с постусловием цикл, в котором условие проверяется после выполнения тела цикла тело всегда выполняется хотя бы один раз Синтаксис do инструкция while (выражение); Инструкция выполняется до тех пор, пока выражение принимает ненулевое значение

Слайд 83


Пример
Описание слайда:
Пример

Слайд 84


Бесконечные циклы for, while, do-while
Описание слайда:
Бесконечные циклы for, while, do-while

Слайд 85


Вложенные циклы Один цикл может быть вложен в другой При этом выполнение внутреннего цикла выполняется как часть оператора внешнего цикла
Описание слайда:
Вложенные циклы Один цикл может быть вложен в другой При этом выполнение внутреннего цикла выполняется как часть оператора внешнего цикла

Слайд 86


Инструкции break и continue Инструкция break осуществляет немедленный выход из тела цикла, внутри которого она находится Также инструкция break...
Описание слайда:
Инструкции break и continue Инструкция break осуществляет немедленный выход из тела цикла, внутри которого она находится Также инструкция break осуществляет выход из оператора switch Инструкция continue осуществляет пропуск оставшихся операторов тела цикла, внутри которого она находится, и переход на следующую итерацию цикла В циклах while и do-while осуществляется переход к проверке условия В цикле for осуществляется переход к приращению переменной цикла

Слайд 87


Пример: поиск простых чисел
Описание слайда:
Пример: поиск простых чисел

Слайд 88


Инструкция goto Инструкция goto позволяет осуществить переход на заданную метку внутри текущей функции Синтаксис: goto метка; Как правило,...
Описание слайда:
Инструкция goto Инструкция goto позволяет осуществить переход на заданную метку внутри текущей функции Синтаксис: goto метка; Как правило, использование инструкции goto усложняет структуру программы и без крайней необходимости ею пользоваться не стоит Если Вы все еще думаете об использовании этого оператора – использовать его все равно не стоит

Слайд 89


Пример
Описание слайда:
Пример

Слайд 90


Структуры
Описание слайда:
Структуры

Слайд 91


Структуры Структура - это одна или несколько переменных (возможно, различных типов), которые для удобства работы с ними сгруппированы под одним...
Описание слайда:
Структуры Структура - это одна или несколько переменных (возможно, различных типов), которые для удобства работы с ними сгруппированы под одним именем. Структуры помогают в организации сложных данных, позволяя группу связанных между собой переменных трактовать не как множество отдельных элементов, а как единое целое

Слайд 92


Язык программирования C++, слайд №92
Описание слайда:

Слайд 93


Язык программирования C++, слайд №93
Описание слайда:

Слайд 94


Язык программирования C++, слайд №94
Описание слайда:

Слайд 95


Язык программирования C++, слайд №95
Описание слайда:

Слайд 96


Язык программирования C++, слайд №96
Описание слайда:

Слайд 97


Язык программирования C++, слайд №97
Описание слайда:

Слайд 98


Объединения
Описание слайда:
Объединения

Слайд 99


Объединения Объединение - это тип данных, который может содержать (в разные моменты времени) объекты различных типов и размеров Объединения позволяют...
Описание слайда:
Объединения Объединение - это тип данных, который может содержать (в разные моменты времени) объекты различных типов и размеров Объединения позволяют хранить разнородные данные в одной и той же области памяти без включения в программу машинно-зависимой информации

Слайд 100


Язык программирования C++, слайд №100
Описание слайда:

Слайд 101


Пример 2
Описание слайда:
Пример 2

Слайд 102


Массивы
Описание слайда:
Массивы

Слайд 103


Массивы Массивы позволяют объявить несколько (один и более) последовательных объектов, объединенных под одним именем, и осуществлять к ним...
Описание слайда:
Массивы Массивы позволяют объявить несколько (один и более) последовательных объектов, объединенных под одним именем, и осуществлять к ним индексированный доступ В качестве индексов используются целые числа, или типы, приводимые к целым Размер массива задается статически на этапе компиляции и не может быть изменен в ходе работы программы Индекс начального элемента массива равен нулю Есть возможность объявления многомерных массивов

Слайд 104


Язык программирования C++, слайд №104
Описание слайда:

Слайд 105


Массивы символов
Описание слайда:
Массивы символов

Слайд 106


Определение размера массива
Описание слайда:
Определение размера массива

Слайд 107


Многомерные массивы
Описание слайда:
Многомерные массивы

Слайд 108


Передача массива в функцию
Описание слайда:
Передача массива в функцию

Слайд 109


Указатели, динамическая память
Описание слайда:
Указатели, динамическая память

Слайд 110


Указатели Указатель – используются для хранения адресов переменных в памяти Основные области применения Работа с динамической памятью Работа с...
Описание слайда:
Указатели Указатель – используются для хранения адресов переменных в памяти Основные области применения Работа с динамической памятью Работа с массивами Передача параметров в функцию по ссылке Организация связанных структур данных (списки, деревья)

Слайд 111


Язык программирования C++, слайд №111
Описание слайда:

Слайд 112


Хранение данных В C++ есть три разных способа выделения памяти для объектов Статическое: пространство для объектов создаётся в области хранения...
Описание слайда:
Хранение данных В C++ есть три разных способа выделения памяти для объектов Статическое: пространство для объектов создаётся в области хранения данных программы в момент компиляции; Автоматическое: объекты можно временно хранить в стеке; эта память затем автоматически освобождается и может быть использована снова, после того, как программа выходит из блока, использующего её. Динамическое: блоки памяти нужного размера могут запрашиваться во время выполнения программы с помощью оператора new в области памяти, называемой кучей. Эти блоки освобождаются и могут быть использованы снова после вызова для них оператора delete.

Слайд 113


Организация памяти в языке C++ С точки зрения языка С++ память представляет собой массив последовательно пронумерованных ячеек памяти, с которыми...
Описание слайда:
Организация памяти в языке C++ С точки зрения языка С++ память представляет собой массив последовательно пронумерованных ячеек памяти, с которыми можно работать по отдельности или связными кусками Порядковый номер ячейки называется ее адресом Эта память используется для хранения значений переменных. Переменные различных типов могут занимать различное количество ячеек памяти, и иметь различные способы представления в памяти

Слайд 114


Пример
Описание слайда:
Пример

Слайд 115


Что такое указатель? Указатель – это переменная, которая может хранить адрес другой переменной в памяти заданного типа Указатели – мощное средство...
Описание слайда:
Что такое указатель? Указатель – это переменная, которая может хранить адрес другой переменной в памяти заданного типа Указатели – мощное средство языка С++, позволяющее эффективно решать различные задачи Использование указателей открывает доступ к памяти машины, поэтому пользоваться ими следует аккуратно

Слайд 116


Объявление указателя Указатель на переменную определенного типа объявляется следующим образом: *; Например: int *pointerToInt; Указатель, способный...
Описание слайда:
Объявление указателя Указатель на переменную определенного типа объявляется следующим образом: *; Например: int *pointerToInt; Указатель, способный хранить адрес переменной любого типа имеет тип void*: void * pointerToAnyType; Как и к обычным переменным, к указателям можно применять модификатор const: const int * pointerToConstInt; char * const constPointerToChar = &ch; const double * const constPointerToConstDouble = &x; float * const constPointerToFloat = &y; const void * pointerToConstData;

Слайд 117


Получение адреса переменной Для взятия адреса переменной в памяти служит унарный оператор & Этот оператор возвращает адрес переменной, который может...
Описание слайда:
Получение адреса переменной Для взятия адреса переменной в памяти служит унарный оператор & Этот оператор возвращает адрес переменной, который может быть присвоен указателю совместимого типа Оператор взятия адреса применим только к переменным. Его нельзя применять к числовым константам, литералам, выражениям или регистровым переменным

Слайд 118


Оператор косвенного доступа Для доступа к значению, на которое ссылается указатель, необходимо его разыменование (dereferencing), осуществляемое при...
Описание слайда:
Оператор косвенного доступа Для доступа к значению, на которое ссылается указатель, необходимо его разыменование (dereferencing), осуществляемое при помощи унарного оператора * int * p = &i; *p = 5;

Слайд 119


Пример
Описание слайда:
Пример

Слайд 120


Инициализация указателей Значение неинициализированного указателя не определено Разыменование такого указателя приводит к неопределенному поведению...
Описание слайда:
Инициализация указателей Значение неинициализированного указателя не определено Разыменование такого указателя приводит к неопределенному поведению Лучше присвоить указателю нулевое значение (или символическую константу NULL), чтобы подчеркнуть, что он не ссылается ни на какую переменную: char * p1 = 0; char * p2 = NULL; В стандарт C++11 введено специальное ключевое слово nullptr, обозначающее нулевой указатель Разыменование нулевого указателя также приводит к неопределенному поведению, однако появляется возможность проверки значения указателя: if (p != nullptr) // или просто if (p)

Слайд 121


NULL (или 0) vs nullptr В программах на C++11 следует использовать nullptr вместо NULL или 0 У nullptr отсутствует неявное преобразование к...
Описание слайда:
NULL (или 0) vs nullptr В программах на C++11 следует использовать nullptr вместо NULL или 0 У nullptr отсутствует неявное преобразование к целочисленным типам При этом сохраняется неявное преобразование к типу bool (значение false)

Слайд 122


Язык программирования C++, слайд №122
Описание слайда:

Слайд 123


Копирование указателей Как и в случае обычных переменных, значение одного указателя может быть присвоено другому при помощи оператора = Следует...
Описание слайда:
Копирование указателей Как и в случае обычных переменных, значение одного указателя может быть присвоено другому при помощи оператора = Следует помнить, что в этому случае копируется адрес переменной, а не ее значение Для копирования значения переменной, на которую ссылается указатель, необходимо применить оператор разыменования * char a = ‘A’; char b = ‘B’; char c = ‘C’; char *pa = &a; char *pb = &b; char *pc = &c; pa = pb; // pa и pb теперь хранят адрес b *pa = *pc; // b теперь хранит значение ‘C’

Слайд 124


Указатели и аргументы функций В языке Си параметры в функцию передаются по значению. Указатели – единственный способ изменить значение параметра...
Описание слайда:
Указатели и аргументы функций В языке Си параметры в функцию передаются по значению. Указатели – единственный способ изменить значение параметра изнутри функции В языке C++ появилась возможность передачи параметров по ссылке

Слайд 125


Указатели на функции В Си можно объявить указатель на функцию и работать с ним как с обычной переменной, сохраняя возможность вызова функции по...
Описание слайда:
Указатели на функции В Си можно объявить указатель на функцию и работать с ним как с обычной переменной, сохраняя возможность вызова функции по указателю на нее Данная возможность позволяет иметь несколько реализаций алгоритма, имеющих общий интерфейс Для получения указателя следует воспользоваться оператором взятия адреса & В C++ можно использовать имя функции В C++ есть возможность использовать функциональные объекты В C++11 появились безымянные функции (lambda-функции) У Lambda-функций, не имеющих состояния, есть возможность получения адреса

Слайд 126


Язык программирования C++, слайд №126
Описание слайда:

Слайд 127


Язык программирования C++, слайд №127
Описание слайда:

Слайд 128


Язык программирования C++, слайд №128
Описание слайда:

Слайд 129


Указатели и массивы Указатели и массивы в C/C++ тесно связаны Имя массива является синонимом расположения его начального элемента int arr[10]; int *p...
Описание слайда:
Указатели и массивы Указатели и массивы в C/C++ тесно связаны Имя массива является синонимом расположения его начального элемента int arr[10]; int *p = arr; // эквивалентно int *p = &arr[0]; Индексация элементов массива возможна с помощью указателей и адресной арифметики

Слайд 130


Адресная арифметика Если p – указатель на некоторый элемент массива, то p+1 – указатель на следующий элемент p-1 – указатель на предыдущий элемент...
Описание слайда:
Адресная арифметика Если p – указатель на некоторый элемент массива, то p+1 – указатель на следующий элемент p-1 – указатель на предыдущий элемент p+j – указатель на j-й элемент после p p[j] разыменовывает j-й элемент относительно p Если p и q – указатели на некоторые элементы одного массива, то p–q - равно количеству элементов после q, которое необходимо добавить, чтобы получить p p

Слайд 131


Адресная арифметика в действии
Описание слайда:
Адресная арифметика в действии

Слайд 132


Примеры
Описание слайда:
Примеры

Слайд 133


Указатели на char Строковые константы – массивы символов с завершающим нулем Передача строковой константы в функцию (напр. printf) осуществляется...
Описание слайда:
Указатели на char Строковые константы – массивы символов с завершающим нулем Передача строковой константы в функцию (напр. printf) осуществляется путем передачи указателя на ее начальный элемент

Слайд 134


Особенности Присваивание символьных указателей, не копирует строки char * p = “Hello”; char * p1 = p; // p и p1 указывают на одно и то же место в...
Описание слайда:
Особенности Присваивание символьных указателей, не копирует строки char * p = “Hello”; char * p1 = p; // p и p1 указывают на одно и то же место в памяти Символьный массив и символьный указатель – различные понятия char msg[] = “Hello”; // массив Символы внутри массива могут изменяться msg всегда указывает на одно и то же место в памяти char *pmsg = “Hello”; // указатель Попытка изменить символы через pmsg приведет к неопределенному поведению pmsg – указатель, можно присвоить ему другое значение в ходе работы программы

Слайд 135


Массивы указателей Указатели, как и другие переменные можно группировать в массивы int main(int argc, char* argv[]) const char * a[] = {“Hello”,...
Описание слайда:
Массивы указателей Указатели, как и другие переменные можно группировать в массивы int main(int argc, char* argv[]) const char * a[] = {“Hello”, “World!”}; printf(“%s %s\n”, a[0], a[1]); a[0] = “Goodbye”; Массивы указателей могут использоваться как альтернатива двумерных массивов

Слайд 136


Указатели на указатели В C и C++ возможны указатели, ссылающиеся на другие указатели char arr[] = “Hello”; char *parr = arr; char **pparr = &parr; //...
Описание слайда:
Указатели на указатели В C и C++ возможны указатели, ссылающиеся на другие указатели char arr[] = “Hello”; char *parr = arr; char **pparr = &parr; // pparr – хранит адрес указателя parr (*pparr)[0] = ‘h’; // arr = “hello” pparr[0][1] = ‘E’; // arr = “hEllo”;

Слайд 137


Инкремент и декремент указателя Когда указатель ссылается на определенный элемент массива, имеют смысл операции инкремента и декремента указателя...
Описание слайда:
Инкремент и декремент указателя Когда указатель ссылается на определенный элемент массива, имеют смысл операции инкремента и декремента указателя char str[] = “Hello, world!”; char *p = str;// p указывает на символ H p++; // p указывает на символ e *p = ‘E’; // заменяем символ e на E

Слайд 138


Язык программирования C++, слайд №138
Описание слайда:

Слайд 139


Указатели и динамическая память Часто возможны ситуации, когда размер и количество блоков памяти, необходимых программе, не известны заранее В этом...
Описание слайда:
Указатели и динамическая память Часто возможны ситуации, когда размер и количество блоков памяти, необходимых программе, не известны заранее В этом случае прибегают к использованию динамически распределяемой памяти Приложение может запрашивать блоки памяти необходимого размера из области, называемой кучей (heap) Как только блок памяти становится не нужен, его освобождают, возвращая память в кучу

Слайд 140


Операторы new и delete В состав языка C++ вошли операторы new и delete, осуществляющие работу с динамической памятью на уровне языка Оператор new...
Описание слайда:
Операторы new и delete В состав языка C++ вошли операторы new и delete, осуществляющие работу с динамической памятью на уровне языка Оператор new выделяет память под элемент или массив элементов Тип *p = new Тип() Тип *p = new Тип(инициализатор,...) Тип *p = new Тип[кол-во элементов] Оператор delete освобождает память, выделенную ранее оператором new delete pObject; delete [] pArray;

Слайд 141


Прочие средства работы с динамической памятью В стандартной библиотеке языка C для работы с динамической памятью служат функции: malloc calloc...
Описание слайда:
Прочие средства работы с динамической памятью В стандартной библиотеке языка C для работы с динамической памятью служат функции: malloc calloc realloc free Существуют средства работы с динамической памятью, зависящие от используемой ОС или используемых компонентов

Слайд 142


Функции memcpy, memset и memmove Функция memcpy осуществляет копирование блока памяти из одного адреса в другой void memcpy(void *dst, const void...
Описание слайда:
Функции memcpy, memset и memmove Функция memcpy осуществляет копирование блока памяти из одного адреса в другой void memcpy(void *dst, const void *src, size_t count) Функция memmove аналогична memcpy, но корректно работает, если блоки перекрываются void memmove(void *dst, const void *src, size_t count) Функция memset заполняет область памяти определенным значением типа char void memset(void *dst, int c, size_t count)

Слайд 143


Пример
Описание слайда:
Пример

Слайд 144


Указатели на структуры и объединения Указатели на структуры объявляются аналогично указателям на другие типы Для доступа к элементам структуры может...
Описание слайда:
Указатели на структуры и объединения Указатели на структуры объявляются аналогично указателям на другие типы Для доступа к элементам структуры может применяться оператор -> struct Point { int x, y; }; Point p = {10, 20}; Point *pPoint = &p; (*pPoint).x = 1; pPoint->y = 2;

Слайд 145


Правила корректной работы с динамической памятью Объекты, выделенные при помощи оператора new должны быть удалены при помощи оператора delete MyType...
Описание слайда:
Правила корректной работы с динамической памятью Объекты, выделенные при помощи оператора new должны быть удалены при помощи оператора delete MyType * pObj = new MyType; delete pObj; Массивы объектов, выделенные при помощи оператора new [] должны быть удалены при помощи оператора delete [] MyType * pArray = new MyType[N]; delete [] pArray; Блоки памяти, выделенные при помощи функции malloc (realloc, calloc) должны быть освобождены при помощи функции free void * p = malloc(1000); free(p); Использование «непарных» средств освобождения памяти приведет к неопределенному поведению

Слайд 146


Проблемы ручного управления памятью «Висячие ссылки» (dangling pointer) После удаления объекта все указатели на него становятся «висячими» Область...
Описание слайда:
Проблемы ручного управления памятью «Висячие ссылки» (dangling pointer) После удаления объекта все указатели на него становятся «висячими» Область памяти может быть отдана ОС и стать недоступной, либо использоваться новым объектом Разыменование или попытка повторного удаления приведет либо к аварийной остановке программы, либо к неопределенному поведению Причина возникновения: неправильная оценка времени жизни объекта – команда удаления объекта вызывается до окончания его использования в программе

Слайд 147


Проблемы ручного управления памятью (продолжение) Утечка памяти (Memory Leak) Причины: Программист не удалил объект после завершения использования...
Описание слайда:
Проблемы ручного управления памятью (продолжение) Утечка памяти (Memory Leak) Причины: Программист не удалил объект после завершения использования Ссылающемуся на объект указателю присвоено новое значение, тогда как на объект нет других ссылок Объект становится недоступен программно, но продолжает занимать память Следствие Программа все больше и больше потребляет памяти, замедляя работу системы, пока не исчерпает доступный объем адресного пространства и не завершится с ошибкой

Слайд 148


Примеры некорректной работы с динамической памятью
Описание слайда:
Примеры некорректной работы с динамической памятью

Слайд 149


Еще примеры некорректной работы с динамической памятью
Описание слайда:
Еще примеры некорректной работы с динамической памятью

Слайд 150


Как не прострелить себе ногу, программируя на C++ Работа с указателями – сильная сторона C++, требующая большой внимательности и ответственности...
Описание слайда:
Как не прострелить себе ногу, программируя на C++ Работа с указателями – сильная сторона C++, требующая большой внимательности и ответственности Сведите к минимуму ручную работу с указателями и динамической памятью Используйте контейнеры стандартной библиотеки C++ как альтернативу динамическим массивам Используйте классы стандартных «умных указателей» для владения объектами в динамической памяти Используйте иные проверенные временем библиотеки (например boost) Пишите свои умные обертки, автоматизирующие владение ресурами

Слайд 151


А как у них? Есть ЯВУ, использующие сборку мусора (Garbage collection), например Java, C#, JavaScript, D, Lisp, ActionScript, Objective C и др....
Описание слайда:
А как у них? Есть ЯВУ, использующие сборку мусора (Garbage collection), например Java, C#, JavaScript, D, Lisp, ActionScript, Objective C и др. Освобождение памяти от неиспользуемых объектов возлагается на среду исполнения Свобода программиста по работе с указателями, адресной арифметикой в таких языках либо отсутствует, либо сильно ограничена Возможны кратковременные замедления в работе программы в неопределенные моменты на время сборки мусора Эффективная работа сборщика мусора возможна только при достаточном количестве свободной памяти

Слайд 152


Автоматический сборщик мусора – не панацея Сборка мусора автоматизирует лишь работу с памятью, но не с другими ресурами (файлы, подключения к БД) В...
Описание слайда:
Автоматический сборщик мусора – не панацея Сборка мусора автоматизирует лишь работу с памятью, но не с другими ресурами (файлы, подключения к БД) В некоторых языках есть возможность выполнить некоторый код непосредственно перед удалением объекта (финализатор) сборщиком мусора Для управления ресурсами не годится, т.к. объект может использоваться (либо не удаляться сборщиком мусора) гораздо дольше, чем владеемый им ресурс, поэтому ресурсами приходится управлять вручную Утечки памяти все равно возможны, если ссылка на ненужный более объект хранится в используемом объекте В некоторых языках есть слабые ссылки

Слайд 153


Ссылки
Описание слайда:
Ссылки

Слайд 154


Ссылки Ссылку можно рассматривать как еще одно имя объекта Синтаксис & означает ссылку на Применение Задание параметров функций Перегрузка операций
Описание слайда:
Ссылки Ссылку можно рассматривать как еще одно имя объекта Синтаксис & означает ссылку на Применение Задание параметров функций Перегрузка операций

Слайд 155


Ссылки в качестве параметров функций Функция принимает не копию аргумента, а ссылку на него При сложных типах аргументов (классы, структуры) это...
Описание слайда:
Ссылки в качестве параметров функций Функция принимает не копию аргумента, а ссылку на него При сложных типах аргументов (классы, структуры) это может дать прирост в скорости вызова функции Не тратится время на создании копии Простые типы, как правило, эффективнее передавать по значению char, int, float, double Изменение значения формального параметра внутри функции приводит к изменению значения переданного аргумента Альтернативный способ возврата значения из функции Возврат нескольких значений одновременно

Слайд 156


Константные ссылки в качестве параметров функций Параметр, переданный в функцию по константной ссылке, доступен внутри нее только для чтения Если...
Описание слайда:
Константные ссылки в качестве параметров функций Параметр, переданный в функцию по константной ссылке, доступен внутри нее только для чтения Если функция не изменяет значение своего аргумента, то имеет смысл передавать его по константной ссылке Простые типы данных следует передавать по значению

Слайд 157


Пример 1
Описание слайда:
Пример 1

Слайд 158


Пример 2
Описание слайда:
Пример 2

Слайд 159


Инициализация ссылки Ссылка должна быть обязательно проинициализирована Должен существовать объект на который она ссылается Синтаксис Тип &...
Описание слайда:
Инициализация ссылки Ссылка должна быть обязательно проинициализирована Должен существовать объект на который она ссылается Синтаксис Тип & идентификатор = значение; Инициализация ссылки совершенно отличается от операции присваивания Будучи проинициализированной, присваивание ссылке нового значения изменяет значение ссылаемого объекта, а не значение ссылки

Слайд 160


Пример
Описание слайда:
Пример

Слайд 161


Ссылки на временные объекты При инициализации ссылки объектом другого типа компилятор создает временный объект нужного типа и использует его для...
Описание слайда:
Ссылки на временные объекты При инициализации ссылки объектом другого типа компилятор создает временный объект нужного типа и использует его для инициализации ссылки На данный временный объект может ссылаться только константная ссылка То же самое происходит при инициализации ссылки значением константы Изменение значения объекта в данном случае не отражается на значении временного объекта Время жизни временного объекта равно области видимости созданной ссылки

Слайд 162


Пример 1
Описание слайда:
Пример 1

Слайд 163


Пример 2
Описание слайда:
Пример 2

Слайд 164


Пространства имен
Описание слайда:
Пространства имен

Слайд 165


Пространства имен Пространства имен позволяют логически сгруппировать классы, переменные и функции в некоторые именованные области Позволяют избежать...
Описание слайда:
Пространства имен Пространства имен позволяют логически сгруппировать классы, переменные и функции в некоторые именованные области Позволяют избежать конфликта имен идентификаторов в различных модулях проекта Разбивают программу на функциональные единицы Доступ к идентификатору внутри пространства имен: :: Либо: using namespace ; ; Либо: using ::; ; Не рекомендуется использовать using namespace в заголовочных файлах

Слайд 166


Язык программирования C++, слайд №166
Описание слайда:

Слайд 167


Стандартная библиотека шаблонов STL
Описание слайда:
Стандартная библиотека шаблонов STL

Слайд 168


Стандартная библиотека шаблонов (STL) Программная библиотека, содержащая большое количество готового к использованию обобщенного кода Контейнеры...
Описание слайда:
Стандартная библиотека шаблонов (STL) Программная библиотека, содержащая большое количество готового к использованию обобщенного кода Контейнеры Итераторы Алгоритмы Умные указатели Поддержка многопоточности, случайных чисел Потоки ввода/вывода Поддержка функционального программирования И многое другое Все контейнеры, алгоритмы и итераторы в STL объявлены в пространстве имен std Стандарт запрещает программисту объявлять свои типы в данном пространстве имен

Слайд 169


Контейнеры Классы, предназначенные для хранения элементов определенного типа STL содержит классы обобщенных реализаций различных контейнеров, которые...
Описание слайда:
Контейнеры Классы, предназначенные для хранения элементов определенного типа STL содержит классы обобщенных реализаций различных контейнеров, которые можно использовать с элементами различных типов В STL поддерживаются 2 вида контейнеров Последовательные Ассоциативные

Слайд 170


Основные контейнеры STL Последовательные контейнеры Строка (basic_string, string, wstring) Вектор (vector) Двусвязный список (list) Двусторонняя...
Описание слайда:
Основные контейнеры STL Последовательные контейнеры Строка (basic_string, string, wstring) Вектор (vector) Двусвязный список (list) Двусторонняя очередь (deque) Ассоциативные контейнеры Отображение (map, multimap, unordered_map, unordered_multimap) Множество (set, multiset, unordered_set, unordered_multiset) Контейнеры-адаптеры Стек (stack) Очередь (queue) Очередь с приоритетом (priority_queue)

Слайд 171


Строка std::string Контейнер, предназначенный для хранения строк произвольной длины В качестве элементов строк могут выступать элементы типа char...
Описание слайда:
Строка std::string Контейнер, предназначенный для хранения строк произвольной длины В качестве элементов строк могут выступать элементы типа char (string), wchar_t (wstring) или определяемые пользователем типы (basic_string) Достоинства: Автоматизация управления памятью Набор операций для работы со строками Для работы с данным классом строк необходимо подключить заголовочный файл

Слайд 172


Создание строки
Описание слайда:
Создание строки

Слайд 173


Размер и вместимость
Описание слайда:
Размер и вместимость

Слайд 174


Сравнение строк
Описание слайда:
Сравнение строк

Слайд 175


Конкатенация строк
Описание слайда:
Конкатенация строк

Слайд 176


Извлечение подстроки
Описание слайда:
Извлечение подстроки

Слайд 177


Поиск внутри строки
Описание слайда:
Поиск внутри строки

Слайд 178


Замена внутри строки
Описание слайда:
Замена внутри строки

Слайд 179


string_view
Описание слайда:
string_view

Слайд 180


string_view Объект, ссылающийся на неизменную последовательность символов в памяти Не владеет символьными данными При разрушении string_view массив...
Описание слайда:
string_view Объект, ссылающийся на неизменную последовательность символов в памяти Не владеет символьными данными При разрушении string_view массив не удаляется После разрушения массива символов использовать ссылавшийся на него string_view нельзя Легковесный Как правило, указатель на начало + длина

Слайд 181


Конструирование string_view
Описание слайда:
Конструирование string_view

Слайд 182


Пример
Описание слайда:
Пример

Слайд 183


Вектор std::vector Контейнер для хранения динамического массива элементов произвольного типа Автоматизация процесса управления памятью Везде, где...
Описание слайда:
Вектор std::vector Контейнер для хранения динамического массива элементов произвольного типа Автоматизация процесса управления памятью Везде, где возможно, рекомендуется использовать класс vector как альтернативу динамическому выделению массивов объектов при помощи оператора new [] К элементам массива предоставляется индексированный доступ Для использования данного класса необходимо подключить заголовочный файл

Слайд 184


Пример
Описание слайда:
Пример

Слайд 185


Язык программирования C++, слайд №185
Описание слайда:

Слайд 186


Двусвязный список std::list Реализовывает двусвязный список элементов произвольного типа К элементам списка осуществляется последовательный доступ...
Описание слайда:
Двусвязный список std::list Реализовывает двусвязный список элементов произвольного типа К элементам списка осуществляется последовательный доступ при помощи итераторов Вставка и удаление элементов из произвольного места списка осуществляется за постоянное время Для начала работы с данным контейнером необходимо подключить заголовочный файл

Слайд 187


Пример
Описание слайда:
Пример

Слайд 188


Язык программирования C++, слайд №188
Описание слайда:

Слайд 189


Двусторонняя очередь (double-ended queue) std::deque Аналогична вектору, но обеспечивает эффективную вставку и удаление элементов не только в конце,...
Описание слайда:
Двусторонняя очередь (double-ended queue) std::deque Аналогична вектору, но обеспечивает эффективную вставку и удаление элементов не только в конце, но и в начале очереди В отличие от вектора не гарантируется последовательное хранение элементов в памяти Гарантируется константный доступ к элементу по его индексу Для использования необходимо подключить заголовочный файл

Слайд 190


Классы std::map и std::multimap Ассоциативный контейнер, хранящий пары «ключ» - «значение» Позволяет отображать элементы одного типа в элементы...
Описание слайда:
Классы std::map и std::multimap Ассоциативный контейнер, хранящий пары «ключ» - «значение» Позволяет отображать элементы одного типа в элементы другого или того же самого типа map – все ключи уникальные multimap – допускается дублирование ключей Для подключения данных классов необходимо подключить заголовочный файл Требования к ключам: Наличие операции отношения

Слайд 191


Пример
Описание слайда:
Пример

Слайд 192


Пример – подсчет частоты встречаемости символов
Описание слайда:
Пример – подсчет частоты встречаемости символов

Слайд 193


Классы std::unordered_map и std::unordered_multimap Ассоциативный контейнер, хранящий пары «ключ» - «значение» Элементы хранятся не отсортированы...
Описание слайда:
Классы std::unordered_map и std::unordered_multimap Ассоциативный контейнер, хранящий пары «ключ» - «значение» Элементы хранятся не отсортированы никоим образом, но сгруппированы в bucket-ы согласно хеш-значению ключей unordered_map – все ключи уникальные unordered_multimap – допускается дублирование ключей Для подключения данных классов необходимо подключить заголовочный файл Требования к ключам: Наличие операции сравнения == Возможность вычислить хеш от значения ключа

Слайд 194


Язык программирования C++, слайд №194
Описание слайда:

Слайд 195


Язык программирования C++, слайд №195
Описание слайда:

Слайд 196


Язык программирования C++, слайд №196
Описание слайда:

Слайд 197


Классы множеств std::set и std::multiset Ассоциативный контейнер, хранящий множество элементов определенного типа set – дублирование элементов не...
Описание слайда:
Классы множеств std::set и std::multiset Ассоциативный контейнер, хранящий множество элементов определенного типа set – дублирование элементов не допускается multiset – дублирование элементов допускается Для использования данных классов необходимо подключить заголовочный файл Требования к элементам – наличие операции отношения

Слайд 198


Пример
Описание слайда:
Пример

Слайд 199


Итераторы Итератор – объект, позволяющий программисту осуществлять перебор элементов контейнера вне зависимости от деталей его реализации Например,...
Описание слайда:
Итераторы Итератор – объект, позволяющий программисту осуществлять перебор элементов контейнера вне зависимости от деталей его реализации Например, осуществлять вставку диапазона элементов одного контейнера в другой Итераторы используются в STL для доступа к элементам контейнеров Обобщенные реализации алгоритмов используют итераторы для обработки элементов контейнеров Итератор – связующее звено между контейнером и алгоритмом

Слайд 200


Алгоритмы Обобщенные функции, реализующие типичные алгоритмы над элементами контейнеров Сортировка, поиск, поэлементная обработка Алгоритмы в STL не...
Описание слайда:
Алгоритмы Обобщенные функции, реализующие типичные алгоритмы над элементами контейнеров Сортировка, поиск, поэлементная обработка Алгоритмы в STL не работают с контейнерами напрямую Вместо этого алгоритмы используют итераторы, задающие определенные элементы или диапазоны элементов контейнера Для работы с алгоритмами STL необходимо подключить заголовочный файл

Слайд 201


Пример: сортировка массива с использованием STL
Описание слайда:
Пример: сортировка массива с использованием STL

Слайд 202


Язык программирования C++, слайд №202
Описание слайда:

Слайд 203


Пример
Описание слайда:
Пример

Слайд 204


Язык программирования C++, слайд №204
Описание слайда:

Слайд 205


Язык программирования C++, слайд №205
Описание слайда:

Слайд 206


Язык программирования C++, слайд №206
Описание слайда:

Слайд 207


Контейнеры STL и умные указатели Контейнеры STL автоматически освобождают занимаемую своими элементами память std::vector – рекомендуемая...
Описание слайда:
Контейнеры STL и умные указатели Контейнеры STL автоматически освобождают занимаемую своими элементами память std::vector – рекомендуемая альтернатива динамическому массиву std::unique_ptr – умный указатель std::shared_ptr – умный указатель с подсчетом ссылок Прочее boost::scoped_ptr boost::intrusive_ptr boost::scoped_array boost::shared_array

Слайд 208


Язык программирования C++, слайд №208
Описание слайда:

Слайд 209


Ссылки Алгоритм выбора контейнера STL
Описание слайда:
Ссылки Алгоритм выбора контейнера STL



Похожие презентации
Mypresentation.ru
Загрузить презентацию