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

• • •

первая часть

do

вторая часть

третья часть

od

• • •

n-часть

• • •

Индексная последовательность

• • •

for

индексный список

do

do-часть

od

• • •

1.4.2  Структуры с ветвлением

Структура типа if_then_else

• • •

if

if-тест

then

then-часть

else

else-часть

fi

• • •

Структура типа if_then

• • •

if

if-тест

then

then-часть

fi

• • •

Структура типа case

• • •

case

case-тест

part (case - список 1)

case - часть 1

part (case - список 2)

case - часть 2

• • •

part (case - список n)

case - часть n

else

else - часть

esac

• • •

1.4.3  Циклические структуры

Структура типа while_do

• • •

while

while-тест

do

do-часть

od

• • •

Структура типа do_until

• • •

do

do-часть

until

until-тест

od

• • •

Структура типа do_while_do

 

• • •

do1

do-часть 1

while

while-тест

do2

do-часть 2

od

• • •

1.5  Внешний синтаксис структур данных

1.5.1  Структуры поименованных данных

Скаляры. Структура данных содержащая отдельную неделимую единицу данных, называется скаляром и объявляется ключевым словом scalar. Обращение к скалярам в программе PDL осуществляется по именам.

Массивы. Список структур в виде переменных с индексами, являющимися элементами декартова произведения множества целых чисел, называется массивом. Обращение к массиву в языке PDL производится по имени массива с указанием списка индексов в круглых скобках, т. е. Целых чисел или идентификаторов, составленных как целые числа. Имена и размерности массивов сообщаются в их описаниях, которое объявляется ключевым словом array . В языке PDL разрешается, чтобы в массиве были элементы разного типа.

Рассмотрим следующую программу

c := 1

array a(3), b(2,3),

for iÎ1 to 2 by 1

do

    for jÎ1 to 3 by 1

    do

        b(i,j) := j-i

    od

od

a(1) := b

a(2) := max(a(1))

if

    a(2)>c

then

    a(3) := true

else

    a(3) := false

fi

После выполнения этой программы первому элементу массива a будет присвоен двумерный массив b, второму элементу массива a будет присвоено значение 2, а третьему элементу массива a будет присвоено логическое значение true.

Запись. Запись – это структура данных, которая может быть представлена в виде дерева.

recordстудент

        1      имя

        2      адрес

        2.1       улица

        2.2       город

        3      курс

Приведем возможные имена элементов для данной записи

студент.имя = студент.1 = имя

студент.адрес = студент.2 = адрес

студент.адрес.улица = студент.2.1 = улица

студент.адрес.город = студент.2.2 = город

студент.курс = студент.3 = курс

1.5.2  Структуры непоименованных данных

Определим некоторые операции над списками.

Операции формирования списка:

a+b – добавить элемент a в начало списка b

aÅb – добавить элемент b в конец списка a

Операции выделения из списка:

Н+(a+b) = a            T+(a+b) = (b)

Н-(aÅb) = b           T-(aÅb) =( a)

Для иллюстрации рассмотрим списки a = (A, B ,C), b = (E, F)

M+a = (M ,A ,B ,C)

bÅN = (E, F ,N)

Н+(a) = A

T+(b) = (F)

Н-(b) = F

T-(a) = (A,B)

Стек. Стек – это структура данных, которая с помощью ключевого слова topобеспечивает доступ к списку по принципу LIFO (поступивший последним обслуживается первым). Объявляется в программе с помощью ключевого слова stack.

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

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

top(a) := d                        d, a := d, d+a

a := empty                        a := Æ

a = emptya = Æ

Очередь. Очередь – это структура данных, которая с помощью ключевого слова endобеспечивает доступ к списку по принципу FIFO (поступивший последним обслуживается первым). Объявляется в программе с помощью ключевого слова queue.