Программирование на C++: от основ до структур данных

Полный курс на два семестра: базовый синтаксис, массивы, функции, файлы, сортировки, структуры, графы — а затем динамические структуры данных, деревья, классы, шаблоны, наследование и графический интерфейс.

2семестра
17лабораторных
25интерактивных демо
85вопросов в тестах
Ваш прогресс по курсу

Отмечайте пройденные лабораторные работы

Общая информация

🚀

Никогда не программировали?

Начните с отдельного раздела: он объясняет, как из задачи получается программа, из чего состоит любой алгоритм, и как читать код пошагово.

Перейти в раздел →
🧪

Проверьте себя

17 коротких тестов — по одному на каждую лабораторную. По 5 вопросов, мгновенная проверка и разбор каждого ответа. Результаты сохраняются в браузере.

Пройти тесты →
📋

Варианты заданий

Все задания по лабораторным работам в одном месте. Выберите семестр, лабораторную, задание — получите свой текст. Можно сохранить выбор, чтобы вернуться к нему позже, или выбрать случайный вариант.

Открыть задания →
✅

Чек-лист перед сдачей

Интерактивный чек-лист для курсовой, лабораторной или ВКР. Отмечайте пункты, оставляйте заметки, экспортируйте результат — всё сохраняется в браузере.

Открыть чек-лист →

Семестр 1: базовый C++

Девять лабораторных работ: от первого «Hello, world!» до графов. Каждая — с теорией, примерами и вариантами заданий.

ЛР 1

Основы языка C++. Ввод-вывод и присваивание

  • Алфавит, идентификаторы, типы данных, константы
  • Арифметические и логические операции
  • scanf/printf и объектно-ориентированные cin/cout
  • Формулы и вычисления (гипотенуза, площадь, средние)
ЛР 2

Ветвления: if, switch

  • Условный оператор, вложенные условия
  • Оператор варианта, области на плоскости
  • Квадратные уравнения, комплексные корни
ЛР 3

Циклы: while, do-while, for

  • Таблицы значений функций, факториалы, НОД
  • Работа с цифрами числа, палиндромы, простые числа
  • Обработка последовательностей
ЛР 4

Функции, рекурсия, перегрузка

  • Локальные и глобальные переменные, передача по значению и адресу
  • Рекурсия: факториал, степени, Фибоначчи
  • Перегрузка и шаблоны функций
  • Численные методы: дихотомия, хорды, Ньютон, итерации
Демо
ЛР 5

Одномерные и многомерные массивы

  • Статические и динамические массивы
  • Сумма, произведение, поиск min/max, k-й минимум
  • Вставка, удаление, сдвиг элементов
  • Матрицы: диагонали, периметр, обработка по строкам/столбцам
Демо
ЛР 6

Строки и файлы

  • Флаги и манипуляторы форматирования (setw, setprecision)
  • Текстовые и двоичные файлы: fopen, fwrite, fread, fseek
  • Строки char[] и std::string, функции strlen, strcat, substr, find
  • Подсчёт слов, строк, символов в тексте
ЛР 7

Сортировка массивов

  • Пузырьковая сортировка, сортировка выбором и вставкой
  • Проверка упорядоченности, вставка в упорядоченный массив
  • Оценка числа сравнений и обменов
Демо
ЛР 8

Структуры

  • Объявление структур, вложенные структуры, массивы структур
  • Работа с комплексными числами и другими составными данными
  • Стандартная библиотека <complex>
Демо
ЛР 9

Графы

  • Представления: матрица смежности, инцидентности, списки
  • Обход в глубину и в ширину (рекурсивно и через стек/очередь)
  • Алгоритм Дейкстры, поиск кратчайших путей
Демо

Интерактивные демонстрации семестра 1

🌳

Трассировка рекурсии

Дерево вызовов для факториала, Фибоначчи и Ханойских башен. Растущий стек, глубина рекурсии.

ЛР 4→
🎯

Указатели: полный разбор

Пять интерактивных демонстраций: память как сетка ячеек, & и *, swap через указатели, массивы и динамическая память.

ЛР 4–5→
📦

Операции над массивом

Вставка, удаление, сдвиг, разворот и поиск с пошаговой визуализацией ячеек.

ЛР 5→
🎨

Форматирование вывода

Playground для setw, setprecision, setfill и флагов: показать, как выглядит вывод в C++.

ЛР 6→
📁

Файлы и потоки

Текстовый и бинарный режимы, режимы открытия, seek/tell, разница в размерах и читаемости.

ЛР 6→
📊

Визуализатор сортировок

Пошаговое сравнение пузырьковой сортировки, выбором и вставкой. Счётчики сравнений и обменов.

ЛР 7→
🧮

Комплексные числа

