Чтение онлайн

на главную - закладки

Жанры

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

Миркес Е. М.

Шрифт:

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

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

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

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

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

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

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

Операции

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

Таблица 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 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 числовой Real Умножение
1 / числовой числовой Real Деление
1 RMod числовой числовой Real Остаток от деления
2 + Real числовой Real Сложение
2 Real числовой Real Вычитание
Поделиться:
Популярные книги

Часовая башня

Щерба Наталья Васильевна
3. Часодеи
Фантастика:
фэнтези
9.43
рейтинг книги
Часовая башня

Попаданка в Измену или замуж за дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Попаданка в Измену или замуж за дракона

На границе империй. Том 9. Часть 3

INDIGO
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 3

Жена на пробу, или Хозяйка проклятого замка

Васина Илана
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Жена на пробу, или Хозяйка проклятого замка

Ваше Сиятельство

Моури Эрли
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ваше Сиятельство

Восход. Солнцев. Книга I

Скабер Артемий
1. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга I

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Надуй щеки!

Вишневский Сергей Викторович
1. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки!

Случайная свадьба (+ Бонус)

Тоцка Тала
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Случайная свадьба (+ Бонус)

Газлайтер. Том 5

Володин Григорий
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Мастер Разума III

Кронос Александр
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Мастер Разума III

Наследник 2

Шимохин Дмитрий
2. Старицкий
Фантастика:
попаданцы
альтернативная история
фэнтези
5.75
рейтинг книги
Наследник 2

Неучтенный. Дилогия

Муравьёв Константин Николаевич
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Неучтенный. Дилогия

Светлая тьма. Советник

Шмаков Алексей Семенович
6. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Светлая тьма. Советник