Денис Злобин

Урок 2. Первая программа на С++

Разберём первую программу на С++, которую ты успешно написал, собрал и запустил на Уроке 1. Напомню текст программы:

#include <iostream>

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

Давай разберём каждую строчку из текста этой программы.

Важное замечание. Изучение С++ — это всегда компромисс: нужно выбирать между глубиной изучения теоретической базы и практикой. В этом курсе на первом месте будет стоять практика: сначала мы будем писать код или разбирать какие-то задачи, а только потом я буду давать теорию на пройденную тему. При этом я постараюсь давать теорию без лишнего занудства и только в тех объёмах, которые необходимы для прохождения собеседования.

1 строка — подключение библиотеки iostream. Пока тебе достаточно запомнить, что #include — это директива, т.е. указание компилятору подключить библиотеку iostream. Не волнуйся, подробнее об этапах сборки ты узнаешь в одном из следующих уроков.

Что такое библиотека? Зачем её подключать? Библиотека — это код, который кто-то написал для тебя. Ты можешь подключить библиотеку в свой проект и использовать уже кем-то написанный код. В данном примере мы подключили библиотеку iostream, которая входит в стандартную поставку компилятора С++.

Что такое компилятор? Пока тебе достаточно знать, что компилятор — это программа, которая переводит код на С++, который ты написал, на язык, который понимает компьютер. В результате работы компилятора получается исполняемый модуль программы, т.е. файл, который можно запустить. После того как ты запустишь исполняемый файл, код, который ты написал, а компилятор перевёл на язык машины, будет выполнен.

Вспомним команду на сборку этой программы из предыдущего урока:

g++ main.cpp

main.cpp — это имя файла, в котором содержится написанный нами код g++ — это компилятор для исходного кода на языке С++

Т.е. эту команду можно расшифровать как «g++, ты компилятор, поэтому возьми файл main.cpp и сделай из него исполняемый модуль».

В результате компиляции получится файл a.out — это имя исполняемого файла в Linux по умолчанию, если имя исполняемого файла не было указано при компиляции.

Так зачем мы подключили iostream? Мы подключили библиотеку iostream для того, чтобы использовать функционал вывода в консоль — std::cout

5 строчка нашей программы — это печать в консоль строки «Hello, world!». Разберём эту строку подробнее:

std::cout << "Hello, world!\n";

std::cout — пока назовём это сущностью из библиотеки iostream, которая позволит нам напечатать символы в консоль << — пока будем его называть оператором вывода в консоль “Hello, world!\n” — в двойных кавычках находится строчка, которую мы хотим вывести в консоль, и спецсимвол \n — символ перехода на новую строку — после вывода строки «Hello, world!» любой следующий символ в консоли будет печататься на новой строке. Говоря занудным языком, «\n переводит каретку на новую строку». ; — каждая операция в С++ должна заканчиваться точкой с запятой. Это закон =)

main Нам осталось разобрать, что такое

int main()
{
}

Это объявление и определение функции main.

Что такое функция? В книгах и сети много определений, я предложу такое определение.

Функция — это именованный блок кода.

Именованный значит, что у него есть имя, а значит, мы можем обратиться по «имени» к этому блоку кода.

Функция main — особенная. Во-первых, она обязательно должна быть (и обязательно в одном экземпляре) в любой программе на С++, иначе компилятор просто откажется собирать программу. Во-вторых, к main по «имени» обращается сама операционная система, когда пытается запустить нашу программу! Ещё main называют «точкой входа» — очень удачное название, т.к. именно с функции main начинается выполнение нашей программы!

Строка int main() называется объявлением функции. Объявление функции записывается следующим образом:

тип_возврата имя_функции(аргументы_функции)

Тип возврата Это тип значения, которое возвращает функция: функция main должна возвращать значение типа int.

Что такое int? Пока будем считать, что int — это тип значения, который соответствует целому числу в математике. Т.е. функция main должна возвращать целое число.

Что значит возвращать? Канонически функция main должна быть записана следующим образом:

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

Что такое return? return — ключевое слово языка С++, с помощью которого функция прекращает своё выполнение и возвращает значение.

Современные компиляторы автоматически умеют добавлять строчку return 0; поэтому её можно не писать. Функция main может возвращать целое число. По стандарту: 0 — если работа функции завершилась успешно, любое ненулевое значение (например, 1) — если при работе функции возникла ошибка. Оба значения возврата (0 или 1) могут быть обработаны после завершения работы программы.

Имя функции В рамках этого урока я скажу лишь, что имя функции main уникально, оно должно быть записано без изменений, иначе операционная система просто не найдёт точку входа в нашу программу.

В круглых скобках записываются аргументы функции. Мы пока опустим этот момент и обязательно вернёмся к нему позже.

Фигурные скобки, которые идут после объявления функции, содержат тело функции — т.е. код, который будет выполнен при вызове функции.

Объявление функции плюс тело функции называется определением функции.

На этом, пожалуй, всё, что тебе нужно знать о своей первой программе на С++. До встречи на следующем уроке!