Читаем Программирование полностью

cin >> name;                // оператор >> считывает строку в переменную name

int c2 = count+2;           // оператор + складывает целые числа

string s2 = name + " Jr. "; // оператор + добавляет символы

int c3 = count–2;           // оператор – вычитает целые числа

string s3 = name – "Jr. ";  // ошибка: оператор – для строк не определен

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

int age = –100;

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

Пустые ячейки означают, что операция не может применяться к данному типу непосредственно (хотя существует множество косвенных способов их использования; см. раздел 3.9.1). Со временем мы объясним все эти операции. Дело в том, что существует множество полезных операций и их смысл у схожих типов почти одинаков.

Рассмотрим пример, в котором фигурируют числа с плавающей точкой.

// простая программа, демонстрирующая работу операторов

int main()

{

  cout << "Пожалуйста, введите значение с плавающей точкой: ";

  double n;

  cin >> n;

  cout << "n == " << n

  << "\nn+1 == " << n+1

  << "\n три раза по n == " << 3*n

  << "\n два раза по n == " << n+n

  << "\nn в квадрате == " << n*n

  << "\n половина n == " << n/2

  << "\n корень квадратный из n == " << sqrt(n)

  << endl; // синоним перехода на новую строку ("end of line")

}

Очевидно, что обычные арифметические операции имеют традиционные обозначения, а их смысл известен нам со школьной скамьи. Естественно также, что не все операции над числами с плавающей точкой реализованы в виде операторов, например квадратный корень можно извлечь лишь с помощью функции. Многие операции представлены именованными функциями. В данном случае для извлечения квадратного корня из числа n используется функция sqrt(n) из стандартной библиотеки. Система обозначений близка к математической. Более подробно функции рассматриваются в разделах 4.5 и 8.5.

ПОПРОБУЙТЕ

Запустите эту небольшую программу. Затем измените ее так, чтобы считать значение типа int, а не double. Обратите внимание на то, что функция sqrt() для целых чисел не определена, поэтому присвойте число переменной типа double и лишь затем примените к ней функцию sqrt(). Кроме того, выполните несколько других операций. Обратите внимание на то, что операция для целых чисел представляет собой целочисленное деление, а операция — вычисление остатка, так что 5/2 равно 2 (а не 2.5 или 3), а 5%2 равно 1. Определения целочисленных операций *, / и % гарантируют, что для двух положительных переменных a и b типа int выполняется равенство a/b*b+a%b==a.

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

// ввод имени и отчества

int main()

{

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

  string first;

  string second;

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

  string name = first + ' ' + second; // конкатенируем строки

  cout << "Hello, " << name << '\n';

}

Для строк оператор + означает конкатенацию; иначе говоря, если переменные s1 и s2 имеют тип string, то s1+s2 является строкой, в которой вслед за символами строки s1 следуют символы строки s2. Например, если строка s1 имеет значение "Hello", а строка s2 — значение "World", то s1+s2 содержит значение "HelloWorld". Особенно полезным является сравнение строк.

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных