1.1 – Инструкции и структура программы на C++

Добавлено 27 марта 2021 в 21:31

Введение в главу

Добро пожаловать в первую основную главу данной серии обучающих руководств о C++!

В этой главе мы сначала рассмотрим ряд тем, которые важны для каждой программы на C++. Поскольку тем, которые нужно охватить, довольно много, мы рассмотрим большую часть на довольно поверхностном (достаточном для понимания) уровне. Цель этой главы – помочь вам понять, как строятся простейшие программы на C++. К концу главы вы сможете писать свои собственные простые программы.

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

Для того чтобы продолжительность урока была управляемой, темы могут быть разделены на несколько последующих уроков. Если вам кажется, что какой-то важный концепт не рассмотрен в уроке, то, возможно, он будет рассмотрен в следующем.

Инструкции

Компьютерная программа – это последовательность инструкций, которые говорят компьютеру, что делать. Инструкция (оператор, statement) заставляет программу выполнять какое-либо действие.

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

Большинство (но не все) инструкций в C++ заканчиваются точкой с запятой. Если вы видите строку, оканчивающуюся точкой с запятой, вероятно, это инструкция.

В языке высокого уровня, таком как C++, одна инструкция может скомпилироваться в большое количество инструкций машинного кода.

Для продвинутых читателей


В C++ есть много разных типов инструкций:

  1. инструкции объявления;
  2. инструкции переходов;
  3. инструкции выражений;
  4. составные инструкции;
  5. инструкции выбора (условия);
  6. инструкции итерации (циклы);
  7. блоки попыток (try).

К тому времени, когда вы прочтете эту серию статей, вы поймете, что всё это такое!

Функции и функция main

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

Правило


Каждая программа на C++ должна иметь специальную функцию с именем main (все буквы в нижнем регистре). Когда программа запускается, операторы внутри main выполняются в последовательном порядке.

Программы обычно завершают работу (завершают выполнение), когда выполняется последняя инструкция внутри функции main (хотя в некоторых случаях программы могут прерваться преждевременно или выполнить после этого некоторую очистку).

Функции обычно пишутся для выполнения определенной работы. Например, функция с именем "max" может содержать инструкции, определяющие, какое из двух чисел больше. Функция с именем "calculateGrade" может вычислять оценку учащегося на основе набора результатов тестов. Вскоре мы поговорим о функциях намного больше, поскольку они являются наиболее часто используемым инструментом организации в программе.

Примечание автора


При обсуждении функций довольно распространенным сокращением является добавление пары круглых скобок в конец имени функции. Например, если вы видите термин main() или doSomething(), это сокращение для функций с именами main или doSomething соответственно. Это помогает отличать функции от других типов объектов (например, переменных) без необходимости каждый раз писать слово «функция».

Препарирование программы HelloWorld!

Теперь, когда у вас есть краткое представление о том, что такое инструкции и функции, давайте вернемся к нашей программе «Hello world» и более подробно рассмотрим, что делает каждая строка.

#include <iostream>
 
int main()
{
   std::cout << "Hello world!";
   return 0;
}

Строка 1 – это особый тип строки, называемый директивой препроцессора. Эта директива препроцессора указывает, что мы хотели бы использовать содержимое библиотеки iostream, которая является частью стандартной библиотеки C++, которая позволяет нам читать и записывать текст из и в консоль. Эта строка нужна нам для использования std::cout в строке 5. Удаление этой строки привело бы к ошибке компиляции в строке 5, поскольку иначе компилятор не узнал бы, что такое std::cout.

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

Строка 3 сообщает компилятору, что мы собираемся написать (определить) функцию с именем main. Как вы узнали ранее, каждая программа на C++ должна иметь функцию main, иначе она не сможет компилироваться.

Строки 4 и 7 сообщают компилятору, какие строки являются частью функции main. Всё, что находится между открывающей фигурной скобкой в строке 4 и закрывающей фигурной скобкой в строке 7, считается частью функции main. Это называется телом функции.

