Дьяконов В. Maple 7 - Учебный курс (1185900), страница 42
Текст из файла (страница 42)
Их применение лишает ваши Мар!е-программы совместимости со стандартной версией Мар1е 7. Если вы используете одну-две процедуры, проще поместить их в те документы, в которых они действительно нужны. Иначе вы будете'вынуждены к каждой своей программе прикладывать еще и библиотеку процедур. Она нередко оказывается большей по размеру, чем файл самого документа. Не всегда практично прицеплять маленький файл документа к большой библиотеке, большинство процедур которой, скорее всего, для данного документа попросту не нужны.
Особенно рискованно изменять стандартную библиотеку Мар1е 7. Впрочем, идти на это или нет — дело каждого пользователя, Разумеется, если вы готовы создать серьезную библиотеку своих процедур, то ее надо записать и тщательно хранить. С Мар1е 7 поставляется множество библиотек полезных процедур, составленных пользователями со всего мира, так что и вы можете пополнить ее своими творениями [см, урок 14). Запись и считывание данных Обширные возможности Мар1е 7 делают привлекательным применение этой программы для автоматической обработки данных, поступающих от каких-либо экспериментальных установок. Для этого установки снабжаются интерфейсными платами [например, аналого-цифровыми преобразователями) и необходимым программным обеспечением.
Возможна и передача данных, полученных с помощью Мар1е 7, в экспериментальные установки. Обмен информацией между Мар!е 7 и внешней средой [к ней, кстати, относятся и другие программы) чаще всего осуществляется через файлы текстового формата, поскольку именно с такими файлами могут работать практически все программы. Для записи данных в файл служит оператор иг(СебаСа; иг([еба[а[АРРЕИО!([(1е!О. бага) иг([еба[а[АРРЕИО!(М1е!О.
ба(а. (огиаю иг([ебата[АРРЕИО)([11е[0, ба(а, (огаа[. бе(ао1() Здесь Е(1е!Π— имя или дескриптор файла данных, баСа — список, вектор или матрица данных, СогваС вЂ” спецификация формата данных [(пСейег, Е1оаС или зСг(п9), беЕап!С вЂ” процедура, задающая запись нечисловых данных, например: иг(гела[а(Е.А.Г)оа( ргос((.х) (рг(п(Г(Г,'СИР[Х(29.29)'.Ре(х) !и(х)) епб): Необязательный указатель ДРРЕМО используется, если данные должны дописываться в уже созданный файл. Считывание из файла й!епап)е обеспечивает функция геаббаСа: геабба(а(Г11е!О. п) геаббага(Г(1е!О, Гогов[, п) геаббага(Г11е!О, Согиаг) Здесь и — целое положительное число, задающее число считываемых столбцов.
Ниже представлены примеры этих операций: > бава: аггаи(Ш ,2,3],Е4,6,63,[У.В,9П ): 280 Урок 7, Типовые средства прпгрвммироввмив 1 2 3 с(а(а:= 4 5 б 7 8 9 > иг)сеавсв('С:Ымуавва.тхт'.аатв); > гезтвггл > овса; в)аса с)асв:=геааавта('С;Омупвтв.гхт',3). с!ага:= 111., 2., 3.1, 14., 5., б.1, 17„8., 9. ) ] Мар1е 7 имеет также типичные файловые операции; О иг)аеас — запись в файл; О аррепШо — добавление к файлу; О преп -- открьпие файла; О с1ове — закрытие файла; О иг1се — запись в открытый файл; О каче — запись выражений в файл; О геас) — считывание пз файла. Их реализапия, однако, зависит от платформьс, ца которой установлена систе- ма, и от ес настройки.
Вывод в специальных форматах Вывод в формате ЕатеХ Мар!е 7 пмсст ряд средств для об)ценна с другими программами. Часть из них, в осповнол) относящаяся к обмену через файлы, уже была описана. Однако Мар!е 7 способна генерировать коды для прямого их вклгочсния в такие программы, причем не только математические. Для подготовки математических статей и книг щирокое распространение получили редакторы ТеХ и ) атеХ. Для подготовки выражений или файлов в их формате служит функция; 1а(ех(ехрг.п 1епаме) Параметр Т(1епаае не обязателен, если достаточно получить нужное выражение в ячейке вывода Мар!е 7: > 1а(ЕХ(В*Х"2>Ь*Х+С); а(х) (2)+Ьх+с > 1авех(с))ГГ(х"п,х$2)): ((Тгвс ((х)"(п)(п)~(2))((х)"(2)))-(((гас ((х)"(п)п)((х)"(2))) Выеод а специальных форматах к31 Генерация кодов на языке Фортран Язык Фортран вот уже многие десятилетия используется для программирования вычислительных задач, накоплены обширные библиотеки решения таких задач на Фортране.
Почитателей этого языка Мар1е 7 порадует тем, что она позволяет готовить коды для программ на Фортране. Для этого вначале надо загрузить библиотечную функцшо: > изсь(сгх)еоеп,гогсгап); (/огггап 1 После этого может использоваться функция /ог1гап: /огс ап:ехрг /з!епаме=а1г.ор(]м1аеш Два последних параметра пе обязательны при выводе выражения ехрг в форме, присущей языку Фортран: > тогс ап(а"х"2ьЬ*х>с]; 10 = а*х**2еЬ*нес > тогсгап(ватт(х п,х$2)); 10 = х**п*п**2/к**2-х**п*п/х"*2 Параметр ор11л)12е позволяет генерпровап оптпмизпров:шные колы; > /ОГЬ ал(аьХ 2>Ь*Х+С,ер11М]аЕО]; 11 = х* 2 14 = а'114Ь*хес При этом вьшпслительпьш процесс строится так, чзобы ьнпшмпзпровать число арифметических опсраш]й.
Генерация кодов на языке С Язык С (Си) также широко используется для решения вычислительных задач, Достаточна отметить, что сама система Мар1е 7 создана па языке С. Для генерации кодов на языке С вначале надо подключить гоответствуюшую функцию: итеп(сосеоеп.С): (с1 Затем можно использовать функцию С; С(ехрг. /о! епаме.=ь1 . орс з мыее) Эта функция используется по аналогии с функцией тогсгап, что и показывают приведенные ниже примеры; > С(с)тт(х Ь,х$2)); 10 = роьт(х,1.0*Ь)"Ь>Ы(х*х)-Роиг(х,1.0*Ь)"Ы(х*х)) > С(еи тт(х Ь,х$2],орт!в)аее): 11 = рои(х,1.0*Ь)) 12 = Ь*Ь; 282 Урок 7.
Типовые средства программирования 14 = х*х; 15 = 1/14; (9 = 11*12*15-11*Ь*(5; Обширные возможности преобразования выражений в различные формы предоставляет функция сопчег1. тт функция тпсегТасе позволяет управлять выводом. К сожалению, объем книги не позволяет рассмотреть все многочисленные варианты применения этих функций. Дополнительные возможности Мар1е-языка Переназначение определений В большинстве случаев Мар1е-язык использует достаточно длинные идентификаторы для своих определений, например функций.
Однако с помощью функции а1(аз можно изменить любое определение на другое, если оно кажется пользователю более удобным. Функция а)1аз записывается в виде: а11аа(е). ех, , ., еп) где е1, 02, ..., е)) — ноль или более равенств. Эта функция возвращает список переназначений и осуществляет сами переназначения. Например, для замены имени функции Вевве!3 на более короткое имя В,) достаточно параметром функции а1)аз записать ВЗ=Вевве1): > а1(ав(ВЗ-Веаве1 Л; В.У, гх > (ВЛ0.1.),Вевве13(0,1.)3: 1.7651976866,.7651976866~ Можно также переназначить функцию пользователя: > а!!ав(Ех-Г(х)): В.т', гх > щ ГТ(Г(х).х); д — гх д > (пс(Е(х),х-а..о): а 1 Пс(х О Для отмены переназначения, например В), используется та же функция а1)'аз с повтором переназначения: > а11ав(ВЗ-ВЛ; Гх Дополнительные возможности (Нар!е-языка 283 вз(од.): В7(О, 1.) Обратите внимание на то, что В) исчезло из списка переназначений и функция В,)(0,1.) уже не вычисляется, поскольку ее больше пет.
Модули Модули придают языку программирования Мар!е 7 некоторые свойства языков объекюю-ориентированного программирования. Они служат для реализации абстрактного типа данных на основе инкапсуляции — объединения данных и процедур пх обработки. Модули задаются ключевым словом во()в)е с пустыми скобками () и завершаются словами еп() аюоц1е или просто еп(): паве .= вопо1е() ехрогг езец; 1оса1 1ьец; ц(оЬа1 цзец: ор( ( оп ортзец: Оезсюртп оп Оезс; Тело иолулв епп копо1е (или просто епп) Хотя структура модуля во многом напоминает структуру процедуры, включая объявление локальных и глобальных переменных, параметров и описаний, между ними есть существенная разница.' О модуль не имеет списка входных параметров; О в модуле могут размещаться данные; О модули могут использоваться для создания пакетов процедур, доступ к которым обеспечивается командой ытЬЬ( О модули имеют свойства в виде локальных переменных и методы в впдс процедур интерфейса модулей; О реализация абстактных типов данных с помощью модулей скрыта от пользователя; О модули могут содерзкать оператор ехрогг евец, объявляющий экспортируемые переменные модуля; О для доступа к экспортируемым переменным модуля может использоваться специальный оператор:-» (двоеточие и минус); О модули и процедуры могут вкладываться друг в друга без ограничения уровня вложенности; О модули могут иметь специальные конструкторы объектов.