Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции2семестр.doc
Скачиваний:
61
Добавлен:
15.04.2015
Размер:
228.35 Кб
Скачать

Функции преобразования типов

Эти функции служат для преобразования данных из одного типа в другой (допустимй) тип, а также для нахождения порядковых номеров конкретных значений в общем списке возможных значений. Преобразовывать можно обычно числовые данные из одного типа в другой, работа с порядковыми номерами возможна для данных, представимых точно и упорядоченных (т.е. кроме вещественных и комплексных чисел).

Chr(X) - преобразование ASCII-кода в символ. Аргументом должно быть целое число в диапазоне (0..255). Результатом является символ, код которого равен аргументу. Если число не входит в диапазон, функция просто не вычисляется без всяких сообщений.

Odd(X) - проверка четности аргумента. Аргумент - целочисленное значение любой точности, может быть беззнаковое. Результат -логическое значение TRUE, если аргумент нечетный и FALSE в противном случае.

Ord(X) - преобразование любого порядкового типа в целый. Аргументом может быть любой простой тип, кроме вещественного. Если аргумент - целое - результат равен аргументу, если символьный, логический, перечисляемый - результат равен его порядковому номеру в полном списке значений (нумерация начинается с нуля). Тип результата - LongInt.

Pred(X) - нахождение предыдущего значения величины Х. Аргументом может быть любая перечислимая величина. Возвращается величина того же типа, что и аргумент, но со значением, предшествующим значению аргумента. Например, для числового аргумента Pred(12) равно 11, для символьного: Pred('D') равно 'C'. Если функция вычисляется от самого первого элемента последовательности значений, возникает состояние ошибки.

Round(X) - округление вещественного значения до ближайшего целого. Аргумент должен быть вещественного типа, результат имеет тип LongInt. Если округленное вещественное значение не входит в допустимый диапазон LongInt (т.е. превышает по модулю 2.147 миллиарда), возникает ошибка.

Succ(X) - нахождение последующего значения величины Х. Типы аргумента и

результата - как у функции Pred. Если функция вычисляется от самого

последнего элемента последовательности значений, возникает состояние ошибки.

Выражения

Рассмотренные выше типы данных используются в операторах языка Паскаль для различных целей. Основной задачей обработки данных, как уже упоминалось выше, является получение новых данных по уже имеющимся. Такой процесс происходит при выполнении (вычислении) выражений.

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

Все выражения классифицируются по типу получаемого результата. В Паскале предусмотрены выражения арифметического типа (в свою очередь подразделяющиеся на целочисленные и вещественные и битовые), логические, операции отношений, адресные и строковые. Соответственно, и знаки операций (или просто операции) делятся на те же типы.

Наиболее часто в программах обрабатываются числовые данные, над которыми выполняются арифметические операции. Следует отметить, что хотя процессор не имеет команд, реализующих арифметические операции над числовыми данными, с различными описателями типов (например, не может сложить целое однобайтовое и целое беззнаковое двухбайтовое, или перемножить целое и вещественное), язык Паскаль разрешает записывать в одном выражении операнды различных числовых типов. Просто при трансляции, если необходимо, компилятор подставляет команды преобразования данных к единому типу. Так как команды преобразований часто занимают гораздо больше времени, чем сами операции, целесообразно, где это возможно, использовать операнды одного типа.

Например, если Х - вещественная переменная, первое выражение будет выполняться быстрее, чем второе:

1) X + 1.0 2) X + 1

Все варианты арифметических операций представлены в таблице

Таблица 6. Допустимые арифметические операции Турбо-Паскаля

Знак

Операция

Типы операндов

Тип результата

+

Сложение

Целый

Целый

Хотя бы один - веществ.

Вещественный

-

Вычитание

Целый

Целый

Хотя бы один - веществ.

Вещественный

*

Умножение

Целый

Целый

Хотя бы один - веществ.

Вещественный

/

Деление

Любой числовой

Вещественный

div

Целочисленное деление

Целые

Целый

mod

Остаток деления целых чисел

Целые

Целый

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

A div B, A mod B

В Турбо Паскале всего имеется четыре логических операции, одна из них - унарная - not (отрицание), остальные - бинарные. Их названия:

and - "и" (логическое умножение, коньюнкция),

or - "или" (логическое сложение, дизьюнкция),

xor - "исключающее или" (сложение по модулю 2).

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

Таблица 8. Логические операции Турбо-Паскаля

P

Q

not Q

P and Q

P or Q

P xor Q

False

False

True

True

False

True

False

True

True

False

False

False

False

True

False

True

True

True

False

True

True

False

Операции отношений возможны для сравнимых величин, т.е. для однотипных простых данных и для некоторых составных данных (строк, множеств), для которых эти операции определены специальным образом. Любые однотипные данные можно сравнивать на тождественность ("равно", "не равно"), упорядоченные типы можно также сравнивать на относительное расположение ("меньше", "больше").

В качестве знаков операций отношений в Турбо Паскале используются:

= - равно;

<> - не равно;

< - меньше;

<= - меньше или равно;

> - больше;

>= - больше или равно.

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

2.1*sin(X)-0.5 >= Y+Z или J < N-1

Отметим, что в Турбо Паскале логический тип - частный случай перечисляемого типа со значениями False и True, поэтому эти значения - упорядочены, и можно написать, что False < True. Аналогично, упорядоченными являются символьные данные, и можно утверждать, что

'А' < 'Б' -> True; '1' < 'A' -> True; 'a' < 'A' -> False.

В качестве составной части, отношения могут входить в сложные логические выражения, например (при NoError и EndArray - логического типа):

((J < N-1) or (X>=1.0)) and NoError and not EndArray;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]