C++
Для кого этот курс
Вводный курс разработан для обучения студентов овладению принципами объектно-ориентированного программирования, анализа и проектирования. По прохождении курса обучения вы сможете разрабатывать ПО на языке C++, выполнять математические расчеты решать задачи и реализовывать типовые алгоритмы. Кроме того, вы познакомитесь с разработкой консольных приложений в операционной системе Linux. Мы обучим вам приемам разработки ПО, решению типичных задач программирования и разработке приложений на языке программирования C++ в ОС Linux. Вы ознакомитесь с составом языка C++ и его основными операциями, операторами и функциями, структурой программы на C++. Также в ходе курса мы научим вас объектно-ориентированному программированию и основам работы с графикой OpenGL. Пройдя вводный курс, вы получите теоретические основы объектно-ориентированного программирования на C++ и будете готовы прослушать основной курс обучения.
Программа курса
- Введение. Немного истории.
- Состав языка.
- Основные операции языка С++.
- Операторы языка С++.
- Функции.
- Форматированный ввод/вывод.
- Структура программы на языке С++.
- Массивы и указатели.
- Пользовательские типы данных
- Динамическая память.
- Введение в объектно-ориентированное программирование.
- Объектно-ориентированное программирование на языке С++
- Принципы ООП
- Шаблоны (паттерны) проектирования
- Наследование.
- Полиморфизм.
- Абстрактные классы и интерфейсы.
- Пространства имен.
- Перегрузка методов и операторов.
- Шаблоны типов.
- Обработка исключений.
- Потоковый ввод/вывод.
- Сетевое взаимодействие.
- Основы работы с графикой OpenGL.
- Проектирование программного обеспечения.
- Отношения между классами.
Лекторы курса

