Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

2.4.5. Операции

Команды могут содержать следующие знаки операций

Математические (перечислены в порядке их приоритетов):

  1. ** или ^ - возведение в степень;

  2. * - умножение, / - деление, % - остаток от деления;

  3. + - сложение, - - вычитание.

Логические (в порядке приоритетов):

  1. Not - НЕ (другая форма указания операции НЕ - вос­кли­цательный знак !);

  2. And - логическое И;

  3. Or - ИЛИ. Знаки логических операций (кроме !) окаймляются точками или пробелами.

Сравнения: < (меньше), > (больше), = (равно), == (строго равно), # (не рав­но), <= (не больше), >= (не меньше).

Знаки отношения применимы как к числовым выражениям, так и к датам и символьным выражениям. В последнем случае сравниваются, естественно, их коды. Если сравниваются символьные строки разной длины, то сравнение выполняется по длине выражения, стоящего спра­ва от знака отношения. Остаток левого операнда, превышающий длину правого операнда, игнорируется.

Таким образом, считаются истинными (.Т.) отношения вида:

'ПЕТРОВ А.'='ПЕТРОВ А.' и 'ПЕТРОВ А.'='ПЕТ', но ложными (.F.):

'ПЕТ'='ПЕТРОВ А.' и 'ПЕТРОВ А.'='ПЕТ '.

Эта особенность дает, при необходимости, возможность органи­зо­вать поиск данных и по неполному ключу, например фамилии по первым буквам. Тогда более короткое выражение должно стоять справа от знака “=“ и из него должны быть удалены концевые пробелы.

Если указать команду Set Exact On, то при сравнении строк длины строк учитываются, иначе (Set Exact Off) - не учитываются.

Операции отношения только для символьных выражений:

$ - сравнение символьных строк. Операция А$В даст значение логи­чес­кая “Истина“ (.Т.), если А идентично В либо А входит в В, и “Ложь“ (.F.) иначе;

== - сравнение на полное тождество символьных строк и по длине, и по содержанию, включая пробелы вне зависимости от Set Exact;

+ - соединение двух или более строк в одну;

- - то же, но пробелы в конце строки, предшествующей знаку “-“, помещаются в конец итоговой строки.

В выражениях все операции выполняются слева направо с учетом их приоритетов. Здесь могут широко использоваться круглые скобки.

Присвоить значение переменной можно в виде:

<имя переменной>=<Выр> или командой

Store <Выр> To <список имен переменных через запятые>.

2.4.6. Команды управления

2.4.6.1. Команда проверки условия (If)

If <ВырL>

[<команды>]

[Else

<команды>]

Endif

Если условие истинно, то выполняются все ко­ман­ды, следующие за If до Else или до Endif, если команда Else не указана. Если условие лож­но и не указана команда Else, все коман­ды между If и Endif игнори­ру­ются. Если условие ложно и указана команда Else, то выполняются все команды между Else и Endif. Допускается вложение команд If.

В нимание! В FoxPro отсутствует команда безусловной передачи управления типа Goto и нет понятия метки команды.

2.4.6.2. Команда выбора (Do Case)

Do Case

Case <ВырL1>

<команды>

...

[Case <ВырLN>

<команды>]

[Otherwise

<команды>]

Endcase

Это команда обеспечивает выбор одной последовательности команд из набора возможных альтернатив.

Фраза Case <ВырL> устанавливает условное выражение для последующей оценки его истинности. Если выражение оценено как ложное, то все последующие команды до следующей команды Case будут пропущены и не выполняются. Когда условие истинно (.Т.), выпол­няют­ся все последующие команды до появления одной из команд Case, Otherwise или Endcase.

После выполнения всех команд первой фразы Case, для которой ус­ло­вие истинно, остальные фразы Case пропускаются, и система пе­ре­хо­дит на первую команду, следующую за Endcase.

Если все фразы Case ложны и не указана фраза Otherwise, то не вы­полняется никаких команд, и система переходит на первую команду, сле­дующую за фразой Endcase.

Фраза Otherwise определяет выполнение альтернативной пос­ле­довательности команд, когда все фразы Case ложны.

Пример формирования знака числа значения переменной X в Sign.

Do Case

Case X>0

Sign=1 && положительное значение переменной X

Case X=0

Sign=0 && нулевое значение переменной X

Otherwise

Sign=-1 && отрицательное значение переменной X

Endcase