Интерактивный калькулятор: +, −, ×, ÷, степень, сопряжение. Алгебраическая, тригонометрическая и показательная формы.

ЛР 8→
🕸️

Обходы графа

DFS на стеке и BFS на очереди. Анимация посещения вершин, матрица смежности, порядок обхода.

ЛР 9→

Семестр 2: ООП и структуры данных

Восемь лабораторных работ: от односвязного списка до графического интерфейса с множественным наследованием.

ЛР 1

Динамические структуры: списки, стеки, очереди

  • Односвязные и двусвязные списки, добавление/удаление/поиск
  • Стек (LIFO) и очередь (FIFO) на массиве и списке
  • Дек, барьеры, «защита от дурака»
  • Алфавитно-частотный словарь
Демо
ЛР 2

Бинарные деревья

  • BST: вставка, поиск, удаление, сбалансированные деревья
  • Обходы: прямой, симметричный, обратный, в ширину
  • Дерево выражений, вычисление формул
Демо
ЛР 3

Простейшие классы и объекты

  • Инкапсуляция, private/public, функции-члены
  • Методы set, get, show
  • Массив объектов, работа с ними в функциях
Демо
ЛР 4

Разработка классов

  • Конструкторы (включая копирования), деструкторы
  • Перегрузка операторов: +, *, =, [], <<, >>
  • Классы Complex, Fraction, Matrix, Polynom, String
Демо
ЛР 5

Классы для работы с динамическими структурами

  • Класс Tree, Stack, Queue, List
  • Управление памятью: конструктор копирования, деструктор
  • Работа с классом в меню
Демо
ЛР 6

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

  • Параметризованные классы: List<T>, Vector<T>
  • Шаблоны функций
  • Применение к разным типам данных
ЛР 7

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

  • Базовые и производные классы
  • Виртуальные функции, абстрактные классы
  • Иерархии: Item→Book, Point→Ellipse→Cylinder
ЛР 8

Графический интерфейс и множественное наследование

  • Windows Forms / Win32
  • Множественное наследование, friend-функции
  • Обработка исключений: try, catch, throw
  • Файловый ввод-вывод в оконном приложении
Демо

Интерактивные демонстрации семестра 2

📚

Стек и очередь

Стек (LIFO) и очередь (FIFO) с анимацией вставки и удаления.

ЛР 1→
🔗

Односвязный список

Вставка, удаление, поиск с анимацией указателей.

ЛР 1→
⇄

Двусвязный список

Два указателя на узел — prev и next. Обход в обе стороны, удаление без поиска.

ЛР 1→
🌲

Бинарное дерево поиска

Вставка, поиск, удаление. Анимация обходов: pre-order, in-order, post-order, BFS.

ЛР 2→
📐

Редактор UML-диаграммы

Проектируйте иерархию классов и получайте готовый C++-каркас.

ЛР 3–4→
🧬

Шаблоны класса List<T>

Один шаблон — четыре типа данных. Переключение int, double, string, char.

ЛР 6→
🧩

Шаблоны глубоко

Инстанцирование, специализация, вариативные шаблоны, SFINAE и концепты C++20.

ЛР 6→
🏛️

Сложное наследование

Множественное, ромбовидное, виртуальные базы, порядок конструкторов, best practices.

ЛР 7→
⚙️

vtable и полиморфизм изнутри

Как работает динамическое связывание: таблица виртуальных методов, срезка объектов, ошибки с деструкторами.

ЛР 7→
⚠️

Обработка исключений

try/catch/throw: деление на ноль, границы массива, свой класс исключения.

ЛР 8→
🧠

Умные указатели

unique_ptr, shared_ptr, weak_ptr. Современный способ избежать утечек.

Доп.→
🛡️

RAII: управление ресурсами

Ресурс получается в конструкторе, освобождается в деструкторе. Безопасно к исключениям.

Доп.→
🚚

Move-семантика

Rvalue-ссылки, std::move и правило пяти. Сравнение копирования и перемещения.

Доп.→
⚡

Многопоточность

Race condition, mutex и atomic на одном примере. Пошаговая анимация работы двух потоков.

Доп.→
📦

STL-контейнеры изнутри

Vector с reallocation, map как красно-чёрное дерево, set, unordered_map и график сложностей.

Доп.→
λ

Лямбда-выражения

Захват переменных, замыкания, mutable, std::function. Демонстрации ловушек и конвейера обработки.

Доп.→
🔨

Сборка программ

Четыре этапа компиляции, header guards, ошибки линковки, статические и динамические библиотеки, CMake.

Доп.→

Как работать с сайтом

Посещали занятие

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

Пропустили занятие

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

Сайт статический: работает на любом хостинге, не требует PHP, Node.js и БД. Скачанные демонстрации доступны офлайн через Service Worker.