Программа как математический объект: Методические указания для самостоятельного изучения темы и выполнения РГР, страница 4

Операции / тесты                    Определения

c := end(a)                       c, a := H+(a), T+(a) (a¹Æ)

end(a) := d                       d, a := d, aÅd

a := empty                        a := Æ

a = emptya = Æ

Множество. Множество – это структура данных, которая с помощью ключевого слова memberобеспечивает произвольный доступ к элементам списка. Объявляется в программе с помощью ключевого слова queue.

Операции / тесты                    Определения

c := member(a)                c, a := H+(a), T+(a) (a¹Æ)

member(a) := d                d, a := d, P(d+a)

a := empty                        a := Æ

a = empty                         a = Æ

P(x)- произвольная перестановка списка x, полученная в результате его сжатия ( удаления всех повторяющихся элементов).

Последовательность. Последовательность – это структура данных, которая обеспечивает последовательный доступ к списку с неявным заданием позиции с помощью ключевых слов current,nextиreset. Объявляется в программе с помощью ключевого слова sequence.

Операции / тесты                    Определения

reset(a)                             a := Æ.a-||a+

c := current(a)                 c, a := H-(a-), a                            (a-¹Æ)

current(a) := d                 d, a := d, T-(a-)Åd.a+

c := next(a)                      c, a := H+(a+), a-ÅH+(a+).T+(a+)  (a+¹Æ)

next(a) := d                      d, a := d, a- + d.Æ

a := empty                        a := Æ

a = emptya = Æ (или а = а-.Æ)

backspace(a)                              a:= T-(a-). H-(a-)+a+                     (a-¹Æ)

c:= back(a)                       c, a := H-(a-), T-(a-). H-(a-)+a+               (a-¹Æ)

addaftercurrent(a) := d  d, a := d, a-Åd.a+

c := readanddeletenext   c, a := H+(a+), a-. T+(a+)              (a+¹Æ)

      Поле данных

Пусть S – список активных записей данных, объявленных или передаваемых в программу. (Объявления записей данных становятся активными, когда им впервые присваиваются значения). Назовем S полем данных. Поле данных может изменяться с помощью ключевых слов initialи free.

initial  имя := значение      Если имя является элементом поля S, то значение записывается в стек; в противном случае имя добавляется в поле S и значение записывается в его стек.

free  имя                          Если имя является элементом S, то вершина его стека удаляется, если после этого стек становится пустым, то удаляется имя из поля S; в противном случае операция не может быть выполнена.

Пример.

Допустим, что x и z являются активными записями и S: ( x: ('ab'),  z: (8,1))

scalar y : целый              S: ( x: ('ab'),  z: (8,1))

y := z                                S: ( x: ('ab'),  y: (8),  z: (8,1))

initial y:=3                      S: ( x: ('ab'),  y: (3,8),  z: (8,1))

y := z                                S: ( x: ('ab'),  y: (8,8),  z: (8,1))

free z                                S: ( x: ('ab'),  y: (8,8),  z: (1))

initial x := 'cd'                            S: ( x: ('cd', 'ab'),  y: (8,8),  z: (1))

free z                                S: ( x: ('cd', 'ab'),  y: (8,8))

initial z := 0                     S: ( x: ('cd', 'ab'),  y: (8,8),  z: (0))

1.6  Внутренний синтаксис

1.6.1  Выражения внутреннего синтаксиса

Операции над данными основываются на обработке арифметических, логических и символьных данных, а также таких объектов данных языков программирования высокого уровня, как символьные строки , числа и логические переменные. Мы будем использовать обычные соглашения, выделяя строки символов кавычками, представляя числа в вещественной и целой формах, а логические переменные ключевыми словами trueилиfalse языка PDL. Имена данных выражаются буквенно-цифровыми строками (без кавычек), начинающимися буквами.

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