Из чего состоит программа
Программа на C++ — это исходный код, в котором описаны действия, выполняемые компьютером. Код состоит из нескольких элементов: директив препроцессора, объявлений, функций и инструкций.
Рассмотрим простую программу:
#include <iostream>int main() { std::cout << "Привет, мир!\n"; return 0;}Здесь используются три важных элемента:
#include <iostream>подключает средства стандартного ввода и вывода.int main()объявляет главную функцию программы — выполнение начинается с неё.std::coutвыводит текст в консоль.
При запуске программа напечатает Привет, мир!, а затем завершится.
Инструкции
Инструкция (statement) — это команда языка C++, которая выполняет определённое действие. Большинство простых инструкций заканчивается точкой с запятой ;.
Например:
int score = 100;score += 25;std::cout << score << '\n';В этом примере три инструкции:
- Создаётся целочисленная переменная
scoreсо значением100. - К её значению прибавляется
25. - Результат выводится в консоль.
Вывод программы:
125Точка с запятой сообщает компилятору, что инструкция завершена. Если пропустить её там, где она требуется, программа может не скомпилироваться.
Блоки кода
Блок кода — это последовательность объявлений и инструкций, заключённая в фигурные скобки { и }.
{ int first = 10; int second = 20; std::cout << first + second << '\n';}Блок группирует несколько операций. Он может использоваться внутри функций, условий, циклов и других конструкций языка.
Фигурные скобки также определяют область видимости локальных переменных. Например, переменная, объявленная внутри блока, обычно доступна только до его закрывающей скобки:
{ int temporary = 42; std::cout << temporary << '\n';}// Здесь temporary уже недоступна.Попытка обратиться к temporary за пределами блока приведёт к ошибке компиляции.
Директивы препроцессора
Перед компиляцией исходный код обрабатывается препроцессором. Он выполняет специальные команды, которые называются директивами препроцессора.
Директивы начинаются со знака #. Например:
#include <iostream>#include <string>Директива #include подключает содержимое указанного заголовка, чтобы программа могла использовать соответствующие объявления.
В данном случае:
<iostream>предоставляет средства ввода и вывода, включаяstd::coutиstd::cin.<string>предоставляет типstd::stringдля работы со строками.
Пример использования:
#include <iostream>#include <string>int main() { std::string name = "Алексей"; std::cout << "Привет, " << name << "!\n"; return 0;}Препроцессорные директивы не являются обычными инструкциями C++: после них не ставится точка с запятой. Директива обычно заканчивается в конце строки.
Например, запись ниже некорректна:
#include <iostream>;Правильный вариант:
#include <iostream>Функция main()
Функция main() — точка входа в обычную исполняемую программу на C++. Именно с неё начинается выполнение программы.
Минимальный пример:
int main() { return 0;}Разберём его составляющие:
int— тип значения, которое возвращает функция.main— имя главной функции.()— круглые скобки, в которых указываются параметры функции.{}— тело функции, содержащее её код.return 0;— завершает функцию и сообщает операционной системе об успешном завершении программы.
Если выполнение доходит до закрывающей скобки функции main, это эквивалентно возврату 0.
Поэтому можно написать и так:
int main() { // Код программы}Для обычной консольной программы часто используют форму int main() без параметров. Существует и другая стандартная форма с аргументами командной строки:
int main(int argc, char* argv[]) { return 0;}Комментарии
Комментарии нужны для пояснения кода. Компилятор не выполняет текст комментариев как инструкции программы.
В C++ есть два основных вида комментариев.
Однострочный комментарий начинается с // и продолжается до конца строки:
// Создаём переменную с количеством очков.int score = 250;Многострочный комментарий начинается с /* и заканчивается на */:
/* Рассчитываем итоговое количество очков. Позже результат будет выведен в консоль.*/int total = 250 + 50;Комментарии помогают объяснять назначение кода, но не должны заменять понятные имена переменных и функций.
Как элементы объединяются в программу
Посмотрим на пример, в котором используются директива препроцессора, функция, переменные, инструкции и комментарий:
#include <iostream>#include <string>int main() { // Данные пользователя. std::string name = "Мир"; int year = 2026; // Выводим результат. std::cout << "Привет, " << name << "!\n"; std::cout << "Год: " << year << '\n'; return 0;}Результат:
Привет, Мир!Год: 2026Последовательность работы программы выглядит следующим образом:
- Препроцессор обрабатывает директивы
#include. - Компилятор проверяет исходный код и преобразует его в машинный код.
- При запуске выполнение начинается с
main(). - Инструкции выполняются последовательно, если управление не изменяется условиями, циклами или вызовами функций.
- После завершения
main()программа заканчивает работу.
Частые ошибки
1. Пропущена точка с запятой
int value = 10std::cout << value << '\n';После объявления переменной должна стоять ;:
int value = 10;std::cout << value << '\n';2. Не подключён необходимый заголовок
int main() { std::cout << "Тест\n";}Для использования std::cout нужно подключить <iostream>:
#include <iostream>int main() { std::cout << "Тест\n";}3. Нарушен баланс фигурных скобок
int main() { std::cout << "Начало\n";У функции отсутствует закрывающая скобка. Корректный вариант:
int main() { std::cout << "Начало\n"; return 0;}4. Переменная используется вне своей области видимости
int main() { { int value = 10; } std::cout << value << '\n';}Переменная value существует только внутри вложенного блока. Чтобы использовать её после блока, объяви переменную во внешней области:
int main() { int value = 10; { value += 5; } std::cout << value << '\n';}Итог
Основные элементы структуры программы на C++:
- Директивы препроцессора — например,
#include, подключающие необходимые заголовки. - Функция
main()— точка входа в исполняемую программу. - Инструкции — отдельные команды, многие из которых заканчиваются
;. - Блоки кода — группы объявлений и инструкций в фигурных скобках.
- Комментарии — пояснения для разработчика, которые не выполняются программой.
Понимание этих элементов позволит легче читать чужой код и переходить к изучению переменных, типов данных, условий, циклов и функций.
