Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_рекоменд-ТП-4.doc
Скачиваний:
2
Добавлен:
12.11.2019
Размер:
2.49 Mб
Скачать

1.2.2. Функції

Аналіз алгебри даних показує, що в мові SIPL можна вирізнити два види функцій: 1) n-арні функції на базових типах даних, та 2) функції над станами змінних. Другий вид функцій будемо називати номінативними функціями. Назва пояснюється тим, що вони задані на наборах іменованих даних (латинське nomen – ім’я).

Визначимо тепер наступні класи функцій, які будуть задіяні при визначенні семантики мови SIPL:

  1. n-арні операції над базовими типами:

  • FNA=IntnIntn-арні арифметичні функції (операції),

  • FNB=BoolnBooln-арні бульові функції (операції),

  • FNAB=IntnBooln-арні функції (операції) порівняння.

  1. Функції над станами змінних

  • FA=StateInt – номінативні арифметичні функції,

  • FB=StateBool – номінативні предикати,

  • FS=StateState – біномінативні функції –перетворювачі (трансформатори) станів.

Для операцій мови SIPL зазвичай n=2, а для бульової операції заперечення n=1.

1.2.3. Композиції

Композиції формалізують методи побудови програм. Аналіз мови SIPL дає підстави говорити про те, що будуть вживатися композиції різних типів, а саме:

  • композиції, які пов’язані з номінативними функціями та предикатами,

  • композиції, пов’язані з біномінативними функціями.

Перший клас композицій використовується для побудови семантики арифметичних виразів та умов, другий – операторів.

Цей клас композицій складається з композицій суперпозиції в n-арні функції, які задані на різних основах (класах функцій):

  • суперпозиція номінативних арифметичних функцій в n-арну арифметичну функцію має тип Sn: FNAFAnFA,

  • суперпозиція номінативних арифметичних функцій в n-арну фунцію порівняння має тип Sn: FNABFAnFB,

  • суперпозиція номінативних предикатів в n-арну бульову фунцію має тип Sn: FNBFBnFB.

Зауваження: суперпозиції різного типу позначаємо одним знаком.

Суперпозиція задається формулою (тут fn-арна функція, g1,…,gn – номінативні функції відповідного типу):

(Sn(f, g1,…,gn ))(st)=f(g1(st),…,gn(st)).

Другий клас композицій складається з наступних композицій.

  • Присвоєння ASx: FAFS (x – параметр).

Присвоєння задається формулою:

ASx (fa)(st)=st [xfa(st)]

  • Послідовне виконання  : FS2FS

Послідовне виконання задається формулою:

(fs1fs2)(st)=fs2(fs1(st))

  • Умовний оператор (розгалуження): IF:FBFS2FS. Задається формулою:

  • Цикл (ітерація з передумовою): WH:FBFSFS. Задається рекурентно (індуктивно) наступним чином:

WH(fb,fs)(st)=stn, де

st0=st, st1=fs(st0), st2=fs(st1),…, stn=fs(stn-1), причому

fb(st0)=true, fb(st1)=true,…, fb(stn-1)=true, fb(stn)=false.

Важливо відзначити, що для циклу наведена послідовність визначається однозначно. Позначимо число n (кількість ітерацій циклу) як NumItWH((fb, fs), st). Однозначність визначення n дозволяє розглядати NumItWH((fb, fs), st) як тернарне відображення, яке залежить від fb, fs, st. Якщо цикл не завершується, то NumItWH((fb, fs), st) вважається невизначеним. Це відображення буде використовуватись в індуктивних доведеннях властивостей циклу.