Это, во-первых, так есть в MatParse. Ситаксически. Но работает противоестественно.
Для нормального человека, а не для челов, которые различают приоритеты унарного и бинарного минусов
Ну, например: 9 < X^2 + Y^2 < 16
Чего, спрашивается, делает с этим MathParse...
Он делает первое сравнение (Level1a), и получает либо нуль, либо один - в зависимости от данных.
Делает второе сравнение, полученного результата (0/1) с числом 16 -- и тупо получает единицу.
Предлагается, чтобы результат был БЫ, КАК БЫ -- от такой формулы: (9 < X^2 + Y^2) and (X^2 + Y^2 < 16)
Да, мы можем и ручками написать такую формулу.
НО, считать выражение в серединке нам придется ДВА РАЗА (не считая того, что стучать по клавишам больше придется).
В нормальных язЫках программирования, мы можем избежать двойного вычисления: запомнить результат в локальную переменную, которую потом и будем использовать в двух сравнениях.
А мы - не можем.
Вот в этом и смысл предложения - чтобы вышеозначенный пример считал сумму квадратов один раз, и определял принадлежность "кольцу", с внутренним радиусом 3, и внешним - 4.
Соответственно, в предложенной синтаксической диаграмме, в выражении для нетерминала <Compare>, последнюю пару квадратных скобок - заменить на пару фигурных...
------------ Дoбавленo в 16.26:
Собственно, у меня работает уже... Вроде бы.
Ответов: 9906
Рейтинг: 351
|
|||
карма: 9 |
|