(Продолжение. Начало в №1)
Входной язык системы
Алфавит определяет совокупность символов и слов, которые используются для записи команд.
Алфавит системы содержит:
- маленькие и большие латинские буквы;
- маленькие и большие греческие буквы;
- арабские цифры от 0 до 9;
- системные переменные;
- операторы;
- имена встроенных функций;
- специальные знаки.
Правила синтаксиса языка системы
- Все имена команд и функций записываются буквами латинского алфавита.
- Аргументы команд и функций записываются в круглых скобках.
- Ввод команды завершается нажатием <Enter> или символом ";".
- Большая и маленькая буквы различаются.
- В числах целая часть от дробной отделяется точкой.
- Указание знаков арифметических операций в выражениях является обязательным.
- Порядок действий в математических выражениях соответствует общепринятому порядку действий в математике.
Система осуществляет синтаксический контроль входных данных и при наличии ошибки выдает об этом сообщение, состоящее из системного номера ошибки и текста-пояснения:
Текстовые комментарии
Для ввода комментариев с любой позиции строки вводятся два символа "//", после чего вводится непосредственно сам комментарий.
Объекты системы
Вычисления осуществляются при помощи математических выражений, которые являются главным объектом любой математической системы. Выражение определяет то, что должно быть вычислено в числовом виде. Математические выражения состоят из чисел, констант, переменных, операторов, функций и специальных знаков.
Числа
В самом простом варианте в режиме прямых вычислений осуществляется работа с числами. Число - самый простой объект языка системы, представляющий собою количественные данные. Числа можно считать константами, имена которых совпадают с их значениями. Они могут быть действительными: целыми, дробными, с фиксированной точкой. Целая часть отделяется от дробной точкой. Например: 0, -3, 2.301.
По умолчанию результат содержит восемь знаков:
Однако это значение можно изменить командой printf. Она является эмуляцией одноименной функции языка С. Синтаксис команды:
printf(формат, имя переменной 1, имя переменной 2, .)
Поскольку команда эмулирует функцию языка С, то аргумент "формат" описывается в соответствии с правилами этого языка. Например:
Операторы
Арифметические операторы
Операторы - это элементы языка, при помощи которых создаются математические выражения. Они предназначены для выполнения арифметических действий над числовыми величинами и конструирования математических выражений. Операторы используются вместе с операндами. Например, в выражении "5-1" знак "-" является оператором вычитания, а числа "5" и "1" - операндами.
Заметим, что эта таблица демонстрирует запись операторов. Вместе с тем, применение их для операций над матрицами имеет определенные отличия, о чем идет речь пойдет ниже.
Логические операторы (операторы отношения)
Логические операторы предназначены для сравнения двух величин.
Переменные
Переменная - это поименованный объект, значение которого может изменяться во время выполнения программы. В системе отсутствуют необходимость определения типа переменной или размерности. Как только система встречает новое имя переменной, она автоматически создает ее. Для присвоения переменным значений применяется символ "=".
Правила присвоение имен идентификаторам:
- они могут состоять из любых латинских и греческих букв, цифр;
- большие и маленькие буквы различаются;
- они должны начинаться только с буквы;
- они не могут содержать пробелов;
- они не могут совпадать с именами встроенных или определенных пользователем функций;
- они не могут содержать символов кириллицы.
Переменные могут быть локальными и глобальными. Локальные переменные используются и хранятся только в текущей сессии. Для создания глобальной переменной ее нужно описать при помощи команды global. При помощи одной командой global можно описать несколько переменных, при этом они должны отделяться пробелом.
Получить список переменных, которые используются в текущей сессии, можно командою who. Применение этой команды с параметром "global" выводит список глобальных переменных, а с параметром "local" - список переменных, которые используются в текущей сессии, а также системных переменных:
Переменные располагаются в рабочей области, их можно уничтожать; вообще можно очистить и всю эту область. Для этого используется команда Clear. При использовании ее без аргументов удаляются все переменные, для удаления отдельной или нескольких переменных как аргументы команды используются их имена: Clear а [,b,c,...].
Константы. Системные переменные
Константа - это предварительно определенное числовое или символьное значение, представленное уникальным именем. Числа (например, 1, -2 и 1.23) являются числовыми константами без имени. Другие виды констант в системе принято назвать системными переменными, поскольку они задаются системой при ее загрузке. Примером такой переменной является ans, которая хранит результат последней операции. В системе также есть небольшая группа скалярных системных переменных, отличием которых от других является наличие символа "%" перед их именем.
Системные переменные защищены и не могут быть удалены или изменены. Например, попытка присвоить системной переменной %pi другое значение вызывает ошибку:
Функции
Функции - это подпрограммы с уникальными именами, выполняющие преобразования над своими аргументами. В ответ на обращение к функции она возвращает результат преобразования:. Возврат результата является неотъемлемой чертой функций. При этом результат функции подставляется на место ее вызова, что дает возможность использовать функции в математических выражениях. Например, в выражении
у = 2*log(x)+1
у - переменная, в которую записываются результат функции, "1" и "2" - числовые константы, "*" и "+" - операторы, log(x) - функция с аргументом x. В данном примере после обращения к функции log(x) происходит вычисление логарифма для переменной x, значение которого и подставляется в выражение.
Левая часть выражения, то есть имя переменной, в которую записывают результат функции, необязательна. При ее отсутствии результат работы функции присваивается системной переменной ans.
Функции в системе определяются именем и значением аргумента или аргументов в круглых скобках.
Правила записи функций:
- Имя функции не чувствительно к регистру, потому использование, например, имен abs, ABS и Abs дает одинаковый эффект.
- Аргументы функции заключаются в круглые скобки.
- Функции можно вкладывать одну в другую.
В таблице приведены наиболее распространенные математические функции.
Функции пользователя
Функция пользователя строится по определенным правилам:
- Она начинается с ключевого слова "function", после которого через пробел записывается имя функции. Функция может иметь входные параметры, например, function y=f(x).
- Математическое выражение функции, например, x*cos(x).
- Заканчивается описание функции пользователя ключевым словом "endfunction".
Элементы функции отделяются между собой запятой.
Например:
---->function y=f(x), y=x^3+x^2-1/3, endfunction
Типы данных
Система поддерживает все простые типы данных.
- Числовой тип данных. Он является основным, поскольку система ориентирована на инженерно-технические расчеты. При этом числовые данные могут быть как действительными, так и целыми. Различают шесть типов числовых целых данных: 32, 16 и 8-битовые данные со знаком и без знака.
- Комплексные числа. Они записываются в алгебраической форме с мнимой единицей, которая обозначается %i (учитывается регистр); то есть в виде a+b*%i, где а и b - соответственно действительная и мнимая части числа:
((3+5*%i) + 2*%i - Данные символьного типа. Этот тип данных реализуется путем записи их в двойных (или одинарных) кавычках. Над матрицами с данными символьного типа можно производить действия сложения, умножения и т.п.
- Данные логического типа. В системе с этими данными выполняются операции сравнения, логического отрицания, логического умножения и логического добавления. Приведем пример применения операции сравнения векторов:
Сравнение векторов логического типа:
Кроме простых типов данных система способна работать с таким структурированным типом данных как списки (list), которые удобно использовать именно для структуризации данных. Элементами списка могут быть матрицы, списки.
Различают списки трех типов:
- обычные;
- типизированные;
- матрично-ориентированные.
Создаются эти списки при помощи команд соответственно list, tlist и mlist.
Пример создания обычного списка:
Списки могут быть вложенными:
Определить тип переменной можно при помощи функции type(имя переменной), которая возвращает целое число, определяющее тип переменной. Например, число "1" - означает действительную или комплексную матрицу, "2" - полиномиальную матрицу, "3" - булевую матрицу и т.п.
При помощи специальных команд можно изменять тип данных.
Валерий ФЕТИСОВ