Рейтинговые книги
Читем онлайн Освой самостоятельно С++ за 21 день. - Джесс Либерти

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 10 11 12 13 14 15 16 17 18 ... 170

3. Объявите константу для числа pi, равного 3.14159.

4. Объявите переменную типа float и инициализируйте ее, используя константу pi.

День 4-й. Выражения и операторы

Программа представляет собой набор команд, выполняемых в определенной по­следовательности. Современные программы сильны тем, что выполняются не после­довательно, команда за командой от начала до конца программы, а по блокам. Каж­дый блок программы запускается в зависимости от выполнения заданного условия. Сегодня вы узнаете:

•   Что такое операторы

•   Что такое блоки

•   Что такое выражения

•   Как реализовать ветвление программы на основе результата выполнения заданного логического условия

•   Что такое ИСТИННО и ЛОЖНО с точки зрения программиста на C++

Выражения

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

В отличие от алгебры, это выражение не означает, что x равняется a+b. Данное выражение следует понимать так: присвоим результат суммирования значений переменных а и b переменной x, или присвоим переменной x значение a+b. Несмотря на то что в этом выражении выполняется сразу два действия — вычисление суммы и присвоение значения, после выражения устанавливается только один символ точки с запятой. Оператор (=) присваивает результаты операций, выполняемых над операндами, расположенными справа от знака равенства, операнду, находящемуся слева от него.

x = а + b;

Символы пробелов

Символы пробелов, к которым относятся не только пробелы, но и символы табуляции и разрыва строки, в выражениях обычно игнорируются. Рассмотренное выше выражение можно записать так:

x=a+b; или так:

x                 =              a

       +              b        ;

Хотя последний вариант абсолютно правомочен, выглядит он довольно глупо. Символы пробелов можно использовать для улучшения читабельности программы, что облегчит работу с ней. Но при неумелом использовании эти же пробелы могут совершенно запутать программный код. Создатели C++ предоставили много различных возможностей, а уж насколько эффективно они будут использоваться, зависит от вас.

Символы пробелов не отображаются на экране и при печати — видны только различные отступы и промежутки между элементами текста. 

Блоки и комплексные варажения

 Иногда для облегчения восприятия программы логически взаимосвязанные выражения удобно объединять в комплексы, называемые блоками. Блок начинается открывающей фигурной скобкой ({) и оканчивается закрывающей фигурной скобкой (}). Хотя каждое выражение в блоке должно оканчиваться точкой с запятой, после символов открытия и закрытия блока точки с запятой не ставятся, как в следующем примере:

 {

   temp = а;

   а = b;

   b = temp;

}

Этот блок выполняется как одно выражение, осуществляющее обмен значениями между переменными а и b.

Рекомендуется:Незабывайте о закрывающейфигурной скобке каждый раз, когда используется открывающая фигурная скобка. Завершайте выражения в программе символом точки с запятой

Не рекомендуется:Используйте разумно символы пробелов, чтобы сделать свою программу более понятной, а не наоборот.

Операции

Все, в результате чего появляется некоторое значение, в языке C++ называется операцией. Об операциях говорят, что они возвращают значение. Так, операция 3+2; возвращает значение 5. Все операции являются вместе с тем и выражениями.

Возможно, вы будете удивлены тому, что многие программные блоки рассматриваются как выражения. Приведем лишь три примера:

3.2 // возвращает значение 3.2

PI // вещественная константа, которая возвращает значение 3.14

SecondsPerMinute // целочисленная константа, которая возвращает 60

Предполагая, что PI — константа, равная 3.14, а SecondsPerMinute — константа, равная 60, можно утверждать, что все три выражения являются операциями. Выражение

x = а + b;

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

у = x = а + b;

Данное выражение выполняет представленную ниже последовательность действий. Прибавляем а к b.

Присваиваем результат выражения а + b переменной x.

Присваиваем результат выражения присваивания x = а + b переменной у.

Если переменные а, b, x и у являются целыми и если а имеет значение 2, а b — значение 5, то переменным x и у будет присвоено значение 7.

Пример выполнения некоторых выражений представлен в листинге 4.1.

Листинг 4.1. Выполнение сложных операций

1: #include <iostream.h>

2: int main()

3: {

4:    int a=0,   b=0,   x=0,   y=35;

5:    cout << " a:" << a << " b:" << b;

6:    cout << " x:" << x << " y:" << y << endl;

7:    a = 9;

8:    b = 7;

9:    y = x = a+b;

10:   cout << " a:" << a << " b:" << b;

11:   cout << " x:" << x << " y:" << y << endl;

12:   return 0;

13: }

Результат:

а: 0 b: 0 x: 0 у: 35

а: 9 b: 7 x: 16 у: 16

В строке 4 объявляются и инициализируются четыре переменные. Их значения выводятся в строках 5 и 6. В строке 7 переменной а присваивается значение 9. В строке 8 переменной b присваивается значение 7. В строке 9 значения переменных а и b суммируются, а результат присваивается переменной x. Результат операции x = a+b, в свою очередь, присваивается переменной у.

Операторы

Оператор — это литерал, который заставляет компилятор выполнять некоторое действие. Операторы воздействуют на операнды. Операндами в C++ могут быть как отдельные литералы, так и целые выражения. Язык C++ располагает двумя видами операторов:

• операторы присваивания;

• математические операторы.

Оператор присваивания

Оператор присваивания (=) позволяет заменить значение операнда, расположенного с левой стороны от знака равенства, значением, вычисляемым с правой стороны от него. Так, выражение

x = а + b;

присваивает операнду x значение, которое является результатом сложения значений переменных а и b.

Операнд, который может находиться слева от оператора присваивания, называется адресным операндом, или l-значением (от англ. слова left, т.е. левый). Операнд, который может находиться справа от оператора присваивания, называется операционным операндом, или r-значением (от англ. слова right, т.е. правый).

Константы могут быть только r-значениями и никогда не бывают адресными операндами, поскольку в ходе выполнения программы значения констант изменять нельзя. Так, можно записать:

x = 35; // правильно

Но нельзя записать:

35 = x; // ошибка!

Повторим: l-значение — это операнд, который может стоять в левой части выражения присваивания, а г-значение — операнд, который может стоять в правой части этого выражения. Обратите внимание, что все l-значения могут быть r-значениями, но не все r-значения могут быть l-значениями. Примером г-значения, которое не может быть l-значением, служит литеральная константа. Так, можно загасать: x = 5;, но нельзя записать: 5 = x; (x может быть l- или r-значением, а 5 может быть только r-значением).

Математические операторы

В C++ используется пять математических операторов: сложения (+), вычитания (-), умножения (*), целочисленного деления (/) и деления по модулю (%).

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

Листинг 4.2. Пример вычитания с переполнением целого числа  

1: // Листинг 4.2. Пример вычитания с

2: // переполнением целого числа

3: #include <iostream.h>

4:

5: int main()

6: {

7:   unsigned int difference;

8:   unsigned int bigNumber = 100;

9:   unsigned int smallNumber = 50;

1 ... 10 11 12 13 14 15 16 17 18 ... 170
На этой странице вы можете бесплатно читать книгу Освой самостоятельно С++ за 21 день. - Джесс Либерти бесплатно.

Оставить комментарий