Выражения................................................... 4-1
Числовые константы..................................... 4-2
Числовые выражения..................................... 4-3
Арифметические операторы............................... 4-3
Строковые константы.................................... 4-4
Оператор конкатенации.................................. 4-4
Строковые выражения.................................... 4-5
Логические операторы................................... 4-6
Логические выражения................................... 4-7
ВЫРАЖЕНИЯ
Выражение - это математическая или логическая формула, порождаю-
щая значение. Выражение может быть переменной в операторе при-
сваивания, параметром процедуры или функции, индексом массива
или условием структур IF, CASE, LOOP или EXECUTE. Выражения мо-
гут содержать константы, переменные и/или обращения к функциям,
объединенные логическими и/или арифметическими операторами
Выражения вычисляются в стандартном алгераическом порядке опера-
ций. Приоритет операторов управляется типом операторов и распо-
ложением скобок. Каждая операция производит (внутреннее) проме-
жуточное значение, используемое в последующих операциях. Скобки
используются для группирования операций в выражениях. Выражения
вычисляются от внутренних скобок к внешним.
Операторы, при вычислении выражения, имеют следующие приоритеты
(от высших к низшим):
Уровень 1 () Скобочное группирование
Уровень 1 - Унарный минус
Уровень 3 вызов функции Получить значение от RETURN
Уровень 4 ^ Возведение в степень
Уровень 5 */% Умножение, деление, остаток от
деления
Уровень 6 + - Сложение, вычитание
Уровень 7 & Конкатенация
Выражения могут порождать числовые, строковые или логические
значение (вычисление true/false). Выражения могут вовсе не со-
держать операторов; они могут быть одиночной переменной, кон-
стантой или вызовом функции.
----------------------------------------------------------------
Числовые константы
================================================================
Числовые константы - это постоянные числовые значения. Они могут
применяться в описаниях данных, в выражениях, как параметры про-
целур или функцийs или как атрибуты. Числовые константы могут
представляться в десятичном, двоичном, восьмеричном, шестнадца-
теричном или научном форматах. Символы форматирования, как на-
пример, знаки доллара или запятые, не разрешены в числовых кон-
стантах.
Десятичные числовые константы могут содержать необязательный ве-
дущий знак минуса (символ переноса), целую и необязательную де-
сятичную дробную часть.
Пример:
-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-коды
'' !Шестнадцатеричный 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.
Знаете ли Вы, что спецификация - это документ, описывающий соглашение между разработчиками и пользователями. Разработчик берется написать модуль, а пользователь соглашается не полагаться на знания о том, как именно этот модуль реализован, т.е. не предполагать ничего такого, что не было бы указано в спецификации. Такое соглашение позволяет разделить анализ реализации от собственно использования программы. Спецификации дают возможность создавать логические основы, позволяющие успешно "разделять и властвовать".