C++ — один из самых востребованных языков в мире: на нём пишут игры, операционные системы, браузеры, высоконагруженные сервисы и даже микрокод для медицинских устройств. Язык входит в тройку самых популярных по индексу TIOBE, а создать «убийцу C++» пока не удалось никому — попытки были. При этом язык это непростой — с нуля к нему бывает сложно подступиться.

В Яндекс Практикуме у курса «Разработчик C++» есть бесплатная вводная часть — она помогает плавно войти в профессию и понять, подходит ли вам этот язык и формат обучения. Помимо изучения теории вас ждёт очень много практики: будете работать в интерактивном тренажёре, решать задачи и делать первые шаги в программировании. Рассказываем подробнее, что внутри.


Бесплатная вводная часть делится на два блока. Первый — про мышление разработчика: как подходить к задаче, как взвешивать варианты и почему идеального решения не существует. Звучит абстрактно, но без этого фундамента будет сложно, особенно абсолютному новичку.

Второй блок — уже непосредственно C++: синтаксис, базовые конструкции, первые программы. Честно предупреждаем: местами будет непросто — некоторые вещи не упростить, сколько ни старайся. Но курс устроен так, что при последовательном прохождении всё постепенно складывается в общую картину — и это куда легче, чем разбираться во всём самостоятельно.

Все понятия вводятся с примерами и практическими заданиями в тренажёре. Если всё равно непонятно, можно попросить нейросеть объяснить тему другими словами или просто вернуться к материалу позже. Практику можно пропускать, если вы пока к ней не готовы. 

Как думают разработчики

Бесплатная вводная часть курса начинается с идеи, которую многие воспринимают как очевидную, но на практике игнорируют: прежде чем что-то делать, нужно понять, зачем и что именно должно получиться в итоге. Эта мысль раскрывается на бытовых примерах: готовке, планировании семейной поездки и строительстве дома.

Иллюстрация из курса
Иллюстрация из курса

Раздел подводит к выводу, что прежде чем за что-то взяться, нужны цель и план — без них вряд ли что-то получится. Также надо учитывать, как отдельные изменения влияют на систему в целом. И, конечно, умение писать код или, например, класть кирпичи — это ещё не залог работающего приложения или комфортного для проживания дома. 

Первым заданием будет не код, а логическая задача: нужно выбрать правильную последовательность трёх шагов при оформлении заказа в интернет-магазине. Упражнение показывает, как порядок действий влияет на пользователя. 

Задание курса
Задание курса

По итогам урока студент проделает ключевую работу IT-специалиста — спроектирует систему (при этом не написав ни строчки кода!). А также поймёт, что идеальных решений не бывает и сила специалиста — в умении находить баланс и принимать осознанные решения. 

Затем студенту предлагают на один день стать бэкенд-разработчиком и принять несколько архитектурных решений для многопользовательской гоночной игры  — снова без кода, только через выбор из вариантов с объяснением плюсов и минусов каждого. В конце студент смотрит, как его решения ожили в минимально рабочей версии игры. 

Варианты и их плюсы и минусы
Варианты и их плюсы и минусы
Само задание
Само задание

Главный вывод раздела: разработка — это не только код. Большая часть работы — это думать, взвешивать варианты и принимать осознанные решения с учётом ограничений. На этом студент заканчивает знакомство с мышлением разработчика и переходит к более практической части курса, где будет больше заданий, кода и информации о языке программирования C++.

Тема 1. Знакомство с C++

C++ (читается си-плюс-плюс) — это мощный и современный язык. Он незаменим там, где нужна высокая производительность: компьютерные игры, работа с изображениями, видео и аудио. На C++ также пишут высоконагруженные сервисы, поисковые системы, драйверы устройств, операционные системы, компиляторы других языков программирования. 

Знакомство с языком начинается с программы, выводящей текст “Hello world”. На C++ это будет так:

cout << "Hello world!"s << endl;

