WebГлава 7 из книги «Mathcad 14 для студентов,
инженеров и конструкторов
» BHV-Петербург, 2007 г.

Mathcad Application/Calculation Server

Предисловие >>>>>>>

7.1. Подготовка Mathcad-документа к публикации в Интернет (от WorkSheet к WebSheet)

7.2. Web Controls — сетевые элементы интерфейса

7.3. Верблюд и игольное ушко

7.4. О комментариях в WebSheets

7.5. О вставках других программ и… других ограничениях

7.6. Об именах переменных и функций

7.7. Проблема объемных исходных данных

7.8. Контроль знаний через MA/CS

7.9. Доступ к расчетам через пароль

7.1. Подготовка Mathcad-документа к публикации в Интернет (от WorkSheet к WebSheet)

Эту главу правильнее назвать "Доработка Mathcad-документа к публикации...". Дело в том, что многие математические программы не допускают доработки, а требуют, чтобы документы с самого начала готовились к публикации в Интернете. Кроме того, некоторые математические пакеты требуют привлечения средств программирования в процессе подготовки расчетов в Сети. Документы же пакета Mathcad требуют лишь незначительной доработки. Более того, приемы, которые будут описаны ниже, полезны и в обычных Mathcad-документах, которые не планируются для публикации в Сети.

Как правило, Mathcad-документы имеют структуру, состоящую из трех частей — ввод исходных данных, собственно расчет и вывод ответа. Данная структура в предельно упрощенном виде показана на рис. 7.80, где эти части выделены в три озаглавленные области (Areas), над которыми возможны независимые действия — защита от редактирования (Lock/Unlock) и/или скрытие (сворачивание — Collapse/Expand — см. рис. 1.31).

Рис. 7.80. Структура простейшего Mathcad-документа

Структура реального расчетного Mathcad-документа, естественно, более сложная и имеет размытые границы между этими тремя областями: ответ может выдаваться сразу после счета по формулам, включая и промежуточные, исходные данные могут вводиться не все сразу, а по мере надобности и быть продублированы в сводной таблице и т. д. Если область расчета занимает несколько страниц, то при отладке ее нередко сворачивают (команда Collapse) для того, чтобы одновременно видеть исходные данные и результат. Можно разбить расчет на несколько областей с промежуточными результатами (ответами) между ними и открывать области поочередно. В документе, показанном на рис. 7.80, пользователь изменяет значения переменных а и/или b и считывает результат — значение переменной с. Пользователь может также усложнить, развить этот документ — ввести в него новые переменные и формулы, построить графики и т. д. Но это будет уже не пользователь, а разработчик. Технология MA/CS четко делит людей на эти две категории, хотя обратная связь от пользователя к разработчику позволяет подправлять и развивать расчеты.

