Певне значення і ЗМІННИХ

Перш за все, необхідно підкреслити, що між значеннями і змінними є важлива і фундаментальне логічне разлічіе1 (гідно подиву те, наскільки часто в літературі зустрічаються помилкові погляди з цього питання) Автор слід трактуванні, викладеної в [51], і приймає за основу наведені нижче визначення

■&nbsp&nbsp&nbsp&nbsp Значення являє собою окремо узяту константу, наприклад, конкурують ную константу, яка виражається у вигляді цілого числа 3 Для значення не визна делено місце в часі або в просторі Але значення можуть бути представле ни в памяті за допомогою деякого методу кодування і такі подання або прояви {appearances автор віддає перевагу саме цей термін) характери зуются певним місцем розташування в часі і просторі Безумовно, різні прояви одного і того ж значення можуть існувати в різних позиціях в часі і просторі, кількість яких є необмежений вим Неформально кажучи, з цього випливає, що одне і те ж значення можуть мати багато різні змінні, в один і той же або в різний час Зокрема, відзначимо, що за визначенням значення не може бути поновлено, оскільки якби таке було можливо, то після подібного поновлення це було б уже інше значення

■&nbsp&nbsp&nbsp&nbsp Мінлива являє собою деяку позицію, в якій розміщується кон кретного прояв певного значення Мінлива, на відміну від значення, має своє положення в часі і просторі Крім того, безумовно, пере менниє, на відміну від значень, можуть бути оновлені це означає, що поточне значення розглянутої змінної може бути замінене іншим значенням, яке може залишатися тим же або відрізнятися від попереднього (Зрозуміло, і після поновлення розглянута змінна залишається тією ж самою)

Зверніть особливу увагу на те, що можливими значеннями є не тільки такі прості прояви, як ціле число 3 Навпаки, значення можуть бути як завгодно складними наприклад, значення може являти собою геометричну точку, багатокутник, рентгенівський промінь, документ XML, відбиток пальця, масив, стек, список, відношення (і тд і тп) Аналогічне зауваження, безумовно, відноситься також і до змінних

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

було описано, одне і те ж значення може проявлятися одночасно в багатьох різних контекстах Кожне з таких проявів, по суті, складається з деякого фізичного (перетвореного в певний код) подання розглянутого значення більше того, всі ці кодовані уявлення не обовязково повинні бути однаковими Наприклад, цілочисельне значення 3 в безлічі цілих чисел зустрічається тільки один раз (у всьому Всесвіті існує одна і тільки одне ціле число 3

як таке), але прояв цього цілого числа як свого поточного значення можуть одночасно містити як завгодно багато змінних Крім того, деякі з таких

1 Визначення цього важливого і корисного поняття наведено в [33]

проявів даного конкретного числа можуть бути фізично представлені за допомогою (припустимо) десяткового кодування, а інші – за допомогою двійкового кодування Отже, необхідно враховувати також логічне відмінність між проявом деякого значення, з одного боку, і внутрішнім кодом, або фізичним представленням даного прояви, з іншого боку

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

Типізація значень і змінних

Кожне значення має певний тип (цю думку рівним чином можна виразити так, що кожне значення відноситься до певного типу) Іншими словами, якщо v являє собою деяке значення, то v може розглядатися як деяка конструкція, позначена свого роду прапорцем, на якому зазначено: Я – ціле число, або Я – номер постачальника, або Я – геометрична точка (І тд) Відзначимо, що за визначенням будь окремо взяте значення завжди має один і тільки один тип2, який ніколи не змінюється З цього випливає, що різні типи є несумісними це означає, що вони не мають один з одним будь-яких загальних значень Більш того, справедливі наведені нижче твердження

■ Кожна змінна повинна бути явно оголошена як належить до деякого типу це означає, що всі можливі значення розглянутої змінної являють собою значення розглянутого типу;

■ Кожен атрибут кожної змінної відносини (див розділ 6), повинен бути явно оголошений як відноситься до деякого типу це означає, що кожне можли ве значення розглянутого атрибута являє собою значення рассматри ваемого типу

■ Кожен оператор (Див розділ 55), який повертає деякий результат, дол дружин бути явно оголошений як відноситься до деякого типу це означає, що будь-який допустимий результат, який може бути отриманий шляхом виклику рас розглянутого оператора, являє собою значення розглянутого типу

■ Кожен формальний параметр кожного оператора (див також розділ 55) повинен бути явно оголошений як відноситься до деякого типу це означає, що лю бій допустимий фактичний параметр, який може бути підставлений замість

2 Якщо не вважати тієї можливості, що підтримується спадкування типів така можливість не буде розглядатися до глави 20

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

■ Взагалі кажучи, кожне вираз на мові програмування має бути хоча б неявно оголошено як відноситься до деякого типу А саме, тип повинен бути оголошений для самого зовнішнього з операторів, що беруть участь в цьому виразі, де під самим зовнішнім оператором мається на увазі оператор, що виконується в останню чергу в процесі обчислення розглянутого вираження Наприклад, оголошеним типом вираження а * (b + с) є оголошений тип оператора * (Множення)

В якості додаткового зауваження слід зазначити, що викладені вище міркування, що стосуються операторів і формальних параметрів операторів, вимагають невеликого уточнення, якщо розглянуті оператори єполіморфними Оператор називається поліморфним, якщо він визначений в термінах деякого формального параметра Р, а фактичні параметри, відповідні Р, можуть мати різні типи при різних викликах Одним з найбільш наочних прикладів може служити оператор перевірки на рівність =. Допускається перевірка на рівність будь-яких двох значень v1 і v2 (але лише за тієї умови, що vl і v2 відносяться до одного і того ж типу), і тому оператор = є поліморфним – він може застосовуватися до цілих чисел, до символьних рядках, до номерів постачальників і фактично до значень будь-якого можливого типу Аналогічні зауваження відносяться і до оператора присвоювання : = (Який також визначений для кожного типу) – припустимо застосовувати операцію присвоювання будь-якого значення v будь-якої змінної V, але також за умови, що v і V відносяться до одного і того ж типу (Безумовно, операція привласнення закінчується невдачею, якщо в ній порушуються деякі обмеження цілісності, як описано в розділі 9, але вона не може закінчитися невдачею через помилки, повязаної з невідповідністю типів як таковой3) Інші приклади поліморфних операторів можна знайти в розділі

20 і в інших розділах цієї книги

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*