Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NikitchenkoNEWNEW.doc
Скачиваний:
26
Добавлен:
08.11.2019
Размер:
2.99 Mб
Скачать

1.3.2. Функції

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

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

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

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

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

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

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

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

  • FB=State Bool – номінативні предикати;

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

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

Рисунок 1.3. Алгебра даних мови SIPL

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

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

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

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

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

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

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

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

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

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

Суперпозиція задається формулою

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

де fn-арна функція, g1,…,gn – номінативні функції відповідного типу.

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

  • Присвоєння 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) вважається невизначеним. Це відображення буде використовуватись в індуктивних доведеннях властивостей циклу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]