Первый этап подготовки документа к публикации на MA/CS — это выделение операторов присваивания (не только операторов := (полуглобальное присваивание) и  (глобальное присваивание), но и так называемых Controls (Элементов управления интерфейсом — см. рис. 1.21), через которые будущий интернет-пользователь может менять исходные данные. Эти операторы присваивания должны быть заменены на так называемые Web Controls — "сетевые элементы управления интерфейсом", показанные на рис. 1.22.

7.2. Web Controls — сетевые элементы интерфейса

Web Controls появились в Mathcad 11.1 Enterprise Edition и присутствуют в Mathcad 12/13/14 (все реализации). Web Controls отличаются от своих несетевых аналогов (Controls — см. рис. 1.21) тем, что для функционирования Web Controls не надо писать или редактировать программы на языках, поддерживающих технологию Active Scripting (JScript и VBScript). Такие программы в сети нежелательны, т. к. через них могут переноситься компьютерные вирусы. Из-за этого многие разработчики (люди, готовящие свои программы для передачи (продажи) другим пользователям) не вставляют в Mathcad-документы элементы управления, а по-прежнему используют только операторы := или . В среде Mathcad 2001i появилась возможность фиксации таких "скриптов" в открываемом документе. На рис. 7.81 показана вкладка Script Security (Безопасность скриптов) диалогового окна References (Предпочтения), через которое пользователь Mathcad может установить три режима безопасности: Low Security (Низкий уровень) — контроль за скриптами в открываемом файле не ведется, Medium Security (Средний уровень) — пользователь имеет выбор, запускать имеющиеся скрипты или нет и High Security (Высокий уровень) — скрипты не запускаются.

Рис. 7.81. Установка безопасности работы со скриптами Mathcad-документа

При среднем уровне защиты открытие Mathcad-документа с Controls (со скриптами) предваряется диалоговым окном, показанным на рис. 7.82.

Рис. 7.82. Предупреждение о наличии скриптов в открываемом Mathcad-документе

По этой причине (боязнь вирусов, а также то, что Controls несколько увеличивают размер mcd-файлов) можно рекомендовать вставлять Web Controls, а не Controls не только в Mathcad-документы, подготавливаемые к открытию в Сети (WebSheets), но и в обычные, несетевые документы (WorkSheets), открываемые в среде Mathcad. Кроме того, удобство Web Controls по сравнению с Controls состоит и в том, что установка защиты на документ с Web Controls не препятствует вводу информации в эти элементы интерфейса, но не позволяет "трогать" саму переменную, какой данное значение присваивается. В случае же Controls блокируется все — и доступ к переменной и возможность изменения информации. Эта особенность проиллюстрирована на рис. 7.83, где видно, что серый фон защищенного документа имеет "белую дыру" на Web Controls — на текстовом поле.

Рис. 7.83. Защита на Mathcad документе с Controls и Web Controls

Если же убрать "галочку" Protect Region from editing (Защита области от редактирования) в диалоговом окне Properties (Свойства), показанного в нижней части рис. 7.83, то белая (незащищенная) область появится и у текстового окна a:=. Она расширится и будет охватывать и сами переменные a и b, которым присваиваются значения. А это нежелательно, т. к. эти переменные можно ненароком или намеренно изменить, испортив тем самым Mathcad-документ. А в этом вся идея механизма защиты.

Если на Mathcad-документ наложить защиту, убрав предварительно следы открытых или захлопнутых областей (если, конечно, они есть  — см. рис. 1.31), перевести расчеты на ручной режим и написать на кнопке Submit (см. ниже) "Нажмите F9", то отличий в запуске такого Mathcad-документа на рабочей станции (WorkSheet) и в Сети (WebSheet) практически не будет.

Еще одна причина неприятия Controls с их скриптами в том, что пакет Mathcad, как уже подчеркивалось, создавался как прямая альтернатива языкам программирования, как инструмент решения задач теми людьми, кто не умел и/или не хотел программировать. Настройка же Controls требует программирования, что сводит  на нет отмеченное преимущество.

Документ, показанный на рис. 7.80, после подготовки и публикации на MA/CS должен выглядеть примерно так, как изображено на рис. 7.84.

Рис. 7.84. Простейший Mathcad-документ, подготовленный к публикации в Сети

Из рис. 7.84 видно, что операторы а:= и b:= заменены на так называемые текстовые поля — Text box. Дополнительно вставлена кнопка Submit, которая по умолчанию имеет надпись Recalculate и которую при желании можно переименовать в Пересчитать, например. При открытии в Сети этого документа линии и комментарии "Исходные данные", "Расчет" и "Вывод ответа", отмечающие границы областей, не будут видны. Область "Расчет" можно свернуть, так чтобы оператор с: = a + b также не был виден. При этом след свернутой область также не будет виден. Это не совсем удобное свойство, т. к. в некоторых случаях нужно чтобы пользователь, открывший данный документ в Интернете, четко видел, что здесь есть скрытые операторы. А можно, наоборот, открыть и выделить цветом, рамками, комментариями наиболее интересные и важные части расчета, например, для проверки пользователем как самой методики расчетов, так и исходных данных. Кстати, о проверке. Если в нашем примере на рис. 7.80 и 7.84 переменные а и/или b должны принимать значения только в оговоренных интервалах (0<a<3, например), то будет полезно вставить в Mathcad-документ некий КПП (контрольно-пропускной пункт):

a := if(0 < a < 3, a, "Ошибка!") или a := if(0 < a < 3, a, NaN)

блокирующий дальнейшие вычисления, если пользователь ненароком или специально ("защита от дурака") введет неверные исходные данные. Этим можно частично компенсировать отсутствие в списке Web Controls слайдера (см. рис. 1.21), четко прописывающего границы допустимых значений вводимой величины.

Такие же КПП хорошо установить перед выводом ответа. Они должны блокировать его, если некое сочетание исходных данных дает неправильный (нереальный) ответ — окончательный или промежуточный. Так на сайте www.vpu.ru/mas по адресу http://twt.mpei.ac.ru/mas/worksheets/Calc_Q_VPU.mcd хранится программа расчета проектной производительности водоподготовки для электростанции, которая возвращает не число, а текст "Ошибка в данных!", если пользователь ввел недопустимое сочетание параметров самой проектируемой станции (станция атомная, а используемое топливо — уголь, например — см. рис. 7.85).

Рис. 7.85. WebSheet расчета параметра электростанции с блокировкой неправильного ответа

Можно поступить и по-другому — выдать вызывающий сомнение ответ для дальнейшего анализа, сопроводив его соответствующим комментарием (или цветом — см. рис. 1.14).

Если при запуске WebSheet не будут просматриваться некоторые фрагменты (см. рис. 7.85a) или будет выдано сообщение об ошибке в работе сервера, то нужно нажать Ctrl+R (эта запись находится в заголовки почти всех WebSheet). После этого будет выдан полный ответ (см. рис. 7.85b). Сервер может быть в данный момент, поэтому рекомендуется сначала просмотреть картинки (pic – это обозначение предваряет многие ссылки на сетевые расчеты), убедиться, что ресурс Вас на самом деле интересует, а потом запускать задачу в режиме on-line расчетов для того, чтобы обсчитать новые данные

Название Text box не совсем точное. Вернее, оно правильное только в отношении несетевого аналога — Controls, а не Web Controls. Через этот элемент сетевого интерфейса можно вводить не только текстовые константы, но и числа — вещественные (как на рис. 7.86), или комплексные (5+3i, например). При этом нужно опираться на старую (текстовую) запись формата чисел: не 103, а Е+3 (е+3) — см. рис. 7.86. Если введенная в Text box строка символов не составляет число, то она воспринимается и записывается в соответствующую переменную как текст. В несетевом аналоге текстового поля любая цепочка символов воспринимается как текст, который при необходимости нужно будет конвертировать в число встроенной функцией str2num из категории String (Строковые).

Рис. 7.86. Ввод констант через текстовые окошки

Сетевой Text box содержит одну недоработку — если текстовое поле пустое, то оно возвращает не текстовый нуль ("" — ничего не охватывающие кавычки), а числовой нуль (0) — см. рис. 7.87.

Рис. 7.87. Ввод нулей через текстовые окошки

Можно также договориться, что текстовым нулем будет пробел (" " — кавычки, охватывающие один или несколько пробелов) и вставлять его в пустые текстовые поля Web Sheets.

Примечание. Иногда при работе в среде Mathcad происходят сбои, отображенные на рис. 7.87а – текстовые окна становятся невидимыми или, наоборот, становятся зачернены. Чтобы восстановить работоспособность таких дефектных Web Controls достаточно закрыть данный WorkSheet сохранением и снова его открыть.

Рис. 7.87a. Сбой при работе с Web Controls

Еще одно неудобство при работе с Web Controls в WorkSheets, а не в WebSheets состоит в том, что при распечатки некоторые Web Controls в некоторых («ломанных»)версиях Mathcad не пропечатываются.

А в принципе, нужно/можно так писать свой WorkSheets, чтобы он сразу был готов к публикации в Сети как WebSheets.

7.3. Верблюд и игольное ушко

Решена проблема ввода через текстовое поле массивов (векторов и матриц), а также функций пользователя, что отображено на рис. 7.88—1.93.

Рис. 7.88. Ввод вектора через текстовое поле

На рис. 7.88 показано, как цепочка символов, введенная в текстовое поле, преобразуется в вектор с помощью пользовательской функции Str2Vmat. При этом разделителями чисел в текстовом поле могут быть любые символы, отличающиеся от 0, 1, ..., 9, точки (десятичного разделителя), знака "минус" и "десятичных" символов e и E. В нашем случае разделителями чисел служат пробелы. Их количество между числами можно менять, выравнивая эти числа по столбцам, если, например, вводятся несколько векторов одного размера через ряд текстовых полей, расположенных вертикально.

Матрицу можно ввести построчно или по столбцам, несколько усложнив метод, показанный на рис. 7.88. Но если матрица квадратная и произвольного размера, то ее можно вводить в виде вектора размером n2, а затем "упаковать" в квадратную матрицу так, как показано на рис. 7.89.

Рис. 7.89. Ввод квадратной матрицы через текстовое поле

Разреженную матрицу (см. рис. 7.50 выше) можно вводить через текстовые поля, группируя тройки чисел — номер столбца, номер строки и значение элемента матрицы в этом месте матрицы. При необходимости эти тройки чисел можно оформить в виде разреженной матрицы — см. рис. 7.90.

Рис. 7.90. Ввод разреженной матрицы

Другое решение для ввода матрицы — сначала вводится число строк и столбцов будущей матрицы, а потом вводится сама матрица через текстовое поле горизонтальным вектором, а затем упаковывается в прямоугольную матрицу.

По адресу http://twt.mpei.ac.ru/mas/worksheets/lsolve.mcd можно открыть в Сети решение системы линейных алгебраических уравнений вида А·х=В, где массивы А (квадратная матрица коэффициентов при неизвестных) и В (вектор свободных членов) вводятся по технологии, показанной на рис. 7.88 и 7.89. Там же можно скачать сам файл с функцией Str2mat для использования ее в других документах.

Частично решена и проблема ввода через текстовое поле формул — в частности, функций пользователя. Так, на рис. 7.91 можно видеть "текстовый" ввод функции пользователя с одним аргументом, по которой затем строится график. Сам алгоритм перевода текста в формулу довольно громоздок, и на рис. 7.91 не показан — он спрятан в свернутой области "Expression Compiler". Этот же алгоритм может быть использован и для ввода значения переменной не константой (1.25, например), а арифметическим выражением (45/12+11), включающим в себя и ранее введенные, а также встроенные переменные (pi/4*d^2, например, где: pi — встроенная переменная, а d — введенная ранее, т. е. пользовательская). Если необходимо, чтобы у пользовательской функции аргументы были собраны в вектор, то прибегают к дополнительному оператору f(X):=f(X0, X1, ...), что позволяет также реализовать механизм пользовательской функции с переменным числом аргументов.

Рис. 7.91. Ввод функции через текстовое поле

Пример работы с функцией, введенной через текстовое поле, можно увидеть на сайте по адресу http://twt.mpei.ac.ru/mas/worksheets/F_X_Y_Plot.mcd. Частичность этого решения (ввод функции через текстовое поле) в том, что к данной функции нельзя применить символьную математику, а также использовать в ней переменные, заданные ранее, хотя список аргументов функции можно изменять и расширять (см. пример по адресу http://twt.mpei.ac.ru/mas/worksheets/Fit_f_x_a_b_c.mcd).

На рис. 7.92 и 7.93 показаны два WebSheet с функциями, переводящими сроку в выражение.

Рис. 7.92. Перевод строки в функцию в среде Mathcad 11

Рис. 7.93. Перевод строки в функцию в среде Mathcad 13

Так на сайтах http://twt.mpei.ac.ru/MAS/Worksheets/derivative.mcd и http://twt.mpei.ac.ru/MAS/Worksheets/int.mcd запускаются два WebSheet с раскрытием сути двух основных операций математического анализа — взятие производной и вычисление определенного интеграла. Исходные функции для данных математических действий вводятся через текстовые окошки.

Ниже перечислены символы и функции, допустимые в текстовом поле при вводе формул.

r    Арифметические действия: + (плюс), (вычесть и минус), * (умножить) и / (поделить).

r    Возведение в степень ^.

r    Математические константы: e (латинское) — основание натурального логарифма, pi — число p. Другие константы могут вводиться в формулы только в том случае, если они отмечены в конкретной задаче.

Другой случай. Левее текстового поля может находиться запись левой части оператора ввода функции пользователя с указанием, какие переменные и константы могут быть задействованы при вводе самой функции — f(x,a,b,c):=, например. Числа, как уже отмечено выше, вводятся с точкой в качестве десятичного разделителя и буквы e или E (латинские) в качестве десятичного показателя: можно ввести 0.001, а можно 1E3 или 10e4 и т. д.

r    Круглые скобки, изменяющие порядок выполнения операторов: 2+2*2=6, но (2+2)*2=8. Рекомендуется после ввода открывающей скобки ( сразу ввести и закрывающую скобку ), вернуть курсор на одну позицию влево и ввести нужное выражение. Этим упрощается контроль за равенством открывающих и закрывающих скобок в выражении (формуле). Квадратные и фигурные скобки вводить нельзя.

r    Встроенные функции и операторы: sqrt() — квадратный корень, abs() — абсолютное значение, ! — факториал, sin() — синус, cos() — косинус, tan() — тангенс, asin() — арксинус, acos() — арккосинус и atan() — арктангенс. Возможна работа и с другими функциями Mathcad, если это оговорить заранее.

Вставка формул через текстовые окна — довольно сложный прием, эволюционирующий от версии к версии Mathcad. Авторы готовы проконсультировать тех разработчиков WebSheets, какие захотят воспользоваться этим приемом. Продолжение темы для Mathcad 14 >>>>>>>. Из-за этого (невозможность применения символьной математики к выражениям, введенным через текстовые поля) приходится иногда в WebSheets заменять текстовые поля ввода функций на списки функций.

Функцию перевода строки в выражение можно также использовать для перевода расчетов, реализованных на различных языках программирования или в среде электронных таблиц (рис. 7.93a), в среду Mathcad.

Как мы уже отмечали, очень полезной особенностью Mathcad является его работа с физическими величинами (см. разд. 1.4). На рис. 7.94 показано, как оператор Р:=123 mm можно заменить на текстовое поле и еще один дополнительный оператор присваивания (переопределения переменной).

Рис. 7.94. Ввод размерной величины через текстовое поле

На рис. 7.94 через текстовое поле в переменную с именем Р / mm вводится числовое значение 24. Имя переменной Р / mm содержит три спецсимвола (два пробела и косую черту), которые подсказывают пользователю, в каких единицах (длины) требуется вводить запрашиваемое значение. Тут часто пишут не Р / mm , а Р, mm или Р (mm), но наша запись (с делением) более правильная: она отображает действия, которые нужно сделать с этим выражением – перемножить обе части равенства на выбранную единицу измерения (mm), чтобы после сокращения получить P:=P mm. Не обладают такой однозначностью. Часто в справочниках содержится неясность в такой, например, записи Re, 104: нужно делать или умножать приведенное значение на отмеченную у имени константы величину. Здесь запись Re/104 более правильная. Переменная Р станет размерной после выполнения второго оператора Р := Р / mm · mm, помещенного в область, которую впоследствии нужно будет свернуть.

На рис. 7.96 показан иной способ ввода размерной величины. Переменную, связанную с текстовым окошком, можно оставить "безразмерной" (Р, а не Р (mm), а справа от окошка приписать требуемую единицу или список единиц с возможностью выбора через радиокнопки (преключатели)).

Рис. 7.95. Ввод размерной величины с выбором единицы измерения (область открыта)

На рис. 7.95 показан аргумент у переключателей (UnitP). Но его можно и нужно скрыть, что и сделано на рис. 7.96. Для этого вызывается соответствующая команда (Hide Arguments — Скрыть аргументы) из контекстного меню, появляющегося после нажатия правой кнопки мышки.

Рис. 7.96. Ввод размерной величины с выбором единицы измерения (область захлопнута)

На рис. 7.97 показан другой подход к решению проблемы ввода в расчет размерной величины, возвращающий нас к проблеме ввода выражения через текстовое окошко (см. рис. 7.91, 7.92 и 7.93).

Рис. 7.97. Ввод размерной величины с помощью выражения

В свернутой области, отмеченной на рис. 7.97, хранится функция, переводящая строку ("1*atm") в размерную числовую константу. При таком подходе можно использовать все единицы измерения вводимой величины, встроенные в Mathcad.

Очень часто единицы измерения в расчетах фигурируют лишь как комментарии, а не как множители, упрощающие и контролирующие сам расчет. Если же единица измерения (руб, например) фигурирует в расчете не как константа, участвующая в расчетах, а как комментарий, то можно рекомендовать вставлять ее в расчет, как единичный коэффициент, завершающий оператор вывода числового значения — руб:= 1 … C=25  ¬ руб. В этом случае единица измерения станет "плавающей"; будет перемещаться и оставаться точно в конце оператора вывода = при изменении длины выводимого числа (см. рис. 7.98).

Рис. 7.98. Плавающая единица измерения, равная 1

Ведя разговор об единицах измерения, следует отметить тот факт, что в настоящее время в связи с процессами глобализации просматривается отказ от национального написания единиц (Па, с, Н, м и т.д.) и переход к международному написанию (Pa, s, N, m и т.д.).

На рис. 7.99—1.102 показаны диалоговые окна создания и форматирования сетевых элементов управления, перечисленных на рис. 7.19: Text box (Текстовое окошко — рис. 7.102 — см. ниже), Check box (Флажок, "галочка" — рис. 7.103), Radio button group (Переключатели, Радиокнопки — рис. 7.104) и List box (Список — рис. 7.105). О кнопке Submit разговор будет особый (см. разд. 3.4).

Если число вариантов ввода информации ограничено, то можно и нужно вводить ее не через универсальное текстовое окошко (при помощи клавиатуры), а через выбор из предложенного списка (мышью). Мы это уже делали (см. рис. 7.95 и 7.96), прося пользователя не набирать единицу длины на клавиатуре, а выбрать ее из трех вариантов — m, cm или mm. Если в списке всего две позиции (да или нет — альтернативный вопрос), то можно использовать флажок (ввод булевой величины: да – нет, которым в Mathcad соответствуют числа 1 и 0), три и более позиций — переключатели (радиокнопки) и/или список. Список отличается от переключателей лишь тем, что в нем часть позиций может быть скрыта и выведена на экран прокруткой или через впадающий список. Если же из списка нужно выбрать не одну, а несколько позиций, то его заменяют на группу флажков. В принципе, флажок — более универсальный инструмент, чем переключатель, хотя требует более сложной настройки. В переключателях всегда должен быть активирован один из элементов, и этим как бы пользователю подсказывается одно из решений, которое может быть и ложным. Следует отметить, что в самом начале после ввода в Mathcad-документ радиокнопок или списка их позиции остаются пустыми. Но если позиция выбрана, то вернуться к исходному состоянию с пустыми позициями уже не удастся (см. рис. 7.99).

Рис. 7.99. Начальное и рабочее состояние радиокнопок и списка

Флажки же могут быть все пустыми, что оставляет пользователю больше свободы выбора без каких-либо подсказок — правильных или ложных. Кроме того, расстояние между флажками может быть любым, и расположены они в документе могут быть в любом порядке, а не только вертикально как переключатели (радиокнопки). Дополнительно можно запланировать перестановку флажков перед каждым обращением к документу. Это также будет исключать какое-либо предпочтение при выборе варианта. Выбранных позиций в группе флажков может быть больше одной, что может соответствовать задумке разработчика при создании данной расчетной или проверочной методики (рис. 7.100).

Рис. 7.100. Работа с группой переключателей, собранных в матрицу

На рис. 7.101 показано построение интерфейса Mathcad-документа, по которому рассчитываются и отображаются на графиках семь параметров четырех жидкостей (турбинных масел). Пользователь может проставить от одной до четырех «галочек» в одном из столбцов флажков, чтобы получить информацию по выбранному параметру для выбранных масел. При других комбинациях проставленных «галочек» появляется сообщение об ошибке. На рис. 7.101 раскрыта свернутая область, отображенная на рис. 7.100 для одной из четырех жидкостей. При этом обработка сигналов от семи флажков организована так, чтобы переменная i принимала значения от 1 до 7 (номер выбранного флажка) только при выбранном одном флажке в одной строе (по одному из четырех масел). Переменные же, связанные с флажками, могут быть либо скалярными (сh1ch7), либо элементами вектора ch.

Рис. 7.101. Обработка группы переключателей, собранных в вектор

Если флажки собраны в вектор или матрицу (массив), то к ним можно прикрепить не отдельные скалярные величины, а один массив (вектор или матрицу). Группа флажков удобнее переключателей, т. к. во-первых, у флажков может не быть выбрана ни одна позиция или выбрано много позиций, вплоть до всех. Кроме того, имя флажка может быть пробелом (т.е. невидимым – см. разд. 1.2.3), чего не скажешь о переключателях. Флажки можно располагать в Mathcad-документе в произвольных местах, выставляя нужный интервал, что позволяет записывать у флажков сложные имена. Группу флажков или Радиокнопки можно заменить на список (1, 2, 3 и т.д.) с перечислением того, что отмечают номера – см. рис. 7.101a.

Диалоговое окно, представленное на рис. 7.102, и ему подобные (см. рис. 7.103, 7.104 и 7.105) возникает после нажатия кнопки Далее >, отмеченной в правом нижнем углу рис. 7.22.

Рис. 7.102. Диалоговое окно форматирования текстового поля

Через диалоговое окно, показанное на рис. 7.102, пользователь может изменить ширину самого текстового поля (на рис. 7.102 показано, что она равна 18 — минимальное значение равно 5, а максимальное — 255) и/или максимальную длину вводимого текста (255 символов). При этом подчеркивается, что нажатие клавиши <Enter> будет сигналом на передачу измененных данных на сервер для пересчета. В этом случае кнопка Recalculate, показанная на рис. 7.84, можно считать лишней. Но в такой ситуации будет полезно вставить в документ соответствующий комментарий типа "Измените значение в текстовом поле[1] и нажми Enter!". Иначе пользователь может не дождаться ответа — изображение глобуса в верхнем правом углу браузера Internet Explorer не начнет крутиться.

В диалоговом окне форматирования флажка (рис. 7.103) есть собственный флажок, который в отмеченном состоянии ("галочка" проставлена) будет означать, что изменение во флажке, поставленном в самом Mathcad-документе, будет тут же передаваться на сервер. Такие же флажки имеются и в диалоговых окнах форматирования переключателей ("радиокнопки" рис. 7.104) и списка (рис. 7.105).

Рис. 7.103. Диалоговое окно форматирования флажка

Флажок возвращает своей переменной (на рис. 7.103 это переменная check) либо нуль, либо единицу в зависимости от состояния данного сетевого элемента управления.

Как видно из сравнения рис. 7.104 и 7.105 в диалоговом окне форматирования списка (рис. 7.105) есть счетчик Display height (rows) (Количество отображаемых строк), фиксирующей число элементов, которые будут одновременно показаны в списке. Если это число меньше количества элементов в списке, то они будут показаны с прокруткой. А если это число сделать равным единице, то список будет выпадающим. В группе переключателей всегда видны все элементы (кнопки). В этом, по сути, и состоит единственное отличие списка от переключателей.

Рис. 7.104. Диалоговое окно форматирования переключателей

На рис. 7.104 и 7.105 зафиксированы два способа настройки переключателей и списка — см. флажок Values equal Names (Значения равны именам). В первом случае (рис. 7.104) переменная, связанная с блоком переключателей (или списком – у нас это UnitP), принимает текстовое значение, хранящееся в соответствующей ячейке колонки Name (Имя), а во втором (рис. 7.105) — значение (числовое или текстовое) из ячейки в колонке Value (Значение). К сожалению, пользователь не может записать туда встроенные или пользовательские переменные и выражения, а только константы.

Рис. 7.105. Диалоговое окно форматирования списка

Внимание

Привязывание значений, возвращаемых переключателем или списком, к именам Name, а к значениям Value (сравните рис. 7.104 и 7.105) может приводить к сбоям, если имена содержат спецсимволы — такие, например, как знак градуса ˚ (<Alt>+0176). Автор столкнулся с этой ошибкой, когда писал WebSheet пересчета температур (http://twt.mpei.ac.ru/mas/worksheets/Temperature_Recalc.mcd), пока не выяснил, что градус терялся при передаче данных в Сети.

Наличие программ (макросов), вшитых в Mathcad-документ, как уже отмечено, было одной из причин отказа от Controls и перехода к Web Controls. Из-за этого в списке Web Controls не оказалось такого удобного элемента интерфейса как бегунок (Slider). Бегунок удобен тем, что он позволяет мышкой выставить нужное значение переменной в заданном диапазоне и при необходимости заданной размерностью (см. рис. 1.21, например). Но бегунок можно сымитировать (рис. 7.106), отформатировав определенным образом список — оставив в окне только один элемент, а в таблице форматирования (в столбцах Name (Имя) и Value (Значение)) записав нужное количество дискретных значений, присваиваемой переменной: 0.1, 0.11, 0.12, ..., 0.2, например, как на рис. 7.106.

Рис. 7.106. Имитация бегунка (слайдера) через список

В идеале можно так спроектировать интерфейс MA/CS, что пользователь (посетитель сайта) не будет касаться клавиатуры — ему будет достаточно работать только мышкой.

Мы уже отметили, что в сетевом Mathcad-документе, может и не быть кнопки Submit. С другой стороны, в проектируемый документ допускается вставка нескольких таких кнопок, если он объемный и исходные данные нужно менять в разных местах. В этом случае такие места целесообразно фиксировать кнопкой Submit. Хорошим решением будет также разбивка расчета на отдельные блоки, окончание которых фиксируется кнопкой Submit. Расчеты по последующему блоку будут заблокированы до тех пор, пока пользователь не введет нужные исходные данные в предыдущих блоках — не проверит правильность решения и не нажмет очередную кнопку Submit.

Те, кто проектировал интерфейс пользователя на языках программирования Visual C, Visual Basic, Delphi и др., сразу отметят, что интерфейс MA/CS не очень богатый. Мы уже отмечали, что там нет Combo box (Комбинированный список), совмещающего текстовое поле и список.

На рис. 7.107 показано, как можно скомбинировать текстовое поле и список, и получить Combo box (Комбинированный список). Суть приема, показанного на рис. 7.107 в том, что значение в текстовом поле присваивается одной переменной, а значение, выбранное из списка, — другой, которая скрыта. Итоговой переменной присваивается либо первое, либо второе значение в зависимости от выбора пользователя. Признаком выбора из списка, а не из текстового поля, будет отсутствие символов в самом текстовом поле. Такое комбинированное поле, сочетающее текстовое поле и список, задействовано в документе по адресу http://twt.mpei.ac.ru/mas/worksheets/VPU_4_1.mcd — пользователь имеет возможность выбрать значение диаметра фильтра из списка (1.0, 1.5, 2.0, 2.6, 3.0 и 3.4 м) или ввести свое индивидуальное значение. Как понимает читатель, решение, показанное на рис. 7.107 нельзя считать полным. Технология работы с комбинированным  списком в том, что в текстовое поле должно появиться значение, выбранное из списка, но в нашем случае этого не происходит и текстовое поле остается пустым.

Рис. 7.107. Имитация Combo box через список и текстовое поле

На MA/CS не предусмотрена также возможность "гашения" некоторых элементов интерфейса, если какая-либо переменная принимает определенное значение. Частичное решение этой проблемы показано на WebSheet по адресу http://twt.mpei.ac.ru/MAS/Worksheets/Smart_Input.mcd и на рис. 7.108.

Рис. 7.108. Глушение текстовых полей

На рис. 7.108 представлено решение задачи о переводе значения концентрации раствора из массового процента (отношение массы растворенного вещества к массе раствора) в титр (отношение массы растворенного вещества к объему раствора) или молярность (отношение количества растворенного вещества к объему раствора). При пересчетах используются две формулы с разным набором исходных данных, что требует или наоборот не требует их ввода через текстовые поля. На рис. 7.108 решение проблемы глушения текстового поля ведется через накрытие его текстовой переменной через оператор  = изменяющейся длины, лежащем на черном фоне. Здесь используется такое свойство Mathcad-документов, как их объемность (см. разд. 1.6). Флажки Titre (титр – концентрация раствора, выраженная в мг/л) и Morarity (молярность – концентрация раствора, выраженная в моль/л) настроены так, что изменение в их состоянии сразу передается на сервер, что влечет за собой открытие или закрытие соответствующих текстовых полей ввода значений плотности раствора и/или молярной массы растворенного вещества. На рис. 7.108 отображены три расчетные ситуации: верхняя часть рисунка — состояние расчета после его открытия в Сети, средняя часть — расчет титра раствора и нижняя часть — расчет молярной концентрации раствора. Есть и четвертое состояние, когда пользователь случайно или намерено проставил "галочки" в двух флажках, что будет эквивалентно начальному состоянию расчета. Расчетная модель, отображенная на рис. 7.108, довольно надуманная. Эту "гибридную" задачу можно разбить на две самостоятельные – расчет титра раствора и расчет его молярности. Но есть задачи, где без описанного приема обойтись затруднительно.

При обсуждении недостатков Web Controls нужно принимать во внимание, что Web Controls — это не специальная разработка, а стандартные средства передачи данных в Интернете, которые пока не очень богатые, тут, повторяем, ограничения связаны с запретом передачи скриптов. Web Controls – это некие заготовки (полуфабрикаты), которые в ряде случаев требуют доработки.

Следует отметить, что значения, вводимые через Web Controls, нужно дублировать в самом расчете оператором вывода значений переменных. Иначе возможна ошибка, отображенная на рис. 7.108a. Рисунок 7.84 по идее должен выглядеть так – рис. 7.108b.

7.4. О комментариях в WebSheets

Мы уже говорили о том, что, составляя Mathcad-документ, нужно не забывать о комментариях: текстовых и графических вставках, не влияющих на сам расчет, но помогающих в нем разобраться не только другому человеку, но и самому разработчику (см. разд. 1.3).

Это правило требует некоторого переосмысления при подготовке Mathcad-документа к работе в Интернете. Дело в том, что объемный документ с большими текстовыми и графическими вставками будет "тормозиться" в Сети и будет нагружать MA/C-сервер лишней, непрофильной для него работой. Поэтому основные комментарии (история создания документа, его подробное описание, инструкция по работе и т. д.) целесообразно поместить в отдельный (не Mathcad) документ — в html-файл, созданный в среде Word или FrontPage, например, а в самом Mathcad-документе поместить только минимум комментариев и ссылку на "большие", дополнительные комментарии, которые открываются в отдельном окне браузера. При этом следует иметь ввиду, что если на одной строке текста в среде Mathcad делаются 2 и более ссылок, то при открытии такого документа в Сети ссылки могут сбиваться. Поэтому лучше на одной строке давать только одну ссылку. Можно расчет на MA/CS предварить html-файлом, размещенным на другом сервере. Так, например, организован расчет таблицы свойств воды или водяного пара – см. http://twt.mpei.ac.ru/ochkov/WSPHB/wspFPTtabl.html. Посетитель, зайдя на этот сайт, сначала прочтет, что это за расчет и как им пользоваться, а уж потом воспользуется или не воспользуется данным расчетом (http://twt.mpei.ac.ru/MAS/Worksheets/wspFTPtabl.mcd) или другими подобными, ссылки на которые есть в текстовом файле. По этой же причине не рекомендуется перегружать Mathcad-документ сложными графиками. Статические же графики, графики, не меняющие своего вида при изменении исходных данных, стоит "заморозить" и вставить в документ в виде картинки.

Публикуя документ в Интернете, следует думать и о его многоязычности. Для этого, во-первых, все комментарии можно продублировать на нескольких языках — по-русски, по-английски и т. д. Во-вторых, можно создать несколько Mathcad-документов для открытия в Сети с комментариями на разных языках. При этом можно будет использовать разные (национальные) написания некоторых констант (Vinput и Vвх, например) и единиц измерения (не Ра, например, а Па и т.д.). Есть и третье решение — давать пользователю возможность выбора языка (рис. 7.109). Так построены документы http://twt.mpei.ac.ru/mas/worksheets/Tests/Test_Cone.mcd и http://twt.mpei.ac.ru/mas/worksheets/Tests/Test_Cone_Eng.mcd, например.

Рис. 7.109. Многоязычный Mathcad-документ

Решение, приведенное на рис. 7.109, такое: разноязычные комментарии вводятся в вектор, элементы которого отображаются на дисплее в зависимости от выбранного языка (первый язык — первый элемент векторов, второй язык — второй элемент и т. д.). Есть и третье решение — дать возможность пользователю открывать несколько вариантов одного расчета (несколько файлов) с комментариями и переменными (Vinput и Vвх, например) на различных языках.

Примечание

Можно сделать так, чтобы серверное приложение "чувствовало", каким браузером — русским или английским — его "беспокоят", и в зависимости от этого открывало русский или английский вариант соответствующего WebSheet.

При открытии MA/CS-приложений в Интернете могут возникать проблемы с показом букв кириллицы не только в работающих операторах, но и в простых текстовых комментариях А проблемы эти известные — отображение букв не в той кодировке ("абракадабра" кириллицы), буквы не умещаются в видимой текстовой области и она сползает вниз, подлезая под следующий оператор (проблема общая для настроек браузеров, а не только букв кириллицы).

Рис. 7.110. Искажение комментариев на WebSheet

В верхней части рис. 7.110 показана текстовая вставка в WorkSheet – в документе, открытом для работы (счета) или редактирования в среде самого пакета Mathcad. Здесь пользователь, вернее сам разработчик Mathcad-документа имеет возможность изменить шрифт, раздвинуть область, отведенную под текст (см. рамки в верхней части рис. 7.110), разбить текст на несколько строк, сдвинув вниз последующие операторы, или просто сократить текст так, чтобы он умещался в отведенное для него место. На WebSheet – в Mathcad-документе открытом в Сети по технологии MA/CS, эти текстовые вставки могут выглядеть иначе – см. нижнюю часть рис. 7.110. Это связано с тем, что браузер конкретного пользователя, открывшего данный документ в Сети, может быть настроен на иную кодировку на более крупный шрифт, который по длине не умещает буквы в отведенную под них область (см. английский текст "A Title of Calculation" на рис. 7.110). При этом часть текста автоматически будет перенесена на новую строку с наползанием на последующий оператор. Русский же текст, как мы уже отметили, может выдаваться с искажениями — не в той кодировке (см. рис. 7.110). Последняя ошибка, правда, исправима – пользователю нужно просто изменить кодировку браузера на нужную через соответствующую команду локального меню, и мы уже это отмечали. Но не все пользователи, зашедшие на такой искаженный сайт, об этом догадываются, и несмотря на предупреждающие инструкции, покидают данный сайт и больше на него не заходят…Чтобы этого не происходило, сайт расчетом нужно правильно отформатировать.

Рис. 7.111. Исправление комментариев на WebSheet

На рис. 7.111 показано одно из решений этой проблемы. В пункте а) рисунка отображен WorkSheet, где запрос температуры ведется с текстовым комментарием (Температура на входе), текстовым окном со скрытой переменной (t1) и еще одним комментарием (°С) правее текстового окна. В выделенной области ведется перевод температуры в шкалу Кельвина. Данный Mathcad-документ при публикации в Сети может выглядеть с искажениями – так, как показано в пункте b) на рис. 7.111. Исправление ситуации отображено в пункте с) на рис. 7.111: текстовое окно теперь связано по не с переменной t1 как в пунктах а) и b), а с переменной Температура на входе: t1C, которая создана через аккорд <Ctrl>+<Shift>+k (см. рис. 1.43) и которая включает в себя комментарий, собственно имя переменной и ее размерность. Такой документ в Сети будет отображаться без искажений. Без искажений также будут отображаться простые комментарии, введенные как переменные.

