Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Зубенко, Омельчук - Програмування. Поглиблений курс

.pdf
Скачиваний:
51
Добавлен:
07.03.2016
Размер:
4.72 Mб
Скачать

Розділ ІI

ЕЛЕМЕНТИ ІНФОРМАТИКИ

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

2.1. Інформаційні системи

¾Вхідні системи

¾Вихідні системи

¾Інформаційні системи в першому наближенні

¾Абстрактні алгоритми

¾Структурні алгоритми

¾Конструктивні інформаційні системи

¾Cкладність інформаційних систем

Ключові слова: вхідна система, інформаційний об'єкт, інформаційне поле, X-фрейм, оператор і операція присвоювання, групове присвоювання, X-арна функція,

нормальне розширення X-арної функції, еквітонна функція, еквітонна операція, ек- вітонна V -операція, X Y -оператор, векторний аналог і параметризований век-

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

сті O(g(n)) та Ω(g (n )) .

ПРОГРАМУВАННЯ

Мета даного підрозділу деталізувати поняття інформаційної системи, введене у 0.1. Нагадаємо, що кожна інформаційна система складається із суб'єкта-ініціатора, суб'єкта-обробника та функцій кодування й декодування, які їх зв'язують. У моделях комунікативних систем дані суб'єкти подаються предметними областями із сукупностями запитів (вхідними системами) і системами обробки інформації (вихідними системами).

2.1.1. ВХІДНІ СИСТЕМИ

Якщо абстрагуватись від несуттєвих деталей і зосередитися на се- мантиці, то суб'єкт-ініціатор можна обмежити предметною областю й сукупністю запитів.

Предметні області є наближеними моделями систем-об'єктів зовні- шнього світу та взаємозв'язків між ними. Оскільки реально предметні області багатосортні, то природно звернутись для їхнього подання до багатосортних Ω -систем.

Нехай Ω = (Ωs , Ωc , Ωv , Ωf , Ωp ) певна сигнатура типу

τ = (σ1 , σ2,K; ν1, ν2,K ); A = (ΩsI ,ΩcI ,ΩvI ,ΩIf ,ΩIp ) Ω -система на уні-

версумі U , породжена інтерпретацією I , а Θ (ΩvI )U довільна суку-

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

Нехай L мова програмування для формулювання запитів у пред- метній області A .

Трійка S=(A,L,Θ) називається вхідною системою інформаційних систем.

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

формули Φ = Φ

(x1,...,xn ,y1,...,ym ), записаним мовою L ,

де

X = {x1,...,xn }

сукупність вхідних предметних змінних,

а

Y = {y1,...,ym }

вихідних, і значення останніх прямо обчислюються за

112

Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ

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

2.1.2. ВИХІДНІ СИСТЕМИ

Тепер звернемося до суб'єктів-обробників інформації (далі просто обробників), які отримують від суб'єкта-ініціатора повідомлення з ін- формацією про значення вхідних параметрів і програму із запитом, обробляють її й повертають результати обробки.

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

Нехай V = {v1,v2,...} певна сукупність імен. На природу імен не

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

співвідношень між ними. Нехай U = {a1,a2,...} довільний універсум

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

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

Правила означень імен у вигляді часткових відображень α :V U задають зв'язок між іменами та їхніми значеннями. Вважається, що таких імен у кожному правилі означень скінченна кількість. Нехай

V U сукупність усіх означень імен. Якщо поглянути на означення імен із теоретико-множинних позицій, то фактично йдеться про вже знайому нам індексацію значень іменами.

Якщо за ім'ям закріплено тільки одне можливе значення в певному контексті (певній сукупності означень), то його називають констан- тою, якщо ж кілька то змінною. У кожний окремий момент комуні- кативного процесу змінна або має якесь конкретне значення, або не-

113

ПРОГРАМУВАННЯ

