Учебное пособие по курсу «Нейроинформатика»
Шрифт:
Указатель на строку. При передаче данных между компонентами сети и процедурами в пределах одного компонента удобно вместо строки передавать указатель на строку, поскольку указатель занимает всего четыре байта. Для этой цели служит тип указатель на строку.
Логический тип используется для хранения логических значений. Значение истина задается предопределенной константой true, значение ложь — false.
Массивы. В данном стандарте предусмотрены массивы четырех типов — логических, целочисленных, длинных целых и действительных переменных. Длины массивов определяются при описании, но все массивы переменных одного типа относятся к одному типу, в отличие от языков типа Паскаль. Использование функций приведения и преобразования типов позволяют получать из этих массивов структуры произвольной сложности. Элементы массивов всегда нумеруются с единицы.
Вне зависимости от типа массива нулевой элемент массива имеет тип Long и содержит длину массива в элементах. На рис. 1 приведена схема распределения памяти всех типов массивов, каждый из которых содержит шесть элементов.
Все
Адрес функции. Этот тип используется для передачи функции в качестве аргумента. Переменная типа functype занимает четыре байта и является адресом функции. В зависимости от реализации по этому адресу может лежать либо начало машинного кода функции, либо начало текста функции. В случае передачи текста функции первые восемь байт по переданному адресу содержат слово «function».
Отображаемый элемент. Переменные типа visual (отображаемый элемент) Служат для адресации отображаемых элементов в интерфейсных функциях. Тип значений зависит от реализации библиотеки интерфейсных функций и не может изменяться пользователем иначе, чем через вызов интерфейсной функции. Особо следует отметить, что библиотека интерфейсных функций не является частью ни одного из компонентов.
Переменные типа цвет и операции с цветами
Использование цветов позволяет гибко разбивать множества на подмножества. В нейрокомпьютере возникает необходимость в разбиении на подмножества (раскрашивании) задачника. В этом разделе описывается стандарт работы с переменными типа цвет.
Переменная типа цвет представляет собой двухбайтовое беззнаковое целое. Однако основное использование предполагает работу не как с целым числом, а как с совокупностью однобитных флагов. При записи на диск используется символьное представление двоичной записи числа с ведущими нулями и разбиением на четверки символом «.» (точка), предваряемая заглавной буквой «B» латинского алфавита, или символьное представление шестнадцатеричной записи числа с ведущими нулями, предваряемая заглавной буквой «H» латинского алфавита. В табл. 2 приведена нумерация флагов (бит) переменной типа 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 |
Таблица 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.
Приведение и преобразование типов
Есть два пути использовать переменную одного типа как переменную другого типа. Первый путь состоит в преобразовании значения к заданному типу. Так, для преобразования целочисленной переменной к действительному типу, достаточно просто присвоить переменной действительного типа целочисленное значение. С обратным преобразованием сложнее, поскольку не ясно что делать с дробной частью. В табл. 4 приведены все типы, которые можно преобразовать присваиванием переменной другого типа. В табл. 5 приведены все функции преобразования типов.
Таблица 4. Преобразование типов прямым присваиванием переменной значения выражения
Тип переменной | Тип выражения | Пояснение |
---|---|---|
Real | Real, Integer, Long | Значение преобразуется к плавающему виду. При преобразовании значения выражения типа Long возможна потеря точности. |
Long | Integer, Long | При преобразовании типа Integer, действуют следующие правила. Значение переменной помещается в два младших байта. Если значение выражения больше либо равно нолю, то старшие байты равны H0000, в противном случае старшие байты равны HFFFF. |
Integer | Integer, Long | При преобразовании выражения типа Long значение двух старших байт отбрасывается. |
Таблица 5. Функции преобразования типов
Имя функции | Тип аргумента | Тип результата | Описание |
---|---|---|---|
Real | Real, Integer, Long | Real | Аналогично прямому присваиванию |
Integer | Integer, Long | Integer | Аналогично прямому присваиванию |
Long | Integer, Long | Long | Аналогично прямому присваиванию |
Str | Real, Long, Integer | 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. |