Проблему неверной кодировки частично можно решить записью в голове расчета графикой, т.е. именем переменной такого предупреждения: "Если буквы кириллицы прописаны не в той кодировке, то смените ее командой View | Encoding (Вид | Кодировка)!". Можно вообще рекомендовать заменять все текстовые комментарии именами переменных (графикой), где спецсимволы вставлены после нажатия комбинации клавиш <Ctrl>+<Shift>+<k>, помня о том, что их количество должно быть минимальным, оставляя для страховки несколько пробелов в начале и конце такого комментария. Отлаживать же готовый WebSheet нужно на компьютерах с разными мониторами по размеру и настройке, а также на разных браузерах (Netscape, Mozilla, браузеры карманных компьютеров, а также смартфонов и т. д., а не только в Internet Explorer).

Кстати, буквы кириллицы очень часто показываются в неверной кодировке и на чисто русских сайтах – см., например, как иногда отображается сайт любимой автором газеты «Известия». Тут тоже приходится вручную править кодировку.

В Mathcad-документах, текстовые комментарии, искажаемые при показе в Сети (см. выше), можно заменять не только на имена переменные (см. выше), но и на картинки. Для этого нужный фрагмент Mathcad-документа достаточно перенести в графический редактор, а потом поступать так, как показано на рис. 7.111a. Но лучше набирать текст комментария в Word с его проверкой орфографии и пунктуации, потом данный комментарий через графический редактор переносить картинкой в Mathcad.

