Скачиваний:
10
Добавлен:
01.05.2014
Размер:
527.87 Кб
Скачать

2. Описание семантики входного языка Правила реализации конструкций языка

  1. Операции целочисленной арифметики выполняются без учета переполнения.

  2. Каждый объект (переменная, константа, тип, метка), используемый в программе, должен быть описан в соответствующем разделе описаний не более одного раза.

  3. Имена объектов не могут совпадать между собой и с ключевыми словами.

  4. Значение константы не может быть переопределено.

  5. Переменные при описании не инициализируются никаким значением.

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

  7. Меткой является целым числом без знака лежащим в диапазоне от 0 до 9999.

  8. В теле программе меткой может быть помечен только один оператор.

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

  10. Значения размерности вектора и индекса вектора должны быть натуральными числами.

  11. Пользовательский тип задается перечислением констант пользовательского типа, при этом между данными и константами устанавливаются отношения типа «>», «<»: константа считается меньше другой если в перечислении она расположена левее («раньше») другой константы.

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

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

Тип

Размер, байт

Диапазон значений

real

6

2.9e-39 .. 1.7e38

integer

2

-32768 .. 32767

complex

2x6

2.9e-39 .. 1.7e38, 2.9e-39 .. 1.7e38

Приоритет операций(в порядке убывания приоритета).

Знак операции

Название операции

Категория операции

+

Унарный плюс

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

-

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

not

Логическое «НЕ»

*

Умножение

Бинарные операции типа умножения

/

Деление

and

Логическое «И»

+

Сложение

Бинарные операции типа сложения

-

Вычитание

or

Логическое «ИЛИ»

<

Меньше

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

отношения

<=

Меньше или равно

>

Больше

>=

Больше или равно

=

Равно

<>

Не равно

Операции с одинаковым приоритетом выполняются слева направо. Порядок выполнения операторов можно задавать при помощи скобок.

Правила выполнения бинарных операций

Операнды бинарных арифметических операций и операций отношения должны быть совместимы по типам в соответствии с таблицей:

integer

real

complex

vector

«ложь» / «истина»

integer

+

+

+

-

-

real

+

+

+

-

-

complex

+

+

+

-

-

vector

-

-

-

-

-

«ложь» / «истина»

-

-

-

-

-

Если операнды относятся к разным типам, то происходит преобразование типов обоих операндов в соответствии с таблицей.

Правила преобразования типов для бинарных операций (rel = {=,<,>,<=,>=,<>})

Операция

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

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

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

+, -, *, rel

integer

integer

integer

+, -, *, rel

integer

real

real

+, -, *, rel

real

integer,real

real

/

integer

integer,real

real

/

real

integer,real

real

+, -, *, /, rel

integer,real

complex

complex

+, -, *, /, rel

complex

integer,real

complex

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

Результат выполнения операций отношения будет иметь значение «ложь» или «истина».

Правила выполнения логических операций

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

Операция логическое «НЕ» (not)

Операнд

Результат

«ложь»

«истина»

«истина»

«ложь»

Операция логическое «И»(and)

and

«ложь»

«истина»

«ложь»

«ложь»

«ложь»

«истина»

«ложь»

«истина»

Операция логическое «ИЛИ»(or)

or

«ложь»

«истина»

«ложь»

«ложь»

«истина»

«истина»

«истина»

«истина»

Выполнение оператора присваивания.

Тип переменной до выполнения оператора

Тип значения арифметического выражения

Тип переменной после выполнения оператора

integer

integer

integer

real

real, integer

real

complex

integer, real, complex

complex

vector

vector

Vector(размерность векторов должна совпадать)

Преобразование типов для выполнения операции отношения.

Операнд1

Операнд2

Преобразование

integer

integer

Не требуется

real

real

Не требуется

complex

complex

Не требуется

real

integer

операнд2  real

integer

real

операнд1  real

complex

integer, real

операнд2  complex

integer, real

complex

