Книга: Учебное пособие по курсу «Нейроинформатика»

Запросы, однотипные для всех компонентов

Запросы, однотипные для всех компонентов

Таблица 16. Префиксы компонентов

Префикс Компонент
Запроса Ошибки
ex 0 Исполнитель
tb 1 Задачник
pr 2 Предобработчик
nn 3 Сеть
es 4 Оценка
ai 5 Интерпретатор ответа
in 6 Учитель
cn 7 Контрастер

Ряд запросов обрабатывается всеми компонентами, кроме компонента исполнитель, носящего вспомогательный характер. Один из таких запросов — FreeMemory — был описан в разделе «Управление памятью», а два запроса, связанных с обработкой ошибок — в разделе «Обработка ошибок». В данном разделе приводятся описания остальных запросов, имеющих одинаковый смысл для всех компонентов. В отличие от ранее описанных запросов эти запросы опираются на структуру исполняющего компонента, поэтому к имени запроса добавляется префикс, задающий компонента. Список префиксов приведен в табл. 16. Единственным исключением из числа компонентов, исполняющих перечисленные в данном разделе запросы, является компонент исполнитель.

Все описываемые в данном разделе запросы можно разбить на четыре группы:

1. Установление текущего компонента.

2. Запросы работы со структурой компонента.

3. Запросы на получение или изменение параметров структурной единицы.

4. Запуск редактора компонента.

Все имена запросов начинаются с символов «xx», которые необходимо заменить на префикс из табл. 16 чтобы получить имя запроса для соответствующего компонента. При указании ошибок используется символ «n», который нужно заменить на соответствующий префикс ошибки из табл. 16.

Далее данном разделе компонентом также называются экземпляры компонента, а не только часть программы. Например, одна из загруженных нейронных сетей, а не только программный компонент сеть.

Запрос на установление текущего компонента

К этой группе запросов относится один запрос — xxSetCurrent — не исполняемый компонентом задачник.

Сделать текущей (xxSetCurrent)

Описание запроса:

Pascal:

Function xxSetCurrent(CompName: PString): Logic;

C:

Logic xxSetCurrent(PString CompName)

Описание аргумента:

CompName — указатель на строку символов, содержащую имя компонента, которого надо сделать текущим.

Назначение — ставит указанного в параметре CompName компонента из списка загруженных компонентов на первое место в списке.

Описание исполнения.

1. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

2. Указанный в аргументе CompName компонент переносится в начало списка.

Запросы, работающие со структурой компонента

К этой группе относятся запросы, позволяющие выяснить структуру компонента, прочитать ее или сохранить на диске.

Добавление нового экземпляра (xxAdd)

Описание запроса:

Pascal:

Function xxAdd(CompName: PString): Logic;

C:

Logic xxAdd(PString CompName)

Описание аргумента:

CompName — указатель на строку символов, содержащую имя файла компонента или адрес описания компонента.

Назначение — добавляет новый экземпляр компонента в список компонентов.

Описание исполнения.

1. Если в качестве аргумента CompName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя компонента и после пробела имя файла, содержащего компонента. В противном случае считается, что аргумент CompName содержит указатель на область памяти, содержащую описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то допускается включение в текст описания компонента ключевого слова Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.

2. Экземпляр компонента считывается из файла или из памяти и добавляется первым в список компонентов (становится текущим).

3. Если считывание завершается по ошибке, то возникает ошибка n02 — ошибка считывания компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

Удаление экземпляра компонента (xxDelete)

Описание запроса:

Pascal:

Function xxDelete(CompName: PString): Logic;

C:

Logic xxDelete(PString CompName)

Описание аргумента:

CompName — указатель на строку символов, содержащую полное имя компонента.

Назначение — удаляет указанного в параметре CompName компонента из списка компонентов.

Описание исполнения.

1. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

Заметим, что попытка удаления младшей структурной единицы приводит к удалению всего компонента содержащего данную структурную единицу.

Запись компонента (xxWrite)

Описание запроса:

Pascal:

Function xxWrite(CompName: PString; FileName: PString): Logic;

C:

Logic xxWrite(PString CompName, PString FileName)

Описание аргументов:

CompName — указатель на строку символов, содержащую имя компонента.

FileName — имя файла или адрес памяти, куда надо записать компонента.

Назначение — сохраняет в файле или в памяти компонента, указанного в аргументе CompName.

Описание исполнения.

1. Если в качестве аргумента CompName дан пустой указатель, или указатель на пустую строку, то исполняющим запрос объектом является текущий компонент.

2. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

3. Если в качестве аргумента FileName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя файла, для записи компонента. В противном случае FileName должен содержать пустой указатель. В этом случае запрос вернет в нем указатель на область памяти, куда будет помещено описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то в текст будет включено ключевое слово Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.

4. Если во время сохранения компонента возникнет ошибка, то генерируется ошибка n03 — ошибка сохранения компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

Вернуть имена структурных единиц (xxGetStructNames)

Описание запроса:

Pascal:

Function xxGetStructNames(CompName: PString; Var Names: PRealArray): Logic;

C:

Logic xxGetStructNames(PString CompName, RealArray* Names)

Описание аргументов:

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

Names — массив указателей на имена структурных единиц.

Назначение — возвращает имена всех компонентов в списке компонентов или имена всех структурных единиц структурной единицы, указанной в аргументе CompName.

Описание исполнения.

1. Если в качестве аргумента CompName дан пустой указатель, или указатель на пустую строку, то исполняющим запрос объектом является соответствующий программный компонент. В качестве ответа в указателе Names возвращается массив, каждый элемент которого является указателем на не подлежащую изменению символьную строку, содержащую имя компонента из списка. После адреса имени последнего компонента следует пустой указатель. Выполнение запроса успешно завершается.