К комментариям можно отнести и сообщение об ошибках – встроенные и пользовательские. Работа в сети с этими объектами Mathcad также требуют некоторой доработки документов.

Рис. 7.112. Искаженное сообщение об ошибке

На рис. 7.112 показана работа WebSheet, когда по введенному давлению через функцию wspTSP (см. главу 5) определяется температура насыщения воды. Пользователь ввел значение давления, превышающее допустимое, поэтому счет прерывается соответствующим встроенным сообщением об ошибке. Вернее, все происходит несколько иначе. Если документ открыт в среде Mathcad (WorkSheet), то аварийный оператор (на рис. 7.112 это оператор := wspTSP(P)) меняет цвет на красный, а если к нему подвести курсор, то из него «выпадет» сообщение об ошибке. Если же документ открыт для счета в Сети (WebSheet), то по такому «покрасневшему» оператору нужно будет щелкнуть левой кнопкой мыши, чтобы получить сообщение об ошибке, не выпадающее из аварийного оператора, а появляющееся в отдельном окне, показанном на рис. 7.112. Если текст сообщения об ошибке был прописан кириллицей, то в ряде случаев он передается с искажениями (см. рис. 7.112), которые невозможно исправить командой смены кодировки браузера. Один из путей решения этой проблемы показан на рис. 7.113.