операнд1  complex

Правила выполнения операторов языка

1. Оператор присваивания “:=

Оператор выполняется следующим образом:

a) вычисляется значение выражения;

b) производится преобразование типов в соответствии с таблицей (см. таблицу преобразования типов для оператора присваивания);

c) переменной в левой части оператора присваивания присваивается значение арифметического выражения.

2. Операторы ввода readln

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

3. Оператор вывода writeln”.

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

4. Составной оператор.

Выполнение составного оператора: последовательно выполняются операторы между ключевыми словами begin и end.

5. Оператор безусловного перехода.

Выполнение оператора goto: происходит передача управления оператору, помеченному меткой, следующей за ключевым словом goto. Если метка, следующая за ключевым словом goto, не была описана в разделе описаний или в программе нет оператора, помеченного данной меткой, то происходит ошибка выполнения оператора безусловного перехода.

6. Условный оператор.

Порядок выполнения оператора if.

a) вычисляется значение выражения;

b) если значение выражения «истина», то выполняется оператор, следующий за ключевым словом then, после чего управление передается оператору, следующему за условным оператором;

c) если значение выражения «ложь» и есть конструкция с ключевым словом else, то выполняется оператор, следующий за ключевым словом else;

d) если значение выражения «ложь» и нет конструкции с ключевым словом else, то управление передается оператору, следующему за условным оператором.

Пример: Если записано два и более условных операторов подряд, то else относится к ближайшему к нему слева оператору if. Напримерif a>b then a:=bifa=b then a:=a-1elseb:=a;

7. Оператор цикла с предусловием.

Порядок выполнения оператора while:

a) вычисляется значение выражения;

b) если значение выражения «истина», то выполняется оператор, следующий за ключевым словом do, после его выполнения управление передается оператору while;

c) если значение выражения «ложь», то управление передается оператору, следующему за оператором while.

Правила выполнения операций над комплексными числами

Комплексное число – заключенная между двумя решетками (“#”) пара вещественных чисел, разделенных запятой. Например, “#a,b#” – “a” обозначает вещественную часть комплексного числа, “b” обозначает мнимую часть комплексного числа.

  1. Операция abs(#a,b#)

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

  1. Операция re(#a,b#) – возвращает “a”.

  2. Операция im(#a,b#) – возвращает “b”.

  3. Операция сложения комплексных чисел

, что аналогично

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

  1. Операция вычитания комплексных чисел

, что аналогично

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

  1. Операция умножения комплексных чисел

, что аналогично

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

  1. Операция деления комплексных чисел

, что аналогично

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

  1. Операция отношения для комплексных чисел

Равенство комплексных чисел определено так: (a + ib) = (c + id)  (a = c) & (b = d).

Аналогичным образом определяется неравенство.

Операция “больше” определена так:

(a + ib) > (c + id)  (a > c) or ((a = c) & (b > d))

Аналогичным образом определяются остальные операции отношения.

Правила выполнения операций над векторами.

Вектор – заключенная в “|| ||”последовательность вещественных чисел типа complex (компонент), разделенных запятыми.

  1. Операция length()

Возвращается число компонент, или размерность, вектора: length() = n

  1. Операции sum(,) и dif(,)

Возвращается вектор размерности , где каждая его компонента – это соответственно сумма или разность соответствующих компонент двух исходных векторов. Суммирование комплексных компонент производится по правилам суммирования комплексных чисел, описанным выше.

  1. Операция multscal(,)

Возвращается скалярное произведение векторов:

multscal(,) =

Произведение комплексных компонент производится по правилам произведения комплексных чисел, описанным выше.

  1. Операция multconst(,)

Возвращается вектор размерности , где каждая его компонента – это произведение соответствующей компоненты исходного вектора на заданную константу. Т.е.. Произведение комплексной компоненты на константу производится по правилам произведения комплексных чисел, описанным выше.

Соседние файлы в папке Курсовик (вар 1)