Рефераты. Функциональные модели универсального нейрокомпьютера

Преобразует длинное целое из символьного представления во внутреннее.

RVal

String

Real

Преобразует действительное число из символьного представления во внутреннее.

StrColor

Color

String

Преобразует внутреннее представление переменной типа Color в соответствии с разд. «Значение переменной типа цвет»

ValColor

String

Color

Преобразует символьное представление переменной типа Color во внутреннее.

Color

Integer

Color

Интерпретирует целое число как значение типа Color.

При вычислении числовых выражений действуют следующие правила преобразования типов:

1.     Выражения вычисляются слева на право.

2.     Если два операнда имеют один тип, то результат имеет тот же тип.

3.     Если аргументы имеют разные типы, то выражение имеет старший из двух типов. Список числовых типов по убыванию старшинства: Real, Long, Integer.

4.     Результат операции деления действительных чисел (операция «/») всегда имеет тип Real, вне зависимости от типов аргументов.

В отличие от преобразования типов приведение типов позволяет по-разному интерпретировать одну область памяти. Функция приведения типа применима только к переменным или элементам массива (преобразование типов применимо и к выражениям). Рекомендуется использовать приведение типов только для типов, имеющих одинаковую длину. Например, Integer и Color или Real и Long. Список функций приведения типов приведен в табл. 4.

Таблица 4

Функции приведения типов

Название

Тип

результата

Описание

TReal

Real

Четыре байта, адресуемые приводимой переменной, интерпретируются как действительное число.

Tinteger

Integer

Два байта, адресуемые приводимой переменной, интерпретируются как целое число.

TLong

Long

Четыре байта, адресуемые приводимой переменной, интерпретируются как длинное целое.

TRealArray

RealArray

Область памяти, адресуемая приводимой переменной, интерпретируются как массив действительных чисел.

TPRealArray

PRealArray

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

Таблица 4

Функции приведения типов (Продолжение)

Название

Тип

результата

Описание

TIntegerArray

IntegerArray

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

TPIntegerArray

PIntegerArray

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

TLongArray

LongArray

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

TPLongArray

PLongArray

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

TLogic

Logic

Адресуемый приводимой переменной байт интерпретируются как логическая переменная.

TLogicArray

LogicArray

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

TPLogicArray

LogicArray

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

TColor

Color

Два байта, адресуемые приводимой переменной, интерпретируются как переменная типа цвет.

TFuncType

FuncType

Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес функции.

TPointer

Pointer

Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес.


Таблица 4

Функции приведения типов (Продолжение)

Название

Тип

результата

Описание

TString

String

256 байт области памяти, адресуемой приводимой переменной, интерпретируются как строка символов.

TPString

PString

Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на строку символов.

TVisual

Visual

Четыре байта, адресуемые приводимой переменной, интерпретируются как отображаемый элемент.

Следующие примеры иллюстрируют использование преобразования и приведения типов:

При вычислении следующих четырех выражений, получаются различные результаты

4096 * 4096 = 0

Поскольку константа 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 и Паскаль, существует возможность строить пользовательские типы данных. При разработке стандарта эти возможности были исключены, поскольку использование пользовательских типов, облегчая написание программ, сильно затрудняет разработку компилятора или интерпретатора, а при использовании этого языка для описания компонентов нейрокомпьютера необходимость в пользовательских типах данных возникает чрезвычайно редко. Например, при описании примеров всех компонентов, приведенных в данной работе, такая необходимость ни разу не возникла.

4.3.6.                       Операции

В данном разделе приведены все операции, которые могут быть использованы при построении выражений различного типа. В табл. 5 приведены операции, которые допустимы в целочисленных выражениях (выражениях типа Integer или Long). В табл. 6 – список, дополняющий список операций из табл. 5 до полного списка операций, допустимых в выражениях действительного типа. В табл. 7 – операции, допустимые при построении логических выражений. В табл. 8 –для выражений типа символьная строка. В главе 1 в табл. 3 – для выражений типа Color. Если операндом может быть любой числовой тип, то вместо перечисления всех числовых типов (Integer, Real, Long) указывается слово «числовой»

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.