Преподаватель
Описание курса
Курс состоит из 11 занятий общей длительностью 33 академических часа, из которых 22 часа уделяется рассмотрению теоретического материала, 22 часа практической работы. В курсе предусмотрено 11 лабораторных работ для самостоятельного освоения практической стороны рассмотренного материала. Для контроля успеваемости слушателей предусмотрено результирующее тестирование. Основной задачей курса есть обучить слушателей курса теоретическим основам объектно-ориентированного программирования, приемам разработки программного обеспечения, решения типичных задач программирования и разработке приложений на языке С++ в операционной системе Linux.
Требования к слушателям
- Владение ПК
- Знание основ теории программирования
Программа курса
- Введение. Немного истории.
- Организация вычислительной системы
- Организация памяти
- Языки программирования
- Машинные языки
- Языки низкого уровня
- Языки высокого уровня
- Трансляторы – компиляторы и интерпретаторы
- Подходы к разработке ПО
- Процедурное, модульное, структурное программирование
- Объектно-ориентированный подход
- Обобщенное программирование
- Краткая история С/С++
- Состав языка.
- Алфавит
- Основные составляющие языка
- Идентификаторы
- Ключевые слова
- Комментарии
- Пример простейшей программы на С++
- Переменные и базовые типы данных
- Переменные
- Целочисленные типы
- Типы с плавающей точкой
- Логический тип
- Символьный тип
- Пустой тип void
- Модификаторы типов «short», «long», «unsigned», «signed»
- Модификаторы типов «short», «long», «unsigned», «signed»
- Константы
- Объявление и инициализация переменных
- Глобальные и локальные переменные
- Приведение типов
- Основные операции языка С++
- Операция присваивания
- Арифметические операции
- Арифметические операции с присваиванием
- Логические операции
- Поразрядные операции
- Операции проверки равенства/неравенства
- Инкремент, декремент
- Условная операция
- Возвращаемое значение
- Ассоциативность операций
<liПриоритет операций>
- Операторы языка С++
- Условный оператор «if else»
- Оператор выбора «switch»
- Операторы циклов «for», «while», «do while»
- Операторы «goto», «break», «continue»
- Пустой оператор
- Оператор вызова функции
- Оператор «sizeof»
- Оператор «sizeof»
- Функции
- Понятие функции в С++
- Оператор «return»
- Параметры функции
- Формальные и фактические параметры
- Передача параметров по ссылке и по значению
- Рекурсивные функции
- Шаблоны функций
- Перегрузка функций
- Форматированный ввод/вывод
- Функции ввода/вывода
- Управляющие последовательности символов
- Структура программы на языке С++
- Директивы препроцессора
- Подключение внешних модулей
- Порядок компиляции
- Область видимости определений
- Макроопределения
- Функции
- Функция «main»
- Тип функции «main»
- Аргументы командной строки
- Массивы и указатели
- Понятие массива
- Работа с массивами
- Одномерные и многомерные массивы
- Указатели
- Работа с динамической памятью
- Операции с указателями
- Массивы указателей
- Адресная арифметика
- Операции с указателями
- Пользовательские типы данных
- Структуры (struct)
- Перечисления (enum)
- Объединения (union)
- Работа со структурным типом
- Доступ к полям
- Динамическая память
- Работа с динамической памятью
- Методы работы с динамической памятью
- Функции «malloc» и «free»
- Операции «new» и «delete»
- Динамические структуры данных
- Список
- Двусвязные и односвязные списки
- Очередь
- Стек
- Введение в объектно-ориентированное программирование
- Объектно-ориентированный подход к разработке программного обеспечения
- Объектно-ориентированный анализ и проектирование
- Принципы ООП
- Объектно-ориентированное программирование на языке С++
- Понятие класса и объекта
- Поля и методы класса
- Модификаторы прав доступа
- Конструкторы и деструкторы
- Создание экземпляра объекта
- Динамические и статические объекты
- Инициализация, присваивание и уничтожения объекта
- Копирующий конструктор и указатель «this»
- Принципы ООП
- Инкапсуляция
- Наследование
- Полиморфизм
- Реализация принципов ООП на языке С++
- Шаблоны (паттерны) проектирования
- Паттерн проектирования «Singleton»
- Наследование
- Наследование классов
- Множественное наследование
- Защищенное наследование
- Закрытое наследование
- Открытие доступа к отдельным членам класса
- Композиция объектов
- Область видимости при наследовании
- Полиморфизм
- Реализация полиморфизма
- Виртуальные функции
- Абстрактные классы и интерфейсы
- Понятие интерфейса
- Наследование интерфейсов
- Понятие пространства имен
- Перегрузка методов и операторов
- Переопределение и перегрузка методов класса
- Перегрузка операторов
- Дружественные методы
- Паттерн проектирования «Прототип»
- Шаблоны типов
- Шаблонные функции
- Шаблонные классы
- Работа с шаблонами
- Параметрические типы
- Обработка исключений
- Исключительные ситуации и работа с ними
- Блоки «try catch»
- Генерация исключения «throw»
- Отладочный макрос «_ASSERT»
- Потоковый ввод/вывод
- Классы ввода/вывода данных
- Потоки данных
- Ввод/вывод
- Бинарные и текстовые файлы
- Создание, чтение, запись файлов
- Сетевое взаимодействие
- Основы Socket API
- Установка соединения
- Передача данных
- Основы работы с графикой OpenGL
- Проектирование программного обеспечения
- Проектирование классов
- Проектирование библиотек
- Шаблоны (паттерны) проектирования
- Отношения между классами
- Ассоциация
- Агрегация
- Композиция
- Наследование
- Формы наследования
После изучения курса вы сможете:
- Разрабатывать ПО на языке C++
- Выполнять математические расчеты решать задачи и реализовывать типовые алгоритмы
- Вы познакомитесь с разработкой консольных приложений в операционной системе Linux
- Мы обучим вас приемам разработки ПО
- Получите навыки по решению типичных задач программирования и разработке приложений на языке программирования C++ в ОС Linux
Лекторы курса

