В этом уроке мы научились:
Использовать функции ввода/вывода. Работать со строками. Использовать функции потоков и файлов. Использовать файлы других языков программирования. Работать с системными функциями.
В целом средства системы Mathematica обеспечивают возможности работы с различными файлами, присущие MS-DOS, без выхода из среды системы. Относящиеся к этой группе функции даны в приложении. Для этих функций характерно, что в момент выполнения они не дают видимого эффекта. К таким функциям относятся функции копирования директорий и файлов, смены их имен, удаления и т. д. Они хорошо известны пользователям MS-DOS и могут выполняться из среды Mathematica.
Рассматривая обширный список файловых и поточных операций, можно поневоле сделать вывод об их избыточности. Но здесь действует простое правило: не хочешь применять эти функции — не применяй! Они рассчитаны на пользователя, всерьез занимающегося стыковкой систем Mathematica с другими программными системами.
Важное место занимают функции, дающие информацию о директориях, файлах и потоках. К ним относятся следующие функции:
Directory [ ] — возвращает текущий рабочий каталог; DirectoryStack [ ] — возвращает содержимое стека каталогов, которое представляет последовательность используемых в текущем сеансе каталогов; $Display— возвращает список файлов и каналов (pipes— канал или абстрактный файл), используемый функцией вывода $DisplayFunction по умолчанию; FileByteCount ["filename"] — возвращает количество байтов в файле; FileDate ["filename"] — возвращает дату и время последней модификации файла в виде списка; Filelnformation ["filename"] — возвращает информацию о файле; FileNames [ ] — приводит список всех файлов в текущем рабочем каталоге; FileNames [" form" ] — перечисляет все файлы в текущем рабочем каталоге, чьи имена совпадают с шаблоном form; FileNames [{ "forml", "form2",...} ] — перечисляет все файлы, чьи имена соответствуют любому из шаблонов formi; FileNames [forms, {"dirl", "dir2",...} ] — перечисляет файлы с именами, соответствующими шаблонам forms, в любом из указанных каталогов diri; FileType ["filename"] — возвращает тип файла: File, Directory или None (если указанного файла не существует); $HomeDirectory — дает имя «домашней» директории пользователя; $Output — дает список файлов и каналов, в которые направляется стандартный вывод системы Mathematica; ParentDirectory [ ] — возвращает имя родительского каталога для текущего рабочего каталога; ParentDirectory ["dir"] — возвращает имя родительского каталога для каталога dir; $ Path — дает список каталогов для просмотра при попытке поиска внешнего файла; StreamPosition [stream] — возвращает целое число, которое указывает позицию текущей точки в открытом потоке stream; Streams [ ] — возвращает список всех потоков, открытых в данный момент; Streams ["name" ] — перечисляет только потоки с указанным именем name.Приведенные ниже примеры иллюстрируют использование большинства из этих достаточно простых функций:
Directory[]
C:\PROGRAM FILES\WOLFRAM RESEARCH\MATHEMATICA\4.0
DirectoryStack[]
{} / $Display
stdout
FileByteCount["C:.val"]
46
FileDatef'C: .val"]
{1999, 8, 3, 16, 4, 44}
FileInformation["C:.val"]
{File->C:\ma.val, FileType->File, Date -> 3142685084, ByteCount ->46}
Filenames[]
{Examples, FILES, MATHEMATICA.EXE,
MATH.EXE, MATHINSTALLER.EXE, MATHKERNEL.EXE}
FileType["C:.val"]
File HomeDirectory[]
c:\ $0utput
{OutputStream[stdout, 1]}
ParentDirectory[]
С: \m3 Streams[]
{OutputStream[stdout, 1],
OutputStream[stderr, 2]}
Высказанное выше соображение об избыточности набора операций вполне применимо и для этих функций.
Для управления системой в процессе вычислений служат системные директивы и функции. Некоторые из них широко используются при программировании решения прикладных задач, другие служат в основном для контроля над системой.
Имена многих, вспомогательных с точки зрения конечного пользователя, системных функций начинаются с символа $. Ниже описаны основные системные функции.
Ряд системных функций служит для получения информации о времени и текущей дате:
AbsoluteTime[ ] — возвращает полное количество секунд, прошедших с момента 1 января 1900 г.; $CreationDate — возвращает дату и время создания используемой версии системного ядра Mathematical Date [ ] — возвращает текущее значение даты и времени в виде {год, месяц, день, час, минута, секунда}; FromDate [date] — превращает дату date вида {год, месяц, день, час, минута, секунда} в число секунд, прошедших с 1 января 1900 г.; TimeUsedt ] — возвращает полное количество секунд процессорного времени, использованного на данный момент в текущем сеансе Mathematical $TimeUnit — возвращает минимальный временной интервал в секундах, который можно зарегистрировать в вашей компьютерной системе; TimeZone [ ] — возвращает часовой пояс, установленный для вашей компьютерной системы; Timing [ехрг] — вычисляет ехрг и возвращает список, состоящий из значения затраченного времени и результата вычислений; ToDate [time] — преобразует абсолютное время в секундах, прошедшее с 1 января 1900 г., в дату вида {год, месяц, день, час, минута, секунда}.Следующие примеры иллюстрируют применение некоторых из этих функций.
Ввод (In) | Вывод (Out) |
AbsoluteTime [ ] | 2967708137 |
Date[] | {2000, 7, 16,11, 23, 8} |
FromDate [ {2000 ,7,15,4,51,30}] | 3172625490 |
SessionTime[] | 8171.1 |
TimeUsedf] | 69.57 |
Их действие вполне очевидно и не требует комментариев.
Ввод/вывод в системе Mathematica организован с помощью интерфейсного процессора (FrontEnd) настолько естественно, что у большинства пользователей едва ли появится искушение изменять формы ввода/вывода по сравнению с установленными по умолчанию. Тем не менее, это возможно с помощью обширного набора команд, имеющихся в меню системы.
Более того, система предоставляет пользователю обширные возможности по организации ввода/вывода и различных форм диалога с помощью соответствующих функций, команд, директив и опций. Эти средства входят в язык программирования систем Mathematica и нередко используются для подготовки серьезных документов (например, обучающих и тестирующих программ), а также для создания пакетов расширения.
Прежде всего отметим функции ввода/вывода, позволяющие организовать диалог с системой в стиле, подобном тому, что используется при программировании на Бейсике. Основные функции для этого следующие:
Input [ ] — останавливает работу системы и возвращает значение выражения, которое будет введено в появившемся диалоговом окне (служит для организации диалогового ввода); Input [ "prompt" ] — то же, что и предыдущая функция, но с выводом в диалоговое окно комментария prompt; InputString [ ] — выполняет интерактивное чтение в символьную строку; InputString [ "prompt" ] — то же, но с выводом в диалоговое окно комментария prompt; StylePrint [ехрr] — создает в текущем документе новую ячейку со стилем по умолчанию и заносит в нее выражение ехрг; StylePrint[expr,"style"] — создает в текущем документе новую ячейку со стилем style и заносит в нее выражение ехрr; Print [expr] — выводит на экран дисплея значение выражения ехрг; совместно с Input может использоваться для организации диалога; Print ["prompt", expr] — выводит на экран дисплея текстовый комментарий, указанный в кавычках, и следом — значение выражения ехрr.Этих функций достаточно для организации простейшего диалога с программой.
На рис. 7.1 показан простейший пример организации диалога в стиле, принятом в языке Бейсик.
В данном случае вычисляется длина окружности с запросом радиуса R.
Далее отметим функции, меняющие формат представления выражений. Все они имеют в своем названии слово Form (форма). Таких функций довольно много, и их полный список вы найдете в приложении. Отметим лишь несколько наиболее часто используемых функций этого рода:
AccountingForm [ехрг] — выполняет вывод всех чисел, содержащихся в выражении ехрr, в бухгалтерской форме представления; CForm[expr] — выполняет вывод expr в форме, принятой для языка С; EngineeringForm [expr ] — дает вывод, представляя все вещественные числа в выражении expr в инженерной форме (это означает, что порядок чисел равен нулю или кратен трем); FortranForm[expr] — выводит expr в форме, принятой для языка Фортран; FullForm [expr] — выводит полную форму выражения expr без использования специального синтаксиса; InputForm[expr] — выводит expr во входной форме; NumberForm[expr, n] — выполняет вывод expr с вещественными числами, представленными с точностью до n цифр; OutputForm [expr] — выполняет вывод expr в стандартной выходной форме системы Mathematica; ScientificForm [expr] — выполняет вывод, представляя все вещественные числа в выражении expr в научном формате; TeXFormfexpr] — выводит expr в форме, принятой для языка ТеХ, ориентированного на верстку текстов с математическими формулами; TextForm[expr] — выполняет вывод expr в обычном текстовом формате; TreeForm [expr] — выполняет вывод expr с показом разных уровней выражения.В большинстве своем действие этих функций вполне очевидно. Если это не так, то смело экспериментируйте с ними. Следующие примеры дают представление об использовании различных форм вывода в системе.
Ввод (In) |
Вывод (Out) |
Accounting [30*10^15] |
Accounting [30000000000000000] |
BaseForm [55434, 16] |
d88a 16 |
CForm[x ^ 2+3*x+x] |
4*x + Power (x, 2) |
ColumnForm [ { а , b , с ) ] |
a b с |
EngineeringForm[N[12*10 A 29] ] |
1.2xl0 30 |
Format [Exp [x ^ 2 ] /а] |
e x 2 /a |
FortranForm[Exp[x] ^ 2/а] |
E**(2*x)/a |
HoldForm[Exp[x] ^ 2/а] |
e 2x /a |
NumberForm[N[Exp[2]] ,15] |
7.38905609893065 |
OutputForm [Exp [x]^2/a] |
e 2x /a |
TeXForm[Exp [x]^2/a] |
\frac{e^{2\,x}}{a} |
Scientif icForm[12*10 ^ 5] |
1200000 |
Из функций для работы с файлами особо надо отметить следующую функцию-директиву:
Splice [ "file .mx" ] — вставляет в файлы на других языках программирования вычисленные выражения системы Mathematica, которые должны быть записаны в скобках вида <* и *>; Splice ["infile", "outfile"] — читает файл infile, интерпретирует фрагменты, содержащиеся между скобками <* и *>, и записывает результат в файл outfile.Эта возможность особенно существенна при использовании программ на языках программирования С (расширение .me), Fortran (расширение .mf) и ТеХ (расширение .mtex), для форматов которых Mathematica имеет средства конвертирования выражений (CForm, FortranForm и TexForm соответственно). Таким образом, имеется возможность экспорта выражений системы Mathematica в программы, составленные на этих языках.
Поясним применение функции-директивы Splice. Пусть имеется экспортированная программа на языке С, которая должна рассчитывать численное значение некоторого интеграла, и мы хотим получить формулу для этого интеграла средствами системы Mathematica. Допустим, она представлена файлом demo.me. Его можно просмотреть следующим образом:
!!demo.me
#include "mdefs.h"
double f(x)
double x;
{
double y;
у = <* Integrate[Sin[x]^5, x] *> ;
return (2*y- 1) ;
}
После исполнения функции Splice ["demo.me"] программа будет записана в файл demo.с, в котором выражение в скобках <*...*> заменено вычисленным значением интеграла (в форме CForm). Файл при этом будет выглядеть так:
!!demo.с
#include "mdefs.h" double f(x) double x;
{
double y;
у = -5*Cos(x)/8 + 5*Cos(3*x)/48- Cos(5*x)/80 ;
return (2*y- 1) ;
}
Запись определений
Из простых функций, обеспечивающих создание файлов с заданными определениями, надо отметить также функцию Save:
Save ["filename", symb1, symb2,...]
Она добавляет определения символов symbi к файлу filename (возможны упрощенные формы Save).
Приведем пример ее использования:
f[x_] = Sin[x] + y
у+ Sin[x]
у=а
а
Save["demol",f]
!!demol
f[x_] = у + Sin[x]
у = а
Ниже представлены функции общесистемного характера:
$Aborted — возвращает сообщение о прекращении вычислений при их прерывании функцией Abort [ ]; AbortProtect [ехрг] — вычисляет ехрг, запоминая все попытки прерывания, но не выполняя их до тех пор, пока не будет завершено вычисление либо пока не будет вызвана процедура CheckAbort; Accuracy [x] — указывает число цифр в числе х после десятичной точки, которое используется при вычислениях; ByteCount [expr] — возвращает число байт, которое используется для представления выражения ехрг; Environment [ "var" ] — возвращает значение переменной окружения операционной системы с именем "var"; $ Line — глобальная переменная, указывающая номер текущей строки ввода; $MachineEpsilon — возвращает машинную точность представления — наименьшее число, которое, будучи прибавленным к 1.0, даст результат, отличный от 1.0; $MachineID — строка, которая возвращает, если возможно, уникальный код идентификации применяемого компьютера; $MachineName — строка, возвращающая имя, которое присвоено используемому компьютеру, если такое имя определено; $MachinePrecision — возвращает количество десятичных знаков точности представления чисел; $MachineType — строка, возвращающая общий тип компьютера, на котором запущена система Mathematical $MinMachineNumber — наибольшее машинно-представимое число, которое может применять данная компьютерная система; $MaxNumber — возвращает наибольшее из представимых в системе Mathe-matica чисел; $MinMachineNumber — наименьшее положительное машинно-представимое число, которое может применять данная компьютерная система; $MinNumber — возвращает наименьшее (положительное) представимое в системе Mathematica число; $OperatingSystem — строка, дающая тип операционной системы, под управлением которой работает Mathematica; Pause [n] — выдерживает паузу не менее п секунд; $ReleaseNumber — целое число, которое дает младший номер версии ядра данной системы Mathematica; $Remote — имеет значение True, если Mathematica применяется в дистанционном режиме или с программным препроцессором, иначе — значение False; $SessionID — уникальный номер, который присвоен данному сеансу системы Mathematica; SessionTime[ ] — возвращает полное число секунд реального времени, прошедшего с момента начала вашего сеанса работы в системе Mathematica; - $System — представляет собой строку с указанием типа используемой компьютерной системы; $Version — символьная строка, которая представляет используемую версию системы Mathematica; $VersionNumber — вещественное число, которое дает полный номер текущей версии системного ядра Mathematica.Ниже приведены примеры использования ряда общесистемных функций.
Ввод (In)
|
Вывод (Out)
|
Accuracy [12. 34] |
15
|
ByteCount [Exp [x]
A
2/a] |
120
|
$Version |
4.0 for Microsoft Windows (April 21, 1999)
|
$ System |
Microsoft Windows
|
$Path |
{C:\Program FilesXCommon Files\Mathematica\
4.0\Kernel, C:\Program FilesXCommon Files\
Mathematical . 0\AddOns\Autoload, ... }
|
$OperatingSystem |
Windows 9 5
|
$MachineEpsilon |
2.22045xl0
-16
|
$MaxMachineNumber |
1.79769xl0
308
|
$MinMachineNumber |
2.22507x10
-308
|
$MachinePrecision |
16
|
$Packages |
{Global
4
, System
4
}
|
Система Mathematica имеет развитые средства для работы с потоками (streams) и файлами (files). Под потоком подразумевается непрерывная последовательность данных, циркулирующих внутри компьютера. Обмен потоками происходит практически непрерывно, например, при вводе поток ввода поступает от клавиатуры в компьютер, при печати поток данных поступает от компьютера в принтер через порт принтера и т. д.
Файлом является упорядоченная структура данных, имеющая имя и хранящаяся на каком-либо носителе, чаще всего на магнитном диске. Файлы могут иметь различные форматы и различный тип доступа к хранимой на них информации. Наиболее распространенные в системе Mathematica файлы документов являются файлами с последовательным доступом и имеют текстовый формат.
Последовательный доступ означает, что информация из открытого файла может быть считана строго последовательно от его начала до конца, отмеченного специальной меткой. Это напоминает считывание с магнитофонной кассеты. Текстовый формат означает, что все данные записаны в виде ASCII-кодов. Следовательно, прочесть такой файл можно с помощью любого текстового редактора, работающего с текстами в виде ASCII-кодов.
Потоки и файлы имеют много общего: имена, определенную структуру, необходимость открытия перед использованием и закрытия после использования. Однако если с файлами пользователь сталкивается уже в начале работы с системой (нужно вызвать файл с демонстрационным документом или сохранить его, а затем вызвать другой файл), то с понятием потока при работе с системой сталкиваться практически не приходится, хотя помимо нашей воли потоки данных постоянно текут между компьютером и его периферийным оборудованием.
Функции ввода/вывода Работа со строками Потоки и файлы Запись определений Системные функции
Если пользователь использует систему Mathematica для выполнения чисто математических расчетов, то он может ничего не знать о подавляющем большинстве описанных в этом уроке функций. Их основное назначение — незаметная поддержка работы с периферийными устройствами ввода/вывода. Однако все функции этого урока открыты для опытных пользователей, стремящихся использовать систему в составе программных комплексов. Здесь рассматривается только часть функций для работы с периферийными устройствами — даны те из них, которые используются достаточно часто. Многие функции этой группы перечислены в приложении.
Хотя Mathematica ориентирована на математические приложения, в ней достаточно полно представлены функции для работы со строками (strings). Они могут потребоваться как для организации вывода текстовых сообщений (например надписей на графиках), так и для организации текстового диалога при разработке пакетов расширений и приложений системы. К тому же надо постоянно помнить, что Mathematica — система символьной математики, так что символьным преобразованиям, как сугубо математическим, так и общепринятым, в ней, естественно, уделено много внимания.
Многие функции для работы со строками выполняют общепринятые преобразования, имеющиеся в большинстве языков программирования высокого уровня. Строкой является произвольная цепочка символов, заключенная в кавычки, например "String". Ниже представлены некоторые функции для работы со строками:
StringByteCount ["string"] — возвращает полное число байтов, используемых для хранения символов в строке "string"; StringDrop ["string", {m, n}] — возвращает строку "string", удалив в ней символы от m до п; StringJoin["sl", "s2",...] или StringJoin [ { "s1", "s2",...}]-формирует строку, содержащую конкатенацию (объединение) указанных строк "s1"; Stringlnsert ["string1", "string2",M] — вставляет строку "string2" в строку "string1", начиная с позиции М от начала этой строки (при отри-, цательном М позиция отсчитывается от конца указанной строки); StringLength ["string" ] — возвращает число символов в строке; StringReplace["string", "s1 -> "spl"] или StringReplace["string", {"s1" -> "spl", "s2" -> "sp2",...}] — замещает "s1" на "spi" всякий раз, когда они появляются как подстроки "string"; StringReverse ["string"] — меняет порядок символов в строке "string" на противоположный; StringPosition["string", "sub"] — возвращает список с позициями строки "sub" в строке "string" (дополнительные формы см.Ввод (In) | Вывод (Out) |
StringByteCount [ "Hello ! " ] | 6 |
StringDrop ["Hello my friend!", 6] | my friend! |
StringDrop ["Hello my friend! ", -10] | Hello |
StringDrop ["Hello my friend! ", {7}] | Hello у friend! |
StringDrop [ "Hello my friend ! " , { 6 , 8 } ] | Hello friend! |
Stringlnsert ["Hello friend!"," my", 6] | Hello my friend! |
StringJoin ["Hello"," my "]<>"friend!" | Hello my friend! |
StringLength [ "Hello" ] | 5 |
StringPosition[ "Hello my friend! ", "e"] | {{2, 2}, {13, 13}} |
StringReplace["Hilo" , "i"->"el"] | Hello |
StringReverse [ "Hello ! " ] | !olleH |
StringTakef "Hello my friend!", 6] | Hello |
StringTake[ "Hello my friend!", -8] | friend! |
StringTake [ "Hello my friend ! " , { 7 , 9 } ] | my |
Ввод (In)
|
Вывод (Out)
|
ToCharacterCode [ "Hello ! " ] |
{72,101,108,108,111,33}
|
FromCharacterCode [ {72 , 101 , 108 , 108 , 111 , 33} ] |
Hello!
|
ToExpression [ "2+3*4 " ] |
14
|
ToLowerCase [ "HeLLo ! " ] |
hello!
|
ToUpperCase [ "Hello" ] |
HELLO
|
Ввод (In)
|
Вывод (Out)
|
x:=ToString[2+3*4] |
|
X |
14
|
Unique [ ] |
$1
|
Unique [xyz] |
xyz$2
|
Unique [xyz] |
xyz$3
|
UpperCaseQ [ "Hello" ] |
False
|
UpperCaseQ [ "HELLO" ] |
True
|
Мы уже не раз отмечали возможность уничтожения введенных в ходе сессии определений. Приведем в систематизированной форме функции, используемые для этого:
Clear [symbol1, symbol2,...] — стирает значения и определения для указанных символов (идентификаторов); Clear ["pattern1", "pattern2",...] — стирает значения и определения для всех символов, чьи имена подходят под любой из указанных строковых шаблонов; ClearAll [symboll, symbo!2,...] — стирает все значения, определения, атрибуты, сообщения и значения, принятые по умолчанию, связанные с указанными символами; ClearAll ["patternl", "pattern2",...] — стирает все символы, чьи имена буквально подходят к одному из указанных строковых образцов; ClearAttributes [s, attr] — удаляет attr из списка атрибутов символа s.Применение большинства этих функций полезно разработчику серьезных приложений для систем Mathematica, например новых пакетов расширений и применений системы. В то же врем-я, для большинства пользователей вполне достаточно возможностей, предоставляемых системой по умолчанию — средств диалога с ее оболочкой и функций Input и Print.
Прежде чем рассматривать весьма обширные возможности системы по работе с файлами в целом, отметим упрощенный прием вызова файла с помощью двойного символа «<<»:
<<filename
Эта команда считывает файл с указанным именем filename и заносит в память компьютера содержащиеся в нем определения. Имя файла надо указывать полностью, то есть вместе с расширением. Исключением является случай, когда файл находится в основном каталоге системы. Эта команда эквивалентна функции
Get["filename", key]
Для записи объекта (переменной, массива, списка и т. д.) в файл служат упрощенные команды:
expr >> filename — передает значение ехрг в файл с заданным именем; ехрг >>> filename — добавляет ехрг в конец файла с заданным именем.Указанные команды по существу есть укороченные (и потому более удобные) формы следующих функций:
Get ["filename", "key"] — читает файл, который закодирован функцией Encode с использованием ключа "key"; GetContext [ "context' " ] — загружает файл с заданным контекстом; Put[exprl, expr2, ..., "filename"] — записывает последовательность выражений expri в файл с именем filename; PutAppend[expr1, expr2, ..., "filename"] — присоединяет последовательность выражений expri к файлу с именем filename.Еще одна упрощенная функция — ! ! filename — выводит содержимое файла с заданным именем.
Следующие примеры показывают запись списка в файл C:\ma.vat, его считывание, затем добавление в файл еще одного списка и контроль контекста файла:
{{l,2,3},{4,5,6},{a,b,c}}>>C:\ma.val
<<С: \ma. val
{{1, 2, 3}, {4, 5, б), {а, b, с}} {d,e,f}>>>C: \ma.val
<<С: \та. val
{d, e, f}
!!С:\mа.val
1, 2, 3, 4, 5, б, а, b, с d, e, f
Такая форма вызова особенно удобна для вызова файлов пакетов расширений и применений системы. Имя файла указывается по правилам, принятым в MS-DOS. Файлы пакетов применений имеют расширение .т.
Мы уже приводили примеры использования определений, содержащихся в файлах пакетов расширения системы.
Имеется еще ряд функций для работы с файлами:
ReadList ["filename" ] — читает все оставшиеся в файле "filename" выражения и возвращает их в виде списка;
ReadList ["filename", type] — читает из файла "filename" объекты указанного типа type до конца файла. Возвращает список считанных объектов;
ReadList ["filename", {typel, type2,...}] — читает объекты указанных типов type1 до конца файла filename;
ReadList [ "filename", types, n] — читает только первые п объектов указанных типов types из файла filename;
Save ["filename", x1, x2,...] — создает файл с заданным именем filename, содержащий значения переменных x1, х2, ...;
! command — исполняет заданную команду операционной системы.
Допустим, что в любом текстовом редакторе создан файл с полным именем C:\datas.txt в ASCII-формате, содержащий просто шесть чисел с разделительными пробелами, размещенные в двух строках и представляющие массив 2x3 элемента:
1 11.2 34.5
2. 3.4 56
Тогда о структуре файла можно судить, используя команду
!!С:\datas.txt
1 1.2 34.5 2. 3.4 56.
Нетрудно заметить, что структура файла соответствует структуре массива. Однако считывание файла командой «name дает следующий результат:
<<С: \datas. txt
380.8
Результат представляет вычисленное выражение второй строки файла. Считывание функцией ReadList без дополнительного аргумента также дает ошибочный результат:
ReadList["С:\datas.txt"]
{41.4, 380.8}
Нетрудно подметить, что функция восприняла каждую строку содержимого файла как результат перемножения трех чисел (пробел на языке Mathematica означает умножение). С дополнительным параметром Number все числа считываются верно:
ReadList["С:\datas.txt", Number]
{1, 1.2, 34.5, 2., 3.4, 56.}
Однако мы получили одномерный список — данные просто считываются построчно.
Применение дополнительного параметра в виде {Number, Number} дает следующий результат:
ReadList["С:.txt", {Number, Number}]
{{1, 1.2), {34.5, 2.}, {3.4, 56.}}
Правильный результат можно получить, используя опцию RecordList->True: .
ReadList["C:.txt",Number,RecordLists-XTrue]
{{1, 1.2, 34.5), {2., 3.4, 56.}}
Для загрузки файлов пакетов расширений (Add-On) используются функции, позволяющие задать контекст файлов (подробнее о контекстах речь пойдет в уроке 10):
Needs ["context' ", "filename"] — загружает файл, если указанный контекст отсутствует в списке загруженных;
Needs [ "context
s
" ] — загружает файл, имя которого определяется с помощью функции ContextToFilename [ "context
ч
" ], если указанный контекст отсутствует в списке загруженных.
Загрузка файлов с указанием их контекстов позволяет избежать конфликтов между разными пакетами расширения, используемыми одновременно (см. более подробно урок 10).