Библиотеки функций

Библиотека представляет собой набор функций, написанных на языке Scilab и хранящихся в отдельных файлах.

Если набор функций невелик и не содержит файлов справки или исходных текстов на компилируемых языках (таких как C/C++ или Fortran), объеди­нение их в библиотеку является весьма удачным выбором, в противном слу­чае следует задуматься о создании модуля. Разработка собственного модуля не представляет трудностей, однако требует более детального знакомства с внут­ренним устройством пакета Scilab. Кроме того, модули также имеют в своей основе библиотеки, поэтому для создания первых требуется понимание работы последних. Тем не менее, построение собственного модуля выходит за рамки настоящего руководства. Во многих практических ситуациях создание библио­теки является достаточным для организации набора функций.

В этом разделе рассматривается создание простой библиотеки функций Scilab, а также способы ее автоматической загрузки при запуске пакета.

Предположим, что имеется несколько файлов .sci, содержащих функции на языке Scilab. Последовательность действий в этом случае такова:

1. Создать бинарные версии функций, используя команду genlib. Функция genlib помимо прочего генерирует индексные файлы.

2, Загрузить библиотеку в Scilab, для чего используется функция lib.

Перед тем как приступить к рассмотрению примера, необходимо обозначить основные правила создания библиотек функций в Scilab. Далее эти правила будут проиллюстрированы на примере.

Файлы, содержащие определения функций, должны иметь расширение .sci. Строго говоря, наличие этого расширения не является обязательным, но помо­гает при поиске скриптов Scilab на жестком диске компьютера.

В одном файле .sci могут быть определены несколько функций Scilab, од­нако только первая из них будет доступна извне. Иными словами, только пер­вая функция, определенная в файле, считается общедоступной, в то время как остальные неявно полагаются закрытыми (служебными) функциями.

Имя файла .sci должно совпадать с именем общедоступной функции в этом файле. Например, если имя функции myfun, то файл, содержащий ее, должен иметь название myfun.sci. Это требование является обязательным, в противном случае функция genlib не будет работать корректно.

Инструкции Scilab, используемые при работе с библиотеками функций, пред­ставлены в табл. 17.

genlib   создает библиотеку из функций, определения которых  расположены в некотором

             каталоге

 lib        загружает библиотеку

Таблица 17: Инструкции Scilab для работы с библиотеками функций,

 

Теперь перейдем к примеру создания конкретной библиотеки.

Предположим, что мы работаем на компьютере под управлением ОС Windows. Пусть в каталоге samplelib размещаются два файла:

 

  • C:/samplelib/fuction1.sci:

function у =  functionl   (  х )

у =  1  *  functionl_support   (  х )

endfunction

function у =  functionl_support   (  x )

у = 3  * x endfunction

 

  • C:/samplelib/fuction2.sci:

function у =  function2   (  x )

у = 2  * x

endfunction

Следующий пример демонстрирует, как создать бинарную версию функций, восполь-зовавшись инструкцией genlib. Первый аргумент функции genlib пред­ставляет название будущей библиотеки, а второй указывает каталог, где разме­щены файлы функций. Заметим, что в данном случае только функции functionl и function2 являются общедоступными, а функция functionl_support может использоваться только внутри библиотеки, но не вне ее.

-->genlib("mylibrary",   "С:/samplelib")

 -->mylibrary

mylibrary =

Functions   files   location   :   С:\samplelib\.

functionl  function2

Функция genlib генерирует и помещает в каталог "C:/samplelib" следующие файлы:

  • functionl.bin:   бинарная версия файла functionl.sci,
  • function2.bin:   бинарная версия файла function2.sci,
  • lib             бинарная версия библиотеки
  • names           текстовый файл, содержащий имена всех

                    функций в библиотеке.

Скомпилированные файлы *.bin и файл lib являются кроссплатформенным в том смысле, что могут без изменений использоваться версиями Scilab для Windows, Linux или Mac OS.

Сразу же после вызова genlib, две новых функции становятся доступны окружению Scilab и могут быть вызваны, как показано ниже:

-->functionl(3)

 ans =

 9.

-->function2(3)

 ans =

6.

Вместе с тем, на практике нет необходимости каждый раз генерировать биб­лиотеку заново. Готовую библиотеку можно загрузить посредством команды lib, единственный аргумент которой указывает местоположение загружаемой библиотеки в файловой системе. Следующий фрагмент иллюстрирует загрузку ранее созданной библиотеки:

-->mylibrary =  lib("С:\samplelib\")

ans =

Functions   files   location   :   С:\samplelib\.

functionl   function2

При большом числе загружаемых библиотек, удобно поместить инструкции lib в стартовом скрипте Scilab, который автоматически исполняется при за­грузке пакета. В этом случае все указанные библиотеки будут доступны сразу же после старта Scilab. Файл стартового скрипта размещается в основном ка­талоге Scilab, путь к которому можно узнать, проверив значение переменной SCIHOME:

-->SCIH0ME SCIHOME =

C:\Users\username\AppDatа\Roaming\Scilab\scilab-5.2.0

Стартовый скрипт носит имя .scilab и является обычным скриптом Scilab (в том числе может содержать комментарии). Для загрузки созданной ранее библиотеки добавим в файл .scilab следующие строки:

//Load my  favorite library.

mylibrary = lib("С:/samplelib/")

В результате библиотека mylibrary будет загружаться всякий раз при стар­те пакета Scilab.

© vse-o-scilab

Сделать бесплатный сайт с uCoz