Ссылки на прошлые части и/или следующие части:
Часть 1 (введение и первая программа)
Часть 2 (стандартный вывод и строки)
Операторы и приоритет
C ++ позволяет нам выполнять все основные арифметические операции: сложение, вычитание, умножение и деление, используя обычные символы (+, -, *, /). Символ звезды, также известный как звёздочка, является оператором умножения, а косая черта - оператором деления. Для этих операторов применяются обычные арифметические приоритеты: операторы умножения и деления имеют более высокий приоритет, чем операторы сложения и вычитания.
Поэтому программа
int main()
{
cout << 10+6/3;
}
выведет следующий результат:
STDOUT:
12
Поскольку оператор деления имеет приоритет над оператором сложения, вычисление выражения 6/3 выполняется перед сложением.
Оператор - это просто символ, представляющий операцию. В C ++ и большинстве других языков программирования операторы являются особыми символами, потому что каждый из них имеет определенное и заранее известное значение.
Вполне возможно вычислить несколько выражений одним оператором:
int main()
{
cout << 9-7 << 3*6;
}
Данная программа выведет следующее:
STDOUT:
218
Откуда вдруг появилось это число 218? Это довольно просто: 9-7 равняется 2, а 3*6 равняется 18. Поэтому сначала выводится число 2, а затем число 18. Это похоже на число 218, потому что мы не разделили эти два числа. Мы можем сделать это строкой, содержащей только один пробел:
cout << 9-7 << " " << 3*6;
В результате получим следующее:
STDOUT:
2 18
Выражения, первичные и составные и круглые скобки
Круглые скобки можно использовать, чтобы сгруппировать выражения:
cout << (7 - (3-2)*5)*4;
В результате получим следующий результат:
STDOUT:
8
Однако мы должны предупредить Вас, что для группировки выражений в C ++ запрещено использовать квадратные скобки. Также не разрешается использовать фигурные скобки. Например:
cout << {7 - [3-2]*5}*4; // неверно
Давайте теперь объясним структуру выражений. Самый простой вид выражения - это буквальное выражение. То есть выражение, для получения значения которого нам не нужно производить никаких вычислений.
Например, число 10 является выражением само по себе, и это буквальное выражение. Его значение очевидно равно 10. Вот пример:
int main()
{
cout << "Это число является буквальным выражением: " << 1 << endl;
cout << "Эта строка также является буквальным выражением." << endl;
}
В результате получим следующее:
STDOUT:
Это число является буквальным выражением: 1
Эта строка также является буквальным выражением.
Как видно из примера, строки являются буквальными выражениями, потому что значение строки буквально указывается между кавычками.
Выше были приведены примеры, так называемых, первичных выражений. Выражения могут быть либо первичными, либо составными. Последние создаются путем объединения или изменения других выражений с помощью операторов. Например, выражение 1 + 5 * 3 является составным выражением. Оно состоит из буквального выражения 1, оператора + и составного выражения 5 * 3, которое в свою очередь состоит из буквального выражения 5, оператора умножения и буквального выражения 3.
Порядок
Вот программа, которая вычисляет количество часов в неделе:
int main()
{ cout << "В неделе " << 24*7 << " часов." << endl; }
Может показаться необычным то, что мы поместили фигурные скобки в одну строку с первым выражением, но это не влияет на конечный результат.
Вся предыдущая программа может быть вообще записана в одну строку:
int main() { cout << "В неделе " << 24*7 << " часов." << endl; }
или в несколько строк:
int
main(
){ cout <<
"В неделе " << 24
*7 << " часов."
<<
endl;
}
C ++ - язык свободный, что означает, что разрешено разделять программы на любое количество строк и любым способом (правда ограничения и тут есть: запрещено разделять слова или буквальные выражения на несколько строк). Тем не менее, "Гильдия волшебников" заявила о том, что все программы должны быть написаны упорядоченно, чтобы их было легче читать, что в конечном итоге должно привести к меньшему количеству потенциально катастрофических ошибок. Последний пример противоречит этому заявлению, поэтому я больше не буду писать такие беспорядочные программы, и Вы тоже :)
Выполнение написанной ранее программы приводит к следующему результату:
STDOUT:
В неделе 168 часов.
Первая ошибка
Взгляните на следующую программу и попробуйте угадать, что будет выведено в результате её работы:
int main()
{
cout << (4-(3+7)*7)*5
}
Из-за небольшой, но очень распространенной ошибки, эта программа не может быть выполнена. Тот факт, что языки программирования имеют строгие правила, не должен никого удивлять. Ошибка в этой программе проста - мы забыли завершить оператор cout точкой с запятой.
После внесения корректировок и запуска программы Вы должны получить следующее:
STDOUT:
-330
Попробуйте теперь сами найти две ошибки в следующей программе:
int main()
{
cout 4+(1-6)*9)*2;
}
Итерация
Последняя программа этой части призвана показать Вам принцип работы циклов в C ++. Как мы уже обсуждали, операторы в программе выполняются последовательно. Однако существуют специальные операторы, которые могут изменить порядок выполнения. Одним из таких операторов является оператор итерации.
Основным оператором итерации в C++ является оператор "for". На первый взгляд, "for" может показаться немного пугающим, поскольку использовать его немного сложнее, чем операторы, которые мы видели до сих пор. Тем не менее, давайте посмотрим, как с ним работать:
int main()
{
cout << "Я пою" << endl;
for (double i=1;i<=3;i++)
{
cout << "Плыви плыви" << endl;
cout << "моя маленькая лодка" << endl;
}
cout << "Пока я ловлю рыбу" << endl;
}
Как Вы можете заметить, после слова "for" следует пара круглых скобок, заключающих в себе довольно загадочный фрагмент кода. Пока мы оставим его магию без внимания и обратимся к числу 3, которое обозначает количество повторений. Следовательно, оператор for требует выполнения трех итераций (то есть повторений).
Последовательность операторов внутри пары фигурных скобок называется блоком операторов. Оператор "for" управляет блоком операторов, повторяя его столько раз, сколько было указано. На каждой итерации операторы в блоке будут выполняться в обычном порядке, один за другим.
Вот что напечатает программа в результате работы:
STDOUT:
Я пою
Плыви плыви
моя маленькая лодка
Плыви плыви
моя маленькая лодка
Плыви плыви
моя маленькая лодка
Пока я ловлю рыбу
Вы должно быть задаётесь вопросом: почему мы так поверхностно рассмотрели оператор "for" в этой части туториала?
К сожалению, на данном этапе невозможно дать более подробное объяснение без использования огромного количества упрощений, которые подвергли бы читателя риску неверного понимания концепции конструкции.
Напоследок стоит упомянуть, что оператор "for" не должен заканчиваться точкой с запятой, а также число итераций должно быть определено целым положительным числом.