Чтобы запустить программу, нужно перевести её из человекочитаемого вида в понятный процессору — из исходного кода в двоичный. Этим занимается компилятор, он уже встроен в тренажёр курса. 

Как выглядит тренажёр курса
Как выглядит тренажёр курса

Дальше курс объясняет, из чего состоит эта строчка кода и что делают cout, <<, s, endl и ;. Рассказывает, что такое операторы и экранирование, а также как комментировать код. После этого студент выполнит два практических задания про робота. Задание написано подробно, но также студент может воспользоваться подсказкой или посмотреть решение автора.

Пример из курса
Пример из курса

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

Здесь же объясняется разница между ошибкой и предупреждением (warning). Ошибка не даёт программе скомпилироваться. Предупреждение — это «программа синтаксически правильная, но что-то выглядит подозрительно». После этого студента ждёт ещё одно задание в тренажёре.

Тема 2. Переменные

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

Курс объясняет три базовых понятия:

  • Тип определяет, что можно хранить в переменной и что с ней делать. Он указывается при объявлении и не меняется. 

  • Инициализация — первое присваивание значения, которое делается прямо при объявлении. 

  • Область видимости — переменная существует только внутри тех фигурных скобок, где объявлена. Снаружи она недоступна. Это правило работает везде в C++.

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

Одно из заданий в тренажёре
Одно из заданий в тренажёре
Пример задания с выбором ответа
Пример задания с выбором ответа

Курс вводит тип int для целых чисел и показывает, что C++ умеет работать как калькулятор: сложение, вычитание, умножение, деление, остаток от деления. Порядок действий задаётся скобками, как в математике. И конечно же, есть нюанс!

Затем вводятся типы double и float для дробных чисел, манипуляторы fixed и setprecision для управления форматом вывода, а также математические функции: sqrt, sin, atan, hypot

Практическое задание на закрепление темы математических функций
Практическое задание на закрепление темы математических функций

До этого момента программы работали по строго заданному сценарию. Но настоящая программа должна взаимодействовать с пользователем. Для этого используется стандартный ввод.

Стандартный ввод — поток, через который программа может получить информацию от пользователя. Синтаксис зеркальный относительно cout: если вывод — это cout <<, то ввод — это cin >>

Первое из двух заданий на ввод данных
Первое из двух заданий на ввод данных

Затем курс рассказывает о четырёх вариантах знака сложения: + для int, + для double,+ для float и + для string. С разными типами он работает по-разному и использует разные алгоритмы.

Полуфинальное задание перед началом второй половины курса
Полуфинальное задание перед началом второй половины курса

Тема 3. Условные конструкции, цикл for

Оператор if позволяет выполнять код только при определённом условии. Без него программа всегда идёт по одному пути, что сильно ограничивает её возможности. 

Самый простой вид условий — сравнение. Всего шесть операций: >, >=, <, <=, ==, !=. Сравнивать можно не только целые числа, но и double, и даже строки. Курс также предупреждает о частой ошибке новичков: путанице между оператором присваивания = и оператором сравнения ==

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

Затем курс рассказывает про блок else, который выполняется, если условие в if оказалось ложным. А else if позволяет разобрать несколько случаев подряд — выполнится только первый блок, где условие истинно.

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

После этого студент более подробно изучает условия — они не ограничиваются операциями сравнения. Их можно комбинировать и даже сохранять их значения в переменные. Для этого понадобится специальный тип bool, который принимает только два значения: true или false. Переменная этого типа называется «логическая переменная» или «булевая переменная». 

Курс предлагает написать программу, которая вычисляет угол треугольника, а затем добавить в неё определение типа треугольника. Тут вводятся понятия: && — логическое «и» , || — логическое «или», ! — отрицание.

Первое из двух заданий на закрепление темы
Первое из двух заданий на закрепление темы

На данном этапе студент уже изучил простые типы данных, которые могут хранить только одно значение: int — для целых чисел, double и float — для чисел с плавающей точкой, string — для строк, bool — для логических значений. Но есть более сложные типы, которые могут хранить сразу несколько значений.

