Занятие 0: Введение

Дата публикации

15 сентября

1 Введение

1.1 Введение

Языку C++ почти 40 лет, но он по-прежнему очень актуален и востребован. Он оказал огромное влияние на индустрию и на другие языки. C++ был разработан Бьярне Страуструпом в начале восьмидесятых годов как расширение языка C (и даже изначально назывался «Си с классами»).

Для изучения C++ знать C не обязательно. Предполагается знакомство с основами информатики и школьным языком программирования, например Python.

C++ во многом полностью противоположен Python:

  • это компилируемый, а не интерпретируемый язык;
  • C++: язык со статической, а не динамической типизацией;
  • в C++ возможно ручное управление памятью (в отличие от автоматической сборки мусора).

Чтобы исходный код программы на C++ превратился в исполняемый файл для конкретной архитектуры процессора, программу нужно скомпилировать. Существует несколько популярных компиляторов C++:

  • GNU Compiler Collection (GCC);
  • Clang, построен поверх инфраструктуры LLVM;
  • Microsoft Visual C++ (MSVC) входит в состав Microsoft Visual Studio;
  • Intel C++ Compiler.

На этом курсе примеры и работа идут в Code::Blocks 20.03, файл codeblocks-20.03mingw-setup.exe (сборка с MinGW/GCC). Подробности установки: раздел про среду курса.

С 1998 года международный комитет по стандартизации C++ выпускает стандарты: версии языка, в которых описываются его возможности. В первую очередь это руководства для создателей компиляторов, но при возникновении спорных моментов всегда полезно обратиться к стандарту. Ориентир курса: стандарт C++20; черновик будущего стандарта доступен отдельно. Стандарт определяет лишь общие требования и не фиксирует детали реализации, которые в разных компиляторах могут отличаться.

Поддержку той или иной особенности C++ конкретной версией компилятора можно проверить по таблице на cppreference.com.

Полезные англоязычные ресурсы:

  • cppreference.com: онлайн-документация по C++;
  • isocpp.org: сайт Standard C++ Foundation;
  • C++ Core Guidelines: гайдлайны по C++ от Бьярне Страуструпа и Герба Саттера;
  • godbolt.org: Compiler Explorer, онлайн-компилятор;
  • learncpp.com: современный учебник по C++;
  • hacking C++: наглядный справочник по C++ с картинками и инфографикой.

В тексте часто встречаются ссылки на англоязычную версию cppreference.com и на английскую «Википедию».

Написать программу на C++ можно в любом текстовом редакторе, но удобнее пользоваться средой разработки (IDE). IDE включают редактор кода с подсветкой синтаксиса, а также позволяют компилировать, запускать и отлаживать программы.

Примеры IDE (общий обзор, не перечень среды этого курса):

  • Microsoft Visual Studio Community
  • Eclipse CDT
  • Code::Blocks
  • CLion (JetBrains)
  • Qt Creator
  • Xcode

Среда этого курса: Code::Blocks 20.03 (не Visual Studio), установщик codeblocks-20.03mingw-setup.exe. Компилятор курса поставляется вместе с установщиком MinGW/GCC; отдельно «разбираться с IDE самостоятельно» и запускать компилятор только из консоли на курсе не требуется.

Более удобная альтернатива: CLion (JetBrains). В ней удобнее рефакторинг, отладка и работа с CMake. CLion бесплатен по GitHub Student Pack и по учебной лицензии JetBrains. Это дополнение, а не замена Code::Blocks 20.03 на курсе.

1.2 Code::Blocks 20.03

Среда курса: Code::Blocks 20.03 в сборке с MinGW. Эта версия часто указана в перечнях ПО к КЕГЭ по информатике. Более новые сборки, в том числе 25.03, на курс не ставятся: нужна одинаковая среда у всех.

1.2.1 Какой файл скачивать

1.2.2 Установка

Пошагово, с окнами установщика: youngcoder.ru.

  1. запустить *mingw-setup.exe;
  2. Next → I Agree → Install;
  3. при первом запуске выбрать GNU GCC Compiler;
  4. File → New → Project → Console application → C++;
  5. собрать (жёлтая шестерёнка), запустить (зелёный треугольник).

Если компилятор не виден: Settings → Compiler → Toolchain executables → Auto-detect.

1.2.3 CLion как альтернатива

CLion (JetBrains) удобнее за счёт рефакторинга, отладки и CMake. Бесплатно по GitHub Student Pack или учебной лицензии JetBrains. Среда курса при этом остаётся Code::Blocks 20.03 (codeblocks-20.03mingw-setup.exe).

1.2.4 Первая программа в среде курса

В Code::Blocks 20.03 на курсе собирается классический пример со стандартной библиотекой:

#include <iostream>

int main() {
    std::cout << "Hello, world!\n";
}

1.2.5 Основные операции

Вывод в консоль: поток std::cout. Арифметика целых: +, -, *, / (деление нацело), % (остаток).

#include <iostream>

int main() {
    int a = 17;
    int b = 5;
    std::cout << a + b << '\n';  // 22
    std::cout << a - b << '\n';  // 12
    std::cout << a * b << '\n';  // 85
    std::cout << a / b << '\n';  // 3
    std::cout << a % b << '\n';  // 2
}

← к списку занятий