Новый курс! Программирование на языке C++

Курс "Программирование на языке C++"

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

C++ предоставляет разработчикам мощный и гибкий инструмент для создания программного обеспечения. Он позволяет писать эффективный и быстрый код, что делает его одним из наиболее популярных языков программирования в мире.

C++ позволяет создавать приложения и программы любой сложности: от простых консольных утилит до сложных игровых движков

На C++ можно написать практически все что угодно, от системных приложений до мобильных приложений.

На C++ можно написать практически любое программное обеспечение, от простых консольных утилит до сложных приложений. Благодаря C++ работают Unreal Engine 4, Microsoft Office и Adobe Photoshop.


В курсе четыре части. Каждая часть, это не менее 20 занятий. C++ — это достаточно серьезный язык, к нему требуется осознанный подход.

Программа курса:


Часть 1: Основы языка и процедурное программирование

1. Введение в С++ и настройка окружения

  • Введение

  • Основные команды в терминале. Компиляция программ

  • Int main VS void main; параметры функции main

  • Compile-time errors, runtime errors, undefined behavior


2. Фундаментальные конструкции


  • Ввод/вывод с помощью cin/cout

  • Escape последовательности

  • Пространство имён. Оператор using

  • Типы данных

  • Переменные: объявление, именование, инициализация

  • Ключевое слово auto

  • Константы

  • Операторы (арифметические, логические, сравнения)

  • Инкремент, декремент

  • Сокращенные арифметические формы


3. Управляющие конструкции


    • Ветвления и циклы

    • Конструкция if else

    • Тернарный оператор

    • Оператор switch

    • Цикл while, do while

    • Цикл for. Фишки, фичи, особенности

    • Операторы break, continue

    • Оператор перехода goto

    • Цикл for each

    • Логические операции, вложенные ветвления