Рис. 7.113. Формирование сообщения об ошибке в сетевом Mathcad-документе

На рис. 7.113 показано создание и форматирование функции пользователя, возвращающий объем конуса, у которого есть одно ограничение — диаметр основания не может быть больше его высоты. В противном случае будет выдаваться не число, а сообщение об ошибке (см. встроенную Mathcad-функции error). В верхней части рис. 7.113 показан данный расчет, открытый в среде Mathcad, а в нижней — в Интернете. Во втором случае лучше возвращать не сообщение об ошибке, исключив из него буквы кириллицы, а просто текст. В этом случае посетителю сайте не нужно будет догадываться щелкать по покрасневшему оператору мышкой — сама функция будет выдавать нужное сообщение вместо затребованного числа.

7.5. О вставках других программ и… других ограничениях

В Mathcad-документ, как известно, можно внедрять фрагменты других математических пакетов — Word, Excel, Matlab, LabView и обмениваться данными с этими программами. Фрагмент Excel, например, часто внедряют, чтобы удобнее было вводить и выводить таблицы (векторы и матрицы — см. рис. 1.25 и 1.26) или задействовать специфические функции этих электронных таблиц.

Список таких приложений зависит от программ, которые установлены на компьютере. На рис. 7.114 показано диалоговое окно вставки в Mathcad внешних программ (компонентов).

