
- •Лекция 4. Концепция данных языка программирования
- •Алфавит языка
- •1. Латинские буквы (большие и маленькие), знак подчеркивания ’_’
- •2. Цифры 0 ... 9
- •5. Скобки ( ) [ ] { }
- •Выбирайте имена так, чтобы они несли смысловую нагрузку Типы данных
- •Тип данных Integer
- •Тип данных Real
- •Тип данных Сhar
- •Тип данных Boolean
- •IntersectLines(прямая, прямая) точка
- •IntersectLineCircle(прямая, окружность) (точка, точка)
- •Понятие терма
- •Формы записи
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)