|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Переназначение определенийВ большинстве случаев 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.) уже не вычисляется, поскольку ее больше нет. Модули Модули придают языку программирования Maple 7 некоторые свойства языков объектно-ориентированного программирования. Они служат для реализации абстрактного типа данных на основе инкапсуляции — объединения данных и процедур их обработки. Модули задаются ключевым словом module с пустыми скобками () и завершаются словами end module или просто end: name:= module() export eseq; local Iseq; global gseq: option optseq: description desc: Тело модуля end module (или просто end) Хотя структура модуля во многом напоминает структуру процедуры, включая объявление локальных и глобальных переменных, параметров и описаний, между ними есть существенная разница: · модуль не имеет списка входных параметров; · в модуле могут размещаться данные; · модули могут использоваться для создания пакетов процедур, доступ к которым обеспечивается командой with; · модули имеют свойства в виде локальных переменных и методы в виде процедур интерфейса модулей; · реализация абстрактных типов данных с помощью модулей скрыта от пользователя; · модули могут содержать оператор export eseq, объявляющий экспортируемые переменные модуля; · для доступа к экспортируемым переменным модуля может использоваться специальный оператор «:-» (двоеточие и минус); · модули и процедуры могут вкладываться друг в друга без ограничения уровня вложенности; · модули могут иметь специальные конструкторы объектов. Следующий пример демонстрирует создание модуля 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) требует серьезного знакомства с техникой объектно-ориентированного программирования. Такое знакомство выходит за рамки данной книги. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |