
- •12 Информатика и системология. 1 сем. Модуль 2: ска Maple. Тема 2 Типы данных, переменные, макроопределения Тема 2Типы данных, переменные, макроопределения
- •2.1Алфавит, лексемы
- •2.1.1Зарезервированные ключевые слова
- •2.1.2Строки и символьные имена
- •2.1.3Натуральные и целые числа
- •2.1.4Разделители (знаки пунктуации)
- •2.2Выражения и предложения языка
- •2.2.1Предложение присвоения
- •2.2.2Комментарии
- •2.2.3Функции op и nops.
- •2.3Типы выражений
- •2.3.1Простые типы
- •2.3.2Базовые структурированные типы
- •2.4Решение уравнений и неравенств
- •2.4.1Функция solve
- •2.4.2Функция fsolve
12 Информатика и системология. 1 сем. Модуль 2: ска Maple. Тема 2 Типы данных, переменные, макроопределения Тема 2Типы данных, переменные, макроопределения
В этой теме рассматриваются базовые вопросы программирования в Maple. За исключением раздела 2.4 («Решение уравнений и неравенств»), изложенные здесь сведения не имеют непосредственного практического применения, но материал последующих тем, так или иначе, опирается на них [на эти сведения].
2.1Алфавит, лексемы
Входной алфавит языка Maple содержит:
1) буквы латинского алфавита (A..Z; a..z);
2) десятичные цифры (0..9);
3) специальные символы, см. табл. 2.1;
4) буквы русского языка.
Таблица 2.1 — Специальные символы алфавита
|
- |
! |
@ |
( |
{ |
" |
% |
; |
* |
= |
$ |
) |
} |
| |
\ |
: |
/ |
< |
. |
[ |
` |
& |
# |
+ |
^ |
> |
, |
] |
' |
_ |
? |
~ |
|
|
|
|
|
|
|
Из символов алфавита строятся минимальные единицы языка — лексемы (tokens). В Maple лексемы делятся на:
зарезервированные ключевые слова: операторы и ключевые слова языка;
строки;
символические имена: имена переменных, функций,...;
натуральные числа;
разделители (знаки пунктуации).
2.1.1Зарезервированные ключевые слова
Зарезервированные ключевые слова, см. раздел справки Maple Keywords (Reserved Words), включают 11 операторов (and, or, xor, not, implies, union, intersect, subset, minus, mod, assuming) и 36 ключевых слова языка (часть из которых относится к устаревшим):
ключевые слова для построения управляющих конструкций (if, then, elif, else; while, for, from, to, next…) [будут рассмотрены в теме «Управляющие структуры»];
слова для построения процедур (proc, local, global, options, return, error, description…) [будут рассмотрены в теме «Процедуры»];
слова для построения модулей (export, module, use) [будут рассмотрены в теме «Модули»];
слова для организации обработки исключений (try, catch, finally) [будут рассмотрены в подтеме «Обработка исключительных ситуаций»];
функции чтения и записи (read, save) [будут рассмотрены в теме «Средства ввода/вывода»];
функции или инструкции (quite, stop, done) завершения работы для Command-Line Maple («интерфейса командной строки») [в этом учебном курсе рассматриваться не будут].
Зарезервированные ключевые слова нельзя использовать в качестве символических имен (имён переменных; о символических именах будет рассказано в п. 2.1.2). В частности, им нельзя присваивать значения. Попытка присвоить значение зарезервированному ключевому слову приводит к сообщению об ошибке.
Операторы подразделяются на «нульарные» (операторы без операндов), унарные (действующие на один операнд) и бинарные.
«Нульарные» операторы — это предопределенные имена %, %%, %%% результата последней, предпоследней и предшествующей предпоследней операции. Основное предназначение этих имен возможность использовать в последующих выражениях результатов операций, если эти результаты не были присвоены некоторой (некоторым) переменной (переменным). Например
> sin(Pi/6);
1/2
> % +3;
7/2
Естественно, такая возможность важна в тех случаях, когда вычисление громоздко и не может быть быстро повторено. (Иначе можно было бы просто переписать фрагмент с присвоением результата некоторой переменной, и выполнить повторно вычисление результата.) Maple имеет специальный механизм для сохранения выполненных в течении сеанса результатов. Поэтому в большинстве простых случаев возможность, предоставляемая унарными операторами, пользователями не используется. Эта возможность часто использовалась в те времена, когда производительность компьютеров была достаточно мала.
Таблица 2.2 — Унарные операции
Обозначение |
Описание |
Пример или комментарий |
+ |
Знак числа |
+8 |
- |
Знак числа, смена знака |
-8 |
! |
Факториал. n! = 1*2*…n |
3! (результат: число 6) |
$ |
Создание последовательности ($ m..n) |
$ 1..10 (будет описан в разделе последовательности) |
not |
Логическое отрицание |
not B. (см. пример ниже таблицы) |
&string |
Определение пользовательского оператора |
Будет рассмотрен после темы «Процедуры» |
%целое |
Метка |
|
. |
Десятичная точка |
.1 (задаёт значение 0.1) |
Пример для not (о булевых значениях будет подробнее написано ниже)
> B:= true: # присвоили переменной B значение «Истина»
> A:= not B;
A := false
Метки в Maple используются не так как в большинстве языков программирования высокого уровня. В этой СКА метки служат для представления больших выражений: метками помечаются подвыражения. Допустимость использования меток в больших выражениях и длина, начиная с которой возможно выделять подвыражение и присваивать ему метку определяется значениями интерфейсных переменных задаваемых при помощи вызова функции interfece (детали приведены в помощи к функции interface).
Таблица 2.3 — Бинарные операции
+ |
Сложение. |
.. |
Построение диапазона |
- |
Вычитание |
:= |
Присвоение |
* |
Умножение |
< |
Меньше чем |
/ |
Деление |
<= |
Меньше или равно |
^ |
Возведение в степень (или **) |
> |
Больше чем |
$ |
Построение последовательности |
>= |
Больше или равно |
@ |
Композиция |
<> |
Неравно |
@@ |
Кратная композиция |
-> |
Создание оператор-функции |
, |
(Запятая) Разделитель выражений |
union |
Объединение множеств |
|| |
Соединение строк |
intersect |
Пересечение множеств |
. |
Десятичный разделитель (в числе) |
:: |
Описание типа |
and |
Логическое И |
mod |
Вычисление по модулю |
or |
Логическое ИЛИ |
:- |
выбор элемента модуля |
xor |
Логическое исключающее ИЛИ |
&string |
Определение пользовательского оператора |
implies |
импликация |
|
|
Пример композиции и кратной композиции
> a:= sin: b:= cos:
> (a@b) (x);
sin(cos(x))
> f:= (a@@3)(x);
> expand(f);
sin(sin(sin(x)))
Композиция используется при достаточно «продвинутом» программировании и в этом курсе рассматриваться не будет.
Большая часть приведенных в таблице операторов будет описана ниже в соответствующих разделах.