Компьютерная программа — это последовательность инструкций, которые сообщают компьютеру, что ему нужно сделать.
Стейтменты
Cтейтмент (англ. «statement») — это наиболее распространенный тип инструкций в программах. Это и есть та самая инструкция, наименьшая независимая единица в языке С++. Стейтмент в программировании — это то же самое, что и «предложение» в русском языке. Мы пишем предложения, чтобы выразить какую-то идею. В языке C++ мы пишем стейтменты, чтобы выполнить какое-то задание. Все стейтменты в языке C++ заканчиваются точкой с запятой.
Есть много разных видов стейтментов в языке C++. Рассмотрим самые распространенные из них:
1 2 3 |
int x; x = 5; std::cout << x; |
int х
— это стейтмент объявления (англ. «statement declaration»). Он сообщает компилятору, что х
является переменной. В программировании каждая переменная занимает определенное число адресуемых ячеек в памяти в зависимости от её типа. Минимальная адресуемая ячейка — байт. Переменная типа int может занимать до 4 байт, т.е. до 4 адресуемых ячеек памяти. Все переменные в программе должны быть объявлены, прежде чем использованы. Мы детально поговорим о переменных на следующих уроках.
х = 5
— это стейтмент присваивания (англ. «assignment statement»). Здесь мы присваиваем значение 5
переменной х
.
std::cout << x;
— это стейтмент вывода (англ. «output statement»). Мы выводим значение переменной х
на экран.
Выражения
Компилятор также способен обрабатывать выражения. Выражение (англ. «expression») — это математический объект, который создается (составляется) для проведения вычислений и нахождения соответствующего результата. Например, в математике выражение 2 + 3
имеет значение 5
. Выражения в языке С++ могут содержать:
отдельные цифры и числа (например, 2
, 45
);
буквенные переменные (например, х
, у
);
операторы, в т.ч. математические (например, +
, -
);
функции.
Выражения могут состоять как из единичных символов — цифр или букв (например, 2
или х
), так и из различных комбинаций этих символов с операторами (например, 2 + 3
, 2 + х
, х + у
или (2 + х) * (y - 3)
). Для наглядности разберем простой корректный стейтмент присваивания х = 2 + 3;
. Здесь мы вычисляем результат сложения чисел 2 + 3
, который затем присваиваем переменной х
.
Функции
В языке C++ стейтменты объединяются в блоки — функции. Функция — это последовательность стейтментов. Каждая программа, написанная на языке C++, должна содержать главную функцию main(). Именно с первого стейтмента, находящегося в функции main(), и начинается выполнение всей программы. Функции, как правило, выполняют конкретное задание. Например, функция max() может содержать стейтменты, которые определяют большее из заданных чисел, а функция calculateGrade() может вычислять среднюю оценку студента по какой-либо дисциплине.
Совет: Всегда размещайте функцию main() в файле .cpp с именем, совпадающим с именем проекта. Например, если вы пишете программу Chess, то поместите вашу функцию main() в файл chess.cpp.
Библиотеки
Библиотека — это набор скомпилированного кода (например, функций), который был «упакован» для повторного использования в других программах. С помощью библиотек можно расширить возможности программ. Например, если вы пишете игру, то вам придется подключать библиотеки звука или графики (если вы самостоятельно не хотите их создавать).
Язык C++ не такой уж и большой, как вы могли бы подумать. Тем не менее, он идет в комплекте со Стандартной библиотекой С++, которая предоставляет дополнительный функционал. Одной из наиболее часто используемых частей Стандартной библиотеки C++ является библиотека iostream, которая позволяет выводить данные на экран и обрабатывать пользовательский ввод.
Пример простой программы
Теперь, когда у вас есть общее представление о том, что такое стейтменты, функции и библиотеки, давайте рассмотрим еще раз программу «Hello, world!»:
1 2 3 4 5 6 7 |
#include <iostream> int main() { std::cout << "Hello, world!"; return 0; } |
Строка №1: Специальный тип инструкции, который называется директивой препроцессора. Директивы препроцессора сообщают компилятору, что ему нужно выполнить определенное задание. В этом случае мы говорим компилятору, что хотели бы подключить содержимое заголовочного файла <iostream> к нашей программе. Подключение заголовочного файла <iostream> дает нам возможность использовать функционал библиотеки iostream, что, в свою очередь, позволяет выводить нам данные на экран.
Строка №2: Пустое пространство, которое игнорируется компилятором.
Строка №3: Объявление главной функции main().
Строки №4 и №7: Указываем компилятору область функции main(). Всё, что находится между открывающей фигурной скобкой в строке №4 и закрывающей фигурной скобкой в строке №7 — считается содержимым функции main().
Строка №5: Наш первый стейтмент (заканчивается точкой с запятой) — стейтмент вывода. std::cout
— это специальный объект, используя который мы можем выводить данные на экран. <<
— это оператор вывода. Всё, что мы отправляем в std::cout
, — выводится на экран. В этом случае, мы выводим текст "Hello, world!"
.
Строка №6: Оператор возврата return. Когда программа завершает свое выполнение, функция main() передает обратно в операционную систему значение, которое указывает на результат выполнения программы: успешно ли прошло выполнение программы или нет.
Если оператор return возвращает число 0
, то это значит, что всё хорошо! Ненулевые возвращаемые значения указывают на то, что что-то пошло не так и выполнение программы было прервано. Об операторе return мы еще поговорим детально на соответствующем уроке.
Синтаксис и синтаксические ошибки
Как вы, должно быть, знаете, в русском языке все предложения подчиняются правилам грамматики. Например, каждое предложение должно заканчиваться точкой. Правила, которые регулируют построение предложений, называются синтаксисом. Если вы не поставили точку и записали два предложения подряд, то это является нарушением синтаксиса русского языка.
Язык C++ также имеет свой синтаксис: правила написания кода/программ. При компиляции вашей программы, компилятор отвечает за то, чтобы ваша программа соответствовала правилам синтаксиса языка C++. Если вы нарушили правила, то компилятор будет ругаться и выдаст вам ошибку.
Например, давайте посмотрим, что произойдет, если мы не укажем в конце стейтмента точку с запятой:
1 2 3 4 5 6 7 |
#include <iostream> int main() { std::cout << "Hello world!" return 0; } |
Результат:
E0065: требуется точка с запятой ";"
C2143: синтаксическая ошибка: отсутствие ";" перед "}"
Допущена синтаксическая ошибка в строке №6: мы забыли указать точку с запятой перед оператором return. В этом случае ошибка на самом деле в конце строки №5. В большинстве случаев компилятор правильно определяет строку с ошибкой, но есть ситуации, когда ошибка не заметна вплоть до начала следующей строки.
Синтаксические ошибки нередко совершаются при написании программ. К счастью, большинство из них можно легко найти и исправить. Но следует помнить, что программа может быть полностью скомпилирована и выполнена только при отсутствии ошибок.
Тест
Теперь давайте проверим то, как вы усвоили материал текущего урока. Ответьте на следующие вопросы:
В чём разница между стейтментом и выражением?
В чём разница между функцией и библиотекой?
Чем заканчиваются стейтменты в языке С++?
Что такое синтаксическая ошибка?
Ответы
Чтобы просмотреть ответ, кликните на него мышкой.
Ответ №1
Стейтмент — это «полное предложение», которое сообщает компилятору, что ему нужно выполнить определенное задание. Выражение всегда имеет результат (исключение — деление на ноль) и является частью стейтмента.
Ответ №2
Функция — это последовательность стейтментов для выполнения определенного задания. Библиотека — это последовательность функций, которые могут повторно использоваться в других программах.
Ответ №3
Точкой с запятой (;
).
Ответ №4
Синтаксическая ошибка — это ошибка, указывающая на нарушение правил грамматики языка С++.
Разбор программы > «Строка №2»
Если присутствует пустое место в программе и оно игнорируется компилятором, то зачем вообще нужны эти пустые места?
Возможно я забегают вперёд (или что-то забыл в прошлых уроках) но предполагаю, что делается это для «визуала» — упрощения работы с кодом. А на оптимизацию влияет присутствие/отсутствие?
Спасибо вам, уроки просто бомба. Кайфую читая всё это добро. Поражён качеством.
Для удобного чтения кода и чтобы он не сливался в одну целую кашку.
Не хочу обидеть, но интересно почему у вас «оператор» в учебнике называется «стэйтмент»
Стейтмент — это инструкция, строка кода, которая может состоять с нескольких операторов, текста и других конструкция языка программирования.
Оператор — это 1 объект.
Спасибо. Очень все понятно.
Хочу отметить качество перевода – по тексту даже и не подумал, что источник был англоязычный. По сложившейся в комментах традиции: если осилю курс – автору обязательно задоначу 🙂
Огромное спасибо Автору за подробные и понятные уроки!
Решил поучится программированию, очень рад что зашел именно на этот курс))))
Юрий, огромное спасибо вам за такие прекрасные уроки с разором понятий, приведением английских терминов.
Вы второй такой замечательный автор в рунете: создатель матпрофи и вы)
Спасибо огромное за ваш труд ! Очень качественный учебный материал.
Пожалуйста)
Юрий я вам благодарен за качественно написанный урок. Спасибо
Пожалуйста 🙂
> Например, каждое предложение должно оканчиваться точкой.
Нет. Варианта четыре: точка, многоточие, вопросительный и восклицательный знак. 🙂
Действительно, здесь я промахнулся 🙂
Юра, в этом уроке утверждается, мол, С++ не такой уж большой, но он укомплектован Стандартной библиотекой. Вопрос: а где она физически находится? Как туда заглянуть и взять что-нибудь "почитать"? Не в смысле поставить :: и вытащить нужный элемент, а в какой папке она лежит.
Программа написана не правильно! она будет вырубаться при запуске,
нужно было так:
У меня в Visual Studio не вырубается. Что делать, чтобы не вырубалось — рассказывается в уроке 7.
Программа написана правильно. "Вырубание" программы означает всего лишь то, что после завершения программы ее окно закрывается. В любой среде программирования есть настройки, которые позволяют изменить такое поведение консольной программы. Т.е. можно сделать так, что после завершения программы окно консоли останется открытым.
У него
не написан.
А программа не должна закрываться, так как у него прописано
А причем тут "у него"?
Исходная программа в Visual Studio 2017 действительно закроет окно сразу по завершении. В настройках есть пункт, который изменяет такое поведение. Ну или можно писать
На вкус и цвет товарища нет.
Великолепно ! Все подробно описано !
Но завтра надо почитать ещё раз …. Для большего усвоения .
Как успехи?