Рис. 7.114. Диалоговое окно вставки в Mathcad-документ других приложений Windows

Но Mathcad-документ с "чужепрограммными" вставками можно размещать на MA/CS только после решения не только специфических технических вопросов, но и лицензионных вопросов с разработчиками соответствующих программ. Ведь программы, перечисленные на рис. 7.114, приобретались для использования только на рабочей станции, а не для установки на сервере и открытия в Интернете.

Есть и другие ограничения, связанные уже не с внешними, а с внутренними факторами самого пакета Mathcad и его сетевой реализации MA/CS.

Как уже отмечалось в разд. 1.7.1, посетитель сайта, где открыт для интервального расчета Mathcad-документ, может изменять его только через Web Controls, диалоговое окно создания которых показан на рис. 7.22. Но пользователь (даже не разработчик), открывший Mathcad-документ в среде самого пакета Mathcad, дополнительно может изменять форматирование графиков, прокручивать по горизонтали содержимое выделенного вектора в формате Table или Automatic[2] — см. рис. 7.115), раскрывать или наоборот сворачивать содержимое составных массивов-векторов и матриц, где хотя бы один элемент является сам вектором или матрицей (у матрицы М на рис. 7.115 такой элемент M1,5).

Рис. 7.115. Форматирование выведенных на печать массивов

На печать при сетевом вызове Mathcad-документа можно вывести не весь массив (вектор или матрицу), а только один из его элементов или отдельную область элементов, указав их местоположение в массиве через Web Controls. Так, например, устроен WebSheet, показанный на рис. 7.116 и размещенный в Сети по адресу http://twt.mpei.ac.ru/MAS/Worksheets/wspFTPtabl.mcd, по которому пользователь может вывести на экран определенную отдельную область таблицы по свойствам воды и водяного пара, задав предварительно диапазон изменения значений давления и температуры, а также число столбцов и строк в выводимой матрице.

Рис. 7.116. Вывод на печать части массива

Таким же образом допустимо выводить на печать часть графика – см. рис. 7.117, где отображен WebSheet, размещенный по адресу http://twt.mpei.ac.ru/MAS/Worksheets/T_s_Exp.mcd, который позволяет построить линию расширения пара в диаграмме «температура – энтропия» в заданной посетителем сайта области диаграммы.

Рис. 7.117. Вывод на печать области графика

Графики Mathcad, как уже отмечалось в разд. 1.2.1, можно рассматривать как своеобразные операторы, возвращающие графический образ и имеющие множество операндов, часть которых должен заполнить сам разработчик документа (это, например, имя функции и аргумента), а другая часть из которых может быть заполнена самой системой Mathcad по принципу умолчания (размер графика, формат линий и т. д.). При этой часть операндов графика может быть заполнена переменными, значения которых допустимо вводить через Web Controls (это, например, «разброс» графика – см. рис. 7.117), а другая часть – только через окна форматирования, которые нельзя напрямую связать с Web Controls (это например, ориентация поверхности в пространстве). «Напрямую» повернуть график, открытый в Сети, нельзя, но через определенные приемы можно. Так на рис. 7.118 показаны операторы, через которые можно построить график функции y(x), повернув его на заданный пользователем угол Θ.

Рис. 7.118. Поворот графика в Mathcad-документе, открытом в Сети

Для поворота графика используются встроенные в Mathсad (версии 12 и выше) функции преобразования координат из декартовых в полярные (ху2polar) и обратно (polar2ху). Подобные функции имеются и для работы с трехмерными графическими объектами: преобразование декартовых, цилиндрических и сферических координат. Это позволяет при необходимости вращать и изменять размеры трехмерных графиков через Web Controls.

7.6. Об именах переменных и функций