означена. Нехай a = vα значення імені v у означенні α . Тоді про пару (v,a ) будемо говорити як про інформаційний об'єкт. Якщо змін- на v не означена в означенні α , то цей факт записується vα = # , або (v,#). Кажуть, що змінна в цьому означенні беззмістовна.

Розглянемо індексовані слова 1000(2) та 1000(roma ) в алфавіті двійко-

вих цифр і римській системі числення (індекс указує на систему чис- лення). У першому випадку слово іменує десяткове число 8, тобто число 8 є значенням імені 1000(2) . У другому випадку слово не означене,

оскільки воно взагалі не входить до сукупності імен римської системи. Кожне означення породжує фіксовану скінченну множину інфор-

маційних об'єктів з іменами з V і значеннями з U . Ця сукупність збі- гається з графіком означення α . І навпаки, кожне скінченне функці- ональне відношення між множинами V та U задає певне означення імен, тобто визначає певну множину інформаційних об'єктів над V та U . Подібні множини інформаційних об'єктів будемо називати ін-

формаційними полями (іменними множинами за В.Н. Редьком).

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

Якщо дане ім'я не є формально означеним у даному полі, то вважа- ється, що воно теж входить до нього, але із беззмістовним значенням. У програмуванні інформаційні поля називають даними, а функції, що утворюють і перетворюють дані операторами. При цьому конкретні дані можуть складатися як з одного інформаційного об'єкта, так і зі скінченного їх набору. Результат застосування оператора f до поля

α будемо позначати як звичайними термами, так і виразом вигляду f |α . Казатимемо, що одне інформаційне поле β включає (містить) бі- льше інформації, ніж інше інформаційне поле α , якщо α β.

Зазвичай при роботі з інформаційними полями увага фокусується не на всій їхній інформації, а тільки на актуальній на даний момент її частині, що міститься в певному фрагменті поля. Це саме стосується й перетворення інформаційних полів змінюється не вся їхня інфор- мація, а тільки та, що належить певному фрагменту. Такі актуальні фрагменти полів отримали назву Х-фреймів. Х-фреймом називається довільна скінченна сукупність імен X V змінних, які складають об- ласті визначення або значень певного оператора.

Найчастіше змінюється значення одного інформаційного об'єкта (змінної) з певним іменем v . Тут можливий один із двох варіантів: 1) змінна v із певним значенням a вже є в полі; 2) дана змінна ще не

114

Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ

означена в ньому. У першому випадку на підставі аналізу Х-фрейму, до якого входять ті інформаційні об'єкти, з якими пов'язана змінна v , і пе- вних обчислень значення змінної v у полі замінюється на нове значення b . У другому випадку, знову ж таки на основі подібного аналізу, а час- тіше без такого (ініціалізація змінної, введення вхідної інформації), змін- на v отримує початкове значення b0 і приєднується до поточного поля.

У першому випадку заміна значень змінної в полі називається при-

своюванням. Оператор присвоювання позначається ":=" і має три ар-

гументи (операнди): вираз le , який задає ім'я v , функцію re для об- числення нового значення змінної та інформаційне поле α з області

визначення функції re . Нехай v = le (α), a = re (α). Позначимо αv ре-

зультат вилучення з поля α змінної v . Формально результат дії опера- тора присвоювання записується так:

def

le := re|α = αv {(v,a )}.

Вираз le та функція re називаються відповідно l- та r-виразами16. Загальні оператори присвоювання можна дещо структурувати,

якщо ввести поняття операції присвоювання. Операція присвоюван- ня, на відміну від оператора присвоювання, виконує паралельно дві дії: основну й побічну. Основна за іменем v , значенням a й поточ- ним станом інформаційного поля α повертає як результат a :

def

v a(α) = a . Побічна ж за тими самими аргументами оновлює зна-

def

чення змінної v у полі α :v a|α = αv {(v,a )}.

