Перейти к содержимому
Topos Uranos

Краткое содержание

Этот урок разбирает минимальную программу на C++ на части и объясняет роль каждой из них. Директива включения объявляет, от каких частей библиотеки зависит программа, и каждый компонент требует собственного заголовочного файла, даже если иногда его приносит «транзитивно» другой; функция main служит точкой входа, а её возвращаемое значение есть код возврата, который получает система; пространство имён std объединяет имена библиотеки, и курс всегда пишет их с префиксом; инструкции заканчиваются точкой с запятой, фигурные скобки объединяют инструкции в блоки, а комментарии объясняют то, чего код не говорит сам. Урок завершается руководством по стилю, которому курс следует во всех своих программах, и способом читать чужой код, использующий std::cout и std::endl.

Цели обучения

  1. Распознавать в программе директиву включения, функцию main, инструкции, блоки и комментарии и объяснять роль каждого из этих элементов.
  2. Объяснять, что делает #include и почему каждый компонент библиотеки требует собственного заголовочного файла, даже если в определённом компиляторе программа компилируется без него.
  3. Исправлять программу с ошибками структуры (незакрытая фигурная скобка, пропущенная точка с запятой, пропущенный заголовочный файл) по сообщениям компилятора, читая их начиная с первого.
  4. Переписывать программу по руководству по стилю курса и обосновывать каждое изменение.

Минимальная программа

На предыдущем уроке программа была скомпилирована и запущена без разбора. Теперь она читается строка за строкой, потому что каждая строка отвечает отдельному требованию: одна требованию языка, другая требованию операционной системы, третья требованию того, кто читает код. Вот эта программа.

Программа на C++
// Первая программа: выводит одну строку и завершается.#include <print>​int main(){    std::println("Привет, мир");}
Вывод
Привет, мир

Первая строка есть комментарий: он начинается с двух косых черт и продолжается до конца строки, а компилятор его отбрасывает; он написан для того, кто будет читать программу. Вторая строка есть директива включения: она требует до компиляции подставить заголовочный файл <print>, где стандартная библиотека объявляет std::println. Пустая строка ни на что не влияет; она отделяет подготовку программы от её содержания. Четвёртая строка открывает функцию main, место, где начинается выполнение, а фигурная скобка в пятой строке открывает её блок, который закрывается в последней строке. Внутри блока одна-единственная инструкция, оканчивающаяся точкой с запятой: вызов std::println, который выводит текст в кавычках, а затем перевод строки.

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

ПримерЧасти, одна за другой

В программе с приветствием директива занимает строку 2; функция main занимает строки от 4 до 7; её блок идёт от фигурной скобки строки 5 до скобки строки 7; единственная инструкция находится в строке 6, а единственный комментарий в строке 1. Если удалить комментарий, программа компилируется так же и выводит то же самое; если удалить любую другую часть, она перестаёт компилироваться или перестаёт быть программой.