- •Лекция 3. Основные элементы языка Caché Object Script
- •1. Переменные
- •Основное назначение Глобал - предоставление доступа к сохраненным объектам прбд.
- •2. Операторы и выражения
- •Оператор проверки по шаблону
- •Выражение - совокупность простых выражений, соединенные унарными или бинарными операндами, что дает конечное значение.
- •Представление чисел и неявное преобразование типов данных
2. Операторы и выражения
COS поддерживает следующие группы операторов:
- Унарные арифметические и логические операторы;
- Бинарные арифметические операторы;
- Логические операторы;
- Операторы работы со сроками.
К унарным арифметическим операторам относятся «+» и «-», которые обеспечивают числовую интерпретацию операнда, например, «+123» и «-123».
Унарный положительный оператор не влияет на значение выражения, то есть не меняет знак.
Например,
Set x = -23
Write "x:" x ,! // -23
Write "+ x:" + x ,! // -23
В Caché также существует унарный логический оператор «'»
К бинарным арифметическим операторам относят:
«+» - Добавление;
«-» - Вычитание;
"*" - Умножение;
"/" - Деление;
"\" - Целочисленное деление;
"#" - остаток от деления;
«**» - Степень числа.
Пусть а = 5, b = 7, с = 10.
Выражение |
Значение |
а + b |
12 |
а * b – с |
25 |
с / а |
2 |
2 + а * b |
49 |
2 + (а * b) |
37 |
3700 # 3600 |
100 |
с # а |
0 |
9.123 \ 1 |
9 |
3700 \ 3600 |
1 |
2 ** 5 |
32 |
9 ** .5 |
3 |
16 ** .25 |
2 |
4 ** (-2) |
.0625 |
К логическим операторам относят:
«=» - Проверка на равенство;
«'=» - Проверка на неравенство;
Если нужно провести проверку на числовую (не) равенство, то сначала нужно интерпретировать это выражение в число, например, используя знак «+».
Пусть у = 12, z = 15:
Выражение |
Значение |
y < z |
1 |
z > "16abc" |
0 |
«[» - Содержит, оператор определяет, содержится ли правое выражение в левом;
"'[" - не содержится;
«]» - Следует за, оператор определяет, следует ли левый операнд за правым в лексикографической последовательности;
«']» - Не следует за;
«]]» - Сортируется за, оператор определяет, сортируется ли левый операнд по правому в лексикографической последовательности (нулевая строка идет первой, затем числа по порядку с отрицательных, пустой текст, положительные числа, в конце нечисловые значения);
«']]» - Не сортируется за;
«>» - Более чем;
«'>» - Не более чем;
«<» - Менее чем;
«'<» - Не менее;
«&» - Логическое И;
«» - Логическое ИЛИ;
«&&» - Логическое И;
«||» - Логическое ИЛИ;
Последние два оператора отличаются от предыдущей пары тем, что оба пропускают расчет правого операнда, если расчет левого уже дает конечный результат.
Например, когда вычисления левого операнда возвращает False в операции I или True в операции ИЛИ.
Например, пусть х = 3, у = "А", z = "3.0".
-
Выражение
Значение
х = "а"
0 (False)
x=z
0 (False)
"АВС"[у
1 (True)
x]y
0 (False)
z] (x = у)
1 (True)
2]]19
0 (False)
К операторам работы со сроками относят:
_ - Конкатенация срок;
? - Сравнение с шаблоном.
Пусть х = "12".
Выражение |
Значение |
"АВ" _ "CD" |
ABCD |
"АВ" _ х |
АВ12 |
х_"А"[2 |
1 |
Примечание 1. Последовательность выполнения операторов в COS всегда слева направо; в пределах выражения операции производятся в той последовательности, в которой они записаны. Для того, чтобы изменить порядок выполнения операций нужно использовать скобки.
Например,
Set TorF = ((4 + 7)> (6 + 6)) // False (0)
Set Value = (4 + 7 > 6 + 6) // 7
Примечание 2. В случае, когда строка используется как арифметическое выражение, она интерпретируется как число. Числовое значение получается с помощью сканирования сроки слева направо в поиске цифр, которые формируют числовой литерал. Сканирование продолжается пока не будет достигнуто первого нецифровой символа. Полученные знаки интерпретируются как число, значение которого используется в выражении. Если в начале сроки не стоят цифры, то числовое значение сроки = 0.
Например:
Set x1 = "3 blind mice" //3
Set x2 = "3.14 roughly equals Pi." //3.14
Set x3 = "4e2 is four-hundred." //400
Set x4 = "-4.2e2 is negative 420." //-420
Set x5 = "22 East 3rd Street" //22
Set x6 = "22E3St." //22000
Set x7 = "To be or not to be" //0
Write "4 Motorcycles" + "5 bicycles" // 9
Write -"2Cats"_"Rats" // -2Rats
