Программирование на языке C++. Базовый поток 2026

Материал из Public ATP Wiki
Перейти к навигации Перейти к поиску

1. О курсе

Цель курса – формирование у студентов системных знаний и практических навыков разработки программ на языке C++, освоение процедурного, объектно-ориентированного и обобщенного программирования, а также современных возможностей стандарта C++.

Задачи курса:

  • изучение синтаксиса и основных конструкций языка C++;
  • освоение принципов модульного программирования;
  • приобретение навыков работы с указателями, ссылками и динамической памятью;
  • изучение объектно-ориентированного программирования;
  • освоение шаблонов и стандартной библиотеки C++;
  • изучение механизмов управления ресурсами, обработки исключений и семантики перемещения;


В результате освоения курса студент должен:

Знать:

  • основные конструкции языка C++;
  • фундаментальные типы данных и операции над ними;
  • принципы объектно-ориентированного и обобщенного программирования;
  • механизмы управления памятью и временем жизни объектов;
  • основные контейнеры и алгоритмы стандартной библиотеки C++;


Уметь:

  • разрабатывать программы на языке C++;
  • использовать модульную организацию программ;
  • создавать собственные классы и шаблоны;
  • применять стандартную библиотеку C++;
  • разрабатывать безопасные и эффективные программы с использованием современных средств языка.

2. Программа курса

Неделя Лекция Семинар
1 Введение в язык C++. Состав языка. Структура программы. Типы данных. Переменные. Операции. Выражения. Среда разработки. Компиляция программ. Простые программы. Ввод и вывод данных. Решение задач с использованием основных типов данных и операций.
2 Управляющие конструкции: условные операторы, циклы, операторы перехода. Решение задач с использованием ветвлений и циклов. Отладка программ.
3 Указатели и ссылки. Арифметика указателей. Массивы. Динамическая память. Строки в стиле C. Работа с указателями и массивами. Динамическое выделение памяти. Обработка строк.
4 Функции. Передача параметров. Перегрузка функций. Рекурсия. Модульное программирование. Пространства имен. Разработка программ с использованием функций. Рекурсивные алгоритмы. Организация проектов из нескольких файлов.
5 Пользовательские типы данных. Перечисления, структуры, объединения. Основы объектно-ориентированного программирования. Создание структур и простейших классов. Практика разработки пользовательских типов данных.
6 Классы и объекты. Конструкторы. Инкапсуляция. Статические и константные члены класса. Псевдонимы типов. Разработка классов. Реализация конструкторов и методов. Работа со статическими и константными членами.
7 Шаблоны функций и классов. Вывод типов. Специализация шаблонов. Перегрузка операций. Лямбда-выражения. Создание шаблонных функций и классов. Перегрузка операций. Использование лямбда-выражений.
8 Управление ресурсами. RAII. Конструкторы копирования. Оператор присваивания. Деструкторы. Правило трёх. Реализация классов с динамической памятью. Copy&Swap. Анализ ошибок управления памятью.
9 Семантика перемещения. rvalue-ссылки. Конструктор перемещения. Правило пяти. std::move. Реализация поддержки перемещения. Оптимизация производительности классов.
10 Наследование. Полиморфизм. Виртуальные функции. Абстрактные классы. Приведение типов. Создание иерархий классов. Использование виртуальных функций и полиморфизма.
11 Исключения. noexcept. Безопасность исключений. Исключения в конструкторах и деструкторах. Обработка исключительных ситуаций. Проектирование надёжных программ.
12 Стандартная библиотека C++. Умные указатели. Последовательные контейнеры. Итераторы. Использование vector, array, list, deque. Работа с итераторами и умными указателями.
13 Ассоциативные контейнеры: map, set, unordered-контейнеры. Structured bindings. Решение задач с использованием контейнеров STL. Выбор структуры данных.
14 Метапрограммирование. constexpr, consteval, constinit. Variadic templates. decltype. Concepts и requires. Практика использования constexpr, шаблонов с переменным числом параметров и Concepts.
15 Ranges и современные возможности C++20. Итоговое повторение курса. Подготовка к экзамену. Комплексное решение задач. Разбор типовых экзаменационных заданий. Консультация перед итоговой аттестацией.

4. Команда курса

Руководитель курса: Ибрагимов Булат Ленарович Лектор: Бердашкевич Роман Евгеньевич Семинаристы: Погадаев Никита Максимович Б05-605 Криворотов Данила Александрович Б05-606, Б05-616

Ассистенты: Беляков Глеб Михайлович Корниенко Сергей Михайлович, Жиганов Глеб Александрович Молчанов Илья Николаевич

5. Материалы курса

Программу экзамена можно посмотреть здесь.