Открыто

Разработчик прикладного программного обеспечения (Языки C и C++) [2021] [Высшая инженерная школа СПбПУ] [М. Абрамова, И. Брык, Н. Костина]

Тема в разделе "Курсы по программированию", создана пользователем Toxich, 12 дек 2020.

Цена: 110000р.-95%
Взнос: 5453р.

Основной список: 22 участников

Резервный список: 7 участников

  1. 12 дек 2020
    #1
    Toxich
    Toxich ЧКЧлен клуба
    Разработчик прикладного программного обеспечения (Языки C и C++) [2021]
    Высшая инженерная школа СПбПУ
    Марина Абрамова, Иван Брык, Наталия Костина, Алексей Маслаков, Марина Полубенцева, Евгения Тучкевич


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

    Традиционно языки C/C++ используются для различных прикладных задач: расчеты и вычисления, графические приложения, игры, встраиваемые системы и решения.

    Вы освоите не только основы программирования на языках С/C++, но и познакомитесь с прикладной библиотекой Qt и новыми стандартами С++11, 14, 17, 20.

    1. Базовую структуру цифрового компьютера, организацию основной памяти и коммуникаций в вычислительном узле;
    2. Существующие приложения и интерфейсы взаимодействия с ними;
    3. Типы данных и действия с ними в цифровом компьютере;
    4. Системы кодировки символов и форматы хранения исходных текстов программ;
    5. Базовые понятия алгоритмизации и процедурного программирования;
    6. Отличия процедурных и объектно-ориентированных языков программирования высокого уровня;
    7. Этапы жизненного цикла программного обеспечения и этапы получения исполняемого файла;
    8. Встроенные типы данных в языках программирования;
    9. Основные синтаксические конструкции языка программирования высокого уровня;
    10. Пространство имен стандартной библиотеки;
    11. Особенности создания и использования многомерных массивов;
    12. Динамическое выделение памяти;
    13. Возможности использования функций и указателей;
    14. Объектно-ориентированные возможности среды разработки MS Developer Studio.Net;
    15. Объектно-ориентированные возможности стандартной библиотеки С++;
    16. Отличие понятия наследования и внедрения, отличие понятия интерфейса и реализации.
    17. Внутреннее устройство контейнеров стандартной библиотеки;
    18. Средства, предоставляемые стандартной библиотекой С++ для обобщенного программирования;
    19. Средства, предоставляемые языком С++ для поддержки RTTI;
    20. Средства, предоставляемые языком С++ и стандартной библиотекой С++ для обработки нештатных ситуаций;
    21. Технологии использования новых встроенных понятий языка С++ согласно стандартам С++11, 14, 17, 20;
    22. Принципы использования новых средств, предоставляемых согласно стандарту стандартной библиотекой (C RunTime library).
    23. Состав интегрированной среды разработки и синтаксис Qt;
    24. Методологии разработки программного обеспечения, основные составляющие мета-объектной системы Qt;
    25. Принципы архитектуры приложения MVC (model-view-controller);
    26. Методы и приемы формализации и алгоритмизации поставленных задач.

    Тема 1. Базовая структура цифрового компьютера
    1.1. Основные понятия электронной цифровой информационной техники
    • Типы данных (операндов) в программировании.
    • Двоичное кодирование в электронной цифровой информационной технике.
    • Операции с элементами данных и комбинационные исполнительные блоки. Электронные элементы с памятью и хранение элементов данных.
    • Структура простейшего тракта цифровой обработки и понятие тактирования в цифровом устройстве.
    1.2. Классы цифровых компьютеров и развитие классификации
    • Простейший цифровой компьютер с хранимой программой и его составные части.
    • Процессорный (исполнительный) блок, его назначение и выполняемые функции. Реализация системы команд процессора и расширения АСК.
    • Основная память: адресная организация.
    • Процессорные команды и инструкции языка высокого уровня.
    • Трансляция.
    • Цикл выполнения процессорной команды (кратко)
    1.3. Основы организации цифрового процессора
    • Структура команды «в пространстве битов» и экономичное кодирование команды. Структурные способы ускорения выполнения потока команд. Суперскалярность как средство выравнивания времени выполнения микроопераций. Многопоточность.
    Практические занятия:
    Изучение операций с элементами данных.
    Знакомство с комбинационными исполнительными блоками.
    Знакомство со структурой простейшего тракта цифровой обработки.
    Тема 2. Организация основной памяти и коммуникаций в вычислительном узле.
    2.1. Адресная организация
    • Соотношение скоростей процессора и памяти.
    • Задержка доступа (Latency, Responce Time) и пропускная способность (ThroughPut, Bandwidth).
    • Уровни иерархии памяти: регистры процессора, КЭШ (многоуровневый), основная память (с адресной организацией), локальная подсистема хранения (диски), сеть.
    • Типовая организация КЭШ как многослойной памяти с ассоциативной выборкой.
    • Основная память: распределение адресов в минимальной вычислительной системе.
    • Основная память: трансляция адресов: отображение адресных пространств друг на друга – для чего и как.
    • Виртуальная память – что это.
    • Механизмы защиты памяти: аппаратная поддержка.
    • Аппаратная поддержка глобальной адресации в многоядерном компьютере с несколькими блоками локальной основной памяти.
    • Проблема обеспечения когерентности памяти в компьютере с глобальной адресацией
    2.2. Коммуникационные подсистемы в компьютере
    • Параллельная адресуемая магистраль (шина).
    • Последовательные шины.
    • Причины перехода от параллельных шин к последовательным
    2.3. Вычислительный узел
    • Организация подсистемы памяти в ВУ.
    • Глобальная адресация в пределах ВУ и задачи оптимизации кода.
    • Преимущества, недостатки, проблемы, связанные с использованием глобальной адресации.
    Практические занятия:
    Знакомство с адресной организацией.
    Использование коммуникационных подсистем в компьютере.
    Изучение организации подсистемы памяти в ВУ.
    Тема 3. Типы данных и действия с ними в цифровом компьютере. Организация системы команд
    3.1. Целочисленные операнды
    • Двоичная система счисления, ограниченность разрядной сетки и диапазона представимых значений.
    • Знакопеременные целые и дополнительный код.
    • Правила выполнения действий с целыми и набор целочисленных команд обработки в цифровом процессоре.
    • Адреса: числа или не вполне числа?
    3.2. Стандарт кодирования чисел плавающей точки
    • Проблемы точности представления и диапазона представимых значений.
    • Проблемы нарастания ошибки при выполнении действий. Всегда ли можно использовать результат плавающей операции?
    • Набор команд плавающей точки.
    • Конвейеры плавающей точки.
    3.3. Нечисловые данные
    • Битовые поля: что это?
    • Примеры использования битовых полей.
    • Основные операции с битовыми полями.
    • Поддержка работы с битовыми полями в системе команд процессора.
    • Кодирование текстов. Стандарт Unicode ISO/IEC 10646.
    • Звуковая, видео- и 3D-информация: одномерный либо многомерный массив элементов
    Практические занятия:
    Правила выполнения действий с целыми и набор целочисленных команд обработки в цифровом процессоре.
    Проблемы точности представления и диапазона представимых значений.
    Поддержка работы с битовыми полями в системе команд процессора.​
    Тема 1. Введение в программирование на языках C/C++
    1.1 Стандарт языка С++. Общие принципы структурного программирования
    1.2 Базовые понятия языка. (Структура программы. Ключевые слова. Идентификаторы.)
    Тема 2. Стандартные типы данных
    2.1 Понятие типа данных. Константы (литералы).
    2.2 Переменные. Понятия, связанные с переменными. Инициализация переменных

    Практические занятия:
    Использование литералов при написании выражений.
    Перечисления - enum
    Базовые типы данных, неявное приведение типов данных
    Явное приведение типов данных. Операторы явного приведения типа
    Область действия, область видимости, время существования переменной
    Тема 3. Операторы
    3.1 Понятия, связанные с операторами.
    3.2 Категории операторов. Специфика использования
    3.3 Побитовые операторы

    Практические занятия:
    Ассоциативность и приоритет операторов.
    Оператор присваивания и арифметические операторы.
    Логические операторы и операторы отношения.
    Побитовые операторы и операторы сдвига.
    Тема 4. Инструкции
    4.1 Категории инструкций. Инструкции условия. Инструкции выбора
    4.2 Инструкции цикла. Инструкции безусловной передачи управления

    Практические занятия:
    Выполнение инструкции if…else. Выполнение инструкции switch.
    Выполнение инструкции for, while, do… while.
    Выполнение инструкции break, continue.
    Тема 5. Препроцессор
    5.1 Назначение препроцессора. Макроподстановки.
    5.2 Директивы условной трансляции. Заголовочные файлы.

    Практические занятия:
    Использование макросов с параметрами. Директивы #define и #undef
    Использование директив условной трансляции: #ifdef, #ifndef, #else, #endif. Директивы #if, #elif, #else, #endif. Оператор препроцессора defined.
    Настройка опций проекта.
    Использование заголовочных файлов. Директива #include
    Тема 6. Указатели
    6.1 Понятие указателя. Виды указателей
    6.2 Арифметика указателей. Преобразование указателей.

    Практические занятия:
    Объявление и определение указателя.
    Инициализация указателя и оператор получения адреса объекта.
    Разыменование указателя.
    Арифметика указателей.
    Преобразование типа указателя.
    void* – указатель.
    Указатели и ключевое слово const.
    Конструкции типа "указатель на указатель".
    Тема 7. Массивы. Связь массивов и указателей
    7.1 Понятие массива. Встроенные одномерные массивы.
    7.2 Алгоритмы работы с массивами. (сортировка, поиск)

    Практические занятия:
    Объявление, определение и инициализация встроенных массивов.
    Неполная инициализация встроенных массивов.
    Модификатор const применительно к массивам.
    Простейшие алгоритмы поиска и сортировки.
    Тема 8. Ссылки
    8.1 Понятие ссылки. Сравнение ссылок и указателей.

    Практические занятия:
    Специфика инициализации и использования ссылок.
    Ссылка на указатель
    Тема 9. Функции
    9.1 Понятия, связанные с функциями в С/C++.
    9.2 Способы передачи параметров функции
    9.3 Возвращаемое функцией значение. Ключевое слово const и функции.

    Практические занятия:
    Объявление, определение и вызов функции.
    Передача параметров по значению, по ссылке, по указателю.
    Передача функции указателя на массив (встроенный массив, динамический массив).
    Итоговая аттестация
    Тема 1. Данные
    1.1 Пространства имен Директива using.
    • Пространство имен стандартной библиотеки.
    • Неименованные пространства имен.
    • Псевдонимы пространств имен.
    Тема 2. Массивы
    2.1 Многомерные массивы
    • Эквивалентные указатели на многомерные массивы.
    2.2 Динамическое выделение памяти.
    • Динамические массивы.
    • Операторы new и delete.
    • Формы оператора delete.
    • Способы создания динамических двумерных массивов.
    Практические занятия
    Создание (и уничтожение) динамических массивов.
    Операторы new и delete.
    Указатели на многомерные массивы.
    Тема 3. Функции
    3.1 Функции и массивы
    • Передача функции указателя на массив.
    3.2 Перегрузка имен функций.
    • Рекурсивные функции.
    • Перегрузка имен функций.
    • Использование рекурсивных функций.
    3.3 Переменное число параметров.
    • Файловый ввод/вывод.
    • Переменное число параметров.
    • "Старые" потоки ввода/вывода языка С.
    • Функции printf и scanf.
    • Ключи формата ввода/вывода.
    • Файловый ввод/вывод. Диагностика ошибок.
    3.4 Указатели на функции.
    • Сложные указатели.
    • Указатель на функцию.
    • Вызов функции с помощью указателя.
    • Использование указателей на функции в качестве параметров.
    • Массив указателей на функции.
    • Примеры сложных объявлений функций и указателей на функции.
    Практические занятия
    Передача функции указателя на массив (встроенный массив, динамический массив).
    Функции с переменным числом параметров.
    Рекурсивные функции.
    Указатель на функцию. Указатель на функцию в качестве аргумента другой функции.
    Массивы указателей на функции.
    Тема 4. Типы данных, определяемые пользователем
    4.1 Структуры языка Си.
    • Структуры и функции.
    • Назначение структур.
    • Использование структур.
    4.2 Битовые поля.
    • Объединения языка Си.
    • Назначение битовых полей.
    • Использование битовых полей.
    • Назначение объединений.
    • Использование объединений.
    Практические занятия
    Объявление структуры.
    Создание экземпляров пользовательского типа.
    Использование структур: массив объектов пользовательского типа, передача агрегатного объекта в функцию.
    Пример использования структур - картотека.​
    Тема 1. Парадигмы объектно-ориентированного программирования
    1.1 Делегирование
    1.2 Инкапсуляция
    1.3 Наследование
    1.4 Полиморфизм
    Тема 2. Базовые понятия объектно-ориентированного программирования, их реализация средствами С++
    2.1 Переход от процедурного к объектно-ориентированному программированию
    • Рассмотрение решения одной и той же задачи в процедурном и объектно-ориентированном стиле
    2.2 Понятие класса Члены класса (поля, методы). Создание экземпляра класса.
    • Доступ к public членам класса посредством объекта.
    • Доступ к членам класса посредством указателя.
    2.3 Спецификаторы доступа
    • Спецификаторы доступа public, private.
    2.4 Конструкторы
    • Конструктор по умолчанию.
    • Конструктор с параметрами.
    • Конструктор копирования
    2.5 Семантика перемещения и конструктор копирования
    • Конструктор перемещения (move конструктор копирования)
    2.6 Деструктор
    • Специфика объявления деструктора как метода класса.
    • Создание и уничтожение объектов с разным способом хранения
    Практические занятия
    Объявление класса. Спецификаторы доступа.
    Создание экземпляра класса. Реализация методов класса.
    Доступ к public членам класса посредством объекта, селектор «.». Указатель «this».
    Конструктор по умолчанию. Конструктор с параметрами. Динамическое создание объектов и вызов конструктора.
    Специфика объявления деструктора как метода класса. Создание и уничтожение объектов с разным способом хранения.
    Ключевое слово сonst и классы. Конструктор копирования. Указатель на класс.
    Доступ к членам класса посредством указателя. Селектор «->».
    Массивы и классы. Массивы объектов класса. Массивы указателей на объекты класса.
    Тема 3. Структуры и объединения С++
    3.1 Отличия структур языка С++ от структур и объединений языка С
    • Специфика struct в языке С++
    3.2 Отличия объединений языка С++ от структур и объединений языка С
    • Специфика union в языке С++
    Практические занятия
    1. Использование объединений С++
    2. Использование структур С++
    Тема 4. Битовые поля в структурах и классах С++
    4.1 Объявление битовых полей
    • Битовые поля в языке С++.
    • Отличия битовых полей языка С++ от битовых полей языка С
    4.2 Обращение к битовым полям.
    • Специфика битовых полей Правила обращения к битовым полям
    Практические занятия
    Использование полей битов в С++.
    Тема 5. Взаимоотношения между классами. Открытое одиночное наследование
    5.1 Объявление производного класса
    • Объявление производного класса.
    • Спецификатор доступа protected в базовом классе.
    • Спецификаторы наследования
    5.2 Правила открытого наследования
    • Порядок вызова конструкторов и деструкторов.
    • Передача параметров базовому классу при конструировании.
    • Специфика передачи параметров конструктору копирования базового класса.
    5.3 Пример неправильного построения иерархий классов
    • Пример неправильного построения иерархий классов
    Практические занятия
    Простое (single) открытое наследование.
    Объявление производного класса.
    Спецификатор доступа protected в базовом классе. Спецификаторы наследования. Порядок вызова конструкторов и деструкторов.
    Специфика передачи параметров конструктору копирования базового класса.
    Тема 6. Полиморфизм
    6.1 Раннее и позднее связывание
    • Понятие о раннем и позднем связывании
    6.2 Виртуальные функции. Механизм вызова виртуальной функции
    • Понятие о виртуальных функциях.
    • Специфика формирования компилятором вызова виртуальной функции
    6.3 Чисто виртуальные функции.
    • Абстрактные классы
    • Понятие о чисто виртуальных функциях и абстрактных классах.
    • Специфика чисто виртуальных функций
    6.4 Наследование интерфейса и наследование реализации
    • Отличие наследования интерфейса и наследования реализации
    Практические занятия
    Виртуальные методы класса.
    Виртуальные деструкторы.
    Чисто виртуальные функции и абстрактные классы.
    Тема 7. Дружественные классы и функции
    7.1 friend – функция
    • Понятие о friend – функциях.
    • Назначение глобальных friend – функций
    7.2 friend – класс, friend – метод класса
    • Понятие о friend – классах.
    • Понятие о friend – методах класса.
    Практические занятия
    Использование глобальных friend –функций для доступа к защищенным членам класса.
    Использование friend –классов для доступа к защищенным членам другого класса.
    Тема 8. Перегрузка операторов
    8.1 Специфика перегруженных операторов.
    • Способы перегрузки
    • Правила перегрузки унарных и бинарных операторов.
    • Перегрузка оператора с помощью метода класса.
    • Перегрузка с помощью глобальной friend-функции
    8.2 Перегрузка методом класса
    • Специфика перегрузки оператора с помощью метода класса
    8.3 Семантика перемещения и оптимизация оператора присваивания
    • Использование move-оператора присваивания для повышения эффективности работы прогаммы.
    8.4 Перегрузка глобальной функцией
    • Специфика перегрузки оператора с помощью глобальной функции
    Практические занятия
    Правила перегрузки унарных и бинарных операторов. Перегрузка оператора с помощью метода класса.
    Специфика перегрузки оператора присваивания.
    Move-оператор присваивания. Оператор присваивания и нетривиальные классы. Оператор присваивания и перегрузка.
    Перегрузка с помощью глобальной friend-функции.
    Перегрузка оператора << (вывод) в библиотечный ostream .
    Ассоциативный массив – программа «База данных о сотрудниках»
    Тема 9. Сложные указатели
    9.1 Указатели на переменные класса
    • Синтаксис описания указатели на переменные класса
    9.2 Указатели на методы класса
    • Синтаксис описания указатели на методы класса
    Практические занятия
    Использование указателя на методы класса при выполнении сортировки по разным признакам
    Тема 10. Взаимоотношения между классами. Внедренные (встроенные) объекты
    10.1 Порядок конструирования и разрушения объектов
    • Взаимоотношения между классами.
    • Понятие о внедренных объектах
    10.2 Передача параметров конструкторам встроенных объектов
    • Передача параметров конструкторам встроенных объектов
    10.3 Двухсвязные объектно-ориентированные списки
    • Приемы разработки двухсвязного объектно-ориентированного списка
    Практические занятия
    Внедренные объекты.
    Порядок инициализации/деактивации объектов-контейнеров.
    Объектно-ориентированный однородный двухсвязный список.
    Тема 11. Статические члены класса
    11.1 Статические данные
    • Понятие о статических данных
    11.2 Статические методы
    • Понятие о статических методах
    11.3 Порождающие функции
    • Понятие порождающих функциях
    11.4 Классы с подсчетом ссылок
    • Использование статических членов класса при реализации классов с подсчетом ссылок
    Практические занятия
    Односвязный список.
    Обеспечение уникальности хранения данных посредством вспомогательных классов с подсчетом ссылок и статических переменных и методов класса.​
    Тема 1. Защищенное наследование
    1.1 Спецификаторы наследования private и protected.
    • Отношение между классами «подобен»
    • Специфика защищенного наследования.
    • Использование защищенного наследования для изоляции пользователя от использования функциональности базового класса.
    1.2 Ключевое слово friend и защищенное наследование.
    • Защищенное наследование при построении иерархий классов
    • Использование защищенного наследования для изоляции классов потомков от использования функциональности базового класса
    Тема 2. Множественное наследование
    2.1 Отличия множественного и одиночного наследования.
    • Построение иерархий классов при множественном наследовании.
    • Множественное наследование и полиморфизм
    2.2 Специфика множественного наследования
    • Проблемы, возникающие при множественном наследовании.
    • Множественное наследование и директива using.
    • Виртуальное наследование
    Практические занятия
    Построение иерархий классов при множественном наследовании.
    Тема 3. Механизм RTTI
    3.1 Оператор static_cast и иерархии классов
    • Использование оператора static_cast для определения типа на этапе компиляции применительно к классам, связанным наследованием
    3.2 Динамическая идентификация типа.
    • Оператор dynamic_cast, оператор typeid, класс type_info.
    • Встроенный механизм динамического определения типа
    Практические занятия
    Использование static_cast при реализации гетерогенного двухсвязного списка.
    Использование механизма динамического определения типа для реализации гетерогенного двухсвязного списка.
    Тема 4. Исключительные ситуации
    4.1 Понятие исключительной ситуации.
    • Обзор способов обработки аварийных ситуаций.
    4.2 Встроенные средства языка С++ для обработки исключительных ситуаций.
    • Встроенные средства С++ для обработки исключительных ситуаций: операторы try, catch, throw
    4.3 Механизм обработки исключительной ситуации
    • Генерация исключения и способы приема объекта-исключения обработчиком исключительной ситуации.
    • Последовательность выполнения кода и выбор исключений.
    • Что может предусмотреть программист в обработчике исключения.
    • Исключения в конструкторах и деструкторах.
    • Стандартные исключения
    4.4 Специфика обработки исключений средствами С++
    • Function-level try-блок.
    • Обработка непредусмотренных исключений.
    • Спецификация исключений.
    • Специфика оператора new
    Практические занятия
    Использование механизма обработки исключений при реализации стека.
    Тема 5. Шаблоны
    5.1 Идеи обобщенного программирования
    • Способы обобщения действий: перегрузка имен функций, макросы с параметрами.
    • Зачем нужны шаблоны.
    5.2 Понятия, связанные с шаблонами
    • Использование ключевого слова template для обобщения.
    • Параметры шаблона. Механизм инстанцирования.
    5.3 Шаблоны функций Специфика шаблонов функций.
    • Специализация шаблона функции.
    5.4 Шаблоны классов Специфика шаблона класса.
    • Специализация шаблона класса. Эмуляция шаблона «vector».
    • Эмуляция шаблона «list».
    • Введение понятия псевдоним типа.
    • Реализация итератора для разных структур данных.
    Практические занятия
    Реализация шаблона функции.
    Реализация шаблона ограниченного стека посредством встроенного массива.
    Реализация шаблона неограниченного стека посредством односвязного списка.
    Реализация шаблона кольцевой очереди посредством динамического массива.
    Тема 6. Контейнеры стандартной библиотеки
    6.1 Базовые контейнеры
    • Обзор и примеры использования контейнеров std::vector, std::list, std::deque
    6.2 Адаптеры базовых контейнеров
    • Обзор и примеры использования контейнеров std::stack, std::queue, std::priority_queue
    6.3 Ассоциативные контейнеры
    • Обзор и примеры использования контейнеров std::set, std::multiset, std::map, std::multimap
    Практические занятия
    Использование контейнеров std::vector, std::list, std::deque для реализации поставленных задач.
    Использование контейнеров std::stack, std::queue, std::priority_queue для реализации поставленных задач.
    Использование контейнеров std::set, std::multiset, std::map, std::multimap для реализации поставленных задач.
    Тема 7. Итераторы
    7.1 Понятие итератора
    • Реализация прямых и реверсивных итераторов для разных структур данных
    7.2 Назначение и виды итераторов
    • Итераторы-адаптеры. Потоковые итераторы. Итераторы вставки
    Практические занятия
    Использование прямых и реверсивных итераторов для работы с контейнерами.
    Использование потоковых итераторов для вывода элементов контейнера на экран и в файл.
    Использование и итераторов вставки для манипулирования контейнерами.
    Тема 8. Обобщенные алгоритмы стандартной библиотеки
    8.1 Понятие обобщенного алгоритма
    • Цели введения обобщенных алгоритмов. Реализация обобщенного алгоритма.
    8.2 Обзор, примеры использования и эмуляция некоторых (часто используемых) обобщенных алгоритмов стандартной библиотеки
    • Эмуляция алгоритма for_each().
    • Эмуляция алгоритмов find(), find_if().
    • Алгоритмы count(), count_if().
    • Алгоритмы sort(), merge(), transform()
    Практические занятия
    Использование алгоритма for_each() для работы с последовательностями.
    Использование алгоритмов find(), find_if()) для работы с последовательностями.
    Использование алгоритмов count(), count_if() для работы с последовательностями.
    Использование алгоритма sort(), merge(), transform()для работы с последовательностями.
    Тема 9. Предикаты
    9.1 Назначение предикатов.
    • Способы задания предикатов
    • Цель введения предикатов.
    • Реализация предиката посредством глобальной функции.
    • Реализация предиката посредством шаблона глобальной функции.
    • Реализация предиката посредством функционального объекта.
    • Реализация предиката посредством шаблона функционального объекта
    9.2 Предикаты, предоставляемые стандартной библиотекой.
    • Универсальный способ обобщения предиката.
    • Шаблоны структур, предоставляемые стандартной библиотекой для задания предикатов.
    • Использование шаблонов function и mem_fn для универсального задания пользовательского предиката
    Практические занятия
    Использование предикатов стандартной библиотеки.
    Разработка пользовательских предикатов.​
    Тема 1. Введение
    1.1 Обзор новых возможностей. языка С++ согласно стандарту С++11 (14, 17, 20)
    • Преемственность от библиотеки Boost.
    • Изменения в ядре языка.
    • Изменения в стандартной библиотеки
    1.2 Назначение новых возможностей.
    • Повышение эффективности работы программы.
    • Предоставление программисту удобных средств для автоматического вывода типов компилятором.
    • Повышение надежности.
    Тема 2. Нововведения в ядре языка.
    2.1 Сильно типизированные перечисления.
    • Nullptr.
    • Новые фундаментальные типы.
    • Проблемы использования перечислений С/С++.
    • Добавление strongly typed enums.
    • Проблемы при использовании неинициализированных указателей.
    • Задание нулевых указателей.
    • Переменная nullptr.
    • Тип nullptr_t.
    • Независящие от платформы и компилятора псевдонимы для целых типов.
    2.2 Новые стандартные суффиксы и префиксы для литералов.
    • Суффикс LL.
    • Префиксы 0b, u, U
    2.3 Ключевое слово auto.
    • Декомпозиция.
    • Автоматическое выведение типов компилятором.
    • Задание обобщенных параметров.
    • Trailing return type.
    • Понятие structured binding.
    • Компактность и читабельность текста программы.
    • Использование с массивами, структурами и кортежами.
    2.4 Цикл по коллекциям.
    • Range based for.
    • Использование с массивами и контейнерами стандартной библиотеки.
    Практические занятия
    Использование strongly typed enums для обеспечения надежности и экономии памяти.
    Использование auto для автоматического выведения типов.
    Применение декомпозиции.
    Тема 3. Новые правила и возможности инициализации.
    3.1 Автоматический вывод параметров шаблона при инициализации.
    • Упрощение синтаксиса.
    • Возможность формирования «подсказок» для выведения типа компилятором (deduction guides)
    3.2 Инициализация переменных класса при объявлении.
    • Задание значений переменных «по умолчанию».
    • Специфика.
    • Способы инициализации членов класса.
    3.3 Универсальная инициализация.
    • Понятие обобщенной инициализации.
    • Исполь-зование обобщенной инициализации для инициализации объектов и коллекций.
    • Списки инициализации при динамическом выделении памяти.
    • Класс initializer_list
    3.4 Спецификатор decltype
    • Правила выведения компилятором типа при использовании decltype.
    • Отличия auto и decltype.
    • Конструкция decltype(auto).
    • Спецификатор declval
    Практические занятия
    Обобщенная инициализация объектов и контейнеров.
    Реализация класса с использованием initializer_list при инициализации, присваивании и в других методах.
    Применение decltype при реализации шаблонов.
    Тема 4. Модификация контейнеров стандартной библиотеки. using
    4.1 Дополнения функциональности контейнеров стандартной библиотеки.
    • Методы, использующие move-семантику, конструрование «по месту», списки инициализации
    4.2 Дополнительные возможности using.
    • Задание псевдонимов типов посредством using.
    • Псевдонимы шаблона.
    Практические занятия
    Применение новых возможностей стандартных контейнеров при решении типовых задач.
    Использование псевдонимов шаблонов для упрощения сложных объявлений.
    Тема 5. Лямбда выражения
    5.1 Лямбда функции.
    • Синтаксис лямбда функции
    • Реализация локальных действий посредством лямбда функции.
    • Параметры, передаваемые лямбда функции.
    • Возвращаемое лямбда функцией значение
    5.2 Специфика лямбда функции.
    • Захват значений из внешнего контекста.
    • Средства организации рекурсии посредством лямбда функции.
    • Обобщенные лямбда функции.
    Практические занятия
    Использование лямбда функций для решения локальных задач.
    Использование лямбда функций в качестве предикатов в обобщенных алгоритмах.
    Тема 6. Нововведения при объявлении классов
    6.1 Явное указание компилятору генерации методов класса по умолчанию.
    • Явная перегрузка виртуальных методов.
    • Явный запрет вызова метода.
    • Использование ключевого слова default для автоматической генерации компилятором метода класса.
    • Использование ключевого слова override для явного указания перегруженного виртуаль-ного метода класса.
    • Использование ключевого слова final для предотвращения перегрузки виртуального метода в производном классе.
    • Понятие deleted.
    • Использование ключевого слова delete для предотвращения вызова метода класса
    6.2 Запрещение неявных преобразований.
    • Делегирующие конструкторы.
    • Наследуемые конструкторы.
    • Использование ключевого слова explicit для предотвращения неявных преобразований.
    • Понятия наследования и делегирования инициализирующих методов.
    • Синтаксис.
    Практические занятия
    Разработка иерархий классов с использованием default, override, final и deleted.
    Использование ключевого слова explicit.
    Тема 7. Семантика перемещения.
    7.1 Rvalue reference.
    • Цель введения семантики перемещения
    • Использование правосторонних ссылок для обозначения временных объектов.
    • Использование семантики перемещения для повышения эффективности ПО.
    7.2 Move конструкторы копирования, move операторы присваивания
    • Повышение эффективности программы посред-ством использования семантики перемещения для нетривиальных классов
    7.3 Семантика перемещения и внедрение.
    • Семантика перемещения и наследование
    • Классы с нетривиальными внедренными объектами.
    • Иерархии классов с нетривиальным базовым классом
    7.4 Ссылочные квалификаторы методов.
    • Перемещающие итераторы
    • Перегрузка методов для вызова посредством временных объектов.
    • Класс move_iterator.
    • Шаблон make_move_iterator
    Практические занятия
    Разработка нетривиальных классов с использованием семантики перемещения.
    Использование семантики перемещения при внедрении.
    Использование семантики перемещения при наследовании.
    Использование перемещающих итераторов.
    Тема 8. Семантика продвижения типов (forwarding)
    8.1 Цели введения продвижения типа Использование forward для уменьшения дублирования текста программы

    8.2 Универсальные ссылки.

    • Вывод компилятором типа при использовании универсальных ссылок.
    • Отличие от rvalue reference
    8.3 forward при наследовании
    • Использование forward при построении иерархий классов
    8.4 forward при внедрении
    • Использование forward при внедрении объектов нетривиальных классов
    Практические занятия
    Разработка функций с использованием forward.
    Разработка классов с использованием forward.
    Тема 9. Спецификатор constexpr
    9.1 Пользовательские литералы.
    • Перегрузка operator””.
    • Пользовательские литералы.
    • Литералы, предоставляемые стандартной библиотекой: std::string_literals, std::chrono_literals
    9.2 Спецификатор constexpr.
    • Повышение эффективности программы при использовании вычислений на этапе компиляции.
    • Constexpr-функции, constexpr-«переменные», constexpr-классы. Специфика.
    Практические занятия
    Реализация пользовательского литерала.
    Реализация сonstexpr-функции.
    Реализация constexpr-класса.
    Тема 10.Интеллектуальные указатели.
    10.1 Шаблон класса unique_ptr
    • Использование unique_ptr для реализации концепции единоличного владения ресурсом (для надежной работы с динамически выделенной памятью, …)
    10.2 Шаблон класса shared_ptr.
    • Использование shared _ptr для совместного владения ресурсом.
    10.3 Шаблон класса weak_ptr Использование weak_ptr для разрыва циклических зависимостей. Класс share_from_this

    Практические занятия

    Реализация задания с использованием unique_ptr.
    Реализация задания с использованием shared_ptr.
    Реализация задания с использованием weak_ptr.​
    Тема 1. Классы Qt для создания приложений c графическим интерфейсом
    1.1 Кроссплатформенность Qt.
    1.2 Состав Qt. Модули Qt. Инструменты разработчика.
    1.3 Иерархия классов Qt. Обзор основных классов Qt.
    1.4 Директивы проекта
    1.5 Виджеты и окна. Свойства виджетов. Настройка вешнего вида окон. Стандартные диалоговые окна

    Лабораторные занятия
    Создание приложения с графическим интерфейсом и настройка его внешнего вида.
    Размеры окна. Задание размеров окна. Создание и использование диалоговых окон.
    Локализация приложения средствами Qt.
    Тема 2. Событийно-ориентированное программирование
    2.1 Архитектура приложений, управляемых событиями.
    2.2 Обработка событий средствами Qt. Система доставки, контроля и фильтрации событий Qt. Очередь событий Qt. Обработчики событий различных типов.
    2.3 Аппаратно-независимый ввод/вывод. Реализация графического вывода средствами Qt – классы QPaintDevice и QPainter. Инструменты для «рисования». Вывод текста, векторной и растровой графики.

    Лабораторные занятия
    События: рисования, таймера, изменения размеров.
    События мыши.
    Тема 3. Мета объектная модель Qt. Механизм сигналов и слотов
    3.1 Qt как расширение С++. Мета объектный компилятор. Система динамических свойств Qt. Автоматические иерархии объектов. Именование объектов.
    3.2 Механизм сигналов и слотов. Отличия сигналов/слотов от событий. Реализация механизма сигналов/слотов. Установка соединения между объектами.

    Лабораторные занятия
    Взаимодействие (синхронизация) элементов управления посредством сигналов/слотов. Сигналы и слоты, предоставляемые классами Qt. Пользовательские сигналы/слоты;
    Использование QtDesigner для конструирования графического приложения. Использование редактора сигналов/слотов. Использование редактора действий (QAction). Ресурсы приложения;
    Класс QMainWindow. Ui. CentralWidget. Создание пользовательского виджета. Меню. ToolBar. Статусная строка
    Тема 4. Введение в архитектуру Модель-Представление-Контроллер (MVC)
    4.1 Архитектура MVC. Понятие MVC. Элементы управления, содержащие модели (QListWidget, QTableWidget, QTreeWidget, QComboBox)
    4.2 Система Graphics View Framework. Понятие сцены - класс QGraphicsScene. Класс для отображения – QGraphicsView. Классы графических примитивов: QGraphicsItem. QAbstractGraphicsShapeItem. QGraphicsRectItem. QGraphicsEllipseItem.

    Лабораторные занятия
    Использование Qt Graphics View Framework для рисования, хранения и манипулирования примитивами.
    Использование стандартных диалогов для задания атрибутов рисования. Разработка пользовательского диалога для задания атрибутов рисования.​
    Выпускная квалификационная работа

    Продажник
     
  2. Последние события

    1. Dominic13
      Dominic13 не участвует.
      25 авг 2023
    2. srebobol
      srebobol не участвует.
      7 авг 2023
    3. skladchik.com
      В складчине участвует 30 человек(а).
      27 июн 2023
    4. srebobol
      srebobol участвует.
      3 май 2023
  3. Обсуждение
  4. 12 дек 2020
    #2
    laser
    laser ЧКЧлен клуба
    Тема классная, но и общая цена кусачая. Может разбить на модули и отдельно собираться? так легче и орга найти и собраться
     
  5. 12 дек 2020
    #3
    bizonnnnn
    bizonnnnn БанЗабанен
    Да ладно! За хороший курс десять штук не найдёшь? По мне хоть сейчас сборы объявляй. :D
     
    1 человеку нравится это.
  6. 19 дек 2020
    #4
    intel75
    intel75 ДолжникДолжник
    Я бы тоже взял, судя по всему, классный курс
     
  7. 18 апр 2021
    #5
    intel75
    intel75 ДолжникДолжник
    Я бы тоже сразу взял, в любом случае не сотка
     

Поделиться этой страницей