2. Если имя компонента, переданное в аргументе CompName, не найдено в списке компонентов, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

3. Возвращается массив, каждый элемент которого является указателем на не подлежащую изменению символьную строку, содержащую псевдоним структурной единицы, являющейся частью структурной единицы, указанной в аргументе CompName. Имена структурных единиц перечисляются в порядке следования в разделе описания состава структурной единицы, имя которой указано в аргументе CompName. Если одна из структурных единиц задана в описании состава несколькими экземплярами, то имя каждого экземпляра возвращается отдельно. После указателя на имя последней структурной единицы следует пустой указатель.

Вернуть тип структурной единицы (xxGetType)

Описание запроса:

Pascal:

Function xxGetType(CompName, TypeName: PString; Var TypeId: Integer): Logic;

C:

Logic xxGetType(PString CompName, PString TypeName, Integer TypeId)

Описание аргументов:

CompName — указатель на строку символов, содержащую полное имя структурной единицы.

TypeName — возвращает указатель на строку символов, содержащую имя структурной единицы, данное ей при описании.

TypeId — одна из предопределенных констант, соответствующая типу структурной единицы.

Назначение — возвращает имя и тип структурной единицы.

Описание исполнения.

1. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

2. В переменной TypeId возвращается тип структурной единицы. Значения предопределенных констант, соответствующих различным типам структурных единиц различных компонентов приведены в табл. 11 и в соответствующих разделах, содержащих описания компонентов.

3. Если структурная единица является стандартной, то указателю TypeName присваивается значение пустого указателя. Если структурная единица имеет пользовательский тип (значение аргумента TypeId равно –1), то указатель TypeName устанавливается на строку, содержащую имя, данное указанной в аргументе CompName структурной единице при ее описании.

Запросы на изменение параметров

К группе запросов на изменение параметров относятся три запроса: xxGetData — получить параметры структурной единицы. xxGetName — получить названия параметров и xxSetData — установить значения параметров структурной единицы.

Получить параметры (xxGetData)

Описание запроса:

Pascal:

Function xxGetData(CompName: PString; Var Param: PRealArray): Logic;

C:

Logic xxGetData(PString CompName, PRealArray* Param)

Описание аргументов:

CompName — указатель на строку символов, содержащую полное имя структурной единицы.

Param — адрес массива параметров.

Назначение — возвращает массив параметров структурной единицы, указанной в аргументе CompName.

Описание исполнения.

1. Если Error <> 0, то выполнение запроса прекращается.

2. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

3. В массив, адрес которого передан в аргументе Param, заносятся значения параметров. Параметры заносятся в массив в порядке описания в разделе описания статических переменных. Статические переменные, описанные вне описания структурных единиц, считаются параметрами компонента.

Получить имена параметров (xxGetName)

Описание запроса:

Pascal:

Function xxGetName(CompName: PString; Var Param: PRealArray): Logic;

C:

Logic xxGetName(PString CompName, PRealArray* Param)

Описание аргументов:

CompName — указатель на строку символов, содержащую полное имя структурной единицы.

Param — адрес массива указателей на названия параметров.

Назначение — возвращает массив указателей на названия параметров структурной единицы, указанной в аргументе CompName.

Описание исполнения.

1. Если Error <> 0, то выполнение запроса прекращается.

2. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

3. В массив, адрес которого передан в аргументе Param, заносятся адреса символьных строк, содержащих названия параметров.

Установить параметры (xxSetData)

Описание запроса:

Pascal:

Function xxSetData(CompName: PString; Param: PRealArray): Logic;

C:

Logic xxSetData(PString CompName, PRealArray Param)

Описание аргументов:

CompName — указатель на строку символов, содержащую полное имя структурной единицы.

Param — адрес массива параметров.

Назначение — заменяет значения параметров структурной единицы, указанной в аргументе CompName, на значения, переданные, в аргументе Param.

Описание исполнения.

1. Если Error <> 0, то выполнение запроса прекращается.

2. Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

3. Параметры, значения которых хранятся в массиве, адрес которого передан в аргументе Param, передаются указанной в аргументе CompName структурной единице.

4. Если исполняющим запрос компонентом является интерпретатор ответа (aiSetData), то генерируется запрос SetEstIntParameters к компоненту оценка. Аргументы генерируемого запроса совпадают с аргументами исполняемого запроса.

Инициация редактора компоненты

К этой группе запросов относится запрос, который инициирует работу не рассматриваемых в данной работе компонентов — редакторов компонентов.

Редактировать компонент (xxEdit)

Описание запроса:

Pascal:

Procedure xxEdit(CompName: PString);

C:

void xxEdit(PString CompName)

Описание аргумента:

CompName — указатель на строку символов — имя файла или адрес памяти, содержащие описание редактируемого компонента.

Если в качестве аргумента CompName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя компонента и после пробела имя файла, содержащего описание компонента. В противном случае считается, что аргумент CompName содержит указатель на область памяти, содержащую описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то допускается включение в текст описания компонента ключевого слова Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.

Если в качестве аргумента CompName передан пустой указатель или указатель на пустую строку, то редактор создает новый экземпляр компонента.

Задача, используемая в примерах

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

Температура воздуха — действительное число, изменяющееся от 273 до 393 градусов Кельвина.

Облачность — бинарный признак, означающий наличие (2) или отсутствие облачности (1).

Направление ветра — неупорядоченный качественный признак, принимающий одно из восьми значений: 1 — северный, 2 — северо-восточный, 3 — восточный, и т. д.

Осадки — упорядоченный качественный признак, принимающий следующие значения: 1 — без осадков, 2 — слабые осадки, 3 — сильные осадки.

В качестве ответов требуется предсказать значения тех же показателей через 8 часов.

Оглавление книги


Генерация: 1.752. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз