Warning: include(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include_once(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82

Warning: include_once(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82
Операции ввода и вывода | Учебники

Главная > Maple 15 > Операции ввода и вывода


Операции ввода и вывода

Операции ввода и вывода
Считывание и запись программных модулей
В уроке 2 рассматривалась работа с файлами документов. Вводимые в текущий документ программные модули хранятся вместе с ним, так что при отказе от загрузки какого-либо документа все его программные блоки не могут использоваться в других документах. Кроме того, порой неудобно загружать объемный документ ради использования одного или нескольких модулей, например процедур. Поэтому в Maple 7 введены средства, позволяющие записывать нужные модули (в том числе результаты вычислений) на диск и считывать их в случае необходимости.
Для записи на диск используется оператор save:

  •  save filename — запись всех определений текущего файла под именем filename;
  • save name_l, name_2, …. name_k, filename — запись избранных модулей с именами name_l, name_2, …, name_k под именем filename.

Считывание имеющегося на диске файла filename осуществляется оператором read:
read <filename>
При считывании все имеющиеся в файле определения становятся доступными для рабочих документов Maple. При записи файлов отдельных определений используется специальный внутренний Maple-формат файлов. Для загрузки файлов типа *.m из стандартной библиотеки используется функция readlib. А для записи файлов в качестве библиотечных достаточно в имени filename оператора save указать расширение .т. Разумеется, можно считывать такие файлы и оператором read, указав в имени файла расширение .m:
> save my_proc,4myJib.nT: # запись файла пу_ргос и
 > # библиотечного файла my_lib.m:
> load ‘myjlib.m’: # считывание библиотечного файла 
> # myjib.m.
Создание своей библиотеки процедур
Если приведенные выше примеры составления процедур кажутся вам простыми, значит, вы неплохо знаете программирование и, скорее всего, уже имеете несколько полезных процедур, которые вы хотели бы сохранить — если не для потомков, то хотя бы для своей повседневной, работы. Сделать это в Maple 15 довольно просто.
Прежде всего надо определить имя своей библиотеки, например mylib, и создать для нее на диске каталог (папку) с заданным именем. Процедуры в Maple 15 ассоциируются с таблицами. Поэтому вначале надо задать таблицу-пустышку под будущие процедуры:
> restart;
 > mylib:=tab1e(): 
mylib := table([])
Теперь надо ввести свои библиотечные процедуры. Они задаются с двойным именем — вначале указывается имя библиотеки, а затем в квадратных скобках имя процедуры. Для примера зададим три простые процедуры с именами fl, f2 и f3:
 > mylib[fl]:=proc(x: Anything) sin(x)+cos(x) end:
 > mylib[f2]:=proc(x:anything) sin(x)^2+cos(x)^2 end: 
> mylib[f3]:=proc(x::anything) if x=0 then 1 else sin(x)/x fi end:
Рекомендуется тщательно проверить работу процедур, прежде чем записывать их на диск. Ограничимся, скажем, такими контрольными примерами:

Можно построить графики введенных процедур-функций. Они представлены.
С помощью функции with можно убедиться, что библиотека mylib действительно содержит только что введенные в нее процедуры. Их список должен появиться при обращении with (mylib):
> with(mylib);
[f1,f2,f3]
Теперь надо записать эту библиотеку под своим именем на диск с помощью команды save:
 > save(mylib,`c:/ mylib.m);
Обратите особое внимание на правильное задание полного имени файла. Обычно применяемый для указания пути знак в строках Maple-языка используется как знак продолжения строки. Поэтому надо использовать либо двойной знак \, либо знак /. В нашем примере файл записан в корень диска С. Лучше поместить библиотечный файл в другую папку (например, в библиотеку, уже имеющуюся в составе системы), указан полный путь до нее.
После всего этого надо убедиться в том, что библиотечный файл записан. После этого можно сразу и считать его. Для этого вначале следует командой restart устранить ранее введенные определения процедур:
> restart;
С помощью команды with можно убедиться в том, что этих определений уже нет:
> with(mylib):
Error, (in pacman:-pexports) mylib is not a package
После этого командой read надо загрузить библиотечный файл:
 > read(‘c:/mylib.m’);
Имя файла надо указывать по правилам, указанным для команды save. Если все выполнено пунктуально, то команда with должна показать наличие в вашей библиотеке списка процедур fl, f2 и f3:
> with(mylib):
[f1. f2. f3]
И наконец, можно вновь опробовать работу процедур, которые теперь введены из загруженной библиотеки:
> fl(x):
sin(x) + cos(x) > simplify(f2(y});
1 > f3(0):
1 > f3(1.);
.8414709848
Описанный выше способ создания своей библиотеки вполне устроит большинство пользователей. Однако есть более сложный и более «продвинутый» способ ввода своей библиотеки в состав уже имеющейся. Для реализации этого Maple 15 имеет следующие операции записи в библиотеку процедур si, s2, … и считывания их из файлов filel, file2, …:
savelib(s1. s2, …. sn, filename)
  readlib(f. file1. file2. …)
С помощью специального оператора makehelp можно задать стандартное справочное описание новых процедур:
makehelp(n.f.b).
где n — название темы, f — имя текстового файла, содержащего текст справки (файл готовится как документ Maple) и b — имя библиотеки. Системная переменная libname хранит имя директории библиотечных файлов. Для регистрации созданной справки надо исполнить команду вида:
libname:-libname. ‘/mylib":
С деталями применения этих операторов можно ознакомиться в справочной системе.
К созданию своих библиотечных процедур надо относиться достаточно осторожно. Их применение лишает ваши Maple-программы совместимости со стандартной версией Maple 15. Если вы используете одну-две процедуры, проще поместить их в те документы, в которых они действительно нужны. Иначе вы будете вынуждены к каждой своей программе прикладывать еще и библиотеку процедур. Она нередко оказывается большей по размеру, чем файл самого документа. Не всегда практично прицеплять маленький файл документа к большой библиотеке, большинство процедур которой, скорее всего, для данного документа попросту не нужны. Особенно рискованно изменять стандартную библиотеку Maple 15.

Впрочем, идти на это или нет — дело каждого пользователя. Разумеется, если вы готовы создать серьезную библиотеку своих процедур, то ее надо записать и тщательно хранить. С Maple 15 поставляется множество библиотек полезных процедур, составленных пользователями со всего мира, так что и вы можете пополнить ее своими творениями (см. урок 14).

Статьи по теме

Комментарии запрещены.