Розділ 2. Синтаксис

У KAlgebra використовується інтуїтивно зрозумілий алгебраїчний синтаксис для функцій, визначених користувачем, подібний до використаного у більшості сучасних графічних калькуляторів. У цьому розділі наведено основні вбудовані оператори KAlgebra. Синтаксичні конструкції автор KAlgebra створив на основі синтаксичних конструкцій Maxima та maple для користувачів, які можуть бути обізнані з цими програмами.

Для тих, хто цікавиться внутрішніми механізмами роботи KAlgebra: введені користувачем вирази перетворюються на вирази мовою MathML сервером обробки. Початкове розуміння можливостей, що підтримуються MathML, виходить далеко за межі визначення внутрішніх можливостей KAlgebra.

Ось список доступних у цій версії дій:

  • + - * / : Додавання, віднімання, множення і ділення.

  • ^, **: Піднесення до степеня, можна використовувати обидва позначення. Також можна використовувати символи unicode ². Степені також використовуються для позначення коренів, це можна зробити за допомогою формули на зразок: a**(1/b)

  • -> : лямбда. За допомогою цього виразу можна вказати одну або декілька вільних змінних, які буде пов’язано у функцію. Наприклад, у виразі length:=(x,y)->(x*x+y*y)^0.5, лямбда-оператор використовується для позначення того, що x і y буде пов’язано під час обчислення функції довжини.

  • x=a..b : Ця конструкція використовується, якщо ми змінюємо діапазон зміни змінної (обмежена зміна+обмеження згори+обмеження знизу). Це означає, що x пробігає значення від a до b.

  • () : Дужки використовуються для зазначення вищого пріоритету обчислень.

  • abc(параметри) : Функції. Коли обробник знаходить функцію, він перевіряє чи є abc оператором. Якщо це так, дії з ним буде виконано як з оператором, якщо ні — обробник поводитиметься з ним як з функцією.

  • := : Визначення. Використовується для встановлення значення змінної. Ви можете писати x:=3, x:=y у випадках визначеності або невизначеності y, або perimeter:=r->2*pi*r.

  • ? : Визначення кускової умови. Кускові умови — це спосіб визначення умовних розгалужень у KAlgebra. Інакше кажучи, це спосіб визначення послідовності умов if, elseif, else. Якщо вказати умову перед знаком «?», значення буде використано, лише якщо умова справджується, якщо обробник знайде «?» без жодної умови, буде використано залишок після попередніх умов. Приклади: кускова функція { x=0 ? 0, x=1 ? x+1, ? x**2 }

  • { } : Контейнер MathML. Його можна використовувати для визначення контейнера. Головним чином корисний для роботи з кусковими виразами.

  • = > >= < <= : порівняння значень (рівність, більше, більше або дорівнює, менше та менше або дорівнює, відповідно)

Читач тепер може зауважити, а навіщо взагалі згадувати про MathML? Дуже просто. За його допомогою можна виконувати операції на зразок cos(), sin(), будь-які інші тригонометричні функції, sum() або product(). Характер самої функції не є важливим. Можна використовувати plus(), times() і будь-які інші функції, яким відповідає певний оператор. Також реалізовано булівські функції, отже, можна виконувати операції на зразок or(1,0,0,0,0).