При подготовке Mathcad-документа к публикации в Сети может оказаться так, что имя переменной (функции), нормально работающей в среде Mathcad, дает сбой при открытии этого документа в Интернете, что зафиксировано на рис. 7.119.

Рис. 7.119. Сбой в именах переменных при работе с ними в Сети

Обычно это случается, если используются русские буквы и другие спецсимволы в именах. Вообще-то в именах объектов программирования присутствие кириллицы и "других спецсимволов" нежелательно не только в "работающих" именах переменных, функций, файлов и т. д., но даже и в комментариях. Тем не менее, их приходится использовать особенно в специфических расчетах, где те или иные объекты уже давно получили русские имена и к которым пользователи привыкли. У многих этих переменных есть латинские аналоги, но у некоторых нет. Если русские буквы необходимы в формулах, то можно посоветовать прием нивелирования "русскости" этих переменных. Например, переменные ч (час), мг-экв (миллиграмм-эквивалент) и некоторые другие — Ц.баз (базовая цена, где баз — это нижний текстовый индекс) — при открытии Mathcad-документа в Сети дают сбой (см. рис. 7.119).

Исправить такую ситуацию можно, поставив первым их символом пробел. Вид переменной не изменится (она только чуть сдвинется вправо), а расчет восстановится. "Лечить" переменные можно заменой (подправкой) их имени через команду Edit | Replace (Правка | Заменить), проставив флажок Math (Математические) в диалоговом окне настройки замены, или так, как показано на рис. 7.43 выше.

Следует не забывать, что Mathcad по-настоящему поддерживает только латинские и греческие буквы. Проблема, зафиксированная на рис. 7.119, решена через пробел в начале имени, что не является документированным приемом. Следовательно, можно ожидать, что в новой версии Mathcad данный прием не будет работать. Если все же без русских букв не обойтись, то можно порекомендовать накрывать латинские названия картинкой с русскими символами, а технология MA/CS позволяет снять какие-то ни было ограничения с имен переменных. Так на рис. 7.120 показан документ, по которому ведется расчет некой разности температур с использованием переменных с "крышечками": - и ~, нижними (in и out) и верхними (2 и x) индексами, расположенными один над другим без горизонтального сдвига.

Рис. 7.120. Картинки, накрывающие имена переменных

Секрет рис. 7.120 в том, что "настоящие" имена переменных t1 и t2 скрыты, а на обозрение пользователя выставлены рисунки переменных и формул. Такой "фокус" не проходит с WorkSheet, но вполне применим в отношении WebSheet. Мы уже отмечали в разд. 1.2.2, что если в создаваемом документе дать переменным именно те имена, к которым специалисты давно привыкли, то такой документ потребует минимума комментариев — достаточно лишь дать заголовок и ссылку на описание в формате HTML, к которому и не придется обращаться: имена переменных говорят сами за себя и за весь документ.

7.7. Проблема объемных исходных данных

