Работа с периферийными устройствами
Работа с периферийными устройствами
- Функции ввода/вывода
- Работа со строками
- Потоки и файлы
- Запись определений
- Системные функции
Если пользователь использует систему Mathematica для выполнения чисто математических расчетов, то он может ничего не знать о подавляющем большинстве описанных в этом уроке функций. Их основное назначение — незаметная поддержка работы с периферийными устройствами ввода/вывода. Однако все функции этого урока открыты для опытных пользователей, стремящихся использовать систему в составе программных комплексов. Здесь рассматривается только часть функций для работы с периферийными устройствами — даны те из них, которые используются достаточно часто. Многие функции этой группы перечислены в приложении.
Функции ввода/вывода
Ввод/вывод в системе 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.
Этих функций достаточно для организации простейшего диалога с программой.
На показан простейший пример организации диалога в стиле, принятом в языке Бейсик. В данном случае вычисляется длина окружности с запросом радиуса R.
При вычислении документа, приведенного на, вначале исполняется функция Input. Это ведет к появлению диалогового окна в центре экрана — на оно несколько смещено вниз, чтобы не загораживать содержимое ячейки документа. В окне виден запрос, который указан в кавычках как параметр функции Input. После ввода нужного значения (в нашем примере это радиус окружности) и нажатия клавиши Enter или щелчка на кнопке ОК диалогового окна функция Input возвращает введенное значение, и оно присваивается переменной Р.. После этого функция Print выводит на экран вычисленное значение длины окружности с кратким комментарием.
Разумеется, для данного примера нет никакого смысла организовывать диалог в такой форме, поскольку однократное вычисление длины окружности проще задать прямо в тексте документа без запроса радиуса — просто указав R = 10. Однако при составлении сложных программ, например ориентированных на многократные вычисления с различными данными по скрытым формулам, такая возможность организации диалога очень полезна. Ее можно использовать и при составлении обучающих программ на базе системы Mathematica.
К сожалению, комментарий, отображаемый в окне функции ввода Input, возможен только на английском языке — при вводе символов кириллицы вместо обычных надписей выводятся коды (в то же время функция Print исправно выводит комментарии на русском языке). Это связано с выбором для данного окна шрифта, не содержащего символов кириллицы.
Функции задания формата вывода
Далее отметим функции, меняющие формат представления выражений. Все они имеют в своем названии слово 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 |
Приведем еще несколько примеров использования различных форм вывода (здесь содержимое ячеек вывода дано под содержимым ячеек ввода):
FullForm[Exp[x]^2/а]
Times[Power[a, -1, Power[E, Times[2, х]]]
TreeForm[Exp[x]^2/а]
Times[ , ] Power[a, -1] Power[E, | ]
Times[2, x]
PaddedForm[(х^З+2*х^2+3*х-1)/ (x-1) ,3]
(2 3 -l+3x+2x +x)/(-1 + x)
PrecedenceForm[12*b/c,5]
a + 12 b/c
SequenceForm[Exp[x]^2/a]
E^2 x/a
TableForm[{{"x","y"},{l,2},{3,4},{5,6}}]
x у
1 2
3 4
5 6
Prefix[f[x^2]]
2
f@ (x )
Unevaluated[Exp[х^(a/b)]/x/a]
a/b
Exp[x ] Unevaluated[Exp[x^a/b]/x a]