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

IntersectLines(прямая, прямая)  точка

IntersectCircles(окружность, окружность) (точка, точка)

IntersectLineCircle(прямая, окружность)  (точка, точка)

Математические определения: Данные

Точка (X, Y) (X, Y)

Прямая aX + bY = c (a, b, c)

Окружность (x - X)2 + (y - Y)2 = R2 ((X, Y), R)

Определения типов (Паскаль) используемые для вычислений

Type Point = Record

X, Y:Real

End;

Circle = Record

C: Point;

R: Real

End;

Circle = Record

a, b, c: Real

End;

Термы. Интерпретации как семантика вычислительных структур.

Понятие терма

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

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

Sqr(sin(X)) + Sqr(cos(X)) = 1 Trunc(Abs(B - A)) + 1

Формы записи

Префиксная форма записи формулы атомарного терма имеет вид

<имя функции>(<список аргументов >)

Например: Sin(X), Log(a, X), GCD(A, B)

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

A + B вместо Add(A, B) A or B вместо or(A, B)

A + B+C вместо (A+B)+C A+B*C вместо A+(B*C)

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

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

Наибольший приоритет имеют функции и логическая операция not, далее следуют мультипликативные операции, аддитивные операции и отношения.

Таблица приоритетов

Функции not.

Мультипликативные операции: * / div mod and

Аддитивные операции: + - or

Отношения: = <> > < >= <= in

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

a + b + c = (a + b) + c, a * b * c = (a * b) * c

Вычисление значения терма дает промежуточные результаты - данные некоторого типа, точно определенного знаком терма типами операндов (аргументов).

Любое несоответствие типа значения операнда приведет к ошибке, выявляемой компилятором при синтаксическом анализе.

Примеры несоответствий типов

A/B div 10 (A + 1) or (B > 0)

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

Примеры неопределенностей

A/(B - B) + B Sqrt(-1)

Точные определения семантики термов включают области определения атомарных термов

Пример

Семантика атомарных термов описывается соотношениями

Sqr(X) = X*X Sqr(Sqrt(X)) = X Sqrt(Sqr(X)) = Abs(X)