4. Составные типы данных: массивы и строки


    • Что такое массив. Инициализация массива

    • Вывод массива. Массивы и циклы (

    • Что такое sizeof

    • Перестановки в массивах

    • Циклический сдвиг в массиве

    • Частотный анализ последовательности

    • Строки. Нуль терминатор

    • Строки

    • String

    • Приведение типов

    • ASKII

    • Строки и указатели

    • Конкатенация строк


5. Функции


    • Создание функций

    • Что такое функции

    • Параметры функции

    • Передача массива в функцию

    • Прототипы функций

    • Область видимости

    • Параметры по умолчанию

    • Что такое inline

    • Перегрузка функций

    • Шаблонные функции

    • Функции и стек

    • Рекурсия

    • Предикаты


6.Указатели, ссылки и динамическая память


    • Указатели. Ссылки

    • Константные указатели и ссылки

    • Арифметика указателей

    • Динамическая память, утечка памяти

    • New и delete

    • Nullptr

    • Динамический массив

    • Двумерный динамический массив

    • Копирование динамического массива

    • Работа с динамическими массивами

    • Передача параметров в функцию по указателю/ссылке

    • Возврат нескольких значений функции через указатели/ссылки

    • Константные аргументы функции


7. Работа с файлами


    • Работа с файлами: чтение/запись

    • Fstream: чтение/запись в файл

    • Файловые потоки: открытие/закрытие, режимы доступа

    • Чтение и запись данных в файл

    • Чтение и запись данных в файл в бинарном режиме

    • Чтение/запись объекта класса в файл


8. Дополнительные темы процедурного программирования


    • Генератор случайных чисел

    • Как пользоваться отладчиком

    • Вложенный цикл

    • Указатель на функцию

    • Препроцессор. Макросы с аргументами

    • Условная компиляция

    • Терминология

    • Кольца вычетов, системы счисления, простые числа

    • Метод грубой силы


Часть 2: Объектно-ориентированное программирование (ООП)


  1. Введение в ООП

    • Что такое ООП

    • Классы и объекты

    • Структуры

    • Режимы доступа: public, private, protected

  2. Базовые механизмы классов

    • Методы класса

    • Конструктор класса. Перегрузка конструкторов

    • Конструктор по умолчанию. Ключевые слова default, delete

    • Списки инициализации

    • Деструктор

    • Указатель this

    • Определение методов вне класса

    • Константные методы. Ключевое слово mutable

    • Статические поля и методы

    • Static id generator

    • Паттерн Singleton

    • Геттеры и сеттеры

    • Инкапсуляция

    • Этапы жизни объектов класса

  3. Перегрузка операторов

    • Перегрузка операторов

    • Перегрузка оператора =

    • Перегрузка оператора == и !=

    • Перегрузка математических операций

    • Перегрузка оператора ++ и --

    • Перегрузка оператора [ ]

    • Перегрузка оператора ( ). Функторы

    • Перегрузка операторов ввода/вывода << и >>

    • Переопределение расширенного оператора присваивания

    • Переопределение оператора преобразования типов

    • Оператор spaceship


  4. Отношения между классами

    • Friend функции

    • Дружественный метод класса

    • Дружественные классы

    • Вложенные классы

    • Агрегация и композиция

    • Ассоциация и зависимость

  5. Наследование и полиморфизм

    • Наследование классов

    • Модификаторы доступа при наследовании

    • Порядок вызова конструкторов и деструкторов при наследовании

    • Вызов конструктора базового класса

    • Объект дочернего класса. Переопределение методов и полей

    • Виртуальные методы

    • Ключевые слова override, final

    • Абстрактный класс. Чисто виртуальные методы

    • Виртуальный и чисто виртуальный деструктор

    • Вызов virtual метода

    • RTTI, dynamic_cast. Таблицы виртуальных функций

    • Полиморфизм


  6. Продвинутые темы ООП

    • Множественное наследование

    • Порядок вызова конструкторов и деструкторов при множественном наследовании

    • Тонкости множественного наследования

    • Ромбовидное наследование. Виртуальное наследование

    • Интерфейсы

    • Конструктор копирования

    • Конструктор преобразования

    • Делегирующие конструкторы

    • Explicit

    • Правило трёх

    • Массив объектов класса



Часть 3: Продвинутые возможности и стандартная библиотека


  1. Шаблоны

    • Шаблоны классов

    • Наследование шаблонных классов

    • Специализация шаблонов

    • Шаблоны с нетиповыми параметрами

    • Вариативные шаблоны. Выражения свёртки


  2. Стандартная библиотека шаблонов (STL)

    • Вектор (Vector)

    • Контейнеры: stack, queue, deque, list, set, map, multiset, multimap

    • Итераторы. Виды итераторов. Реализация

    • Алгоритмы стандартной библиотеки

    • Собственный контейнерный класс

    • Потоковые классы строк


  3. Управление памятью и умные указатели

    • Умные указатели: unique_ptr, shared_ptr, weak_ptr

    • Auto_ptr (устаревший)

    • Динамический массив и умные указатели

    • RAII

    • Семантика перемещения

    • Понятие lvalue и rvalue выражений. Rvalue-ссылки

    • Конструктор перемещения. Операторы присваивания перемещением

    • Функция std::move. Универсальные ссылки. Функция std::forward

    • Copy Elision. Return value optimization


  1. Функциональное программирование и лямбды

    • Лямбда-выражения. Анонимные функции

    • Захват контекста лямбдой

    • Объекты замыканий. Обобщенные лямбды

    • Std::function и ее реализация

    • Функторы

    • Псевдонимы функции

  2. Обработка ошибок и исключения

    • Исключения: try catch, throw

    • Несколько блоков catch

    • Собственные исключения. Классы исключений

    • Exception safety

    • Исключения в конструкторах


  3. Разное

    • Многофайловые проекты, защита от повторного включения

    • Объединение Union

    • Тип enum

    • Время выполнения

    • Ключевое слово typedef

    • Директива extern

    • Formatirovanie vvoda/vyvoda dannyh

    • Validation polzovatelskogo vvoda



Часть 4: Метапрограммирование и внутренние механизмы (для углубленного изучения)


  1. Вычисления на этапе компиляции

    • Вычисления на этапе компиляции

    • Constexpr переменные и функции

    • Consteval, is_constant_evaluated

    • Классическое метапрограммирование

    • Метафункции

  2. Шаблоны и SFINAE

    • Зависимые имена

    • SFINAE, enable_if

    • Реализация type_traits с помощью SFINAE

    • SFINAE-friendliness


  3. Концепты

    • Constraints and requirements

    • Requires-выражения. Концепты

  4. Внутреннее устройство механизмов C++

    • Стековая, статическая и динамическая память

    • Сложные объявления

    • Приведения типов: const_cast, reinterpret_cast и др.

    • Указатели на члены

    • Внутреннее устройство vector, list, map, deque, unordered_map

    • Аллокаторы, allocator_traits

    • Allocator-aware контейнеры. Перегрузка new и delete

    • Разновидности и реализация operator new. Выравнивания. Битовые поля

    • Scoped allocators. Атрибуты

    • Вывод типов: auto, decltype, decltype(auto)

    • Deducing this. CTAD. Structured bindings

    • Tuple, идея реализации

    • Type erasure, any

    • Variant, visit. Overload pattern

    • Unions

    • Ссылочные квалификаторы

    • Связывание (ODR). Внешнее и внутреннее связывание

  5. Алгоритмы и структуры данных (практическое применение)

    • Стек

    • Циклическая очередь на массиве

    • Бинарный поиск корня функции

    • Бинарный поиск в массиве

    • Поиск экстремума в потоке

    • Сортировка пузырьком

    • Сортировка подсчетом и поразрядная

    • Пирамида

    • Рекурсивные сортировки

    • Пять принципов SOLID

    • Паттерны

    • Бинарный поиск

    • Графы. Поиск в глубину

    • Декартово дерево

    • Кратчайшие пути в графах

    • Перебор

    • Последовательные структуры данных


Кому интересен C++?

Да, если вы хотите разрабатывать сложные продукты и сервисы.

Опытные C++-программисты — это разработчики ИИ, беспилотных автомобилей, нейронных сетей, банковских, поисковых и ГИС-систем, операционных систем, микроконтроллеров, браузеров, серверов и видеоигр.


тверь курсы по программированию С++ Количество часов: 320 академических часов

тверь курсы по программированию С++Общая стоимость курса

тверь курсы по программированию С++По окончании выдается диплом