Можна синтаксично підкреслити, про які саме дії обидві чи тіль- ки побічну йдеться в операції присвоювання (так як це робиться, наприклад, у мові С). Якщо тільки про побічну, то терм операції за- кінчують символом ‘;'. У цьому випадку оператор присвоювання le := re можна подати як результат підстановки у 3-арну операцію присвоювання виразів le та re на місце першого й другого аргумен- тів із символом ‘;' у кінці: le := re = le re ;.

Приклад 2.1. Нехай

X = {x,y} V

та α = {(x,2),(y,5)}. Розглянемо

вираз-присвоювання (*)

x x + 2 y

та оператор-присвоювання (**)

x x + 2 y ;. l-виразом у них є ім'я змінної x , r-виразом функція, яка з довільного стану X -фрейму підставляє значення змінних x та

16 Від положення їх в операторі присвоювання: англ. – left (лівий) і right (правий).

115

ПРОГРАМУВАННЯ

y у терм x + 2 y та обчислює значення. В обох випадках ім'я x і отримане значення підставляються в операцію присвоювання. Якщо

застосувати конструкції (*)

та (**) до поля α , то вираз присвоювання

(*) набуде значення 12,

а поле α трансформується в

поле

β = {(x,12),(y,5)}. Результатом же оператора присвоювання (**)

буде

тільки нове поле β = {(x,12),(y,5)}

Операція присвоювання дозволяє ввести поняття групового при- своювання. Ураховуючи, що вирази-присвоювання є одночасно й r-виразами, їх можна підставляти в ліву частину операцій присвою- вання. Груповими присвоюваннями називаються складені присвою-

вання вигляду x (y e ), x (y (z e )) тощо. Дужки в них мо- жна опускати. У результаті групового присвоювання z x x + 2 y поле α трансформується в поле β = {(x,12),(y,5),(z,12)}, а в результаті присвоювань z x z 0 та z x 2 * (z 1) – відповідно в поля β ={(x,0),(y,0),(z,0)} та γ ={(x,2),(y,2),(z,1)} (див. попередній приклад).

Можна піти далі та структурувати самі r-вирази, виділивши в них операції читання значень змінних у інформаційних полях:

def

r(v)|α = αv .

За означенням, якщо змінна v не входить у поле даних α , то

r(v)|α = # .

Приклад 2.2. Якщо повернутись до прикл. 2.1, то r-вираз у правій частині операції присвоювання можна подати у вигляді терму

r (x )+ 2 r (y), а саму операцію присвоювання як x r (x )+ 2 r (y). Обчислимо її значення в полі α :

(x r (x )+ 2 r (y))|α = (2 + 2 5)|α =12

У мовах програмування функції читання змінних подаються ско- рочено просто як їхні імена, а відрізняють їх від імен змінних за контекстом. Наприклад, в операторі z z +1; перше входження є іменем змінної (l-виразом), а друге операцією читання.

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

Y -арнозначних функцій. Нехай X = {x1,...,xn } V довільний

116

Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ

Х-фрейм. Функція f називається X -арною, якщо Df XU . X -арна

функція природним чином поширюється на всі інформаційні поля (дані), що містять даний Х-фрейм.

r

Функція f називається нормальним розширенням X -арної функ-

ції f , якщо α Df β V U (α β fr(β) = f (α)).

Нормально розширені X -арні функції отримали назву еквітонних r

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

інформаційні об'єкти поза цим Х-фреймом жодним чином не впли- r

вають на значення f (α) .

Саме за допомогою еквітонних Х-арних функцій здійснюється обробка інформації у вихідних системах.

Нехай X,Y певні сукупності імен. За областю значень серед екві- тонних X -арних функцій виділяють: 1) Y -арнозначні оператори,

якщо E f Y U ; 2) X -арні операції (предикати), якщо E f U ; 3) V - операції, якщо E f V .

Еквітонні X -арні операції та предикати беруть участь у підготовці нових значень змінних при перетворенні інформаційних полів. Серед них виділяють уже згадувані операції читання, які просто беруть по- точні значення змінних у даному інформаційному полі. Алгебричні системи з еквітонними X -арними операціями та предикатами (уза- гальнені алгебричні системи) мають усі загальні властивості класич- них алгебричних систем (див. вправу 12).

Серед X -арних операцій є операції з побічним ефектом. Це опе- рації, які в процесі обчислення результату можуть змінити поточне значення певної змінної X -фрейму. Типовими прикладами операцій із побічним ефектом є операції присвоювання.

V -операції виробляють імена інформаційних об'єктів. Існує таке поняття, як доступ до даного в інформаційних полях за його іменем. При цьому розрізняють доступи для здійснення операцій читання (взяття значення даного) і для запису (заміни значення даного). Опе- рації читання й запису називаються інтерфейсними й використову- ють V -операції для реалізації доступу до даних.

Y -арнозначні оператори виробляють нові стани Y -фрейму.

117

ПРОГРАМУВАННЯ

Увага! Еквітонні операції (V -операції) трактуються як

-арнозначні оператори з областю значень U =U ( V =V ) ► Позначимо через αY результат вилучення з поля α змінних

Y-фрейму, у тому числі й беззмістовних. Фундаментальна роль у обро-

бці даних належить операції оновлення даних , яка узагальнює опе- рацію присвоювання ← і поточний стан довільного Y -фрейму в ін- формаційному полі α замінює на новий його стан β:

def

α ↑ β = αY β.

Після виконання операції оновлення змінні Y-фрейму набувають або нових значень, або початкового (якщо до цього були беззмістов- ними в α ). Нехай f Y -арнозначний оператор. Y -арнозначним

оператором оновлення f ; називається результат підстановки в опе- рацію оновлення оператора f на місце другого аргументу. Для дові-

def

льного поля α : f ;|α = α ↑ f (α).

Зазначимо, що -арнозначні оператори залишають інформаційне

поле без змін ( α= α ).

Еквітонні X -арні Y -арнозначні оператори оновлення називаються

XY -операторами.

Розглянуті вище оператори присвоювання є X Y -операторами.

Оператор

присвоювання

x x + 2 y ;

із прикл. 2.1

є

{x,y} {x}-

оператором.

 

 

 

 

 

 

 

 

 

X Y - оператори здійснюють усі перетворення інформаційних полів

у вихідних системах.

 

 

 

 

 

 

 

 

 

Якщо

зафіксувати

певний порядок

імен

у

сукупності

X Y = {x1,...,xn }, то для кожного X Y -оператора f

існує його век-

торний

аналог

відображення

 

 

:U n U n

 

таке,

що

f

 

α = {(x1,a1 ),...,(xn ,an )} Df та β = {(x1,b1 ),...,(xn ,bn )} E f :

 

 

f |α = β

 

(a1,...,an )= (b1,...,bn ).

 

 

 

 

f

 

 

 

Кажуть,

що X Y -оператор обчислює свій векторний аналог.

За-

звичай цікавим є не загальний векторний аналог, а параметризована його проекція fX ,Y , що відповідає на вході іменам із X , а на виході

з Y . Запити вхідних систем у вигляді формул ПЧП містять специфі- кації певних векторних відображень, для яких у процесі програму- вання будуються X Y -оператори, що їх обчислюють.

118

Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ

Загальна схема перетворення (оновлення) інформаційного поля пе- вним X Y -оператором виглядає так: 1) береться поточна інформація з X -фрейму поля; 2) на її підставі отримується нова інформація за допомогою звичайних n -арних операцій; 3) нова інформація зано-

ситься у Y-фрейм. Дану схему можна дещо конкретизувати:

1)спочатку V -функції формують імена змінних із X -фрейму, а операції читання за цими іменами знаходять їхні поточні значення в інформаційному полі;

2)n -арні операції за цими значеннями виробляють нові значення

змінних Y-фрейму;

3) V -функції виробляють імена Y-фрейму, після чого один або кі- лька операторів присвоювання (або введення вхідної інформації) ви- робляють новий стан Y -фрейму й усього інформаційного поля.

Увага! Окрім розглянутих X Y -операторів із фіксованими X -фреймами у вихідних системах зустрічаються і X Y -оператори зі змінною структурою X -фрейму. У такому X Y -операторі X є пара- метром, фактичне значення якого (сукупність імен) визначається тільки в процесі виклику оператора (як у випадку узагальнених опе- рацій над індексованими сукупностями множин (див. підрозд. 1.2))

Таким чином, для обробки інформації в інформаційних системах мають бути наявні такі елементи:

1) сукупність V U інформаційних полів з іменами з V і значеннями

зуніверсума U ;

2)сукупності інтерфейсних V -операцій {hk } і операцій читання {gl };

3)сукупність звичайних (і параметризованих X ) X Y -операторів {Οl } для перетворення інформаційних полів;

4) базова алгебрична система U = (U ;{fi },{pj }) n -арних операцій і

предикатів на універсумі для обчислення нових значень змінних.

Усі чотири наведені елементи об'єднаємо в узагальнену алгебричну систему D маніпулювання даними вихідної системи. Отримавши по- відомлення про запит і його аргументи, обробник першу інформацію переводить у X Y -оператор f із D , що реалізує запит, а на підставі

другої формує вхідні дані й застосовує до них f . Для подання X Y -

операторів і всієї системи маніпулювання даними D обробник викори- стовує спеціальну внутрішню мову програмування Lвн , а Виконавець

B повинен уміти реалізовувати X Y -оператори, подані в мові Lвн .

Пара Sout = (B,Lвн ), що складається з Виконавця та внутрішньої мови

програмування, називається вихідною системою.

119

ПРОГРАМУВАННЯ

Важливим прикладом вихідних систем є конкретні ОбС. Кожна з них має певну систему команд і даних із конкретними базовими опе- раціями, іменами, типами значень, інтерфейсними функціями й су- купність X Y -операторів, які описуються внутрішньою мовою ма- шинних програм даної ОбС, а також Виконавця апаратну частину, що реалізує ці програми.

Найбільш універсальною вихідною системою є людина з усіма при- родними та штучними внутрішніми мовами, якими вона володіє.

2.1.3. ІНФОРМАЦІЙНІ СИСТЕМИ

ВПЕРШОМУ НАБЛИЖЕННІ

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

Sin та Sout певні вхідна й вихідна системи, Θ сукупність вхідних оцінок змінних. Довільні однозначні відображення c : (ΩVI )U VU та

d:VU (ΩvI )U називаються відповідно функціями кодування й декодуван-

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

Четвірка S = (Sin ,Sout ,c,d)

називається інформаційною системою.

Інформаційна система

S

називається

узгодженою відносно запиту

Φ = Φ(x1,...,xn,y1,...,ym ), де

X ={x1,...,xn}

сукупність імен його вхідних

параметрів, а Y ={y1,...,ym}

сукупність імен його результуючих парамет-

рів, якщо у вихідній системі Sout знайдеться X Y -оператор O такий, що

α Θ β (ΩvI )U

 

 

β = d

(

Ο|

n

x

α = a

m

y

β = b

 

Φ(a ,...,a ,b ,...,b

 

(*).

 

 

 

i &

j

)

 

 

c(α) )&

i

 

j

 

1

n

1

m

 

 

 

 

 

 

 

i =1

 

j =1

 

 

 

 

 

 

 

 

Умова (*) означає: якщо закодувати будь-який варіант вхідних па- раметрів запиту Φ і застосувати до отриманого інформаційного поля оператор Ο , а потім узяти результат роботи Ο і розкодувати його, то після підстановки в запит Φ вхідних і отриманих вихідних значень параметрів xi та y j запит буде задоволено. Назвемо оператор Ο реа-

лізацією запиту Φ . Інформаційна система називається узгодженою, якщо вона узгоджена для всіх запитів вхідної системи.

120

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