- •Лабораторная работа № 4
- •Арифметические выражения
- •Символьные (текстовые) выражения
- •Выражения отношения
- •Логические выражения
- •Оператор присваивания
- •Часть 1 Программирование математических выражений
- •Запись формул
- •Изучение программирования математических формул на Visual Basic - е в среде разработки Visual Studio
- •Еще один образец
- •Часть 2 Текстовые переменные, константы, выражения и символьные операторы присваивания
- •Изучение программирования символьных выражении на Visual Basic - е в среде разработки Visual Studio
- •Часть 3 Логические переменные и логический оператор присваивания
- •Изучение программирования логических выражении на Visual Basic - е в среде разработки Visual Studio
Арифметические выражения
Значением арифметического выражения является данное числового типа (целый, вещественный и комплексный; их можно называть также арифметическим типом). Основными операндами арифметического выражения являются данные арифметического типа.
Fortran
Запрещается последовательно указывать две арифметические операции. Например, не допускается запись следующего вида: A**-B, но разрешается: A**(-B)
Запрещаются следующие арифметические операции:
-деление на 0;
-возведение нулевого операнда в отрицательную степень;
-возведение отрицательного операнда в вещественную степень.
Если все операнды арифметического выражения имеют один и тот же тип, то и результат имеет тот же тип. Результат –3/2 будет –1. Когда операнды имеют различные типы, тогда типа результата определяется ранжированием следующим образом:
1. COMPLEX*16 или DOUBLE COMPLEX (наивысший ранг);
2. COMPLEX*8;
3. REAL*8 или DOUBLE PRECISION;
4. REAL*4;
5. INTEGER*4;
6. INTEGER*2;
7. INTEGER*1 (низший ранг)
Таким образом, когда выполняется арифметическая операция и два операнда имеют различные типы, тогда результат этой операции имеет тип наивысшего ранга. Исключением из правила являются операции, включающие и операнды типа REAL*8, и операнды типа COMPLEX*8, возвращающие результаты с типом COMPLEX*16. Например, если операция выполняется над операндом типа INTEGER*2 и операндом типа REAL*4, то сначала INTEGER*2 преобразуется к real*4. Результат операции имеет тип REAL*4. Подобным же образом выполняются операции над вещественным числом и комплексным числом. Сначала вещественное число преобразуется к комплексному типу и результат операции также будет иметь тип комплексный. Рассмотрим некоторые примеры.
Пусть i1 и i2 являются целочисленными переменными, r1 – вещественная переменная с обычной точностью, т.е. типа REAL*4, c1 – комплексная переменная типа COMPLEX*8.
А) Пусть дано выражение
i1/i2*r1
Сначала выполняется целочисленное деление переменных i1 и i2. Результат этого деления будет целочисленный. Затем результат преобразуется в вещественное число и выполняется операция умножения этого числа на r1.
Б) Пусть дано выражение
c1+i1
Переменная i1 сначала преобразуется к типу COMPLEX*8 и складывается с переменной c1.
QuickBasic, Visual Basic
Общие правила совпадают с правилами языка Fortran.
Значение выражение i \ j представляет собой математическое частное от i/j, округленное в меньшую сторону по абсолютной величине до значения целого типа. Результат –3\2 будет –1. Если j равно 0, результат будет ошибочным.
Операция MOD возвращает остаток от деления первого операнда вторым, то есть:
i MOD j = i - (i \ j) * j
Знак результата операции MOD будет тем же, что и знак i. Если j равно нулю, то результатом будет ошибка.
Turbo Pascal
Разрешается последовательно указывать две арифметические операции, если вторая операция является унарной (+ или -). Например, допускается запись следующего вида: A*-B, что равнозначно A*(-B).
Если оба операнда в операциях +, -, *, div или моd являются операндами целого типа, то тип результата будет таким же, как общий тип обоих операндов.
Если один или более операндов в операциях +, -, или * имеют вещественный тип, то тип результата будет вещественным (real), если использована директива компилятора {$N-}, или типом с повышенной точностью (extended) при использовании директивы компилятора {$N+}.
Если при использовании операции сохранения знака или операции отрицания знака операнд имеет целый тип, то результат будет тоже целого типа. Если операнд вещественного типа, то тип результата будет вещественным или типом с повышенной точностью (extended).
Значение выражения х/у всегда является вещественной (real) или с повышенной точностью (extended), независимо от типов операндов. Если у равно 0, то результат будет ошибочным.
Значение выражение i div j представляет собой математическое частное от i/j, округленное в меньшую сторону по абсолютной величине до значения целого типа. Результат –3 div 2 будет –1. Если j равно 0, результат будет ошибочным.
Операция mod возвращает остаток, полученный путем деления двух ее операндов, то есть:
i mod j = i - (i div j) * j
Знак результата операции mod будет тем же, что и знак i. Если j равно нулю, то результатом будет ошибка.
