к оглавлению

КЛАРИОH. Справочное руководство

ГЛАВА 4 - Выражения

Выражения................................................... 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.

к оглавлению

Знаете ли Вы, что спецификация - это документ, описывающий соглашение между разработчиками и пользователями. Разработчик берется написать модуль, а пользователь соглашается не полагаться на знания о том, как именно этот модуль реализован, т.е. не предполагать ничего такого, что не было бы указано в спецификации. Такое соглашение позволяет разделить анализ реализации от собственно использования программы. Спецификации дают возможность создавать логические основы, позволяющие успешно "разделять и властвовать".

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution