1. Основы синтаксиса и переменные
Основы синтаксиса и переменные
Представьте, что вы приехали в иностранную страну и вам нужно заказать обед. Вы знаете, что хотите сказать — но не знаете, как это произнести на местном языке. Именно так чувствует себя программист, переходящий с Python на C++: логика знакома, но синтаксис требует адаптации. И первое, что нужно освоить в новом «языке» — это как объявлять переменные и как устроена базовая структура программы.
Первая программа: что здесь происходит
Вот минимальная программа на C++, которая выводит текст в консоль:
Разберём по частям, как будто это инструкция к бытовому прибору. Директива #include <iostream> — это запрос на подключение библиотеки ввода-вывода. Без неё компилятор не знает, что такое std::cout. Функция main() — точка входа, откуда начинается выполнение программы. Каждая C++-программа обязана содержать ровно одну функцию с таким именем. Оператор return 0; сообщает операционной системе, что программа завершилась без ошибок.
> Ключевое отличие от Python: в C++ каждая инструкция заканчивается точкой с запятой, а блоки кода оборачиваются фигурными скобками {} — не отступами.
Переменные: контейнеры с ярлыками
Переменная в C++ — это именованная область памяти, в которой хранится значение определённого типа. Представьте шкаф с ящиками: на каждом ящике есть табличка с названием (имя переменной), и в ящик можно положить только вещи определённого размера (тип данных).
Базовые типы данных
| Тип | Размер | Аналогия | Пример значения |
|-----|--------|----------|-----------------|
| int | 4 байта | Целое число, как счётчик на кассе | 42 |
| float | 4 байта | Десятичное число с приблизительной точностью | 3.14f |
| double | 8 байт | Десятичное число с высокой точностью | 3.14159265358979 |
| char | 1 байт | Один символ, как буква на клавиатуре | 'A' |
| bool | 1 байт | Логическое значение: да или нет | true |
Обратите внимание: в C++ тип переменной нужно указывать явно при объявлении. Python сам догадывается, какой тип положить в переменную, а C++ требует, чтобы вы сами сказали компилятору: «Здесь будет целое число» или «Здесь будет текст».
Строки: особый случай
В Python строка — это встроенный тип. В C++ для работы со строками нужно подключить библиотеку <string> и использовать тип std::string:
Операция конкатенации (склеивания) строк работает через оператор +, как и в Python. Но помните: вы не можете складывать две строковые литералы через + без предварительного присвоения их переменным типа std::string.
Константы: когда значение не должно меняться
Иногда нужно зафиксировать значение — как табличка «Не трогать!» на музейном экспонате. Для этого служит ключевое слово const:
Если вы попытаетесь изменить значение константы после объявления, компилятор выдаст ошибку. Это защита от случайных изменений — и хороший инструмент для самодисциплины.
Ввод данных: диалог с пользователем
Выводить данные вы уже умеете через std::cout. Для ввода используется std::cin — он работает как кассир, который ждёт, пока вы назовёте число:
Здесь важный нюанс: std::cin >> читает только одно слово (до пробела), поэтому для ввода полного имени используется std::getline(). Это частая ловушка для новичков — если после cin >> вызвать getline, первый оставит в буфере символ новой строки, и getline считает пустую строку. Решение — вызвать std::cin.ignore() между ними.
Приведение типов: когда контейнер не подходит по размеру
Представьте, что вы пытаетесь перелить литр воды в стакан на 200 мл — часть жидкости прольётся. В C++ происходит то же самое при неявном приведении типов:
Компилятор выполнит приведение, но может предупредить о потере данных. Чтобы сделать приведение осознанным, используйте явное приведение — static_cast:
Это как подписать документ о том, что вы осознаёте потери — компилятор перестанет жаловаться.
Пространства имён: избегаем конфликтов
Префикс std:: перед cout и string — это указание на пространство имён std. Представьте большой офис, где работают два Ивана Петровича. Чтобы не путать, вы говорите: «Иван Петрович из бухгалтерии». std::cout — это «cout из стандартной библиотеки».
Если писать std:: каждый раз утомительно, можно в начале файла написать using namespace std; — но в реальных проектах это считается плохой практикой, потому что повышает риск конфликтов имён.
На этом фундамент заложен: вы понимаете, как устроена программа, как объявлять переменные разных типов, как вводить и выводить данные. В следующей статье мы научим программу принимать решения и повторять действия — то есть управлять потоком выполнения.