WS 13-1MVI320, Workshop 13, August 2001 УПРЖНЕНИЕ 13 ИСПОЛЬЗОВАНИЕ ВНЕШНИХ ФУНКЦИЙ
WS 13-2MVI320, Workshop 13, August 2001
WS 13-3MVI320, Workshop 13, August 2001 n Описание задачи u Часто вам может понадобиться в таблицах преобразовывать данные, используя функцию, которой нет среди стандартных. В этом случае необходимо пользоваться внешними функциями. Цель данного упражнения – ознакомить вас с основами использования внешних функций. Также вы увидите, что при внесении изменений в данные, результаты выполнения функций обновляются автоматически.
WS 13-4MVI320, Workshop 13, August 2001 n Предлагаемые шаги решения 1. Первое – вызываем внешнюю функцию. 2. Заметьте – какие аргументы вызывает используются при вызове функции. 3. Убедитесь, что внешняя функция обновляется автоматически.
WS 13-5MVI320, Workshop 13, August 2001 Шаг 1. Пример данных Открываем банк данных a.Стартуем MSC.Mvision, набрав в текстовой строке mvbuild. b.File => Open Databank… c.Выберите demo_metals_ 4Q95. def (Demo Metals Data Based on Mil5-Long Form). c
WS 13-6MVI320, Workshop 13, August 2001 Шаг 2. Меню Tools: Spreadsheet Откройте таблицу из главного меню: a.В меню броузера выберите Tools/Spreadsheet. a
WS 13-7MVI320, Workshop 13, August 2001 Шаг 3. Spreadsheet File: Open Spd Откройте сохраненную таблицу с именем transpose.spd. a.В меню таблицы выберите File/Open Spd. b.Введите : Spreadsheet: transpose.spd c.OK. b c a
WS 13-8MVI320, Workshop 13, August 2001 Шаг 4. Внешняя функция block_transpose Посмотрите на формулу в ячейках A17 и A23. Эти ячейки содержат вызов внешней функции block_transpose. Формула должна иметь следующий формат Внешние функции представляют собой заранее откомпилированный набор подпрограмм, поставляемых с MSC.Mvision, которые написаны на языке C. Библиотека выполняемых функций, mvfunc, содержит функцию block-transpose, которая используется для транспонирования массива чисел в ячейках (A4:D13). mvfunc находится в директории, в которую был установлен MSC.Mvision. Вы также можете компилировать свои собственные C – или Fortran – подпрограммы локально и ссылаться на них напрямую подобно тому, как это сделано в упражнении. Каждая выполняемая программа может выполнять более одной функции. :=ex_func(mvfunc,block_transpose(A4:D13))
WS 13-9MVI320, Workshop 13, August 2001 Смотрите, как внешняя функция обновляется автоматически a.Выберите ячейку B7 и отредактируйте ее вот так: B7:=(B6+1)*10 На этом упражнение закончено. Сразу после нажатия клавиши Enter массив изменит значение в ячейке B7 на число 140 (вместо 14) и все соответствующие ячейки увеличат свое значение последовательно со 140 на единицу. Попробуйте сделать любые другие изменения в таблице и понаблюдайте за результатом. a Шаг 4. Внешняя функция block_transpose (продолжение)
WS 13-10MVI320, Workshop 13, August 2001