
- •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
2.2.2Комментарии
Если в строке в содержится #-символ, то следующие за ним в этой строке символы считаются комментариями. [Комментарии могут быть использованы для «отключения» части кода.]
Пример комментария. В следующем примере присвоение значения переменной b не выполняется.
> a:= 1; # b:=1; c:= 1;
a := 1
c := 1
2.2.3Функции op и nops.
Функция op(expression) выделяет операнды из выражения. Например, op(a*x^2+b*x+c); вернёт a*x^2, b*x, с. Последующее применение функции op к первому выделенному операнду op(a*x^2) даст a, x^2. Вызов op(x^2) вернёт x, 2. Кроме описанного выше, имеется несколько других вариантов вызова этой функции.
op(i, expression) — возвращает операнд с номером i (i — целое). [Если i=0, то возвращаемое значение зависит от типа данных: для индексированных имен — это имя без индекса; для функции — это идентификатор функции,...]
op(i..j, expression) — возвращает операнды expression в диапазоне от i до j.
op(list, expression) — возвращает «подоперанд» адресуемый списком list: первый элемент списка list указывает номер операнда expression, второй элемент — номер операнда в операнде выделенном на первом шаге, и т.д. Например, в рассматриваемом выше случае квадратного многочлена получим
op([1, 2, 1], a*x^2+b*x+c);
x
op([1, 2, 2], a*x^2+b*x+c);
2
т.е. в первом случае — основание степени, а во втором — показатель.
Функция nops(expression) возвращает число операндов. Например, вызов nops(a*x^2+b*x+c) вернёт три, а вызов nops(a*x^2) — два.
2.3Типы выражений
Для определения типа выражения, в частности значения присвоенного переменной, может использоваться функция whattype.
Пример использования whattype
> x:= 10: whattype(x);
integer
> x:= "Текст": whattype(x);
string
Функция whattype не позволяет тестировать подтипы. Более точное тестирование можно выполнить при помощи функции type(expression, type_expressin). Эта функция возвращает true, если выражение имеет заданный тип, и — false, в противном случае.
Примеры использования type
1. Натуральные числа принадлежат к типу integer
> x:= 1: type(x, integer);
true
> x:= -1: type(x, integer);
true
> x:= 0: type(x, integer);
true
2. Для более тонкой проверки можно воспользоваться подтипами: posint, negint, nonnegint, nonposint. Как и в предыдущем примере можно было бы присваивать значения переменной и затем тестировать присвоенное этой переменной значение. Для того чтобы привести другой вариант использования функции в данном примере тестируются типы непосредственного выражения.
> type (1, posint);
true
> type(-1, negint);
true
> type(0, posint);
false
> type(0, nonposint);
true
> type(0, nonnegint);
true
Перечень типов и подтипов приведен на странице справки type. [Напоминание: для того чтобы быстро открыть страницу справки: введите в рабочем листе type, переведите на него курсор и нажмите Ctrl + F1, либо наберите в Maple Input ?type; и нажмите Enter]. Условно типы делятся на: простые и структурированные.