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

// ввод и сравнение имен

int main

{

  cout << "Пожалуйста, введите два имени\n";

  string first;

  string second;

  cin >> first >> second;    // считываем две строки

  if (first == second) cout << " имена совпадают \n";

  if (first < second)

    cout << first << " по алфавиту предшествует " << second <<'\n';

  if (first > second)

    cout << first << " по алфавиту следует за " << second <<'\n';

}

Здесь для выбора действия в зависимости от условия использована инструкция if, смысл которой будет подробно изложен в разделе 4.4.1.1.

<p id="AutBody_Root029"><strong>3.5. Присваивание и инициализация</strong></p>

  Одним из наиболее интересных операторов является присваивание, которое обозначается символом =. Этот оператор присваивает переменной новое значение. Рассмотрим пример.

int a = 3; // начальное значение переменной a равно 3

a = 4; // переменная а принимает значение 4

       //("становится четверкой")

int b = a; // начальное значение переменной b является копией

           // значения переменной a (т.е. 4)

b = a+5; // переменная b принимает значение a+5 (т.е. 9)

a = a+7; // переменная a принимает значение a+7 (т.е. 11)

  Последнее присваивание заслуживает внимания. Во-первых, оно ясно показывает, что знак “равно” не означает равенства, поскольку очевидно, что а не равно а+7. Этот знак означает присваивание, т.е. помещение в переменную нового значения. Рассмотрим подробнее, что происходит при выполнении инструкции a= a+7.

1. Сначала получаем значение переменной a; оно равно целому числу 4.

2. Затем добавляем к четверке семерку, получаем целое число 11.

3. В заключение записываем значение 11 в переменную a.

Эту операцию можно продемонстрировать также на примере строк.

string a = "alpha"; // начальное значение переменной a равно "alpha"

a = "beta"; // переменная a принимает значение "beta"

            // (становится равной "beta")

string b = a; // начальное значение переменной b является

              // копией значения переменной a (т.е. "beta")

b = a+"gamma"; // переменная b принимает значение a+"gamma"

               // (т.е. "betagamma")

a = a+"delta"; // переменная a принимает значение a+"delta"

               // (т.е. "betadelta")

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

• Инициализация (присваивание переменной ее начального значения).

• Присваивание (запись в переменную нового значения).

Эти операции настолько похожи, что в языке С++ для них используется одно и то же обозначение.

int y = 8;           // инициализация переменной y значением 8

x = 9;               // присваивание числа 9 переменной x

string t = "howdy!"; // инициализация переменной t значением "howdy!"

s = "G'day";         // присваивание переменной s значения "G’day" 

Однако с логической точки зрения присваивание и инициализация различаются. Например, инициализация всегда происходит одновременно с определением типа (например, int или string), а присваивание нет. В принципе инициализация всегда осуществляется с пустой переменной. С другой стороны, присваивание (в принципе) сначала должно стереть старое значение из переменной и лишь затем записать в нее новое значение. Переменную можно представить в виде небольшого ящика, а значение — в виде конкретной вещи (например, монеты), лежащей в этом ящике. Перед инициализацией ящик пуст, но после нее он всегда содержит монету, поэтому, для того чтобы положить в него новую монету, вы (т.е. оператор присваивания) сначала должны вынуть из него старую (“стереть старое значение”), причем ящик нельзя оставлять пустым. Разумеется, в памяти компьютера эти операции происходят не так буквально, как мы описали, но ничего вредного в такой аллегории нет.

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

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

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

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

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

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

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

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

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