Программа курса:
1. Модуль 1. Вводная часть.
· Стандарт языка С++ С++11. Краткий обзор аспектов языка и технологий программирования, рассматриваемых в данном курсе, а также вопросов, не входящих в курс (выносимых для самостоятельного изучения).
· Общие принципы структурного программирования, их реализация средствами С/С++.
· Структура С-программы. Модульность. Раздельная компиляция. Функциональная декомпозиция. Функции С++ вообще и функция main() в частности. Блоки кода – составляющая часть структурного программирования. Оформление текста программы.
· Ключевые слова С++.
· Идентификаторы.
· L_Value, R_Value и низкоуровневые объекты С++.
· Операторы С++.
· Приоритет и ассоциативность операторов. Обзор категорий операторов языка С. Примеры использования. Специфика использования.
· Данные. Константы (литералы).
· Виды литералов. Целые литералы. Литералы с плавающей точкой.
Модуль 2.
· Символьные литералы. Способы кодирования символов. UNICODE. Управляющие последовательности. Строковые литералы.
· Перечисление (ENUM).Специфика использования.
· Переменные. Фундаментальные типы языка С++. Размеры объектов и оператор sizeof. Размеры объектов базовых типов и шаблон numeric_limits. Знаковость переменной. Приведение типов. Правила неявного приведения типов. Новые операторы явного приведения типов. Тип wchar_t. BOOL и bool.
· Объявление и определение переменной. Ключевое слово typedef. Понятия, связанные с переменными. Способы использования перменных и типы компоновки. Размещение переменных и время существования переменных. Ключевое слово static.
Модуль 3.
· Область видимости переменных. "Скрытие" имени переменной. Оператор разрешения области видимости. Пространства имен. Директива using. Пространство имен стандарт-ной библиотеки. Неименованные пространства имен. Псевдонимы пространств имен.
· Инициализация переменных.
· Модификаторы const и volatile. Инструкции.
· Категории инструкций. Инструкции выбора. Инструкции цикла. Инструкции безусловного перехода.
· Директивы препроцессора.
· Директива #define. Предопределенные макросы. Диагностические макросы. Рекомендации.
· Директива #undef.
· Директивы #ifdef, #ifndef, #else, #endif.
· Директивы #if, #elif, #else, #endif. Оператор препроцессора defined.
· Концепция разделения кода на интерфейс и реализацию.
· Заголовочные файлы. Директива препроцессора #include. Стратегии включения заголовочных файлов. Формы директивы #include.
· Предкомпиляция заголовочных файлов. Защита от «вложенных» включений заголовочных файлов. Заголовочные файлы стандартной библиотеки.
Модуль 4.
· Указатели.
· Понятие указателя. Объявление переменной – указателя. Инициализация указателя и оператор получения адреса переменной. Разыменование указателя. Арифметика указателей. Нулевой указатель. void – указатель.
· Указатель и ключевое слово const. Преобразование типа указателя.
· Оператор reinterpret_cast.
· Массивы.
· Понятие массива. Встроенные массивы. Объявление массива.
· Инициализация массива. Обращение к элементу массива. Оператор sizeof и размеры массива. Связь массивов и указателей. Указатели на многомерные массивы. Массивы · · Динамическое выделение памяти.
· Функции malloc, realloc и free. Операторы new и delete. Формы оператора delete. Динамические массивы.1. Модуль 1. Вводная часть.
· Стандарт языка С++ С++11. Краткий обзор аспектов языка и технологий программирования, рассматриваемых в данном курсе, а также вопросов, не входящих в курс (выносимых для самостоятельного изучения).
· Общие принципы структурного программирования, их реализация средствами С/С++.
· Структура С-программы. Модульность. Раздельная компиляция. Функциональная декомпозиция. Функции С++ вообще и функция main() в частности. Блоки кода – составляющая часть структурного программирования. Оформление текста программы.
· Ключевые слова С++.
· Идентификаторы.
· L_Value, R_Value и низкоуровневые объекты С++.
· Операторы С++.
· Приоритет и ассоциативность операторов. Обзор категорий операторов языка С. Примеры использования. Специфика использования.
· Данные. Константы (литералы).
· Виды литералов. Целые литералы. Литералы с плавающей точкой.
Модуль 2.
· Символьные литералы. Способы кодирования символов. UNICODE. Управляющие последовательности. Строковые литералы.
· Перечисление (ENUM).Специфика использования.
· Переменные. Фундаментальные типы языка С++. Размеры объектов и оператор sizeof. Размеры объектов базовых типов и шаблон numeric_limits. Знаковость переменной. Приведение типов. Правила неявного приведения типов. Новые операторы явного приведения типов. Тип wchar_t. BOOL и bool.
· Объявление и определение переменной. Ключевое слово typedef. Понятия, связанные с переменными. Способы использования перменных и типы компоновки. Размещение переменных и время существования переменных. Ключевое слово static.
Модуль 3.
· Область видимости переменных. "Скрытие" имени переменной. Оператор разрешения области видимости. Пространства имен. Директива using. Пространство имен стандарт-ной библиотеки. Неименованные пространства имен. Псевдонимы пространств имен.
· Инициализация переменных.
· Модификаторы const и volatile. Инструкции.
· Категории инструкций. Инструкции выбора. Инструкции цикла. Инструкции безусловного перехода.
· Директивы препроцессора.
· Директива #define. Предопределенные макросы. Диагностические макросы. Рекомендации.
· Директива #undef.
· Директивы #ifdef, #ifndef, #else, #endif.
· Директивы #if, #elif, #else, #endif. Оператор препроцессора defined.
· Концепция разделения кода на интерфейс и реализацию.
· Заголовочные файлы. Директива препроцессора #include. Стратегии включения заголовочных файлов. Формы директивы #include.
· Предкомпиляция заголовочных файлов. Защита от «вложенных» включений заголовочных файлов. Заголовочные файлы стандартной библиотеки.
Модуль 4.
· Указатели.
· Понятие указателя. Объявление переменной – указателя. Инициализация указателя и оператор получения адреса переменной. Разыменование указателя. Арифметика указателей. Нулевой указатель. void – указатель.
· Указатель и ключевое слово const. Преобразование типа указателя.
· Оператор reinterpret_cast.
· Массивы.
· Понятие массива. Встроенные массивы. Объявление массива.
· Инициализация массива. Обращение к элементу массива. Оператор sizeof и размеры массива. Связь массивов и указателей. Указатели на многомерные массивы. Массивы · · Динамическое выделение памяти.
Модуль 5.
· Ссылки (reference).
· Понятие ссылки. Специфика инициализации и использования. Сравнение ссылок и указателей. Ссылки на временные объекты (rvalue reference – стандарт С++11).
· Функции.
· Понятие функции. Прототип функции. Определение функции. Вызов функции (специфика inline-функций). Соглашения о вызове функции (__cdecl, __stdcall, __fastcall).
· Способы передачи параметров функции: по значению, по указателю, по ссылке. Специфика передачи параметров: выражения в качестве параметров, указатели на массивы в качестве параметров функции, значения параметров по умолчанию, неиспользуемые параметры. Возвращаемое функцией значение. Ключевое слово const и функции: передача функции константных параметров, возвращение константных значений. Обобщенные константные выражения, ключевое слово constexpr (стандарт С++11). Проблемы при возвращении ссылки или указателя. Перегрузка имен функций. Рекурсивные функции.
Модуль 6.
· Переменное число параметров. "Старые" потоки ввода/вывода языка С. Функции printf и scanf. Ключи формата ввода/вывода. Файловый ввод/вывод. Диагностика ошибок.
· Указатель на функцию. Вызов функции с помощью указателя.
· Использование указателей на функции в качестве параметров. Массив указателей на функции. Примеры сложных объявлений функций и указателей на функции.
Модуль 7.
· Агрегатные типы данных. Структуры языка С. Ключевое слово struct. Выравнивание полей структуры компилятором. Использование структур.
· Безразмерные массивы.
· Поля битов.
· Объединения языка С. Ключевое слово union. Использование объединений.
Практическое занятие 1. БАЗОВЫЕ ПОНЯТИЯ. НАВЫКИ РАБОТЫ В ИНТЕГРИРОВАННОЙ СРЕДЕ РАЗРАБОТКИ (IDE).
· Базовые типы данных.
· Неявное приведение типов данных.
· Явное приведение типов данных. Операторы явного приведения типа.
· Ассоциативность и приоритет операторов.
· Область действия, область видимости, время существования переменных.
· Спецификатор класса памяти – static.
· Перечисления - enum. Логический тип bool. Модификатор const.
· Логические условные операторы и операторы отношения. Циклы.
· Индивидуальное домашнее задание по пройденному материалу N1.
Практическое занятие 2. ПОБИТОВЫЕ ОПЕРАТОРЫ. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА. УКАЗАТЕЛИ.
· Побитовые операторы и операторы сдвига.
· Макросы с параметрами. Директивы условной трансляции. Опции проекта. Заголовочные файлы. Объявление указателя. Инициализация указателя и оператор получения адреса объекта. Разыменование указателя. Арифметика указателей.
· Преобразование типа указателя. void – указатель. Указатели и ключевое слово const.
Конструкции типа "указатель на указатель".
· Индивидуальное домашнее задание по пройденному материалу N2
Практическое занятие 3. МАССИВЫ. СВЯЗЬ МАССИВОВ И УКАЗАТЕЛЕЙ. ДИНАМИЧЕСКОЕ ВЫДЕЛЕНИЕ ПАМЯТИ. СЛОЖНЫЕ УКАЗАТЕЛИ.
· Массивы. Объявление и инициализация встроенных массивов.
· Неполная инициализация встроенных массивов.
· Создание (и уничтожение) динамических массивов. Операторы new и delete.
· Простейшие алгоритмы поиска и сортировки.
· Указатели на многомерные массивы. Арифметика указателей на многомерные массивы.
· Модификатор const с массивами и указателями.
· Индивидуальное домашнее задание по пройденному материалу N3.
Практическое занятие 4. ФУНКЦИИ.
· Объявление, определение и вызов функции.
· Передача параметров по значению, по ссылке, по указателю.
· Передача функции указателя на массив (встроенный массив, динамический массив).
· Функции с переменным числом параметров.
· Индивидуальное домашнее задание по пройденному материалу N4.
Практическое занятие 5. ФУНКЦИИ.
· Рекурсивные функции. Указатель на функцию. Указатель на функцию в качестве аргумента другой функции. Массивы указателей на функции.
· Индивидуальное домашнее задание по пройденному материалу N5.
Практическое занятие 6. С-структуры.
· Объявление структуры. Создание экземпляров пользовательского типа. Использование структур: массив объектов пользовательского типа, передача агрегатного объекта в функцию.
· Поля битов. Пример использования структур - картотека.
· Объединения С.