Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TURBO_PASCAL.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
8.23 Mб
Скачать

Глава 9. Математические возможности Турбо Паскаля

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

9.1. Базовые операции

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

В сложных выражениях порядок, в котором выполняются операции, соответствует приоритету операций (табл. 9.1).

Таблица 9.1

Название

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

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

Вид

Первый (высший) приоритет

@

Взятие адреса

Любой

Pointer

Унарные операции

-

+

not

not

Унарный минус

Унарный

плюс

Логическое 'НЕ'

Поразрядное 'НЕ'

Целый

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

Целый

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

Логический

Целый

Целый

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

Целый

Вещественный {161} Логический

Целый

Второй приоритет

*

Операция умножения

Целый*Целый

Целый*Вещественный

Вещественный*Целый

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

Целый

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

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

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

Бинарные операции

/

Операция деления

Целый/Целый

Целый/Вещественный

Вещественный/Целый

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

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

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

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

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

div

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

Целый div Целый

Целый

mod

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

Целый mod Целый

and

and

Логическое 'И'

Поразрядное 'И'

Логический

Целый

Логический

Целый

shl

shr

Циклический сдвиг влево

Циклический сдвиг вправо

Целый

Целый

Целый

Целый

Третий приоритет

+

Операция сложения

Целый+Целый

Целый+Вещественный

Вещественный+Целый

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

Целый

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

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

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

Бинарные операции

{162}

Операция вычитания

Целый–Целый

Целый–Вещественный

Вещественный-Целый

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

Целый

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

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

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

or

or

Логическое 'ИЛИ'

Поразрядное 'ИЛИ'

Логический

Целый

Логический

Целый

xor

xor

Логическое исключающее 'ИЛИ'

Поразрядное исключающее 'ИЛИ'

Логический

Целый

Логический

Целый

Четвертый (низший) приоритет

=

<>

<

>

<=

>=

Операции отношения

Число и число

Строка и число

Строка и литера

Pointer и Pointer

Множества

Логический

Бинарные операции

in

Вхождение в множество

Элементарный и множество

Логический

Примечания:

1. Под вещественными понимаются тип Real и вещественные типы, поддерживаемые математическим сопроцессором (типы с повышенной точностью).

2. Под целыми понимаются целочисленные типы языка.

3. В таблице указан оператор @, не имеющий никакого отношения к математике. Он включен только для показа его приоритета.

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

2*3/4/5 = ((2 * 3)/4)/5

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

Значение выражения X/Y всегда будет вещественного типа, независимо от типов операндов. Если Y равно 0, то произойдет фатальная ошибка (номер 200) и останов программы. {163}

Значение выражение i div j представляет собой математическое частное i/j, округленное в меньшую сторону до значения целого типа. Если j равно 0, то результатом будет фатальная ошибка.

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

i mod j = i - (i div j) * j

Знак результата операции mod будет тем же, что и знак i. Если j равно нулю, то результатом будет фатальная ошибка.

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