Строка 5 – это первая инструкция в функции main и первая инструкция, которая будет выполняться при запуске нашей программы. std::cout (что означает «вывод символов») и оператор << позволяют нам отправлять буквы или числа на консоль для вывода. В этом случае мы отправляем текст «Hello world!», который будет выведен на консоль. Эта инструкция создает видимый вывод программы.

Строка 6 – это инструкция (оператор) возврата. Когда выполняемая программа завершает работу, она отправляет значение обратно в операционную систему, чтобы указать, успешно она выполнилась или нет. Этот конкретный оператор return возвращает операционной системе значение 0, что означает «всё прошло хорошо!». Это последняя выполняемая инструкция в программе.

Все программы, которые мы напишем, будут следовать этому общему шаблону или его разновидностям.

Примечание автора


Если часть (или всё из) приведенного выше объяснения сбивает вас с толку, то этого можно было ожидать на данном этапе. Это было просто для краткого обзора. В последующих уроках будут подробно рассмотрены все вышеперечисленные темы с большим количеством дополнительных объяснений и примеров.

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

Hello world!

Если у вас возникнут проблемы при компиляции или запуске этой программы, ознакомьтесь с уроком «0.8 – Несколько основных проблем C++».

Синтаксис и синтаксические ошибки

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

В C++ тоже есть синтаксис: правила о том, как ваши программы должны быть построены, чтобы считаться корректными. Когда вы компилируете свою программу, компилятор отвечает за то, чтобы ваша программа следовала базовому синтаксису языка C++. Если вы нарушите это правило, компилятор пожалуется, когда вы попытаетесь скомпилировать свою программу, и выдаст вам синтаксическую ошибку.

Давайте посмотрим, что произойдет, если мы опустим точку с запятой в строке 5 программы «Hello world», например:

#include <iostream>
 
int main()
{
   std::cout << "Hello world!"
   return 0;
}

Не стесняйтесь компилировать самостоятельно эту плохо сформированную программу.

Visual Studio выдает следующую ошибку (ваш компилятор может генерировать сообщение об ошибке с другой формулировкой):

c:\vcprojects\test1.cpp(6): error C2143: syntax error : missing ';' before 'return'

Это означает, что у вас есть синтаксическая ошибка в строке 6: компилятор ожидал точку с запятой перед оператором return, но не нашел ее. Хотя компилятор сообщит вам, какую строку кода он компилировал, когда обнаружил синтаксическую ошибку, на самом деле пропуск может быть в предыдущей строке. В этом случае ошибка фактически находится в конце строки 5 (компилятор не обнаружил проблему до строки 6).

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

Вы можете попробовать удалить символы или даже целые строки из программы «Hello world», чтобы увидеть различные типы возникающих ошибок. Попробуйте восстановить отсутствующую точку с запятой в конце строки 5, а затем удалите строки 1, 3 или 4 и посмотрите, что произойдет.

Время для теста

Следующий тест призван укрепить ваше понимание представленного выше материала.


Вопрос 1

Что такое инструкция (statement)?

Инструкция в компьютерной программе – это аналог предложения в естественном языке. Она сообщает компьютеру выполнить какое-либо действие.


Вопрос 2

Что такое функция?

Функция – это набор инструкций, которые выполняются последовательно.


Вопрос 3

Как называется функция, которая должна быть во всех программах?

main().


Вопрос 4

Где начинается выполнение, когда запускается программа?

Выполнение начинается с первой инструкции внутри функции main.


Вопрос 5

Каким символом часто заканчиваются инструкции в C++?

Точка с запятой (;).


Вопрос 6

Что такое синтаксическая ошибка?

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


Вопрос 7

Что такое стандартная библиотека C++?

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

Теги

C++ / CppLearnCppДля начинающихОбучениеПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.