|
Эта глава посвящена описанию элементов стандарта, общих для
всех компонентов нейрокомпьютера.
2.1 Стандарт типов данных
При описании запросов, структур данных, стандартов
компонентов нейрокомпьютера необходимо использовать набор первичных типов данных.
Поскольку в разных языках программирования типы данных называются по-разному,
введем единый набор обозначений для них.
Таблица 1.
Типы данных для всех компонентов нейрокомпьютера
| Тип |
Длина |
Значения |
Описание |
| Real |
4 байта |
от 1.5 e- 45 до 3.4 e 38 |
Действительное число. Величина из указанного диапазона. Знак произвольный. В
дальнейшем называется «действительное». |
| Integer |
2 байта |
от -32768 до 32767 |
Целое число из указанного диапазона. В дальнейшем называется «целое». |
| Long |
4 байта |
от -2147483648 до 2147483647 |
Целое число из указанного диапазона. В дальнейшем называется «длинное целое». |
| RealArray |
4*N байт |
|
Массив действительных чисел. |
| PRealArray |
4 байта |
|
Используется для передачи массивов между компонентами. Имеет значение адреса массива действительных чисел. |
| IntegerArray |
2*N байт |
|
Массив целых чисел. |
| PIntegerArray |
4 байта |
|
Используется для передачи массивов между компонентами. Имеет значение адреса массива целых чисел. |
| LongArray |
4*N байт |
|
Массив длинных целых чисел. |
| PLongArray |
4 байта |
|
Используется для передачи массивов между компонентами. Имеет значение адреса массива длинных
целых чисел. |
| Logic |
1 байт |
True, False |
Логическая величина. Далее называется «логическая». |
| LogicArray |
N байт |
|
Массив логических переменных. |
| PLogicArray |
4 байта |
|
Используется для передачи массивов между компонентами. Имеет значение адреса массива логических
переменных. |
| Color |
2 байта |
|
Используется для задания цветов. Является совокупностью из 16 элементарных (битовых) флагов.
См. раздел «Цвет операции с цветами». |
| FuncType |
4 байта |
|
Адрес функции. Используется при необходимости передать функцию в качестве аргумента. |
| String |
256 байт |
|
Строка символов. |
| PString |
4 байта |
|
Адрес строки символов. Служит для передачи строк в запросах |
| Visual |
4 байта |
|
Отображаемый элемент. Служит для адресации отображаемых элементов в интерфейсных функциях.
Тип значений зависит от реализации библиотеки интерфейсных функций и не может изменяться
пользователем иначе, чем через вызов интерфейсной функции. |
| Pointer |
4 байта |
|
Не типизованный указатель (адрес). Этот тип совместим с любым типизованным указателям. |
Числовые типы данных Integer, Long и Real
предназначены для хранения различных чисел. Переменные числовых типов допускаются
в языках описания всех компонентов нейрокомпьютера. При необходимости записать
в один массив числовые переменные различного типа следует использовать функции
приведения типов, описанные в разделе «Приведение типов»
Строка. Символьный тип данных предназначен для
хранения комментариев, названий полей, имен сетей, оценок и другой текстовой
информации. Все строковые переменные занимают 256 байт и могут включать в себя
до 255 символов. Первый байт строки содержит длину строки. В переменных типа
строка возможен доступ к любому символу как к элементу массива. При этом длина
имеет индекс ноль, первый символ – 1 и т.д.
Указатель на строку. При передаче данных между
компонентами сети и процедурами в пределах одного компонента удобно вместо
строки передавать указатель на строку, поскольку указатель занимает всего четыре
байта. Для этой цели служит тип указатель на строку.
Логический тип используется для хранения логических
значений. Значение истина задается предопределенной константой True, значение
ложь – False.
Массивы. В данном стандарте предусмотрены массивы
четырех типов – логических, целочисленных, длинных целых и действительных
переменных. Длины массивов определяются при описании, но все массивы переменных
одного типа относятся к одному типу, в отличие от языков типа Паскаль. Использование
функций приведения и преобразования типов позволяют получать из этих массивов
структуры произвольной сложности. Элементы массивов всегда нумеруются с
единицы.
Вне зависимости от типа массива нулевой элемент массива
имеет тип Long и содержит длину массива в элементах. На рис. 1 приведена схема
распределения памяти всех типов массивов, каждый из которых содержит шесть элементов.
Все массивы, как правило, используется только в пределах
одного компонента. При передаче массивов между компонентами или между
процедурами в пределах одного компонента используются указатели на массивы.
Адрес функции. Этот тип используется для передачи
функции в качестве аргумента. Переменная типа FuncType занимает четыре байта и
является адресом функции. В зависимости от реализации по этому адресу может
лежать либо начало машинного кода функции, либо начало текста функции. В случае
передачи текста функции первые восемь байт по переданному адресу содержат слово
«Function».
Отображаемый элемент. Переменные типа Visual
(отображаемый элемент) Служат для адресации отображаемых элементов в
интерфейсных функциях. Тип значений зависит от реализации библиотеки интерфейсных
функций и не может изменяться пользователем иначе, чем через вызов интерфейсной
функции. Особо следует отметить, что библиотека интерфейсных функций не является
частью ни одного из компонентов.
2.2 Переменные типа цвет и операции с цветами
Использование цветов позволяет гибко разбивать множества на
подмножества. В нейрокомпьютере возникает необходимость в разбиении на
подмножества (раскрашивании) задачника. В этом разделе описывается стандарт
работы с переменными типа цвет.
2.2.1 Значение переменной типа цвет (Color)
Таблица 2
Нумерация флагов (бит) переменной типа Color
| Номер |
Шестнадцати-ричная запись |
Десятичная запись |
Двоичная запись |
| 0 |
H0001 |
1 |
B.0000.0000.0000.0001 |
| 1 |
H0002 |
2 |
B.0000.0000.0000.0010 |
| 2 |
H0004 |
4 |
B.0000.0000.0000.0100 |
| 3 |
H0008 |
8 |
B.0000.0000.0000.1000 |
| 4 |
H0010 |
16 |
B.0000.0000.0001.0000 |
| 5 |
H0020 |
32 |
B.0000.0000.0010.0000 |
| 6 |
H0040 |
64 |
B.0000.0000.0100.0000 |
| 7 |
H0080 |
128 |
B.0000.0000.1000.0000 |
| 8 |
H0100 |
256 |
B.0000.0001.0000.0000 |
| 9 |
H0200 |
512 |
B.0000.0010.0000.0000 |
| 10 |
H0400 |
1024 |
B.0000.0100.0000.0000 |
| 11 |
H0800 |
2048 |
B.0000.1000.0000.0000 |
| 12 |
H1000 |
4096 |
B.0001.0000.0000.0000 |
| 13 |
H2000 |
8192
|
B.0010.0000.0000.0000 |
| 14 |
H4000 |
16384 |
B.0100.0000.0000.0000 |
| 15 |
H8000 |
32768 |
B.1000.0000.0000.0000 |
Переменная типа цвет представляет собой двухбайтовое
беззнаковое целое. Однако основное использование предполагает работу не как с
целым числом, а как с совокупностью однобитных флагов. При записи на диск используется
символьное представление двоичной записи числа с ведущими нулями и разбиением
на четверки символом «.» (точка), предваряемая заглавной буквой «B» латинского
алфавита, или символьное представление шестнадцатеричной записи числа с
ведущими нулями, предваряемая заглавной буквой «H» латинского алфавита. В
таблице 2 приведена нумерация флагов (бит) переменной типа Color, их
шестнадцатеричное, десятичное и двоичное значение. При использовании в учителе
или других компонентах может возникнуть необходимость в присвоении некоторым из
флагов или их комбинаций имен. На такое именование не накладывается никаких
ограничений, хотя возможно будет выработан стандарт и на названия часто
используемых цветов (масок, совокупностей флагов).
2.2.2 Операции с переменными типа цвет (Color)
Таблица 3
Предопределенные константы операций с переменными типа Цвет (Color)
| Код |
Обозначение |
Вычисляемое выражение |
Тип результата |
Пояснение |
| 1 |
CEqual |
A = B |
Logic |
Полное совпадение. |
| 2 |
CIn |
A And B = A |
Logic |
A содержится в В. |
| 3 |
CInclude |
A And B = B |
Logic |
А содержит В. |
| 4 |
CExclude |
A And B = 0 |
Logic |
A и В взаимоисключающие. |
| 5 |
CIntersect |
A And B <> 0 |
Logic |
А и В пересекаются. |
| 6 |
COr |
A Or B |
Сolor |
Побитное включающее ИЛИ. |
| 7 |
CAnd |
A And B |
Color |
Побитное И. |
| 8 |
CXor |
A Xor B |
Color |
Побитное исключающее ИЛИ |
| 9 |
CNot |
Not A |
Color |
Побитное отрицание |
В табл. 3 приведены операции с переменными типа Color.
Первые пять операций могут использоваться только для сравнения переменных типа
Color, а остальные четыре операции – для вычисления выражений типа Color.
В ряде запросов необходимо указать
тип операции над цветом. Для передачи таких параметров используется переменная
типа Integer. В качестве значений передается содержимое
соответствующей ячейки столбца код табл. 3.
2.3 Приведение и преобразование типов
Есть два пути использовать переменную одного типа как
переменную другого типа. Первый путь состоит в преобразовании значения к
заданному типу. Так, для преобразования целочисленной переменной к
действительному типу, достаточно просто присвоить переменной действительного
типа целочисленное значение. С обратным преобразованием сложнее, поскольку не
ясно что делать с дробной частью. В табл. 4 приведены все типы, которые можно
преобразовать присваиванием переменной другого типа. В табл. 5 приведены все
функции преобразования типов.
Таблица 4
Преобразование типов прямым присваиванием
| Тип переменной, которой производится присваивание |
Тип выражения, которое может быть присвоено |
Пояснение |
| Real |
Real, Integer, Long |
Значение преобразуется к плавающему виду. При преобразовании значения выражения типа Long возможна
потеря точности. |
| Long |
Integer, Long |
При преобразовании типа Integer,
действуют следующие правила. Значение переменной помещается в два младших
байта. Если значение выражения больше либо равно нолю, то старшие байты равны
H0000, в противном случае старшие байты равны HFFFF. |
| Integer |
Integer, Long |
При преобразовании выражения типа Long значение двух старших байт отбрасывается. |
При вычислении числовых выражений действуют следующие правила преобразования типов:
- Выражения вычисляются слева на право.
- Если два операнда имеют один тип, то результат имеет тот же тип.
- Если аргументы имеют разные типы, то выражение имеет старший из двух
типов. Список числовых типов по убыванию старшинства: Real, Long, Integer.
- Результат операции деления действительных чисел (операция «/») всегда
имеет тип Real, вне зависимости от типов аргументов.
Таблица 5
Функции преобразования типов
| Имя функции |
Тип аргумента |
Тип результата |
Описание |
| Real |
Real, Integer, Long |
Real |
Аналогично прямому присваиванию |
| Integer |
Integer, Long |
Integer |
Аналогично прямому присваиванию |
| Long |
Integer, Long |
Long |
Аналогично прямому присваиванию |
| Str |
Real, Integer, Long |
String |
Представляет числовой аргумент в виде символьной строки в десятичном виде |
| Round |
Real |
Long |
Округляет действительное значение до ближайшего длинного целого. Если значение действительного
выражения выходит за диапазон длинного целого, то результат равен нулю. |
| Truncate |
Real |
Long |
Преобразует действительное
значение в длинное целое путем отбрасывания дробной части. Если значение
действительного выражения выходит за диапазон длинного целого, то результат
равен нулю. |
| LVal |
String |
Long |
Преобразует длинное целое из символьного представления во внутреннее. |
| RVal |
String |
Real |
Преобразует действительное число з символьного представления во внутреннее. |
| StrColor |
Color |
String |
Преобразует внутреннее
представление переменной типа Color в соответствии с разд. «Значение
переменной типа цвет» |
| ValColor |
String |
Color |
Преобразует символьное представление переменной типа Color во внутреннее. |
| Color |
Integer |
Color |
Интерпретирует целое число как значение типа Color. |
В отличие от преобразования типов приведение типов позволяет
по-разному интерпретировать одну область памяти. Функция приведения типа
применима только к переменным или элементам массива (преобразование типов
применимо и к выражениям). Рекомендуется использовать приведение типов только
для типов, имеющих одинаковую длину. Например, Integer и Color или Real и Long.
Список функций приведения типов приведен в табл. 6.
Следующие примеры иллюстрируют использование преобразования и приведения типов:
При вычислении следующих четырех выражений, получаются различные результаты
4096*4096=0
Таблица 6
Функции приведения типов
| Название |
Тип результата |
Описание |
| TReal |
Real |
Четыре байта, адресуемые приводимой переменной, интерпретируются как действительное число. |
| TInteger |
Integer |
Два байта, адресуемые приводимой переменной, интерпретируются как целое число. |
| TLong |
Long |
Четыре байта, адресуемые приводимой переменной, интерпретируются как длинное целое. |
| TRealArray |
RealArray |
Область памяти, адресуемая приводимой переменной, интерпретируются как массив действительных чисел. |
| TPRealArray |
PRealArray |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив
действительных чисел. |
| TIntegerArray |
IntegerArray |
Область памяти, адресуемая приводимой переменной, интерпретируются как массив целых чисел. |
| TPIntegerArray |
PIntegerArray |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив
целых чисел. |
| TLongArray |
LongArray |
Область памяти, адресуемая приводимой переменной, интерпретируются как массив длинных целых. |
| TPLongArray |
PLongArray |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на
массив длинных целых. |
| TLogic |
Logic |
Адресуемый приводимой переменной байт интерпретируются как логическая переменная. |
| TLogicArray |
LogicArray |
Область памяти, адресуемая приводимой переменной, интерпретируются как массив логических переменных. |
| TPLogicArray |
LogicArray |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив
логических переменных. |
| TColor |
Color |
Два байта, адресуемые приводимой переменной, интерпретируются как переменная типа цвет. |
| TFuncType |
FuncType |
Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес функции. |
| TString |
String |
256 бай области памяти, адресуемой приводимой переменной, интерпретируются как строка символов. |
| TPString |
PString |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на строку символов. |
| TVisual |
Visual |
Четыре байта, адресуемые приводимой переменной, интерпретируются как отображаемый элемент. |
| TPointer |
Pointer |
Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес. |
Поскольку константа 4096 имеет тип Integer, а
4096*4096=16777216=256*65536 , то есть младшие два байта результата равны нулю.
Long(4096*4096)=0
Поскольку оба сомножителя имеет тип Integer, то и выражение
имеет тип Integer. Следовательно, результат умножения равен нулю, который затем
преобразуется к типу Long.
Long(4096)*4096=16777216
Поскольку первый сомножитель имеет тип длинное целое, то и
выражение имеет тип длинное целое.
4096.0*4096=1.677722E+7
Поскольку первый сомножитель имеет тип Real, то и выражение
имеет тип Real. Из-за недостатка точности произошла потеря точности в седьмом
знаке.
В следующем примере, используя приведение типов, в массив
действительных чисел A размером в 66 элементов складываются: действительное
число в первый элемент массива; длинное целое во второй элемент массива и
символьную строку в элементы с 3 по 66.
A[1]= 1.677722E+7
TLong(A[2])= 16777216
TString(A[3])=‘Пример приведения типов’
Необходимо отметить, что элементы массива A, начиная со
второго, после выполнения приведенного выше фрагмента программы не
рекомендуется использовать как действительные числа, поскольку элемент A[2]
содержит значение 2.350988Е-38, а элемент A[5] – значение -4.577438Е-18.
Значение элементов, начиная с A[8] (символьная строка ‘Пример приведения типов’
содержит 23 символа и занимает 24 байта, то есть шесть элементов массива)
вообще не зависят от приведенного фрагмента программы и содержат «мусор», который
там находился ранее.
В списке типов определены только одномерные массивы. Однако,
при необходимости, возможно использование двумерных массивов. Для этого в
одномерный массив A необходимо поместить указатели на одномерные массивы. При
этом I,J-й элемент двумерного массива записывается в виде:
TPRealArray(A[I])^[J]
В этом примере использована функция приведения типов
TPRealArray, указывающая, что I-й элемент массива A нужно интерпретировать как
указатель на одномерный массив действительных чисел, и операция «^»
указывающая, что вместо указателя на массив TPRealArray(A[I]) используется
массив, на который он указывает.
Таким образом, использование функций приведения типов
позволяет из одномерных массивов строить структуры произвольной сложности. В
языках программирования, таких как C и Паскаль, существует возможность строить
пользовательские типы данных. При разработке стандарта эти возможности были
исключены, поскольку использование пользовательских типов, облегчая написание
программ, сильно затрудняет разработку компилятора или интерпретатора, а при
использовании этого языка для описания компонентов нейрокомпьютера
необходимость в пользовательских типах данных возникает чрезвычайно редко.
Например, при описании примеров всех компонентов, приведенных в данной книге,
такая необходимость ни разу не возникла.
2.4 Операции
В данном разделе приведены все операции, которые могут быть
использованы при построении выражений различного типа. В табл. 7 приведены
операции, которые допустимы в целочисленных выражениях (выражениях типа Integer
или Long). В табл. 8 – список, дополняющий список операций из табл. 7 до
полного списка операций, допустимых в выражениях действительного типа. В табл.
9 – операции, допустимые при построении логических выражений. В табл. 10 –для
выражений типа символьная строка. В табл. 3 – для выражений типа Color.
Таблица 7
Операции, допустимые в целочисленных выражениях
| Уровень приоритета |
Обозначение |
Тип 1-го операнда |
Тип 2-го операнда |
Тип результата |
Название операции |
| 1 |
* |
Integer |
Integer |
Integer |
Умножение |
| 1 |
* |
Long |
Integer |
Long |
Умножение |
| 1 |
* |
Integer |
Long |
Long |
Умножение |
| 1 |
* |
Long |
Long |
Long |
Умножение |
| 1 |
Div |
Integer |
Integer |
Integer |
Целочисленное деление |
| 1 |
Div |
Integer |
Long |
Long |
Целочисленное деление |
| 1 |
Div |
Long |
Integer |
Long |
Целочисленное деление |
| 1 |
Div |
Long |
Long |
Long |
Целочисленное деление |
| 1 |
Mod |
Integer |
Integer |
Integer |
Остаток от деления |
| 1 |
Mod |
Long |
Integer |
Long |
Остаток от деления |
| 1 |
Mod |
Integer |
Long |
Long |
Остаток от деления |
| 1 |
Mod |
Long |
Long |
Long |
Остаток от деления |
| 2 |
+ |
Integer |
Integer |
Integer |
Сложение |
| 2 |
+ |
Integer |
Long |
Long |
Сложение |
| 2 |
+ |
Long |
Integer |
Long |
Сложение |
| 2 |
+ |
Long |
Long |
Long |
Сложение |
| 2 |
– |
Integer |
Integer |
Integer |
Вычитание |
| 2 |
– |
Integer |
Long |
Long |
Вычитание |
| 2 |
– |
Long |
Integer |
Long |
Вычитание |
| 2 |
– |
Long |
Long |
Long |
Вычитание |
| 3 |
And |
Integer |
Integer |
Integer |
Побитное
И |
| 3 |
And |
Long |
Long |
Long |
Побитное И |
| 3 |
Or |
Integer |
Integer |
Integer |
Побитное включающее ИЛИ |
| 3 |
Or |
Long |
Long |
Long |
Побитное включающее ИЛИ |
| 3 |
Xor |
Integer |
Integer |
Integer |
Побитное исключающее ИЛИ |
| 3 |
Xor |
Long |
Long |
Long |
Побитное исключающее ИЛИ |
| 3 |
Not |
Integer |
Integer |
Integer |
Побитное отрицание |
| 3 |
Not |
Long |
Long |
Long |
Побитное отрицание |
Таблица 8
Операции, дополняющие список операций из табл. 7 до
полного списка операций, допустимых в выражениях действительного типа.
| Уровень приоритета |
Обозначение |
Тип 1-го операнда |
Тип 2-го операнда |
Тип результата |
Название операции |
| 1 |
* |
Real |
Integer, Real, Long |
Real |
Умножение |
| 1 |
/ |
Integer, Real, Long |
Integer, Real, Long |
Real |
Деление |
| 1 |
RMod |
Integer, Real, Long |
Integer, Real, Long |
Real |
Остаток от деления |
| 2 |
+ |
Real |
Integer, Real, Long |
Real |
Сложение |
| 2 |
– |
Real |
Integer, Real, Long |
Real |
Вычитание |
Таблица 9
Операции, допустимые при построении логических выражений
| Уровень приоритета |
Обозначение |
Тип 1-го операнда |
Тип 2-го операнда |
Тип результата |
Название операции |
| 1 |
> |
Integer, Real, Long |
Integer, Real, Long |
Logic |
Больше |
| 1 |
< |
Integer, Real, Long |
Integer, Real, Long |
Logic |
Меньше |
| 1 |
>= |
Integer, Real, Long |
Integer, Real, Long |
Logic |
Больше или равно |
| 1 |
<= |
Integer, Real, Long |
Integer, Real, Long |
Logic |
Меньше или равно |
| 1 |
= |
Integer, Real, Long |
Integer, Real, Long |
Logic |
Равно |
| 1 |
<> |
Integer, Real, Long |
Integer, Real, Long |
Logic |
Не равно |
| 2 |
And |
Logic |
Logic |
Logic |
Логическое И |
| 2 |
Or |
Logic |
Logic |
Logic |
Логическое включающее ИЛИ |
| 2 |
Xor |
Logic |
Logic |
Logic |
Логическое исключающее ИЛИ |
| 2 |
Not |
Logic |
Logic |
Logic |
Логическое отрицание |
Таблица 10
Операции для выражений типа символьная строка
| Уровень приоритета |
Обозначение |
Тип 1-го операнда |
Тип 2-го операнда |
Тип результата |
Название операции |
| 1 |
+ |
String |
String |
String |
Конкатенация (сцепка) строк. |
Во всех таблицах операции размещаются по убыванию
приоритета. Для каждой операции указаны допустимые типы операндов, и тип
результата, в зависимости от типов операндов.
В табл. 8 приводится необычная операция RMod – остаток от
деления действительных чисел. Результат этой функции равен разности между
первым операндом и вторым операндом, умноженным на целую часть отношения
первого операнда ко второму.
Кроме операций, приведенных в табл. 3 и табл. 7–10,
определены две взаимно обратные операции для работы с адресами и указателями:
- ^ – ставится после переменной типа указатель. Означает, что
вместо указателя в выражении используется переменная или массив, на который
указывает этот указатель. Не допускается после переменных типа Pointer.
- @ – ставится перед именем переменной любого типа. Означает,
что в выражении участвует не переменная, а адрес переменной. Используется при
присвоении адресов переменных или массивов переменным типа указатель.
2.5 Предопределенные константы
При описании различных компонентов возникает необходимость в
использовании некоторого набора стандартизированных констант. Стандартность
набора констант особенно необходима при обмене между компонентами. Все
константы, приведенные в табл. 11, описываются в тех разделах, где они используются.
В табл. 11 для каждой константы указывается ее тип, значение и названия
разделов, в которых она описывается.
Таблица 11
Предопределенные константы
| Идентификатор |
Тип |
Значение |
Раздел |
| Шестнад. |
Десятич. |
| BackInSignals |
Integer |
H0005 |
5 |
Запросы к компоненту сеть |
| BackOutSignals |
Integer |
H0006 |
6 |
Запросы к компоненту сеть |
| BackParameters |
Integer |
H0007 |
7 |
Запросы к компоненту сеть |
| Binary |
Integer |
H0001 |
1 |
Запросы компонента интерпретатор ответа |
| BinaryPrep |
Integer |
H0000 |
0 |
Запросы компонента предобработчик |
| BynaryCoded |
Integer |
H0003 |
3 |
Запросы компонента интерпретатор ответа |
| CAnd |
Integer |
H0007 |
7 |
Операции с переменными типа цвет (Color) |
| Cascad |
Integer |
H0002 |
2 |
Запросы к компоненту сеть |
| CEqual |
Integer |
H0001 |
1 |
Операции с переменными типа цвет (Color) |
| CExclude |
Integer |
H0004 |
4 |
Операции с переменными типа цвет (Color) |
| CicleFor |
Integer |
H0003 |
3 |
Запросы к компоненту сеть |
| CicleUntil |
Integer |
H0004 |
4 |
Запросы к компоненту сеть |
| CIn |
Integer |
H0002 |
2 |
Операции с переменными типа цвет (Color) |
| CInclude |
Integer |
H0003 |
3 |
Операции с переменными типа цвет (Color) |
| CIntersect |
Integer |
H0005 |
5 |
Операции с переменными типа цвет (Color) |
| CNot |
Integer |
H0009 |
9 |
Операции с переменными типа цвет (Color) |
| COr |
Integer |
H0006 |
6 |
Операции с переменными типа цвет (Color) |
| CXor |
Integer |
H0008 |
8 |
Операции с переменными типа цвет (Color) |
| Element |
Integer |
H0000 |
0 |
Запросы к компоненту сеть |
| Empty |
Integer |
H0000 |
0 |
Запросы компонента интерпретатор ответа |
| EmptyPrep |
Integer |
H0003 |
3 |
Запросы компонента предобработчик |
| False |
Logic |
H00 |
|
|
| FuncPrep |
Integer |
H0005 |
5 |
Запросы компонента предобработчик |
| InSignalMask |
Integer |
H0003 |
3 |
Запросы к компоненту сеть |
| InSignals |
Integer |
H0000 |
0 |
Запросы к компоненту сеть |
| Layer |
Integer |
H0001 |
1 |
Запросы к компоненту сеть |
| MainVisual |
Visible |
|
|
Интерфейсные функции |
| Major |
Integer |
H0002 |
2 |
Запросы компонента интерпретатор ответа |
| mIntegerArray |
Integer |
H0002 |
2 |
Функции управления памятью |
| mLogicArray |
Integer |
H0001 |
1 |
Функции управления памятью |
| mLongArray |
Integer |
H0004 |
4 |
Функции управления памятью |
| ModPrep |
Integer |
H0004 |
4 |
Запросы компонента предобработчик |
| mRealArray |
Integer |
H0004 |
4 |
Функции управления памятью |
| Null |
Pointer |
H00000000 |
нет |
|
| Ordered |
Integer |
H0002 |
2 |
Запросы компонента предобработчик |
| OutSignals |
Integer |
H0001 |
1 |
Запросы к компоненту сеть |
| Parameters |
Integer |
H0002 |
2 |
Запросы к компоненту сеть |
| ParamMask |
Integer |
H0004 |
4 |
Запросы к компоненту сеть |
| PositPrep |
Integer |
H0006 |
6 |
Запросы компонента предобработчик |
| tbAnswers |
Integer |
H0004 |
4 |
Язык описания задачника |
| tbCalcAnswers |
Integer |
H0006 |
6 |
Язык описания задачника |
| tbCalcReliability |
Integer |
H0007 |
7 |
Язык описания задачника |
| tbColor |
Integer |
H0001 |
1 |
Язык описания задачника |
| tbComment |
Integer |
H000A |
10 |
Язык описания задачника |
| tbEstimation |
Integer |
H0009 |
9 |
Язык описания задачника |
| tbInput |
Integer |
H0002 |
2 |
Язык описания задачника |
| tbPrepared |
Integer |
H0003 |
3 |
Язык описания задачника |
| tbReliability |
Integer |
H0005 |
5 |
Язык описания задачника |
| tbWeight |
Integer |
H0008 |
8 |
Язык описания задачника |
| True |
Logic |
HFF |
255 (-1) |
|
| UnknownLong |
Integer |
H0000 |
0 |
Неопределенные значения |
| UnknownReal |
Real |
нет |
1E-40 |
Неопределенные значения |
| UnOrdered |
Integer |
H0001 |
1 |
Запросы компонента предобработчик |
| UserType |
Integer |
HFFFF |
-1 |
Структурная единица, определенная пользователем. |
Три предопределенные константы, приведенные в табл.11, не
описываются ни в одном разделе данной книги. Это константы общего пользования.
Их значение:
True – значение истина для присваивания переменным логического типа.
False – значение ложь для присваивания переменным логического типа.
Null – пустой указатель. Используется для сравнения или присваивания переменных всех типов указателей.
2.6 Интерфейсные функции
Часто при обучении и тестировании нейронных сетей возникает
необходимость отображать на экран некоторую информацию. Например, число
предъявлений примеров сети, максимальную оценку и т.п. Вряд ли разумно
использовать язык описания компонентов нейрокомпьютера для описания интерфейса.
Это противоречит требованию переносимости текста описания компонентов между
разными платформами и операционными системами. Для облегчения создания
интерфейса, с одной стороны, и обеспечения универсальности описания компонентов
нейрокомпьютера, с другой, предложен набор интерфейсных функций. Поддержку этих
функций несложно организовать в любой операционной среде и на любой платформе.
В основу набора интерфейсных функций положен принцип
объектно-ориентированной машины потока событий. Примером таких систем может
служить инструментальная библиотека объектов (классов) Turbo Vision фирмы Борланд,
или оконный интерфейс Windows фирмы Майкрософт. Предлагаемый в данном разделе
набор интерфейсных функций беднее любой из выше названных интерфейсных
библиотек, но позволяет организовать достаточно красивый и удобный интерфейс.
2.6.1 Структура данных интерфейсных функций
Элементом данных в структуре интерфейса является
отображаемый элемент. Каждый отображаемый элемент имеет свои координаты
относительно начала владельца – отображаемого элемента, содержащего данный.
Владельцем отображаемого элемента может являться одно из окон или диалогов или
главный элемент. Главный отображаемый элемент является предопределенным и
обозначается переменной MainVisual. В программах компонентов нейрокомпьютера не
допускается изменение значения переменной MainVisual. Эту переменную стоит
рассматривать как константу, однако, в отличие от всех остальных констант ее
значение определяется не данным стандартом, а разработчиком библиотеки интерфейсных
функций.
В данной работе не рассматривается способ реализации
интерфейсных функций и не обсуждаются значения переменных типа Visible. По
этому ставится единственное условие – переменные типа Visible могут изменять
свои значения только при вызове интерфейсных функций или при присваивании им значений
другой переменной того же типа.
Все отображаемые элементы создаются интерфейсными функциями,
называющимися, так же как и сам отображаемый элемент. Интерфейсные функции
создающие отображаемые элементы возвращают значения типа Visible. Если при
вызове создающей отображаемый элемент функции элемент не был создан, то функция
возвращает значение Null.
2.6.2 Соглашение о передаче значений отображаемым элементам
Отображаемые элементы могут быть связаны с обычными
переменными. В следующих разделах описаны отображаемые элементы, для которых
должна быть установлена такая связь. При изменении значения связанной
переменной программным путем для отображения этого изменения должна быть
вызвана функция Refresh, с переменной типа Visible данного элемента в качестве
параметра. При связывании переменной и отображаемого элемента необходимо
совпадение типа переменной с связываемым переменной этого отображаемого
элемента.
2.6.3 Перечень отображаемых элементов
Название элемента: Window (окно).
Параметры при создании:
- BeginX, BeginY – Координаты верхнего левого угла окна
относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры окна.
- ScrollX, ScrollY – Целочисленные параметры, задающие наличие у
окна горизонтальной и вертикальной полосы прокрутки. Если значение параметра
равно нулю, то соответствующая полоса прокрутки отсутствует, при любом другом
значении параметра в окно включается соответствующая полоса прокрутки.
- Text – Название окна.
Описание элемента. Элемент Window может являться
владельцем любых других отображаемых элементов, кроме элементов типа Dialog.
При вызове функции Refresh, с элементом типа Window в качестве параметра,
обновляется изображение не только самого окна, но и всех отображаемых
элементов, для которых это окно является владельцем. Для отображения созданного
окна на экране необходимо вставить его (вызвать функцию Insert, с данным окном
в качестве второго параметра.) в отображенное на экран окно, диалог или в
отображаемый элемент MainVisible. Для того чтобы убрать окно с экрана,
необходимо вызвать функцию Delete, с данным окном в качестве параметра. Для
уничтожения окна необходимо вызвать функцию Erase, с данным окном в качестве
параметра. При этом уничтожаются так же и все отображаемые элементы, для
которых данное окно являлось владельцем.
Название элемента: Dialog (Диалог).
Параметры при создании:
- BeginX, BeginY – Координаты верхнего левого угла окна диалога относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры окна диалога.
- ScrollX, ScrollY – Целочисленные параметры, задающие наличие у
окна диалога горизонтальной и вертикальной полосы прокрутки. Если значение
параметра равно нулю, то соответствующая полоса прокрутки отсутствует, при
любом другом значении параметра в окно диалога включается соответствующая
полоса прокрутки.
- Text – Название окна диалога.
Описание элемента. Элемент Dialog может являться
владельцем любых других отображаемых элементов. Этот элемент является
модальным, то есть во время работы диалога невозможен вызов меню, переход в
другие окна и диалоги и т.д. Если одновременно активно несколько диалогов, то
модальным является последний по порядку отображения на экране. При закрытии
текущего диалога модальность переходит к предыдущему и т.д. При вызове функции
Refresh, с элементом типа Dialog в качестве параметра, обновляется изображение
не только самого окна диалога, но и всех отображаемых элементов, для которых
этот диалог является владельцем. Для отображения созданного диалога на экране
необходимо вставить его (вызвать функцию Insert, с данным диалогом в качестве
второго параметра.) в отображаемый элемент MainVisible. С этого момента диалог
становится модальным. Он остается модальным либо до вставки в MainVisible
другого диалога, либо до закрытия диалога. Если модальность потеряна диалогом
из-за запуска следующего диалога, то при закрытии последнего диалога статус
модальности восстанавливается. Для того чтобы закрыть диалог, необходимо
вызвать функцию Delete, с данным диалогом в качестве параметра. Для уничтожения
диалога необходимо вызвать функцию Erase, с данным диалогом в качестве
параметра. При этом уничтожаются так же и все отображаемые элементы, для
которых данный диалог являлся владельцем.
Название элемента: Label (метка).
Параметры при создании:
- BeginX, BeginY – Координаты верхнего левого угла метки относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры метки.
- Text – текст метки.
Описание элемента. Элемент Label не может являться
владельцем других отображаемых элементов. Этот элемент не связан с переменными.
Как правило, он используется для организации отображения в окне или диалоге
статической информации или в качестве подписи поля ввода. Если метка связана с
полем ввода, то передача управления этой метке автоматически влечет за собой
передачу управления связанному с ней полю. Для организации связи метки с полем
необходимо вызвать функцию Link, передав ей в качестве первого параметра метку,
а вторым параметром тот элемент, с которым необходимо установить связь. Связь
может быть установлена только с одним элементом. При повторном вызове функции
Link устанавливается связь с новым элементом, а связь с прежним элементом
разрывается. Для включения метки в окно или диалог, необходимо вызвать функцию
Insert, с окном или диалогом в качестве первого параметра и меткой в качестве
второго параметра. Для уничтожения метки необходимо вызвать функцию Erase, с данной
меткой в качестве параметра.
Название элемента: StringVisible (строковый элемент).
Параметры при создании:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- Size – размер поля.
Описание элемента. Элемент StringVisible не может
являться владельцем других отображаемых элементов. Этот элемент должен быть
связан с переменной типа String. Для установления связи используется функция
Data со строковым элементом в качестве первого параметра и адресом переменной в
качестве второго параметра. Как правило, строковый элемент связывают с меткой.
Для организации связи метки со строковым элементом необходимо вызвать функцию
Link, передав ей в качестве первого параметра метку, а вторым параметром
строковый элемент. Для включения строкового элемента в окно или диалог, необходимо
вызвать функцию Insert, с окном или диалогом в качестве первого параметра и
строковым элементом в качестве второго параметра. Для уничтожения строки
необходимо вызвать функцию Erase, с данным строковым элементом в качестве
параметра. Параметр Size задает максимальный размер вводимой строки в символах.
Название элемента: RealVisible (LongVisible) (числовой элемент).
Параметры при создании:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- Min, Max – минимальное и максимальное допустимые значения.
- Size – размер поля.
Описание элемента. Элементы RealVisible и LongVisible
служат для ввода действительных и длинных целых чисел, соответственно. Любой
такой элемент должен быть связан с переменной соответствующего типа (Real или
Long) и не может являться владельцем других отображаемых элементов. Для установления
связи используется функция Data с числовым элементом в качестве первого
параметра и адресом переменной в качестве второго параметра. Как правило,
числовой элемент связывают с меткой. Для организации связи метки с числовым
элементом необходимо вызвать функцию Link, передав ей в качестве первого
параметра метку, а вторым параметром числовой элемент. Для включения числового
элемента в окно или диалог, необходимо вызвать функцию Insert, с окном или
диалогом в качестве первого параметра и числовым элементом в качестве второго
параметра. Для уничтожения числового элемента необходимо вызвать функцию Erase,
с данным числовым элементом в качестве параметра.
Название элемента: RadioButtons (переключатели).
Параметры при создании:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
Описание элемента. Элемент RadioButtons служит для
задания значения параметрам, которые могут принимать только несколько значений
(например, два значения – истина или ложь). Процедура создания элемента
RadioButtons сложнее, чем для ранее рассмотренных процедур. Кроме вызова
функции RadioButtons, создающей элемент, необходимо несколько раз вызвать
функцию AddItem, с элементом RadioButtons в качестве первого аргумента и
подписью переключателя в качестве второго аргумента. Элемент RadioButtons
должен быть связан с переменной типа Long и не может являться владельцем других
отображаемых элементов. Для установления связи используется функция Data с
элементом RadioButtons в качестве первого параметра и адресом переменной в
качестве второго параметра. Элемент RadioButtons интерпретирует данные,
содержащиеся в переменной, следующим образом: первому флагу соответствует
младший бит переменной, второму следующий по старшинству и т. д. Элемент не
может включать более 32 флагов. Биты с номерами большими числа флагов очищаются
(заменяются нулями). Как правило, элемент RadioButtons связывают с меткой. Для
организации связи метки с элементом RadioButtons необходимо вызвать функцию
Link, передав ей в качестве первого параметра метку, а вторым параметром
элемент RadioButtons. Для включения элемента RadioButtons в окно или диалог,
необходимо вызвать функцию Insert, с окном или диалогом в качестве первого
параметра и элементом RadioButtons в качестве второго параметра. Для
уничтожения элемента RadioButtons необходимо вызвать функцию Erase, с данным элементом
RadioButtons в качестве параметра.
Название элемента: CheckBoxes (группа флагов).
Параметры при создании:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
Описание элемента. Элемент CheckBoxes служит для
задания значения параметрам, которые являются совокупностью битовых флагов.
Процедура создания группы флагов аналогична созданию элемента RadioButtons.
Кроме вызова функции CheckBoxes, создающей элемент, необходимо несколько раз вызвать
функцию AddItem, с элементом CheckBoxes в качестве первого аргумента и
названием флага в качестве второго аргумента. Элемент CheckBoxes должен быть
связан с переменной типа Long и не может являться владельцем других
отображаемых элементов. Для установления связи используется функция Data с
элементом CheckBoxes в качестве первого параметра и адресом переменной в
качестве второго параметра. Элемент CheckBoxes интерпретирует данные, содержащиеся
в переменной, следующим образом: если значение переменной равно единице, то
включен первый переключатель, если двум – то второй, трем – первые два и т. д.
Если значение переменной меньше либо равно нулю или больше либо равно два в
степени числа переключателей, то оно заменяется на единицу. Как правило,
элемент CheckBoxes связывают с меткой. Для организации связи метки с элементом
CheckBoxes необходимо вызвать функцию Link, передав ей в качестве первого
параметра метку, а вторым параметром элемент CheckBoxes. Для включения группы
флагов в окно или диалог, необходимо вызвать функцию Insert, с окном или диалогом
в качестве первого параметра и элементом CheckBoxes в качестве второго
параметра. Для уничтожения элемента CheckBoxes необходимо вызвать функцию
Erase, с данным элементом CheckBoxes в качестве параметра.
Название элемента: Button(кнопка).
Параметры при создании:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- Macro – Адрес функции, вызываемой при нажатии кнопки. В
зависимости от реализации по этому адресу может лежать либо начало машинного
кода функции, либо начало текста функции. В случае передачи текста функции
первые восемь байт по переданному адресу содержат слово «Function».
Описание элемента. Кнопка служит для запуска макроса,
который выполняет некоторые действия, являющиеся реакцией на нажатие кнопки. Кнопка
не может быть связана с переменными и не может являться владельцем других
отображаемых элементов. Для включения кнопки элемента в окно или диалог,
необходимо вызвать функцию Insert, с окном или диалогом в качестве первого
параметра и кнопкой в качестве второго параметра. Для уничтожения кнопки
необходимо вызвать функцию Erase, с данной кнопкой в качестве параметра.
2.6.4 Перечень интерфейсных функций
В данном разделе дано описание всех интерфейсных функций.
Приводится синтаксис описания на общем подмножестве языков описания компонентов
нейрокомпьютера. Функции приведены в алфавитном порядке. Следует отметить, что,
как и в языках описания всех компонентов нейрокомпьютера все аргументы передаются
функциям по ссылке (передается не значение аргумента, а его адрес).
AddItem
Function AddItem(Elem : Visible; Text : String ) : Logic;
Описание аргументов:
- Elem – Отображаемый элемент типа CheckBoxes или RadioButtons.
- Text – Название переключателя или флага.
Описание функции:
Эта функция добавляет название переключателя (если первый
аргумент типа RadioButtons) или флага (CheckBoxes) к списку элемента,
передаваемого функции первым аргументом. Если первый элемент не является
элементом типа CheckBoxes или RadioButtons, то функция возвращает значение ложь
(False). В случае успешного завершения операции добавления в список функция
возвращает значение истина (True). В противном случае возвращается значение
ложь (False).
Button
Function Button(BeginX, BeginY, SizeX, SizeY : Long; Macro : PString ) : Visible;
Описание аргументов:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- Macro – Адрес функции, вызываемой при нажатии кнопки.
Описание функции:
Эта функция создает отображаемый элемент типа Button. Если
создание прошло успешно, то возвращается значение этого элемента (типы значений
не оговариваются стандартом, но, как правило, это адрес соответствующей
структуры). Если создание элемента завершилось не удачно, то возвращается значение
Null.
CheckBoxes
Function CheckBoxes( BeginX, BeginY, SizeX, SizeY : Long ) : Visible;
Описание аргументов:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
Описание функции:
Эта функция создает отображаемый элемент типа CheckBoxes с
пустым списком переключателей. Для добавления переключателей следует
воспользоваться функцией AddItem. Если создание прошло успешно, то возвращается
значение этого элемента (типы значений не оговариваются стандартом, но, как
правило, это адрес соответствующей структуры). Если создание элемента завершилось
не удачно, то возвращается значение Null.
Data
Function Data( Element : Visible; Var Datum ) : Logic;
Описание аргументов:
- Element – Отображаемый элемент, который связывается с переменной.
- Datum – Адрес переменной.
Описание функции:
Эта функция связывает отображаемый элемент (Element) с
перемнной Datum. Если элемент Element не допускает установления связи с
переменной, то функция возвращает значение ложь (False). В противном случае она
устанавливает связь между элементом и переменной и возвращает значение истина
(True). Отметим, что функция не проверяет типа переменной. Если вместо адреса
переменной типа длинное целое был дан адрес переменной действительного типа, то
эта переменная будет интерпретироваться как длинное целое (см. разд. «Функции
приведения типов»). Важно отметить, что производится приведение переменной, а
не преобразование ее значения.
Delete
Function Delete( Owner, Element : Visible) : Logic;
Описание аргументов:
- Owner – Отображаемый элемент типа окно или диалог, из которого происходит удаление.
- Element – Удаляемый элемент.
Описание функции:
Эта функция удаляет отображаемый элемент (Element) из его
владельца (Owner). Если элемент Owner не является окном или диалогом, или если
он не является владельцем элемента Element, то функция возвращает значение ложь
(False). В противном случае она удаляет элемент из владельца и возвращает значение
истина (True). Отметим, что элемент удаляется, но не уничтожается. Если нет
переменной, содержащей удаляемый элемент, то элемент «потеряется», то есть он
станет недоступным из программы, но будет занимать память.
Dialog
Function Dialog(BeginX,
BeginY, SizeX, SizeY, ScrollX, ScrollY : Long; Text : String ) : Visible;
Описание аргументов:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- ScrollX, ScrollY – Целочисленные параметры, задающие наличие у
окна горизонтальной и вертикальной полосы прокрутки. Если значение параметра
равно нулю, то соответствующая полоса прокрутки отсутствует, при любом другом
значении параметра в окно включается соответствующая полоса прокрутки.
- Text – Название окна.
Описание функции:
Эта функция создает отображаемый элемент типа диалог. Если
создание прошло успешно, то возвращается значение этого элемента (типы значений
не оговариваются стандартом, но, как правило, это адрес соответствующей
структуры). Если создание элемента завершилось не удачно, то возвращается значение
Null. После создания диалог является пустым.
Erase
Function Erase( Element : Visible ) : Logic;
Описание аргументов:
- Element – Уничтожаемый элемент.
Описание функции:
Эта функция уничтожает отображаемый элемент (Element). Если
аргумент Element является окном или диалогом, то уничтожаются так же все
отображаемые элементы, для которых элемент Element является владельцем. Если
операция завершена успешно, то функция возвращает значение истина (True). В
противном случае – значение ложь (False). Если выполнение функции завершилось
неуспешно (функция вернула значение ложь), то элемент может быть поврежден и
его дальнейшее использование не гарантирует корректной работы.
Insert
Function Insert( Owner, Element : Visible) : Logic;
Описание аргументов:
- Owner – Отображаемый элемент типа окно или диалог, в который производится вставка.
- Element – Вставляемый элемент.
Описание функции:
Эта функция вставляет отображаемый элемент (Element) в
элемент (Owner). Если элемент Owner не является окном или диалогом, или если
Element является диалогом, то функция возвращает значение ложь (False). Такие
же действия производятся, в случае, если аргумент Owner совпадает с
MainVisible, а Element не является окном или диалогом. В противном случае она
вставляет элемент в Owner и возвращает значение истина (True). Вставка окна или
диалога в MainVisible вызывает отображение его на экране, а в случае, если
вставляется диалог, то ему передается управление.
Label
Function Label(
BeginX, BeginY, SizeX, SizeY : Long; Text : String ) : Visible;
Описание аргументов:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- Text – текст метки.
Описание функции:
Эта функция создает отображаемый элемент типа Label. Если
создание прошло успешно, то возвращается значение этого элемента (типы значений
не оговариваются стандартом, но, как правило, это адрес соответствующей
структуры). Если создание элемента завершилось не удачно, то возвращается значение
Null.
Link
Function Link( Element, Labels : Visible) : Logic;
Описание аргументов:
- Owner – Отображаемый элемент, связываемый с меткой.
- Element – Отображаемый элемент – метка.
Описание функции:
Эта функция устанавливает связь между меткой Labels и
отображаемым элементом Element. Если элемент Labels не является меткой, то
функция возвращает значение ложь (False). В противном случае она устанавливает
связь и возвращает значение истина (True).
LongVisible
Function LongVisible( BeginX, BeginY, SizeX, SizeY, Min, Max,
Size: Long ) : Visible;
Описание аргументов:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- Min, Max – минимальное и максимальное допустимые значения.
- Size – размер поля в символах.
Описание функции:
Эта функция создает отображаемый элемент типа LongVisible
для редактирования и ввода значений типа Long. Если создание прошло успешно, то
возвращается значение этого элемента (типы значений не оговариваются
стандартом, но, как правило, это адрес соответствующей структуры). Если
создание элемента завершилось не удачно, то возвращается значение Null.
RadioButtons
Function RadioButtons( BeginX, BeginY, SizeX, SizeY : Long ) :
Visible;
Описание аргументов:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
Описание функции:
Эта функция создает отображаемый элемент типа RadioButtons с
пустым списком флагов. Для добавления переключателей следует воспользоваться
функцией AddItem. Если создание прошло успешно, то возвращается значение этого
элемента (типы значений не оговариваются стандартом, но, как правило, это адрес
соответствующей структуры). Если создание элемента завершилось не удачно, то
возвращается значение Null.
RealVisible
Function RealVisible ( BeginX, BeginY, SizeX, SizeY : Long;
Min, Max : Real; Size: Long ) : Visible;
Описание аргументов:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- Min, Max – минимальное и максимальное допустимые значения.
- Size – размер поля в символах.
Описание функции:
Эта функция создает отображаемый элемент типа RealVisible
для редактирования и ввода значений типа Real. Если создание прошло успешно, то
возвращается значение этого элемента (типы значений не оговариваются
стандартом, но, как правило, это адрес соответствующей структуры). Если
создание элемента завершилось не удачно, то возвращается значение Null.
Refresh
Function Refresh( Element : Visible ) : Logic;
Описание аргументов:
- Element – Отображаемый элемент.
Описание функции:
Эта функция обновляет изображение элемента Element на
экране. Если операция прошла успешно, то функция возвращает значение истина
(True). В противном случае она возвращает значение ложь (False).
StringVisible
Function StringVisible ( BeginX, BeginY, SizeX, SizeY, Size:
Long ) : Visible;
Описание аргументов:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- Size – размер поля в символах.
Описание функции:
Эта функция создает отображаемый элемент типа StringVisible
для редактирования и ввода символьных строк. Если создание прошло успешно, то
возвращается значение этого элемента (типы значений не оговариваются
стандартом, но, как правило, это адрес соответствующей структуры). Если создание
элемента завершилось не удачно, то возвращается значение Null.
Window
Function Window( BeginX, BeginY, SizeX, SizeY, ScrollX, ScrollY : Long; Text : String ) : Visible;
Описание аргументов:
- BeginX, BeginY – Координаты верхнего левого угла элемента относительно владельца.
- SizeX, SizeY – Горизонтальный и вертикальный размеры элемента.
- ScrollX, ScrollY – Целочисленные параметры, задающие наличие у
окна горизонтальной и вертикальной полосы прокрутки. Если значение параметра
равно нулю, то соответствующая полоса прокрутки отсутствует, при любом другом
значении параметра в окно включается соответствующая полоса прокрутки.
- Text – Название окна.
Описание функции:
Эта функция создает отображаемый элемент типа окно. Если
создание прошло успешно, то возвращается значение этого элемента (типы значений
не оговариваются стандартом, но, как правило, это адрес соответствующей
структуры). Если создание элемента завершилось не удачно, то возвращается значение
Null. После создания окно является пустым.
2.7 Строковые функции
В этом разделе описан набор функций для работы со строками,
которые могут использоваться в языках описания всех компонентов
нейрокомпьютера.
Function SubStr( S : String; Origin, Leng : Integer ) : String;
Описание аргументов:
- S – строка, из которой выделяется фрагмент.
- Origin – начальная позиция выделяемого фрагмента в строке S
- Leng – длина выделяемого фрагмента.
Описание функции:
Выделяет из строки S фрагмент, начинающийся с позиции Origin
и длиной Leng символов. Если строка короче чем Origin, то результатом является
пустая строка. Если строка длиннее чем Origin символов, но короче чем Origin+Leng
символов, то результатом является фрагмент строки S с символа Origin и до конца
строки S.
Function Pos( S1, S2 : String ) : Integer
Описание аргументов:
- S1 – строка, в которой ищется вхождение строки S2.
- S2 – строка, вхождение которой ищется.
Описание функции:
Функция Pos возвращает номер первого символа в строке S1,
начиная с которого, в строке S1 полностью содержится строка S2. Если строка S2
ни разу не встретилась в строке S1, то результат равен нулю.
Function Len( S : String ) : Integer
Описание аргументов:
- S – строка, длина которой вычисляется.
Описание функции:
Функция Len возвращает длину (число символов) строки S
2.8 Описание языка описания компонентов
В табл. 12 приведен список ключевых слов, общих для всех
языков описания компонентов нейрокомпьютера. Кроме того, к ключевым словам
относятся типы данных, приведенные в табл. 1; обозначения операций, приведенные
в табл. 3, 7, 8, 9, 10; названия функций преобразования (табл. 5) и приведения
типов (табл. 6); идентификаторы предопределенных констант, приведенные в табл.
11; имена интерфейсных функций, приведенных в разделе «Перечень интерфейсных
функций»; обозначения элементарных функций, приведенных в табл.13; обозначения
строковых функций, приведенных в разделе «Строковые функции» и обозначения
функций управления памятью из раздела «функции управления памятью».
2.8.1 Передача аргументов функциям
Во всех языках описания компонентов все параметры передаются
по ссылке (передается не значение аргумента, а его адрес). Если в качестве
фактического аргумента указано выражение, то значение выражения помещается
интерпретатором (или компилятором) во временную переменную, имеющую тип,
совпадающий с типом формального аргумента, а адрес временной переменной
передается в качестве фактического аргумента.
Таблица 12
Ключевые слова, общие для всех языков описания компонент нейрокомпьютера.
| Ключевое слово |
Краткое описание |
| Begin |
Начало описания тела процедуры, ли операторных скобок. |
| By |
Часть оператора цикла с шагом. редшествует шагу цикла. |
| Do |
Завершающая часть операторов цикла. |
| Else |
Часть условного оператора. Предшествует оператору, выполняемому, если условие ложно. |
| End |
Конец описания тела процедуры или операторных скобок. |
| For |
Заголовок оператора цикла с шагом. |
| Function |
Заголовок описания функции. |
| Global |
Начло блока описания глобальных переменных. |
| GoTo |
Начало оператора перехода. |
| If |
Начало условного оператора. |
| Include |
Предшествует имени файла, целиком вставляемого в это место описания. |
| Label |
Начало описания меток |
| Name |
Предшествует имени статической переменной. |
| SetParameters |
Признак раздела установления значений параметров. |
| Static |
Начло блока описания статических переменных. |
| Then |
Часть условного оператора, предшествующая оператору, выполняемому, если условие истинно. |
| To |
Часть оператора цикла с шагом. Предшествует верхней границе цикла. |
| Var |
Начло блока описания переменных. |
| While |
Заголовок оператора цикла по условию. |
Таблица 13
Элементарные функции, допустимые в языках описания компонент нейрокомпьютера
| Обозначение |
Значение |
Обозначение |
Значение |
| Sin |
Синус |
Cos |
Косинус |
| Tan |
Тангенс |
Atan |
Арктангенс |
| Sh |
Гиперболический синус |
Ch |
Гиперболический косинус |
| Th |
Гиперболический тангенс |
Lg |
Логарифм двоичный |
| Ln |
Логарифм натуральный |
Exp |
Экспонента |
| Sqrt |
Квадратный корень |
Sqr |
Квадрат |
| Abs |
Абсолюеное значение |
Sign |
Знак аргумента (0 – минус) |
2.8.2 Имена структурных единиц компонентов
Компоненты предобработчик, сеть, оценка и интерпретатор
ответа имеют иерархическую структуру. Часть запросов может быть адресована не
всему компоненту, а его структурной единице любого уровня. Для точного указания
адресата запроса используется полное имя структурной единицы, которое строится
по следующему правилу:
- Имя компонента является полным именем компонента.
- Полное имя младшей структурной единицы строится путем добавления справа
к имени старшей структурной единицы точки, псевдонима младшей структурной
единицы и номера экземпляра младшей структурной единицы, если младших структурных
единиц с таким псевдонимом несколько.
Иногда при построении описания компонента требуется
однозначное имя структурной единицы. В качестве однозначного имени можно использовать
полное имя, но такой подход лишает возможности вставлять подготовленные
структурные единицы в структуры более высокого уровня. Для этого вводится
понятие однозначного имени структурной единицы: в описании структурной единицы A однозначным именем структурной единицы B, являющейся частью структурной единицы A, является полное имя структурной единицы B, из которого исключено полное имя структурной единицы A.
2.8.3 Описание синтаксических конструкций
Для описания синтаксиса языков описаний компонентов используется
расширенная Бэкусова нормальная форма. В описании БНФ во всей книге приняты
следующие обозначения:
- <Имя> – нетерминальный символ – понятие которое было раскрыто или будет раскрыто далее;
- Имя – терминальный символ – понятие, не требующее раскрытия;
- Имя – ключевое слово – подмножество терминальных символов;
- [Имя] – необязательный элемент – синтаксическая конструкция, заключенная в скобки может отсутствовать;
- {Имя1 | Имя2 | Имя3}– одно из значений – может присутствовать одно и только одно из разделенных символом | значений.
В данном разделе приведено описание общего подмножества
языков описания компонентов. В некоторых случаях, когда БНФ описание понятия
сложно, а неформальное описание просто и однозначно, в БНФ описание включаются
фрагменты неформального описания таких понятий.
Список синтаксических конструкций общего назначения:
<Идентификатор> ::= <Буква> [<Символьная строка>]
<Буква> ::= {
a | b | c | d | e | f | g | h |
i | j | k | l | m | n | o | p |
q | r | s | t | u | v | w | x |
y | z | A | B | C | D | E | F |
G | H | I | J | K | L | M | N |
O | P | Q | R | S | T | U | V |
W | X | Y | Z}
<Символьная строка> ::= {<Буква> | <Цифра> | _ } [<Символьная стока>]
<Цифра> ::= {
0 | 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9}
<Число> ::= {<Целое число> | <Действительное число>}
<Целое число> ::= [–] <Положительное целое число>
<Положительное целое число> ::= <Цифра> [& |