vector — переменная для хранения набора значений одного типа, например строк. Такой объект в программировании называется «контейнер». Он действительно похож на контейнер, поскольку способен вмещать множество других объектов. 

Иллюстрация курса

Количество значений в векторе называется его размером, а сами значения — элементами. Номер элемента в векторе называют индексом. Курс показывает, как создать вектор, обратиться к элементу по индексу, изменить значение, добавить новый элемент в конец через push_back и удалить его же с методом pop_back.

Пример использования элемента push_back
Пример использования элемента push_back
Задание на закрепление темы
Задание на закрепление темы

Дальше курс рассказывает о цикле for с итерированием по вектору: переменная-счётчик поочерёдно принимает каждое значение из вектора, и для каждого выполняется тело цикла. Тема разбирается на примере программы для поздравления, а для закрепления студента ждут пять практических заданий в тренажёре. 

Первая итерация кода программы для поздравления
Первая итерация кода программы для поздравления

Тема 4. Функции

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

В предыдущих уроках студент уже встречался с функциями, но здесь приходит время писать собственные. На примере робота, проходящего путь с повторяющимися элементами, курс показывает, зачем выносить повторяющиеся действия в отдельную функцию. Затем объясняются параметры, аргументы, возвращаемое значение, функции void и return, а также понятие сигнатуры. 

Пример задания для закрепления темы
Пример задания для закрепления темы
Ещё одно задание на закрепление темы
Ещё одно задание на закрепление темы

Финальный теоретический урок раскрывает то, что тренажёр скрывал всё это время. Весь написанный код автоматически оборачивался в функцию main — точку входа любой C++-программы. Именно с неё начинается выполнение, и именно её завершение означает конец программы.

Также объясняются директивы #include — подключение библиотек. Многие знакомые имена вроде cout, cin, vector, string доступны не сами по себе, а через библиотеки iostream, vector, string. Без #include компилятор их не найдёт. А конструкция using namespace std; делает эти имена доступными — она пишется сразу после include-директив. 

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

Финальное задание курса
Финальное задание курса

Теперь, когда все карты раскрыты и студент уже попробовал себя в программировании на C++, курс рассказывает, как писать код не только в тренажёре, но и на своем компьютере. В этой части студент узнаёт о компиляторах и IDE, а затем проходит проверочный финальный тест.


Если решите продолжать, можно выбрать один из двух тарифов. Базовый рассчитан на девять месяцев: это 160 часов теории, 265 часов практики и девять проектов в портфолио. Расширенный добавляет ещё три месяца с углублёнными темами — разработка под Linux, асинхронность и библиотека Boost, Docker, мониторинг и PostgreSQL — итого 12 месяцев и 11 проектов. По итогам обучения вы будете готовы к роли джуниор-разработчика C++.

В оба тарифа входят дополнительные модули:

  • Навыки работы с ИИ сейчас так же важны, как и хардскилы. Вы освоите промпт-инжиниринг, научитесь выбирать ИИ-инструменты под конкретные задачи и применять их в повседневной работе разработчика — от написания и отладки кода до генерации тестовых данных и автотестов. 

  • Computer Science: устройство компьютера, операционные системы, сети, алгоритмы и не только. Модуль поможет вам развить системное и алгоритмическое мышление, а также софтскилы (мягкие навыки). Его можно проходить параллельно с основной программой и использовать как шпаргалку. 

Также у вас будет доступ к Мастерской — это агентство внутри Практикума, которое даёт возможность поработать над реальными проектами и пополнить портфолио. Найти работу поможет наш Карьерный центр: при поддержке HR‑экспертов вы составите резюме и научитесь писать сопроводительные письма, а затем начнёте активно откликаться — мы вас в этом поддержим и предложим вакансии партнёров.

Если хотите узнать больше о самом процессе обучения — нажмите «Попробовать бесплатно» на странице курса. Там вы найдёте не только введение в C++, но и подробный рассказ о том, как у нас всё устроено.