Преподаватель
Программа курса
- Введение в стандартную библиотеку шаблонов
- Контейнеры, алгоритмы, адаптеры
- Введение в Qt. Программирование GUI с помощью Qt
- Архитектуры приложений
- Базы данных
- XML
- Работа с сетью
- Многопоточность
- Интернационализация
- Модульное тестирование ПО (unittesting)
- Основы создания приложений Qt Quick
- Основы разработки Qt-приложений под Android
Описание курса
Основной курс обучения C++ поможет студентам усовершенствовать навыки объектно-ориентированного программирования. Вы научитесь работать со стандартной библиотекой C++, освоите основные возможности библиотеки Qt, получите практический опыт разработки GUI приложений в операционной системе Linux. Мы обучим вас приемам разработки программного обеспечения, решения типичных задач программирования и разработке GUI приложений на языке С++ с помощью библиотеки Qt в операционной системе Linux. Вы ознакомитесь со стандартной библиотекой шаблонов, узнаете о контейнерах, алгоритмах и адаптерах, разберетесь в архитектуре приложений и базах данных, поработаете с многопоточностью и модульным тестированием ПО. Курс состоит из 12 занятий общей длительностью 48 академических часа, из которых 24 часа уделяется рассмотрению теоретического материала, 24 часа практической работы. В курсе предусмотрено 12 лабораторных работ для самостоятельного освоения практической стороны рассмотренного материала. Для контроля успеваемости слушателей предусмотрено выполнение индивидуального курсового проекта.
Требования к слушателям
- Владение ПК
- Знание основ теории программирования
- Основы С++
Программа курса
- Введение в стандартную библиотеку шаблонов
- Структура библиотеки
- Основные компоненты. Операторы. Пара
- Итераторы. Итераторы ввода. Итераторы вывода. Однонаправленные итераторы. Двунаправленные итераторы. Итераторы произвольного доступа. Теги итераторов. Операции с итераторами
- Итераторы потоков. Итератор входного потока. Итератор выходного потока
- Контейнеры. Последовательности. Ассоциативные контейнеры
- Контейнеры, алгоритмы, адаптеры
- Функциональные объекты. Базовые классы. Арифметические операции. Сравнения. Логические операции
- Распределители. Требования распределителей. Распределитель по умолчанию
- Адаптеры. Адаптеры контейнеров. Адаптеры итераторов. Адаптеры функций
- Алгоритмы. Не меняющие последовательность операции. Меняющие последовательность операции. Операции сортировки и отношения. Обобщённые численные операции
- Введение в Qt. Программирование GUI с помощью Qt
- Основные принципы работы с библиотекой Qt
- Объектная модель. Метаобъекты, свойства, сигналы и слоты. Типы, варианты, ссылки
- Обзор классов библиотеки
- Программирование GUI с помощью Qt. Виджеты. Окна, диалоговые окна, главные окна. Меню. Пользовательские виджеты. Обработка событий
- Создание GUI приложений
- Основы работы с 2D и 3D графикой
- Архитектуры приложений
- Отдельное приложение. Клиент-сервер. Трехуровневая архитектура. Многослойная архитектура
- Архитектурные паттерны MVP, MVC, MVVM
- Паттерны проектирования
- Базы данных
- Соединение с базой. Выполнение запросов. Обработка данных.
- Представление данных в табличной форме
- Создание форм по технологии «master-detail»
- XML
- Формат документа XML. Стандарты. Схемы
- Использование XML
- Чтение XML при помощи интерфейсов SAX и DOM
- Запись документов XML
- Сериализация
- Паттерн проектирования «Memento»
- Работа с сетью
- Создание FTP и HTTP клиентов
- Создание клиент-серверных приложений на базе TCP
- Работа с протоколом UDP
- Многопоточность
- Создание потоков
- Синхронизация потоков
- Взаимодействие с главным потоком
- Применение классов Qt во вторичных потоках
- Интернационализация
- Работа с Unicode
- Создание переводимого приложения. Перевод приложений и динамическое переключение языков
- Модульное тестирование ПО (unittesting)
- Введение в модульное тестирование
- Создание модульных тестов с помощью Qt
- Основы создания приложений Qt Quick
- QML для построения пользовательского интерфейса
- Обзор основных возможностей
- Создание приложения на Qt Quick
- Основы разработки Qt-приложений под Android
- Установка SDK. Настройка Qt Creator для работы с AndroidSDK
- Создание виртуального устройства
- Сборка и запуск приложения
После изучения курса вы сможете:
- Усовершенствуете навыки объектно-ориентированного программирования, анализа и проектирования
- Научитесь работать со стандартной библиотекой С++
- Освоите основные возможности библиотеки Qt
- Получите практический опыт разработки GUI приложений в операционной системе Linux
- После прохождения основного курса ваши навыки программирования на C++ будут достаточными для получения серьезной высокооплачиваемой работы
Лекторы курса

Преподаватель