Занятие 0: Введение
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 Какой файл скачивать
- Каталог сборок: codeblocks.org/downloads/binaries
- Архив 20.03 для Windows: sourceforge.net/…/20.03/Windows/
- Файл:
codeblocks-20.03mingw-setup.exe. В имени должно бытьmingw: внутри уже компилятор GCC. Сборка безmingwставит только оболочку.
1.2.2 Установка
Пошагово, с окнами установщика: youngcoder.ru.
- запустить
*mingw-setup.exe; - Next → I Agree → Install;
- при первом запуске выбрать GNU GCC Compiler;
- File → New → Project → Console application → C++;
- собрать (жёлтая шестерёнка), запустить (зелёный треугольник).
Если компилятор не виден: 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
}