Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР4-С++-13 марта-2012 - копия.doc
Скачиваний:
11
Добавлен:
15.09.2019
Размер:
2.55 Mб
Скачать

1.9. Правила записи выражений

Во избежание ошибок выражения в языке С++ должны записываться по определенным правилам. Приведем их.

1. Запись выражений ведется на одном уровне, в одну строчку, для этого используется знак операции деления / (косая черта) и система круглых скобок. Другими словами, многоэтажная система записи выражений, принятая в математике, при записи выражений в С++ недопустима. Например, математическое выражение должно быть записано как (x+y+z)/(a+b+c).

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

то они могут быть идентифицированы в С++, следующим образом: hx, xn, y0, zmn, fstrich, x1.

3. В отличие от обычной математической записи, в которой многие знаки операций предполагаются по умолчанию, в выражениях языка C++ необходимо проставлять все знаки операций, в частности знак умноже­ния. Например, выражение (А + В) (X + У) бессмысленно: оно должно быть записано в виде (А + В)* (X + Y). Если вместо А*В написать АВ, то транслятор воспримет это выражение не как произведение переменных А и В, а как новую переменную (идентификатор) АВ, состоящую из двух символов.

4. Два символа операций не должны стоять рядом. Поэтому А*-В яв­ляется бессмысленным, но А*(-В) допустимо. Выражение вида X + 3*- 7+4 необходимо представить в виде X + 3*(-7) + 4.

Замечание: для операций инкремента и присваивания в С++ есть исключения из этого правила.

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

6. Количество круглых скобок при записи неограниченно, но необхо­димо следить, чтобы количество левых (открывающих) и правых (закры­вающих) круглых скобок было одинаковым.

7. Скобки используются для указания желаемой очередности выполне­ние операций так же, как и в обычной математической записи. Поэтому оба выра­жения А - В + С и А - (В + С) допустимы, но означают не одно и то же.

8. В сомнительных случаях порядок выполнения операций в выражениях следует доопределять с помощью скобок. Так, выражение должно быть записано в виде А/(В* С), а не в виде А/В*С, соответствующем выражению

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

10. Если выражение не помещается на одной строке бланка для записи программы, то его продолжают на следующих строках бланка, при этом никаких дополнительных знаков переноса не ставится. Например, такое простое выражение, как А + В; формально может быть записано на двух строках в виде

А + В;

либо в виде

А

+ В;

Из приведенных записей видно, что знак + ставится только один раз (в одной из строк), а не дважды, как это принято в математике.

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

Признаком конца выражения служит знак точка с запятой ";".

11. При записи выражения в программе между идентификаторами, зна­ками операций и круглыми скобками разрешается ставить пробелы (хотя это обычно не делается). При изображении составных символов опера­ций (например, ||, && , >> , <<, >=, <=, ==, ++, -- и др.) между их составными частями (символами) вставлять пробелы не разрешается.

12. Фактические параметры (аргументы) встроенных и других функций всегда должны быть заключены в круглые скобки.

13. Запятая, отделяющая целую и дробную части числа в математи­ке, при записи констант на языке С++ заменяется точкой.

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

Приведем примеры записи ряда арифметических выражений на языке С++:

Математическая запись

Запись на языке С++

1

ax3 + b

a*x*x*x+b либо a*pow(x,3)+b

2

x-3

pow(x,-3)

3

pow(z,1/n)

4

sqrt(a)

5

-8,3·103 + a·n + 10-8

(-8.3e3+a*n+1e-8)/(exp(x)+d)

ex + d

6

sin x2 + cos2 x

(sin(x*x)+cos(x)*cos(x))/fabs(tau)

||