Структура программы

Лучший способ изучить язык программирования – это написать программы. Как правило, первая программа для начинающих – это программа под названием «Hello World», которая просто выводит «Hello World» на экран вашего компьютера. Хотя это очень просто, он содержит все основные компоненты программ на C ++:

1
2
3
4
5
6
7
// my first program in C++
#include <iostream>

int main()
{
  std::cout << "Hello World!";
}
Привет мир!

На левой панели выше показан код C ++ для этой программы. На правой панели отображается результат, когда программа выполняется компьютером. Серые цифры слева от панелей – это номера строк, чтобы облегчить обсуждение программ и исследование ошибок. Они не являются частью программы.

Давайте рассмотрим эту программу по строкам:

Строка 1: // my first program in C++
Два символа косой черты указывают на то, что остальная часть строки представляет собой комментарий, вставленный программистом, но который не влияет на поведение программы. Программисты используют их для включения кратких пояснений или замечаний относительно кода или программы. В этом случае это краткое вводное описание программы.
Строка 2: #include <iostream>
Строки, начинающиеся с символа hash ( #), являются директивами, читаемыми и интерпретируемыми так называемым препроцессором . Это специальные строки, которые интерпретируются до начала самой компиляции самой программы. В этом случае директива #include <iostream>предписывает препроцессору включать в себя раздел стандартного кода C ++, известный как header iostream , который позволяет выполнять стандартные операции ввода и вывода, такие как запись вывода этой программы (Привет мир) на экран.
Строка 3: пустая строка.
Пустые строки не влияют на программу. Они просто улучшают читаемость кода.
Строка 4: int main ()
Эта строка инициирует объявление функции. По сути, функция представляет собой группу операторов кода, которым дано имя: в этом случае это дает название «main» для группы приведенных ниже операторов кода. Функции будут подробно обсуждаться в более поздней главе, но, по сути, их определение вводится с последовательностью типа ( int), имени ( main) и пары круглых скобок ( ()), необязательно включающих параметры.

Эта функция называется mainспециальной функцией во всех программах на C ++; это функция, вызываемая при запуске программы. Выполнение всех программ на C ++ начинается с mainфункции, независимо от того, где функция фактически находится внутри кода.

Строки 5 и 7: {и}
Открытая скобка ( {) в строке 5 указывает начало mainопределения функции s, а замыкающая скобка ( }) в строке 7 указывает ее конец. Все между этими фигурными скобками является телом функции, который определяет, что происходит при mainвызове. Все функции используют фигурные скобки, чтобы указать начало и конец их определений.
Строка 6: std::cout << "Hello World!";
Эта строка является оператором C ++. Заявление – это выражение, которое может фактически вызвать некоторый эффект. Это мясо программы, определяющее ее фактическое поведение. Заявления выполняются в том же порядке, что и в теле функции.

Это утверждение состоит из трех частей: во- первых, std::cout, который идентифицирует й Andar д сharacter из положить устройство ( как правило, это экран компьютера). Во-вторых, оператор вставки ( <<), который указывает, что в него вставляется следующее std::cout. Наконец, предложение в кавычках («Hello world!») – это содержимое, вставленное в стандартный вывод.

Обратите внимание, что оператор заканчивается точкой с запятой (;). Этот символ знаменует окончание утверждения, точно так же, как период заканчивается предложением на английском языке. Все операторы C ++ должны заканчиваться символом с запятой. Одна из самых распространенных синтаксических ошибок в C ++ – это забыть закончить утверждение точкой с запятой.

Возможно, вы заметили, что не все строки этой программы выполняют действия при выполнении кода. Существует строка, содержащая комментарий (начиная с //). Существует строка с директивой для препроцессора (начиная с #). Существует строка, которая определяет функцию (в данном случае mainфункцию). И, наконец, строка с операторами, заканчивающимися точкой с запятой (вставка в cout), которая находилась внутри блока, ограниченного фигурными скобками ( { }mainфункции.

Программа была структурирована в разных строках и правильно отступом, чтобы было легче понять людей, читающих ее. Но C ++ не имеет строгих правил по отступов или о том, как разделить инструкции в разных строках. Например, вместо

1
2
3
4
int main ()
{
  std::cout << " Hello World!";
}

Мы могли бы написать:

 
int main () { std::cout << "Hello World!"; }

все в одной строке, и это имело бы то же значение, что и предыдущий код.

В C ++ разделение между операторами задается конечной точкой с запятой ( ;), причем разделение на разные строки не имеет значения для этой цели. Многие операторы могут быть написаны в одной строке, или каждое утверждение может быть в отдельной строке. Разделение кода в разных строках служит только для того, чтобы сделать его более понятным и схематичным для людей, которые могут его прочитать, но не влияют на фактическое поведение программы.

Теперь добавим дополнительное заявление в нашу первую программу:

1
2
3
4
5
6
7
8
// my second program in C++
#include <iostream>

int main ()
{
  std::cout << "Hello World! ";
  std::cout << "I'm a C++ program";
}
Привет мир! Я - программа на C ++

В этом случае программа выполнила две вставки std::coutв два разных оператора. Еще раз, разделение в разных строках кода просто дает большую читабельность программе, поскольку mainможет быть совершенно корректно определено следующим образом:

 
int main () { std::cout << " Hello World! "; std::cout << " I'm a C++ program "; }

Вместо этого исходный код можно было бы разделить на несколько строк кода:

1
2
3
4
5
6
7
int main ()
{
  std::cout <<
    "Hello World!";
  std::cout
    << "I'm a C++ program";
}

И результат снова будет таким же, как и в предыдущих примерах.

Директивы препроцессора (те, которые начинаются #) выходят за рамки этого общего правила, поскольку они не являются инструкциями. Это строки, которые читаются и обрабатываются препроцессором до начала собственно компиляции. Директивы препроцессора должны быть указаны в их собственной строке и, поскольку они не являются инструкциями, не должны заканчиваться точкой с запятой ( ;).

 

Комментарии

Как отмечалось выше, комментарии не влияют на работу программы; однако они предоставляют важный инструмент для документирования непосредственно в исходном коде, что делает программа и как она работает.

C ++ поддерживает два способа комментирования кода:

1
2
// line comment
/* block comment */ 

Первый из них, известный как комментарий линии , отбрасывает все, от того, где пара косых черт ( //) найдена до конца той же линии. Второй, известный как комментарий блока , отбрасывает все между /*символами и первым появлением */символов, с возможностью включения нескольких строк.

Давайте добавим комментарии к нашей второй программе:

1
2
3
4
5
6
7
8
9
10
/* my second program in C++
   with more comments */

#include <iostream>

int main ()
{
  std::cout << "Hello World! ";     // prints Hello World!
  std::cout << "I'm a C++ program"; // prints I'm a C++ program
}
Привет мир! Я - программа на C ++

Если комментарии включены в исходном коде программы без использования комбинации символов комментария ///*или */, компилятор принимает их , как если бы они были выражение C ++, скорее всего , в результате чего компиляции потерпеть неудачу с одним, или нескольких, сообщениями об ошибках.

Использование пространства имен std

Если вы уже видели C ++-код, возможно, вы видели coutего вместо него std::cout. Оба называют один и тот же объект: первый использует свое неквалифицированное имя ( cout), а второе – непосредственно в пространстве имен std (как std::cout).

coutявляется частью стандартной библиотеки, и все элементы в стандартной библиотеке C ++ объявляются в том, что называется пространством имен : пространство имен std.

Чтобы ссылаться на элементы в stdпространстве имен, программа должна либо квалифицировать каждое использование элементов библиотеки (как это было сделано с помощью префикса coutс помощьюstd::), или ввести видимость его компонентов. Наиболее типичным способом введения видимости этих компонентов является использование объявлений :

 
using namespace std;

Вышеприведенное объявление позволяет stdполучить доступ к любым элементам в пространстве имен безоговорочно (без std::префикса).

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

1
2
3
4
5
6
7
8
9
// my second program in C++
#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World! ";
  cout << "I'm a C++ program";
}
Привет мир! Я - программа на C ++

Оба способа доступа к элементам stdпространства имен (явная квалификация и использование объявлений) действительны в C ++ и вызывают точно такое же поведение. Для простоты и повышения удобочитаемости примеры в этих учебниках будут чаще использовать этот последний подход с использованием объявлений, хотя обратите внимание, что явная квалификация является единственным способом гарантировать, что столкновения имен никогда не произойдут.

Пространства имен объясняются более подробно в следующей главе.

Залишити відповідь