Читаем Программирование. Принципы и практика использования C++ Исправленное издание полностью

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

++counter

означает

counter = counter + 1

Существует множество способов изменения текущего значения переменной. Например, мы можем захотеть прибавить 7, вычесть 9 или умножить на 2. Такие операции также непосредственно поддерживаются в языке С++. Рассмотрим пример.

a += 7; // означает a = a+7

b –= 9; // означает b = b–9

c *= 2; // означает c = c*2

В целом для любого бинарного оператора oper выражение a oper= b означает a= a oper b (см. раздел А.5). Благодаря этому правилу можно составить операторы +=, –=, *=, /= и %=. Эта компактная запись позволяет просто и ясно выражать свои идеи. Например, во многих приложениях операторы *= и /= означают масштабирование.

<p id="AutBody_Root032"><strong>3.6.1. Пример: поиск повторяющихся слов</strong></p>

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

int main

{

  int number_of_words = 0;

  string previous = " ";  // не слово

  string current;

  while (cin >> current) {

    ++number_of_words;    // увеличиваем счетчик слов

    if (previous == current)

      cout << " количество слов " << number_of_words

      << " repeated: " << current << '\n';

    previous = current;

  }

}

Счетчик слов инициализируется нулем. Каждый раз, когда мы обнаруживаем слово, мы увеличиваем счетчик.

++number_of_words;

Таким образом, первое слово имеет номер 1, второе — 2 и т.д. Эту операцию можно записать иначе:

number_of_words += 1;

или даже так:

number_of_words = number_of_words+1;

но выражение ++number_of_words короче и выражает идею инкрементации намного проще. 

  Обратите внимание на то, как эта программа похожа на пример из раздела 3.5.1. Очевидно, что мы просто взяли программу из раздела 3.5.1 и слегка переделали ее для своих целей. Этот способ очень распространен: если нам нужно решить какую-то задачу, мы ищем похожую и используем готовое решение, внося в него необходимые изменения. Не начинайте разработку программы с нуля, если есть такая возможность. Использование предыдущего варианта программы в качестве основы для модификации часто экономит много времени и сил.

<p id="AutBody_Root033"><strong>3.7. Имена</strong></p>

Мы даем своим переменным имена, чтобы запоминать их и ссылаться на них в других частях программы. Какие сущности могут иметь имена в языке С++? В программе на языке С++ имя начинается с буквы и содержит только буквы, цифры и символ подчеркивания. Приведем несколько примеров.

x

number_of_elements

Fourier_transform

z2

Polygon

Приведенные ниже слова не являются именами.

2x             // имя должно начинаться с буквы

time$to$market // символ $ — не буква, не цифра и не подчеркивание

Start menu     // пробел — не буква, не цифра и не подчеркивание

Когда мы говорим, что эти последовательности символов не являются именами, то имеем в виду, что компилятор языка С++ не считает их именами.

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

Имена чувствительны к регистру; иначе говоря, буквы, набранные в нижнем и верхнем регистрах, отличаются друг от друга, так что x и X — это разные имена. Приведем небольшую программу, в которой сделано по крайней мере четыре ошибки.

#include "std_lib_facilities.h"

int Main

{

  STRING s = "Прощай, жестокий мир!";

  cOut << S << '\n';

}

Как правило, использование имен, отличающихся лишь регистром, например one и One, — плохая идея; это не может ввести компилятор в заблуждение, но легко сбивает с толку самого программиста.

ПОПРОБУЙТЕ

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT