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

3.2. Класи функцій

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

Нехай D і R – деякі класи об’єктів. Клас об'єктів, розглянутих як часткові багатозначні функції з D у R, позначимо D R. Для f  (D R) позначимо arg(f) клас визначеності f, тобто клас об’єктів, на яких f може бути визначена, und(f) – клас невизначеності f, тобто клас об’єктів, на яких f може бути не визначена, gr(f)  DR – графік f, тобто множина пар (d, r) таких, що значення f на d може бути визначеним із значенням r. Відзначимо, що перетин arg(f)  und(f) може бути не порожнім, оскільки можуть бути об'єкти, на яких f може бути як визначена, так і не визначена. Якщо ж arg(f)  und(f) = , то f будемо називати реляційною функцією, оскільки в такому разі вона однозначно визначається своїм графіком, тобто бінарним відношенням (реляцією) на D(R) .

Для подання функцій будемо часто використовувати індексний конструктор функцій виду [ diri | iI ] або [ di : Dri : R | iI ], де di і ri можна трактувати як індексні часткові однозначні відображення з деякої множини індексів I у класи D і R відповідно. Такий конструктор задає функцію fD R наступним чином. На dD значення f може дорівнювати значенню ri для такого iI, для якого di визначено і дорівнює d. Якщо ж таке ri не визначено або ж необхідного i не існує, то значення f на d може бути не визначене.

Клас часткових однозначних функцій із D у R позначимо D R, клас тотальних (усюди визначених) багатозначних функцій – D R, тотальних однозначних функцій – D R.

Введені позначення класів функцій дозволяють перейти до формалізації програмних понять. Формалізми, які виникають будемо називати програмними системами.

3.3. Програмні системи

Програмні системи – це специфічна форма фіксації рівня абстракції програмних понять. Вона дозволяє визначити сукупність понять, яка характеризує рівень, та їх властивості, що задаються сукупністю суджень. Програмні системи будуть визначатися відповідно до схеми розвитку програмних понять, що задається програмною пентадою. Кожне поняття представляється відповідною системою, яка фіксує зв’язок розглянутого поняття з іншими поняттями. Залежно від рівня абстракції такі системи можуть бути простими або дуже складними. Фактично повинна бути побудована мережа взаємопов’язаних систем.

Як ілюстрацію дамо визначення програмних систем, які знаходяться на гранично високому рівні абстракції.

Починаємо з системи даних. Оскільки ніяких властивостей даних не задано, то система даних Dt просто визначає деякий клас D, тобто Dt=<D>. Наступне поняття в пентаді – функція. Система функцій Fn – це пари <D, F>, де FD D. Імена функцій задаються як деяка множина Z, тому система імен Nm – це одноелементний кортеж <Z>. Відношення денотації (номінації) будемо трактувати як відображення den: Z F. Тому система денотації Dn є кортеж <den>. Остання трійка систем визначає в абстрактному виді семантику програм (система функцій), їх синтаксис (система імен) та зв’язок синтаксису із семантикою (система денотації). Тому доцільно ввести нову – функціонально-номінативну – систему, яка задає ці системи в їх єдності. Функціонально-номінативна система FNS – це кортеж <D, Fn, Nm, Dn>. Подальший розвиток буде здійснюватися конкретизацією введених систем.

Відзначимо, що функціонально-номінативна система може тлумачитись як алгебра даних: D – носій цієї алгебри, а операціями алгебри є функції, які задаються іменами з Z за допомогою відображення den. Далі це поняття буде розвинене до алгебри функцій.

При побудові таких систем виникає питання про форми їх подання. Наприклад, функціонально-номінативну систему FNS можна було б представити не у вигляді «ієрархічного» кортежу <D, Fn, Nm, Dn>, а у вигляді «плоского» кортежу <D, F, Z, den>. Кожна з форм уявлення може бути зручної в тих або інших випадках. Тому, щоб не обмежувати себе однією формою уявлення, приймемо наступну угоду про множинність форм подання програмних систем: залежно від цілей дослідження програмні системи можуть представлятися в різних формах.

Наступне поняття в пентаді – композиція, яке уточнимо в межах композиційної системи Cm(Z)=<D, F, C>, де C(Z F) F. Тут Z виступає як множина імен аргументів композицій.

Нарешті, формалізуємо поняття дескрипції. Насамперед зазначимо, що наявність композицій дозволяє ієрархічну побудову програм із деяких базових функцій багатократним застосуванням композицій. Тому дескрипції визначаються індуктивно. Інша обставина – дескрипції також будемо трактувати як відображення відповідно до теоретико-функціонального підходу. Тому для побудови дескрипцій необхідні множини імен базових функцій FN, композицій CN і аргументів композицій Z. Множина інфінітарних стандартних дескрипцій StDes задається індуктивно:

1) StDes(0)=FN;

2) StDes(i+1)={[cn ]| cnCN, Z StDes(i)}, i.

Тоді StDes = (i).

Наведене визначення використовує довільні відображення імен аргументів у множину раніше побудованих дескрипцій. Це дозволяє задавати дуже загальні, в тому числі й інфінітарні (нескінченні) дескрипції. У програмуванні звичайно обмежуються використанням фінітарных дескрипцій. Для виділення спеціальних класів стандартних дескрипцій уведемо відповідну програмну систему Ds(Z)=<FN, CN, Ds>, де DsStDes, яку назвемо стандартною дескриптивною системою.

Відношення денотації конкретизується як відображення den: Ds F. Внаслідок індуктивної побудови дескрипцій досить задати відношення денотації для імен базових функцій та імен композицій: den_fn: FN  F та den_cn: CN  C. Тоді значення den на dsDs задається індуктивно:

1) якщо ds=fn, fnFN, то den(ds)=den_fn(fn) ,

  1. якщо ds=[cn ], де =[zidsi| ziZ, dsiDs, iI] ,

то den(ds)=(den_cn(cn))([ziden(dsi)| iI]) .

У цьому випадку систему денотації можна задати як пару BDn=<den_cn, den_fn>. Тому функціонально-номінативна система конкретизується як композиційно-дескриптивна система CDS=<Cm(Z), Ds(Z), BDn>. Такі системи можуть тлумачитися як алгебри функцій, операціями яких є композиції.

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

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

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