
Зубенко, Омельчук - Програмування. Поглиблений курс
.pdf
Розділ І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 -арнозначні оператори оновлення називаються
X−Y -операторами.
Розглянуті вище оператори присвоювання є 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