Главная  Длительная эволюция 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [ 68 ] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

Упражнения

1. Пусть в начале сессии было дано определение f[x ] :=2"х. Затем выполнена команда Beginfa"] и дано определение g[x-] := Зх. Каков будет результат вычисления выражения {f[2], g[2]}? Каков будет результат вычисления того же выражения, если вернуться к контексту GlobaVl Будет ли получен результат {4,9}, если после этого вычисления поместить контекст а на контекстную дорожку? Что нужно сделать, чтобы определение для д работало?

2. В начале сессии символу z присвоено значение 5, а затем выполнена коман,г<а BeginCa"]; г -7. Каковы будут результаты вычисления выражений z и az?

3. Предположим, что некоему пользователю потребовалось определить функцию strangeSin, принимающую значение 2 для всех значений аргумента, и он сделал это, написав пакет:

ным использованием функции Needs, что исключает повторное подгружение программ. Явное указание импортируемых программ помимо „производственной" необходимости является признаком хорошего стиля программирования, так как делает все взаимозависимости программ явными и легко прослеживаемыми. Тем не менее указанный способ вызова вспомогательных импортируемых пакетов не всегда удобен. Он имеет то последствие, что контексты вспомогательных программ будут находиться на контекстной дорожке, следовательно, все функции импортируемых пакетов, а не только необходимые для работы программы будут доступны пользователю. Эти функции могут затенять функции, определенные пользователем до подгрузки программы. Избежать этого можно, если импортируемые пакеты вызывать явным указанием их контекстов в команде Needs, поставленной сразу после команды BeginPackage. В этом случае контексты импортируемых программ не останутся на контекстной дорожке после подгрузки программы, а используемые функции этих программ станут доступны только по их полным символам.



(* Странный синус *)

BeginPackage["strange"]

Sin:: usage = "Sin[x] is unusual function"

Unprotect [SinJ

Begin [" Private"]

Sin [x-] := 2

End[]

Protect[Sin] EndPackage[]

Какие результаты даст вычисление выражений Sin[x] и strangeSin[x] после подгрузки контекста strange? Объясните, почему получились именно эти ответы.

4. В упражнениях к главам 6 и 7 были определены комбинаторные функции subsets, ksubsets, cnt, changeto. Напишите пакет с контекстом combin, в котором определяются рассматриваемые функции. Тем самым эти функции будут всегда доступны вам после подгрузки контекста combin.



Глава 10

ВВОД И ВЫВОД ДАННЫХ

в этой главе будут рассмотрены вопросы, характеризующие „Математику" как компьютерную среду, в которой возможно не только проводить изолированные символьные, графические и численные расчеты, но и осуществлять структурированный обмен данными с другими составляющими программного, математического и информационного обеспечения исследований. К сожалению, за рамками данной книги останутся все сетевые проблемы, включающие взаимодействие и обмен данными через Интернет. Обсуждение этих вопросов включает изучение языка MathLink, на котором происходит взаимодействие между интерфейсом и вычислительным ядром „Математики" в версиях под Windows, следующих за 2.2.1. MathLink, в частности, обеспечивает „раздельное" функционирование ядра и интерь фейса, что и является предпосылкой сетевого взаимодействия пользователя и вычислительного сервера. Однако в настоящее время соответствующий материал представляется автору недостаточно систематизированным и освещенным в специальной литературе, чтобы его приводить в руководстве для начинак»-щих пользователей.

10.1. Ввод и запись данных в файлы

Электронные Записные книжки представляют собой достаточно удобный инструмент сохранения результатов вычислений между сессиями „Математики". Под результатами здесь понимаются также данные пользователем определения и правила преобразований. Их можно переносить из одной Записной



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [ 68 ] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

0.001