При работе с Mathcad-документом, открытым в сети на MA/CS или в самой оболочке Mathcad, может возникнуть проблема ввода большого изменяющегося массива данных (пример по адресу http://twt.mpei.ac.ru/mas/worksheets/Exp_Steam_K_300_240_LMZ.mcd, где пользователь должен просмотреть и при необходимости изменить значения в нескольких десятках текстовых полях, прежде чем нажать кнопку Recalculate). Ввод таких данных через Web Controls не очень удобен. Кроме того, посетитель сайта может пропустить что- то – исправить на требуемые не все данные, хранящиеся по умолчанию в текстовых окнах после открытия расчета в Сети, что чревато ошибками. При работе вне Сети (в самой оболочке Mathcad) эта проблема обычно решается записью исходных данных файлом на диск и считыванием их в массивы Mathcad через функцию READPRN и др. При работе с MA/CS такая технология затруднительна, и можно рекомендовать иную. Пользователь перед тем, как работать с МА/CS, в электронных таблицах, например, готовит новые исходные данные (рис. 7.121).

Рис. 7.121. Таблица исходных данных для MA/CS (показана малая часть данных)

После подготовки данных (это могут быть подправленные данные предыдущего сеанса связи с MA/CS, например, хранящиеся в архиве пользователя), они простым копированием (через нажатие комбинаций клавиш <Ctrl>+<Insert>, а затем <Shift>+<Insert>) переносятся в "длинное" текстовое поле Mathcad-документа, открытого в Сети — в одно поле или несколько, если длина копируемой цепочки символов превышает 255 знаков. После этого нажимается кнопка Submit и расчет ведется с новыми исходными данными. Если ответ также объемен, то можно порекомендовать выводить его не отдельными скалярными величинами, а таблицей, которую также легко скопировать из сетевого Mathcad-документа — перенести в документ пользователя для дальнейшего анализа и обработки. При этом «картинку» (а их генерирует Mathcad в формате png, например) можно превратить в настоящую таблицу через распознаватель текстов. При этом следует помнить, что вертикальные и горизонтальные прокрутки объемных массивов (векторов и матриц) в Сети не работают. Кроме того, там не будет возможности раскрытия составных массивов (Nested Array). Такие данные следует заранее готовить к обзору — помещать несколько таблиц, раскрывать составные массивы и т. д. См. также решение проблемы ввода объемных данных на сл. примере http://mas.exponenta.ru/mas/worksheets/Mathematics/MatStat/Int_disp.xmcd (проф. Ивановский Р.И. СПбГПУ).

Готовя Mathcad-документ для публикации в Сети, нужно решить вопрос о стартовых значениях исходных данных. Как правило, разработчик сетевого расчета, продолжая традицию Mathcad с его основным оператором интерфейса :=, строит документ так, что в расчете даны некие типовые исходные данные, которые пользователь может (но не обязан!) изменить, отредактировать. С одной стороны, это удобно — можно сразу просмотреть расчет, ничего в нем не меняя или изменить только отдельные данные. С другой стороны, это чревато ошибками, связанными с тем, что пользователь может где-то не изменить нужные данные и получить неправильный ответ. Поэтому можно рекомендовать записывать в текстовое поле, например, не стартовое (типовое) значение, а прочерк ("–"), блокирующий расчет и требующий тем самым от пользователя обязательного ввода нужных исходных данных. По этой же причине можно рекомендовать использовать группу флажков, а не список или переключатели при организации выбора варианта исходных данных. В группе флажков, как мы уже отметили, может быть не выделено ни одного элемента ("чистый лист" для расчета).

7.8. Контроль знаний через MA/CS

Задачи, выложенные на MA/CS, направлены, в основном, на решение практических задач и построены следующим образом. Обратившемуся к MA/СS предлагается через Web Controls ввести исходные данные, нажать кнопку Recalculate (Пересчитать) и получить ответ. Но если такой документ как бы "вывернуть наизнанку", то его можно приспособить и для контроля знаний. При этом допустимо генерировать исходные данные и просить пользователя (обучаемого, тестируемого) ввести нужные формулы, по которым высчитывается ответ и который в свою очередь сравнивается с истинным. На основании этого сравнения делается вывод о знании пользователем соответствующего процесса, аппарата и/или технологии. Это может делаться как в рамках контроля или самоконтроля при изучении учебного материала, так и при организации практических занятий. При этом необходимо либо в самом расчетном документе, либо в документах, на которые сделаны ссылки из расчетного документа, дать все необходимые теоретические и справочные материалы, "подталкивающие" обучаемого к правильному ответу. Пример такого документа хранится по адресу http://twt.mpei.ac.ru/mas/worksheets/Tests/Test_Cone.mcd. Там предлагается по заданным геометрическим размерам прямого круглого конуса определить его другие параметры — высоту и объем (рис. 7.122).

Рис. 7.122. Контроль знаний через MAS: выбор варианта и ввод выражения

В п. 1 на рис. 7.122 ведется традиционный выбор правильного ответа из перечня ответов, хранящего и неправильные — устаревшая технология опроса обучаемых. В п. 2 нужно не "щелкать" по вариантам ответа, а ввести его. При этом могут вводиться как переменные (D, H и рi), так и числовые константы.

Рис. 7.123. Контроль знаний через MA/CS: составление и решение уравнения

По документу, показанному на рис. 7.123 и хранящемуся по адресу http://twt.mpei.ac.ru/MAS/Worksheets/Chem/Chem_R_N26t.mcd, обучаемому предлагают решить с помощью компьютера некую химическую задачу не через ввод числовых констант как на рис. 7.122, а через составление нужного уравнения. При этом Mathcad с его процедурой поиска решений позволяет изменить методику счета в тех или иных дисциплинах. Так, на уроках химии в школе подобные задачи учат решать через пропорции (в 20 см — 54 петли, а в 75 см — x петель, чему равно x, если говорить не о химии, а о вязании). С процедурой поиска решений можно забыть о "примитивных" пропорциях и вернуться к сути задачи — решению уравнения сохранения вещества.

В документах для контроля знаний (рис. 7.122 и 7.123) следует решить следующие проблемы.

r    Необходимо генерировать исходные данные так, чтобы они находились в разумном диапазоне.

r    Нужно либо выбрать исходные данные из довольно объемной таблицы, либо создавать эти данные, опираясь на генераторы псевдо- и/или истиннослучайных чисел, отбраковывая неверные исходные данные. (Пример генерации истинослучайных чисел с опорой на таймер компьютера >>>>>>>).

r    В исходных данных могут быть разные единицы измерения, что должно подтолкнуть обучаемого к изучению определенных разделов метрологии.

r    Работа с формулами, по которым ведутся расчеты, может идти либо через выбор из предложенного списка (высота конуса — см. рис. 7.122), либо через ввод формул через текстовые поля (объем конуса). Оба метода имеют достоинства и недостатки. Выбор из предложенного списка подразумевает, что в нем есть и неверные результаты, а это очень спорный момент в методологическом плане. Считается, что обучаемый может запомнить неверный ответ в предложенном списке и не запомнить правильный. Ввод формулы через текстовое окошко не совсем удобен тем, что формулу при этом приходится вводить в текстовом режиме, опираясь не на общематематические, а на "компьютерные" варианты написания операторов. Но это не так уж и плохо — пользователь, изучая специальную дисциплину, заодно и осваивает некоторые приемы работы на компьютере. В формулах допустим ввод как числовых констант, так и переменных, их хранящих.

r    При сравнении численных ответов пользователя, включая и те, какие были введены через формулы с истинными результатами, необходимо принимать во внимание точность математических операций. Так, например, пользователь может ввести число p как 3.14, что будет несколько отличаться от истинного значения этой фундаментальной математической константы. Одно из решений проблемы точности — выводить не сообщения типа "Правильно"/"Неправильно", а два числа — ответ обучаемого и истинный ответ, которые не машиной, а человеком анализируются.

Пример WebSheet – контроль знаний по термодинамике >>>>>>>.

7.9. Доступ к расчетам через пароль

Проблему администрирования (допуска) к расчетным документам MA/CS можно решать традиционными средствами, используемыми в Интернете — регистрация, получение пароля и т. д. С примером такого "коммерческого" сайта, основанного на MA/CS, можно познакомиться здесь http://www.i4ds.ch/mas. Этот сайт из области строительства имеет как открытые расчеты, так и расчеты, допуск к которым возможен только после определенной процедуры регистрации. Эти инструменты можно приложить как ко всему сайту, хранящему расчетные методики, так и к отдельным расчетам. Например, на рис. 7.124 показан расчет температуры в конденсаторе паровой турбины, организованный так, что при исходных данных, показанных на рис. 7.124 (Pv=0.95 bar и В=750 torr (mm Hg)) ответ выдается: Pc=4.99 kPa tc=32.8ºС и т. д., но при иных исходных данных расчет блокируется: пользователю дают возможность посмотреть на расчет и убедиться в его правильности, но не дают считать. Чтобы все заработало, пользователю с именем Login необходимо получить от разработчика пароль и ввести его в соответствующее текстовое поле (Password).

Рис. 7.124. Пример документа с требованием ввода пароля

Введенные регистрационное имя и пароль, сравниваются (операторы или функции if) c хранящимися в самой программе и, если они совпадают, то расчет ведется по формулам, нет — блокируется[3].

В среде Mathcad 12/13/14, как уже было отмечено ранее (см. рис. 1.63), можно фиксировать число открытий файла и время последнего открытия. Это дает возможность вести статистику MAS. Кроме того, если владелец MAS откроет папку Sessions в инсталляции MAS, то он увидить, какие WebSheets в настоящее время открыты посетителями MAS. Так из рис. 7.124a видно, что в данный момент открыт расчет по адресу http://twt.mpei.ac.ru/MAS/Worksheets/wsp_TextBox.mcd. Для этой сессии была открыта временная папка с именем fg4... (случайно генерируемое имя), которая хранит временные файлы – один с расширением htm (шаблон ответа) и несколько рисунков с расширением png, заполняющими шаблон.

Итак, что нужно сделать, чтобы Ваш Mathcad-документ стал доступен в Интернете. Для этого:

1.        Необходимо в среде Mathcad 11.2 Enterprise Edition или Mathcad 12/13/14 (все версии) отредактировать Mathcad-документ — вставить Web Controls вместо операторов присваивания, убрать или изменить лишние комментарии, исключить необходимость форматирования некоторых ответов и т. д. Если данных версий Mathcad у пользователя нет, то он может отметить, например, цветом эти операторы присваивания и попросить администратора MA/CS сделать нужные замены (см., например, рис. 7.80 и 7.84).

2.        Следует послать по электронной почте или передать при встрече данный Mathcad-документ администратору MA/CS — автору этой книги, например. Еще лучше, если WebSheet будет расположен на двух MA/CS — дополнительно, например, в на сайте фирмы Софтлайн (http://mas.exponenta.ru). Администратор этого сайта — Р.И.Ивановский (iri@dcn.infos.ru). Так на сайте www.vpu.ru/mas можно не один раз встретить слово дубль. Это означает, что соответствующий расчет продублирован на запасном сервере. Естественно, можно приобрести MA/CS и в индивидуальное пользование (см. информацию в конце книги о фирме ПТС — дистрибьюторе фирмы PTC).

3.        После установки Mathcad-документа на MA/CS проверить его работу и за несколько итераций (переписка с администратором сервера) отладить его.

Mathcad-документы, подготовленные вышеописанным образом годятся и для автономной работы на компьютерах, где установлен сам пакет Mathcad. На такие документы можно будет наложить защиту, показанную на рис. 7.32. Этим на расчет как бы наклеивается некая защитная пленка, имеющая отверстия в Web Controls (см. рис. 7.83), и предохраняющая расчет от вольной или невольной порчи, а также от любопытных взглядов в захлопнутые области. Единственное технологическое отличие такого WorkSheet от WebSheet будет заключаться в том, что пересчет будет производиться сразу после изменения в Web Controls, а не после нажатия кнопки Submit (см. рис. 7.84). В этом случае можно перевести такой WorkSheet в режим ручного счета и просить нажимать не кнопку Submit , а клавишу F9.

Инструкция по подготовке документов к публикации на MA/CS СбПГПУ – http://mas.exponenta.ru/manual

Краткая инструкция по подготовке документов к публикации на MA/CS МЭИ – http://inedu.mpei.ru/DocHandler.aspx?p=docs/MCS.htm



[1] Можно поступать и так. Изменить значение в текстовом поле, затем перелисттнуть WebSheet на нужное место — на интересующий нас график, расположенны, например, в самом конце расчета, и только после этого нажать Enter. В этом случае можно увидеть, как график изменит свой вид (некая (псевдоанимация — см. разд. 3.3).

[2] Есть еще и третий формат Matrix: вектор или матрица выводятся полностью или совсем не выводятся на печать. Во втором случае выводится соответствующая ее сообщение об ошибке.

[3] Правда, при вводе пароля символы в текстовом поле не превращаются в звездочки и пароль могут подглядеть. Тут можно рекомендовать предварять пароль цепочкой звездочек, заталкивающих сам пароль под правый край текстового поля так, чтобы он не был виден после его ввода.