ГЛАВА 4 -ВЫРАЖЕНИЯ
Выражения
Выражение - это математическая или логическая формула, порождающая значение. Выражение может быть переменной в операторе присваивания, параметром процедуры или функции, индексом массива или условием структур IF, CASE, LOOP или EXECUTE. Выражения могут содержать константы, переменные и/или обращения к функциям, объединенные логическими и/или арифметическими операторами.
Выражения вычисляются в стандартном алгебраическом порядке операций. Приоритет операторов управляется типом операторов и расположением скобок. Каждая операция производит (внутреннее) промежуточное значение, используемое в последующих операциях. Скобки используются для группирования операций в выражениях. Выражения вычисляются от внутренних скобок к внешним.
Операторы, при вычислении выражения, имеют следующие приоритеты (от высших к низшим):
Уровень 1 | () | Скобочное группирование |
Уровень 2 | - | Унарный минус |
Уровень 3 | вызов функции | Получить значение от RETURN |
Уровень 4 | ^ | Возведение в степень |
Уровень 5 | */% | Умножение, деление, остаток от деления |
Уровень 6 | + - | Сложение, вычитание |
Уровень 7 | & | Конкатенация |
Выражения могут порождать числовые, строковые или логические значение (вычисление true/false). Выражения могут вовсе не содержать операторов; они могут быть одиночной переменной, константой или вызовом функции.
Числовые константы
Числовые константы - это постоянные числовые значения. Они могут применяться в описаниях данных, в выражениях, как параметры процедур или функций или как атрибуты. Числовые константы могут представляться в десятичном, двоичном, восьмеричном, шестнадцатеричном или научном форматах. Символы форматирования, как например, знаки доллара или запятые, не разрешены в числовых константах.
Десятичные числовые константы могут содержать необязательный ведущий знак минуса (символ переноса), целую и необязательную десятичную дробную часть.
Пример:
-924
76. 346
-45.026
Двоичные числовые константы могут содержать необязательный знак минуса, цифры 0 и 1 и должны заканчиваться символом B или b.
Пример:
1011b
-1000110B
Восьмеричные числовые константы содержат необязательный знак минуса, цифры от 0 до 7 и завершаются символом O или o.
Пример:
3403o
-7041312O
Шестнадцатеричные числовые константы содержат необязательный знак минуса, цифры от 0 до 9, буквы от A до F (представляющие числа от 10 до 15) и завершающий символ H или h. Если самый первый символ в шестнадцатиричном числе - буква от A до F, то надо перед ней ставить 0 обязательно!
Пример:
-1FFBh
0CD1F74FH
Числовые выражения
Числовые выражения могут быть параметрами процедур или функций, условиями в структурах IF, CASE, LOOP или EXECUTE или же источником в операторе присваивания, где значение выражения получает числовая переменная. Числовые выражения могут содержать арифметические операторы и оператор конкатенации, но не могут содержать логические операторы.
Если в числовых выражениях используются строковые константы или переменные, то они преобразуются в промежуточные числовые значения. Если имеется оператор конкатенации, то промежуточное значение преобразуется в числовое ПОСЛЕ собственно конкатенации.
Пример:
3.12159
!Значение ПИ
Count + 1
!Прибавить 1 к Count
(1-N*N)/R
!N раз по N вычитается из 1
!а затем делится на R
305 & 7854555
!Соединяем код области и
телефон
См. также: Правила преобразования данных
Арифметические операторы
Арифметический оператор арифметически комбинирует два операнда для получения промежуточного значения. Это операторы:
+ Сложение |
(A+B значит A плюс B) |
- Вычитание |
(A-B значит A минус B) |
* Умножение |
(A*B значит A раз по B) |
/ Деление |
(A/B значит A делить на B) |
^ Возведение в степень |
(A^B значит A возведено в
степень B) |
% Деление по модулю |
(A%B значит остаток от деления
A на B) |
Все арифметические операторы порождают промежуточные значения типа Long или Real. Тип данных для промежуточного значения определяется выполняемой операцией и типами операндов. Тем не менее, деление или возведение в степь ВСЕГДА порождают промежуточные значения типа Real.
Строковые константы
Строковая константа - это набор символов, заключенный в одиночные кавычки (апострофы). Символы, которые нельзя ввести с клавиатуры, можно вставить в строковую константу, заключив их ASCII символьные коды в угловые скобки < и > . Символьные коды ASCII могут быть представлены в десятичной или шестнадцатеричной форме.
В строковой константе, левая угловая скобка < инициирует поиск правой угловой скобки. Так что, для того, чтобы вставить левую угловую скобку в строку, ее надо ввести дважды. То же справедливо и для апострофов чтобы ввести в строку апостроф, его надо вводить дважды. Два апострофа между которыми либо вообще нет символов (либо только пробелы) представляют пустую строку.
Если надо повторить несколько раз один и тот же символ, то стоит воспользоваться представлением в виде счетчика повторения. Число раз, которое символ должен повториться, помещается между фигурными скобками { и }, которые ставятся сразу же за повторяемым символом.
Пример:
'string constant'
!Строковая константа
It''s a girl!'
!Вложенный апостроф
'<27,15>'
!Десятичные ASCII-коды
<OEh>
!Шестнадцатеричный ASCII-код
'A<< B'
!Вложенная левая угловая
скобка, A<B
'*{20}'
!12 звездочек в формате
счетчика повторения
''
!Нулевая (пустая) строка
Оператор конкатенации (соединения)
Оператор конкатенации & используется для дописывания одной строковой переменной к другой. Длина результирующей строки, это сумма длин обоих конкатенированных значений. Числовые типы данных можно конкатенировать со строками или другими числовыми переменными или константами. Зачастую, стоит использовать функцию CLIP для удаления хвостовых пробелов в строке, к которой подсоединяется другая строка.
Пример:
CLIP(FirstName) & Initial & & LastName
!Составляем полное имя
'Clarion Software' & ', Inc.'
!Соединяем две константы
См. также: CLIP, Числовые выражения, Правила преобразования данных
Строковые выражения
Строковые выражения можно использовать как параметры процедур, функций и атрибутов, или как исходная часть оператора присваивания, где данные должна принимать строковая переменная. Строковые выражения могут содержать как одиночные строковые и числовые переменные, так и сложные комбинации из подвыражений, функций и операций.
Пример:
'Adress:'&Cus:Adress
!Подсоединяем константу к
переменной
Name
!Строковая переменная
'Phone:' & '305-' &
FORMAT(Phone,@P###-##I@itp)
!Соединяем константы и
результат функции FORMAT
Weight & 'Ibs.'
!Подсоединяем переменную к
константе
Логические операторы
Логический оператор сравнивает два операнда или выражения и порождает условия ИСТИНА или ЛОЖЬ. Есть два типа логических операторов: условные и булевы. Условные операторы сравнивают два значения или выражения. Булевы операторы связывают вместе строковые, числовые и/или логические выражения для определения логики true-false (?). Операторы можно комбинировать, для проверки сложных условий.
Условные операторы |
= |
Знак равенства |
|
< |
Меньше чем |
|
> |
Больше чем |
Булевы операторы |
NOT |
Логическое НЕ |
(логическая арифметика) |
~ |
Тильда (логическое НЕ) |
|
AND |
Логическое И |
|
OR |
Логическое ИЛИ |
|
XOR |
Логическое ИИЛИ (исключающее
ИЛИ) |
Комбинированные |
<> |
НЕ равно |
операторы |
~= |
НЕ равно |
|
NOT= |
НЕ равно |
|
<= |
Меньше или равно |
|
=< |
Меньше или равно |
|
~< |
НЕ больше |
|
NOT> |
НЕ больше |
|
>= |
Больше или равно |
|
=> |
Больше или равно |
|
-< |
НЕ меньше |
|
NOT< |
НЕ меньше |
При логических вычислениях, любое НЕнулевое значение означает ИСТИНУ, а пустая строка или нулевое значение означает ЛОЖЬ.
Пример:
Логическое выражение
Результат
A - B
Истина, если A равно B
A < B
Истина, если A меньше B
A> B
Истина, если A больше B
A <>B,A ~= B, A NOT= B
Истина, если A НЕ равно B
A ~<B,A>= B, A NOT<B
Истина, если A НЕ не меньше B
A ~>B,A<= B, A NOT>B
Истина, если A НЕ не больше B
~ A, NOT A
Истина, если A простое или
ноль
A AND B
Истина, если A ИСТИНА и B
ИСТИНА
A OR B
Истина, если либо A ИСТИНА,
либо B ИСТИНА, либо оба вместе
A XOR B
Истина, если либо A ИСТИНА,
либо B ИСТИНА, но НЕ оба вместе
Логические выражения
Логические выражения вычисляют условия ИСТИНА-ЛОЖЬ в управляющих структурах IF, LOOP UNTIL, и LOOP WHILE. Управление передается в зависимости от конечного результата выражения (ИСТИНА или ЛОЖЬ). Логические выражения вычисляются слева направо. Правый операнд выражений AND, OR и XOR вычисляется только когда он может повлиять на результат. Для избежания неполных сравнений или для изменения порядка вычислений можно использовать скобки. Приоритеты логических операторов таковы:
Уровень1 |
Условные операторы |
Уровень2 |
~, NOT |
Уровень3 |
AND |
Уровень4 |
OR, XOR |
Пример:
LOOP UNTIL EOF(Customer) !ИСТИНА, если конец файла
!какие-то операторы
.
IF A = B THEN RETURN. !RETURN если A равно B
LOOP WHILE - Done# !Повторять пока ЛОЖЬ (Done# = 0)
!какие-то операторы
.
IF A >= B OR (C>B AND E=D) THEN RETURN.!True if a >= b,also
! true if both c > b and e = d.
!The second part of the expression
! (after OR) is evaluated only if the
! first part is not true.
Назад | Содержание | Вперед