1. Структура программы и директива #include: как подключать стандартные библиотеки
Структура программы и директива #include: как подключать стандартные библиотеки
Добро пожаловать в курс «Основы C++: Работа с библиотеками и консолью»! Это первая статья, с которой начнется ваше погружение в один из самых мощных и производительных языков программирования в мире. Мы не будем тратить время на скучную теорию истории языка, а сразу перейдем к практике: разберем, из чего состоит программа, как научить её «общаться» с нами и зачем нам нужны чужие наработки, называемые библиотеками.
Анатомия программы на C++
Любая программа на C++ похожа на живой организм или сложный механизм. У неё есть «скелет» — обязательная структура, без которой компилятор (программа, переводящая ваш код в язык машин) просто не поймет, чего вы от него хотите.
Самая главная часть этого скелета — функция main.
Точка входа: функция main
Представьте, что вы написали огромную книгу инструкций. С какой страницы начать чтение? В C++ такой «первой страницей» всегда является функция main. Когда вы запускаете программу, компьютер ищет именно это имя и начинает выполнять команды, написанные внутри неё.
Минимальная программа на C++ выглядит так:
Давайте разберем каждую строчку:
int main() — это объявление функции. Слово int означает, что по завершении работы функция должна вернуть целое число (integer). Скобки () говорят о том, что это функция, а не переменная.{ и } — фигурные скобки обозначают начало и конец тела функции. Всё, что находится между ними, — это код, который будет выполнен.return 0; — эта команда завершает работу функции и возвращает операционной системе число 0. В мире программирования 0 обычно означает: «Всё прошло успешно, ошибок нет».> Важно: В C++ каждая команда должна заканчиваться точкой с запятой ;. Это как точка в конце предложения в русском языке. Если вы её забудете, программа не запустится.
Директива #include и сила библиотек
Сама по себе пустая функция main бесполезна. Она ничего не делает. Чтобы программа могла выводить текст на экран, читать файлы или считать сложные математические формулы, нам нужны инструменты. В C++ эти инструменты хранятся в библиотеках.
Что такое библиотека?
Библиотека — это набор уже написанного кем-то кода, который решает типовые задачи. Вам не нужно изобретать велосипед и писать с нуля код для управления пикселями на экране, чтобы вывести текст. Разработчики языка C++ уже сделали это за вас и упаковали в Стандартную библиотеку.
Чтобы воспользоваться этими инструментами, нужно «подключить» библиотеку к вашей программе. Для этого используется директива #include.
Как работает препроцессор
Строки, начинающиеся с символа #, называются директивами препроцессора. Препроцессор — это специальная программа, которая просматривает ваш код до того, как начнется основная компиляция.
Когда препроцессор видит строку #include <имя_файла>, он делает простую вещь: находит указанный файл и буквально копирует всё его содержимое прямо в то место, где стоит эта строка.
!Визуализация того, как директива include подставляет содержимое библиотеки в ваш код.
Для работы с вводом и выводом данных (консолью) нам нужна библиотека iostream (Input/Output Stream — поток ввода-вывода).
Теперь, подключив iostream, мы получили доступ к мощным инструментам для общения с пользователем.
Пространство имен std
Если вы откроете книгу в большой библиотеке, вы можете найти там персонажа по имени Александр. Но Александров много: Пушкин, Дюма, Македонский. Чтобы понять, о ком речь, нам нужна фамилия.
В C++ роль таких «фамилий» играют пространства имен (namespaces). Все инструменты стандартной библиотеки C++ находятся в пространстве имен std (сокращение от standard).
Чтобы обратиться к инструменту вывода текста cout из библиотеки iostream, мы должны написать его полное имя: std::cout.
Оператор :: называется оператором разрешения области видимости. Он говорит: «Возьми cout, который принадлежит std».
Вывод данных: std::cout
cout (читается как «си-аут») — это объект, который представляет собой поток вывода (обычно это ваш экран или терминал). Чтобы отправить в него текст, используется оператор вставки <<.
Представьте, что << — это стрелочки, указывающие направление движения данных. Данные «текут» в cout, а оттуда — на экран.
Перенос строки
Если вы напишете несколько команд cout подряд, весь текст слипнется в одну строку. Чтобы перенести курсор на новую строку, используется специальный манипулятор std::endl (end line) или символ переноса строки \n.
Пример с std::endl:
Ввод данных: std::cin
Для обратной операции — получения данных от пользователя — используется объект std::cin (читается как «си-ин»). Он работает в паре с оператором извлечения >>.
Обратите внимание на направление стрелочек >>. Они показывают, что данные берутся из консоли (cin) и направляются в переменную.
Чтобы сохранить введенные данные, нам понадобится переменная. Пока просто запомните: чтобы хранить целые числа, мы используем тип int.
Как упростить код: using namespace std
Писать каждый раз std:: перед cout, cin и endl может быть утомительно. C++ позволяет нам сказать компилятору: «Если ты не находишь имя, поищи его в std».
Это делается командой using namespace std;.
> Предостережение: Использование using namespace std; удобно для обучения и маленьких программ. Однако в больших профессиональных проектах это считается дурным тоном, так как может привести к конфликтам имен (если у вас будет своя функция с именем cout, компилятор запутается). Но в рамках нашего курса мы будем использовать этот прием для чистоты кода.
Итоговый пример
Давайте соберем всё вместе и напишем программу, которая знакомится с пользователем. Для работы с текстом нам понадобится еще одна библиотека — <string>, которая позволяет создавать переменные строкового типа.
Разбор логики программы
iostream для консоли и string для слов.cout мы задали вопросы.cin мы положили ответы пользователя в переменные.age + 1 прямо внутри вывода.Заключение
Сегодня вы узнали фундамент любого C++ приложения:
* Программа начинается с функции main.
* Директива #include позволяет подключать возможности стандартных библиотек.
* iostream — это библиотека для ввода и вывода.
* cout с оператором << выводит данные на экран.
* cin с оператором >> считывает данные от пользователя.
В следующей статье мы глубже погрузимся в мир переменных и типов данных, чтобы научиться хранить не только числа и строки, но и гораздо более сложную информацию.