Дьяконов В. Maple 7 - Учебный курс (1185900), страница 32
Текст из файла (страница 32)
Такие наборы в виде мно- жеств создаются с помощью фигурных скобок ( ): > (а.Ь,а,а,ЬА,е,сА); ( а, Ь, с, е, Ы ) > [10,2+3,4+4,8,5,1); (1,5,8,10) > ('Не))о','ву','!степе'); (7г!еаза,Не!!о, в(у ! Отличительная черта множеств — автоматическое устранение из них повторяющихся по значению элементов. Кроме того, Мар!е 7 расставляет элементы множеств в опцврделенном порядке — числа в порядке увеличения значения, а символы и строки в алфавитном порядке, Для множеств нет строгого математического определения, и мы будем считать их наборами, удовлетворяющими перечисленным вылив признакам.
212 Урок 5. Типы данных системы Мар1е 7 Списки выражений Для создания упорядоченных наборов — списков — служат квадратные скобки [ 1: (10.2+3.4+4.8.5. Ц: [!0,5,8,8,5, !] Как нетрудно заметить, алементы списков преобразуются н выводятся строго в том порядке, в каком они были заданы. Списки широко применяются для задания векторов и матриц. В ряле случаев, например при подготовке данных для двумерных графиков, возникает необхолимость в полготовке парных списков -- скажем, координат точек (сц у) графика. Для этого можно использовать функцию ттр(Т, о.
ч) илп гтр(Т, и, ч. ((). Здесь т — бинарная функция, и, ч — списки илп векторы, о— необязательное значение. Примеры применения функции хтр даны ниже: Х:=(1,2.3,4.51:т: (3.2.1.1.5.2.51: рагс: (Х,Т)->(Х,Ч); роге:= (Х, У) — э [Х, У] и Соогохт:=х!р(раге,Х,Т.2): СоотЫХУ;= [[1, 3 ], [2, 2], [3, ! ],[4, 1.5],[5, 2.5]] . Хтр((Х Л) иХ+Т,Х,Т); [4, 4, 4, 5.5, 7.5 ] Рисунок 5.2 показывает применение этих средств для построения точек, представляющих множество действительных чисел на плоское~и. Для этого использована функция ро!птр1от из пакета р1отэ.
Массивы, векторы и матрицы Как отмечалось, важным типом данных являются списки (11515). Они созлаются с помотцью квадратных скобок, например: О [1,2,3,41 — список из четырех целых чисел; О [1.,2.34,53 — список из двух вещественных и олного целого числа; О [а,Ь,'Привет'3 — список из двух символов (переменных) и строковой константы; О [5!п(х). 2*сов(х).а"2-Ь] — список из трех математических выражений. Для созлания векторов (олномерных массивов) и матрип (двумерпых массивов) служит функция аггау Обычно она используется в следующих формах: О аггау[а..Ь.511 — возвращает вектор с индексами от а до Ь и значениями в одномерном списке 51; О аггау[а..Ь,с,,с(.523 — возвращает матрицу с номерами строк от а ло Ь, номерами столбцов от с до с(и значениями в лвумерном списке 52.
Данные множественного типа 213 Рие. 5.2. Представление множества чисел на ллосластн Примеры задания вектора и матрицы представлены ниже: О аггау(1., 3, [х,у. хну]) — созпзет вектор с элеи|ептамп х, у и х е сб Гл а] О аггау(1..2,1.. 2, [[а, Ь]. [с,с)]]) — квадратная матрица ~, Двумерные списки часто путают с матрицами. Следует помтптть, что векторы и матрицы созлаются с помощью функции аггау и являются отдельным типом данных. Элементами векторов и массивов могут быть константы, переменные, выражения, списки и иные объекты.
Этн элементы являются индексированными переменными и их положенвте указывается индексами. Имеется множество функций для работы со спиасамп, массивами и матрицами, Они будут рассмотрены в дальнейшем. В принципе, размерность массивов, создаваемых списками, не ограничена и массивы могут быть мтюгомерпыми. Таблицы Еще оттнимиаажным типом множественных данных являются таблицы. Они задают ланные с произвольной индексацией. Для создания таблиц служит функция 2аЬ]е, которая при вызове в простейшем виде 2аЬ]е[] создает шаблон пустой таблицы: 214 Урок 5. Типы данных системы нар(е Т > таЫеП; (ПЫе Пустая таблица резервирует память под данные.
Когда параметром функппн СаЫе является список выражений, он выводится в естественном порядке расположения элементов таблицы, но с произвольным порядком индексации: ЕаЫеП' (аЫе . Т:-таые([1.2,Р1, 5(г)по )); T:= (аЫс([1 = 1, 2 = 2, 3 = л, 4 = 5МпЯ Т[31; 5:=таЫе([(опе)-1.
([ио)-2. (Еогее)=31): о":= таЫе([опе = 1, гдгее = 3, (но = 21) > 5И): о, 5[тип); 2 > 5[тпгее1; 3 > енто'ее(5); 11),131, 12] 1пе1сее(5): [оно'3 ((агое1 [пчо) Б конце приведенных примеров показано, нак можно выделить отдельные компоненты таблицы и вывести значения и индексы таблицы с помощью функций епгпез и 1п()1сез. Следующие примеры показывюот, что таблицу мо)кно использовать для выполнения математических преобразований: > Р:= [аЫе([51п сое.сое" 5!п)): ор(ор(Г)); (соз = — 51п, 5!п = со51 > Р[с053(Р1/2).' -1 > Р[5тп)(0): 1 > еча)((сое(Р1/2)): О.
> еча)((51п(0)): О. Следует внимательно присмотреться к этим примерам — они демонстрируют замену функции косинуса на отрицательный синус и синуса на косинус. Константы 215 Строки и комментарии Строковые данные Строки как тип данных — это просто цепочки символов. Они обычно используются для создания текстовых комментариев. Строки должны каким-либо образом выделяться, чтобы Мар1е не отождествляла нх с именами констант и переменных.
Для этого строки-комментарии имеют внутренний разделительнаяй признак, который устанавливается при их вводе (нажатием клавиши г5, которое приводит к исчезновению знака >). В других случаях последовательность символов рассматривается как строка, если она заключена в обратные апострофы, то есть в знаки '. Два апострофа подряд формируют апостроф как знак символьной строки, например 'аЬс''ПеГ дает строку аЬс'грег. Любое математическое выражение может входить в строку, разумеется, оно при этом не выполняется: > '2+2 не всегда "четыре' " 2+2 не всегда 'четыре' Неисполняемые программные комментарии Часто возникает необходимость в задании программных комментариев, Любой текст после знака (г рассматривается как невыводимые (неисполняемый) программный комментарий — даже если это математическое выражение, При этом он не вычисляется.
Например: > 2+3:йзто лрииер. А вто выраиение не вычисляется; 4ч5 5 Комментарии полезны в программах на Мар1е-языке и обычно используются для объяснения особенностей реализованных алгоритмов. Константы Числовые константы Константы — это простейшие именованные объекты, несущие заранее предопределенные значения. Их имена (идентификаторы) также заранее определены и не могут меняться.
Подробную информацика о константах можно найти, исполнив команду?солзсалс. Обычные числовые константы не имеют имени и представлены просто числами, типы которввх были указаны выше. Можно считать, что именем такой константы является само ее значение. Например, в выражении 2*з1л(1.25) числа 2 и 1.25 являются числовыми константами. При этом указание десятичной точки делает 216 Урок 5. Типы данных системы Мар(е ) константу действительным числом — например, 2 — это целочисленная константа, а 2., 2.0 или 1.25 — это уже действительные константы. Строковые константы Строковыми константами являются произвольные цепочки символов, заключенные в обратные апострофы, например 'Не))о', 'Привет', 'иу пцяЬег' и т. д.
Числа, заключенные в апострофы, например '123456', также становятся строковыми константами, которые нельзя использовать в арифметических выражениях, Строковые константы представляют значения строковых переменных. В них можно использовать символы кириллицы прн условии, что соответствуюшц1) шрифт имеется. Встроенные в ядро константы Есть также ряд констант, которые правнльнес считать заведомо определенными глобальными переменными: О Еа)зе — логическое значение «ложно»; О 9аяяа — константа Эйлера, равная 0.5772156649,.4 О 1пЕ)п)СУ вЂ” положительная бесконечность (отрицательцаи задается как тп(тп)СУ); О Сгие — логическое значение «истинно»; О СеСа)ап — константа Каталана, равная 0.915965594..4 О ГА1Š— специальная константа (см.
справку, выдаваемую по команде ?ЕА1Е); О 1 — мнимая единица (квадратный корень из — 1); О Рт — представляет константу я = 3.141... Любопытно, что в этот список не входит основание натурального логарифма— число е. В качестве этой константы рекомендуется использовать ехр(1). Она отображается как жирная прямая буква Е. Л ехр(1.0) выводит 2.71828... (что и следовало ожидать). Идентификация констант Функции Суре(х, сопзСапС) и Суре(х, геа)сопз) возвраща|от логическое значение Сгце, если х представляет целочисленную или вещественную константу, и 1а) зе, если х не является константой.
Таким образом, эти функции можно использовать для идентификации констант, например: > Суре(Р1.сопвсапс); пие > Суре(2,сопвсапс): г ие > Суре(112.сопвсапс); пне Переменные 21 7 > суре(.ь.соппсапс); о.ае Суре(х/у.сопатапС); /а(ле Суре(1п( Р1),соппСапС); (гие Суре((п((п1Су,сопатапС): ггае > Суре( 1.234,геа1сопа); ггае Суре(х"у.геа1сопа); ~а(ае Суре(2+3*1,геа!сапа): Га(ус Защита идентификаторов констант Имена встроенных констант (как и имена функций) зашиШены спсциальньйпп атрибутом ргоСесСе(). Поэтому (без его снятия) константам нельзя присваивать какие-лнбо значения: > Рп;-1; Епог, апегпрйпй со азз(еп (о 'Р1' пуЬ(сЬ 1з ргосес(еп) > даппа; у > данна:=10; Еггог, а((еп)р()пя (о азяйв Со 'Папаша' паЫс)) (з рго(ес(е() Стоит упомянуть о такой экзотической возможности, как задание в Мар)е 7 собственных констант путем овисанпя алгоритма генерации входяШих в константу цифр (это позволяет получать в представлении константы любое число пнфр).
Большинство пальзователей довольствуется применением вместо таких констант обычных переменных подходяшего типа. Зато истинные математики соревнуются друг с другом в создании все новых и новых констант и алгоритмов их вычислений. Примеры этого творчества можно найти на сайте фирмы %а(е1оо Мар!е. Переменные Типы переменных Как следует из самого названия, переменные — это объекты, значения которых могут меняться по ходу выполнения документа.
Пока мы рассматриваем лишь 218 Урок Э. Типы данных систеиы Мар1е Т глобааьные переменные, доступные для модификации значений в любом месте документа. Тип переменной в системе Мар1е 7 определяется присвоенным ей значением — это могут быть целочисленные (тп1едег), рациональные (га1топа1), вещественные (геа1), комплексные (соир1ех) или строчные (з1гтпо) переменные и т. д. Переменные могут также быть символьного типа (их значением является математическое выражение) или типа списка (см. далее).
Для явного указания типа переменных используется конструкция: навес: туре где паве — имя (идентификатор) переменной, 1уре — тип переменной, например целочисленный (т'п1еяег), вещественный с плавающей точкой (Т)оа1), с неотрицательным значением (поппев), комплексный (соир1ех) и т. д. Идентификаторы (имена) переменных Переменные задаются своим именем — идентификатором, который должен на- чинаться с буквы и быть уникальным.
Это значит, что ключевые слова языка Мар1с нельзя использовать в качестве имен переменных. Хотя имена ряда ко- манд и функций можно использовать в качестве идентификаторов переменных, делать это крайне нежелательно. Ограничений на длину идентификатора прак- тически нет — точнее, она не должна превышать 524 275 символов! Так что сложностей с подбором идентификаторов для переменных у вас нс будет. Имена переменных могут содержать одну букву (например, х, У или 2) либо ряд букв*(Хппп или Хвах).