Урок 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 уникально, оно должно быть записано без изменений, иначе операционная система просто не найдёт точку входа в нашу программу.
В круглых скобках записываются аргументы функции. Мы пока опустим этот момент и обязательно вернёмся к нему позже.
Фигурные скобки, которые идут после объявления функции, содержат тело функции — т.е. код, который будет выполнен при вызове функции.
Объявление функции плюс тело функции называется определением функции.
На этом, пожалуй, всё, что тебе нужно знать о своей первой программе на С++. До встречи на следующем уроке!