Skip to content

About

Программирование на C++: университетский курс с примерами. 28 уроков + бонус

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

33 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Программирование на C++

Учебный курс по программированию на C++ (стандарт C++23): от первой программы до ООП, STL, умных указателей и RTTI. Каждый урок — отдельная папка с кратким конспектом и рабочими примерами кода.

Курс рассчитан на студентов, знакомых с основами программирования (переменные, циклы, ветвления). Опыт C++ не требуется.

Содержание

Модуль 1. Основы языка

№ Тема Конспект Примеры
1 Введение. Первая программа. Ввод-вывод. Память и типы данных README код
2 Память и типы данных. IEEE 754. Битовые операции README код
3 Условия, switch, циклы while / for, break, continue README код
4 Функции. Рекурсия. Перегрузка README код
5 Введение в указатели. Арифметика указателей README код
6 Висячие указатели, утечки. Ссылки. Умные указатели (кратко) README код
7 Массивы. Статические и динамические. Связь с указателями README код
8 Двумерные массивы. Строки. Файлы README код
9 Структуры. Введение в ООП README код
10 Контрольная работа (демо-разбор) README код
11 Классы: конструкторы, деструкторы, перегрузка операций README код
12 Передача объектов в функции. Коллекции. Перегрузка операций README код
13 Исключения. RAII. Правило трёх (пяти) README код
14 Умные указатели: unique_ptr, shared_ptr, weak_ptr README код
15 Move-семантика. std::move, rvalue-ссылки README код

Модуль 2. STL и продвинутые темы

№ Тема Конспект Примеры
16 Контейнеры последовательные: vector, deque, list README код
17 Контейнеры последовательные: практика README код
18 Ассоциативные контейнеры: map, set, unordered_map README код
19 Алгоритмы STL: sort, find, ranges, лямбды README код
20 Разбор демо контрольной работы README код
21 Наследование: базовое README код
22 Наследование: практика, RTTI, static_cast / dynamic_cast README код
23 Подготовка к коллоквиуму README код
24 Подготовка к коллоквиуму (продолжение) README код
25 Абстрактные классы, чистые виртуальные функции README код
26 Абстрактные классы: практика, интерфейсы README код
27 RTTI, виды кастов: полная картина README код
28 Разбор демо экзамена README код

Дополнительно

Тема Конспект
Бонус. Типичные вопросы коллоквиума с краткими ответами README
Краткий справочник для подготовки к экзамену EXAM_GUIDE.md

Среда

Курс рассчитан на C++23 и компилятор GCC 13+ или Clang 16+. Сборка — через CMake (3.20+).

Установка

Fedora Linux:

sudo dnf install gcc-c++ cmake ninja-build

Проверка:

g++ --version        # ожидается GCC 13+ (рекомендуется 14+)
cmake --version      # ожидается 3.20+

Ubuntu / Debian:

sudo apt install g++ cmake ninja-build

Для C++23 нужен GCC 13+ (на Ubuntu 22.04 — из PPA или обновление до 24.04; на Debian 12 — из backports).

Windows: MSYS2 с GCC 13+ (https://www.msys2.org) или Visual Studio 2022 с /std:c++latest.

IDE

CLion (https://www.jetbrains.com/clion/) — открывает корневой CMakeLists.txt как проект, показывает все цели в выпадающем списке.

Сборка из терминала

mkdir build && cd build
cmake ..
cmake --build .
./lesson-01-intro/hello

Или через CLion: выбрать цель → Run (Shift+F10) или Debug (Shift+F9).

Структура репозитория

cpp-university/
├── CMakeLists.txt              корневой, подключает все уроки
├── README.md
├── LICENSE
├── .gitignore
├── lesson-01-intro/
│   ├── CMakeLists.txt          цели для примеров урока
│   ├── README.md
│   └── *.cpp
├── lesson-02-memory-types/
│   ├── CMakeLists.txt
│   ├── README.md
│   └── *.cpp
├── ...
└── bonus-colloquium-questions/
    └── README.md

В каждой папке урока:

  • CMakeLists.txt — список add_executable для примеров.
  • README.md — конспект: цель, ключевые понятия, примеры.
  • *.cpp — рабочие примеры кода с комментариями.

Как проходить курс

  1. Читаем README.md урока.
  2. Открываем примеры *.cpp.
  3. В CLion выбираем нужную цель и запускаем (Shift+F10).
  4. Меняем, экспериментируем.
  5. Переходим к следующему уроку.

Что изменено относительно исходной программы

Курс сохраняет структуру исходной программы (28 уроков, два модуля), с небольшими правками:

  • Стандарт обновлён до C++23. Современные вузовские программы переходят на C++20/C++23, и курс это отражает.
  • Урок 15 — добавлена тема move-семантика (не было в исходной программе, но критично для современного C++).
  • Урок 19 — добавлена тема алгоритмы STL (sort, find, ranges, лямбды). В исходной программе были только контейнеры.
  • Урок 22 — RTTI и касты перенесены ближе к наследованию. В исходной программе они стояли в уроке 27.
  • Урок 27 — оставлен как обобщающий по кастам.
  • Бонусный урок — вопросы коллоквиума с ответами.

Что из C++20 / C++23 используется в курсе

По мере уместности в примерах вводятся современные возможности:

Возможность Стандарт Где
std::print / std::println C++23 уроки 1+, местами
std::format C++20 уроки 1+
std::span C++20 уроки 7+
Concepts C++20 шаблоны, уроки 4, 6
Ranges C++20 урок 19
std::expected C++23 урок 13 (исключения)
std::string::contains C++23 урок 8
std::to_underlying C++23 урок 9 (enum)
std::stacktrace C++23 уроки 13, 27

Базовые примеры при этом остаются простыми и читаемыми — std::cout и классический синтаксис не отменяются.

Требования

  • Базовые знания любого языка программирования (переменные, условия, циклы).
  • C++23-совместимый компилятор (GCC 13+, Clang 16+, MSVC 2022+).
  • CMake 3.20+.
  • 2–4 часа в неделю на прохождение одного урока.

Лицензия

MIT

About

Программирование на C++: университетский курс с примерами. 28 уроков + бонус

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages