Создание библиотек функций пользователя
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Библиотека (library ) представляет собой набор функций, объединенных некоторой идеей или по функциональному признаку. В системе Scilab простейшая библиотека содержит только функции, написанные средствами языка Scilab, где каждая функция хранится в отдельном файле. В терминах Scilab такие функции являются макросами [13]. Они не содержит файлов справки и функций на компилируемых языках (примитивов).

Объеди­нение функций в библиотеку во многих практических ситуациях является весьма удобным средством использования внешних независимых функций при создании локальных приложений. Более сложной организацией внешних откомпилированных функций, написанных, в том числе, на универсальных языках программирования, является модуль. Разработка собственного модуля не представляет трудностей, однако требует более детального знакомства с внут­ренним устройством пакета Scilab. Кроме того, модули также имеют в своей основе библиотеки, поэтому для создания модулей требуется понимание работы библиотек.

К преимуществам библиотеки можно отнести следующее:

· библиотека загружается и выгружается целиком, что защищает все функции, входящие в нее.

· библиотеки легко обслуживать, так как каждая законченная функция хранится в своем файле.

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

·  функции библиотеки хранятся в откомпилированном виде и, следовательно, выполняются быстрее.

 

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

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

1) Создать откомпилированные (бинарные файлы с расширением *. bin) экземпляры функций, используя функцию genlib . Эта функция создает библиотеку из функций, описания которых расположены в некотором каталоге. Кроме того, функция genlibсоздает индексные файлы.

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

 

Для создания библиотеки функций следует придерживаться следующих правил:

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

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

 

После создания библиотеки в каталоге появятся новые файлы:

· bin-файлы, которые являются скомпилированными версиями функций в sci-файлах. Из этих файлов и загружаются функции;

· файл names – служебный файл, который содержит имена функций библиотеки;

· файл с расширением *. lib, который используется сценарием погрузки и фактически является головой библиотеки.

 

Далее рассмотрим пример создания библиотеки (рис.1.5.6-3).

Пусть в каталоге samplelib размещаются два файла.

 

--> // Первый файл библиотеки samplelib содержит две функции

--> // C:\samplelib/fuction1.sci:

--> functionу = functionl(х) // Перваяфункция

>у= 1 * functionl_support(х)

> end

-->

--> function у = functionl_support(x) // Втораяфункция

> у = 3 * x

>end

--> // Второй файл содержит одну функцию

--> // C:/samplelib/fuction2.sci:

--> function у = function2 (x)

> у = 2 * x

>end

Рис. 1.5.6-3 Файлы с функциями, размещенные в каталоге samplelib

 

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

 

--> // Запись файлов в каталог samplelib

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

--> mylibrary

 mylibrary =

Functions files location: С:\samplelib\.functionl function2

Рис.1.5.6-4 Запись файлов в каталог samplelib

 

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

functionl.bin – бинарная версия файла function1.sci;

function2.bin – бинарнаяверсияфайла function2.sci;

lib   – бинарная версия библиотеки;

names   – текстовый файл, содержащий имена всех

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

 

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

 

--> // Пример обращения к библиотечным функциям

-->functionl(3)

ans =

9.

-->

-->function2(3)

ans =

6.

 

Рис. 1.5.6-5 Обращение к библиотечным функциям из командного окна

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

 

---> // Загрузка файлов в библиотеку

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

 ans =

--> functions files location: С:\samplelib\.

functionl function2

 

Рис.1.5.6-6 Загрузка файлов в библиотеку с использованием функции lib

 

 

Дата: 2019-11-01, просмотров: 308.