Генерация кодов на языке С
Язык С (Си) также широко используется для решения вычислительных задач. Достаточно отметить, что сама система Maple 7 создана на языке С. Для генерации кодов на языке С вначале надо подключить соответствующую функцию: > with(codegen.C); [С] Затем можно использовать функцию С: С(ехрг.folename=str.optimi zed) Эта функция используется по аналогии с функцией fortran, что и показывают приведенные ниже примеры: > C(d1ff(x4>,x$2)); t0 = pow(x,1.0*b)*b*b/(x*x)-pow(x,1.0*b)*b/(x*x); > C(diff(xAb,x$2),optimized); tl = pow(x,1.0*b); t2 = b*b; t4 = x*x; t5 = l/t4; ' t9 = tl*t2*t5-tl*b*t5; Обширные возможности преобразования выражений в различные формы предоставляет функция convert. А функция interface позволяет управлять выводом. К сожалению, объем книги не позволяет рассмотреть все многочисленные варианты применения этих функций. Дополнительные возможности Maple-языка Дополнительные возможности Maple-языка Переназначение определений В большинстве случаев Maple-язык использует достаточно длинные идентификаторы для своих определений, например функций. Однако с помощью функции al i as можно изменить любое определение на другое, если оно кажется пользователю более удобным. Функция alias записывается в виде: alias(e1. е2..... еN) где e1, e2,..., eN — ноль или более равенств. Эта функция возвращает список переназначений и осуществляет сами переназначения. Например, для замены имени функции BesselJ на более короткое имя BJ достаточно параметром функции alias записать BJ=BesselJ: > alias(BJ-BesseU): BJ,Fx > [BJ(0.1.),Besse1J(0,1.)]: [.7651976866,.7651976866] Можно также переназначить функцию пользователя: Для отмены переназначения, например BJ, используется та же функция alias с повтором переназначения: > a1ias(B>BJ): Fx > BJ(0,1.); BJ(0,1.) Обратите внимание на то, что BJ исчезло из списка переназначений и функция BJ(0,1.) уже не вычисляется, поскольку ее больше нет.
Gif Модули. Модули Модули придают языку программирования Maple 7 некоторые свойства языков объектно-ориентированного программирования. Они служат для реализации абстрактного типа данных на основе инкапсуляции — объединения данных и процедур их обработки. Модули задаются ключевым словом module с пустыми скобками () и завершаются словами end module или просто end: name:= module() export eseq; local Iseq; global gseq: option optseq: description desc: Тело модуля end module (или просто end) Хотя структура модуля во многом напоминает структуру процедуры, включая объявление локальных и глобальных переменных, параметров и описаний, между ними есть существенная разница:
Следующий пример демонстрирует создание модуля pt, в котором заданы две операции (сложения plus и умножения times) и показан доступ к ним: > pt:= module() export plus, times; plus:= (a.b) -> a + b; times:= (a.b) -> a * b: end module: pt:= module () export plus, times; end module > pt:-p1us(3,5); > pt:=times(3,7); Детальную информацию о модулях и о конструкторах объектов можно найти в справках по ним. Некоторые пакеты Maple 7 (в основном сравнительно новые) реализованы уже не в виде процедур, а в виде модулей (например, в виде модуля сделан пакет LinearAlgebra). В простейшем виде модули могут использоваться всеми пользователями системы Maple 7, но их серьезное применение (например, с целью создания полноценных пакетов Maple 7) требует серьезного знакомства с техникой объектно-ориентированного программирования. Такое знакомство выходит за рамки данной книги.
Макросы Макросы Макрос — это макрокоманда, короткая запись длинных определений. По сравнению с переназначениями макросы более гибки и могут использоваться для сокращения операций загрузки новых определений из библиотеки и пакетов. Макросы создаются с помощью функции macro: macrc(e1, e2,.... en) где el, е2,....,, en — ноль или более равенств. В следующем примере функция numbperm с помощью макроса заменена на пр: > numbperm([l,2,3,4]); > macro(np=numbperm(V)); nр > V:=[1.2.3.4]: F:=[l,2,3,4] > np(V); Макросы могут быть использованы для конструирования выражений из их макроопределений. Внешние вызовы Внешние вызовы Maple 7 имеет команду system(string), с помощью которой можно исполнить любую команду MS-DOS, записанную в виде строки string. Например, для форматирования гибкого диска из среды Maple 7 можно использовать стандартную команду MS-DOS: > system(`format a:`); На экране появится окно MS-DOS с начальным диалогом форматирования диска А. Это окно показано на рис. 7.5. При работе в операционной системе Windows эта возможность практически бесполезна, поскольку форматирование диска с большими удобствами можно выполнить средствами Windows. Внешние вызовы командой system куда более полезны для MS-DOS-реализаций Maple, которые кое-где используются и по сей день. Но поскольку данная книга посвящена самым современным Windows-реализациям системы Maple 7, более подробное рассмотрение операций внешних вызовов не имеет особого смысла. а б Рис. 7.5. Результат выполнения команды форматирования гибкого диска Gif
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|