- •1) Програма. Комп’ютерна програма. Програма, як система.
- •2) Програмне забезпечення. Життєвий цикл.
- •7) Лексичний рівень інкапсуляції. Алфавіт мови. Лексеми. Лексичний аналіз. Лексичний устрій тексту програм.
- •8)Напередвизначені позначення. Позначення, що визначаються.
- •9) Тип, загальні положення.
- •Класифікація напередвизначених типів
- •12) Прості змінні
- •13) Зміна значень програмних об’єктів
- •Оператор присвоювання
- •14) Вираз
- •15) Блок
- •Нумерація, номер і глибина вкладеності блока
- •Мембранний ефект. Регулювання області дії
- •16) Регулювання періоду існування
- •Глобальне розрізнення видимості позначень (імен)
- •17) Суворо типізована мова
- •17, 18) Зведення типів
- •Явне зведення типів
- •Неявне зведення типів
- •Уникнення суворої типізації
- •21) Стратегія динамічного розподілу пам'яті на основі блока
- •22) Стратегія розподілу пам'яті в купі
- •Реалізація стратегії статичного розподілу пам'яті
- •Динамічний розподіл пам'яті на основі блока
- •Динамічний розподіл пам'яті на основі купи.
- •24) Структурна капсула
- •25) Структурні оператори
- •26) Оператори вибору
- •27) Оператор повторення
- •Форма оператора повторення do
- •Форма оператора повторення while
16) Регулювання періоду існування
Період існування оголошеного об'єкта визначається часом виконання блоку. Тому, якщо у блоці оголошений об'єкт, то він існує доти, доки виконується даний блок. У деяких мовах є засоби, які передбачають дострокове припинення існування об'єкта. Наприклад, посилання в мові Аdа можна знищити до закінчення виконання блока, скориставшись спеціальними засобами [3].
Шляхом опису двох об'єктів з однаковими позначеннями регулюється область дії об'єкта за допомогою мембранного ефекту. Водночас, якщо один об'єкт (охопного блока) стає недоступним, він не припиняє існування, оскільки відповідний блок і далі виконується.
Глобальне розрізнення видимості позначень (імен)
Іноді, в разі розгляду об'єктів, що мають одне і теж позначення, необхідно подолати мембранний ефект. Це дещо штучне бажання, але для його виконання у мовах програмування передбачається оператор глобального розрізнення видимості позначень (імен), який має позначення ::.
17) Суворо типізована мова
Мова програмування є суворо типізованою (restricted type language) , якщо виконуються такі умови:
кожний об'єкт у програмі пов’язується з багатьма значеннями одного типу через використання явного опису типу (виняток становить вираз);
тип об'єкта є синтаксичною властивістю і, тому його можна визначити, не виконуючи програми;
перетворення типу здійснюється шляхом перетворення значення одного типу в іншій, і це перетворення зазначається у програмі явно;
неявні перетворення шляхом інтерпретації подання значення одного типу значенням іншого типу заборонені.
Таким чином, суворо типізовані мови вимагають, щоб типи значень об'єктів зазначались явно і об'єкти використовувалися суворо згідно з цими типами. Наприклад, бітова модель значення цілого типу не може інтерпретуватися як дійсне значення, а символьне значення не може інтерпретуватися як ціле.
Використання суворо типізованої мови веде до того, що помилки, яких припустилися при використанні об'єктів, унаслідок невідповідності їхніх типів, буде виявлено ще на етапі трансляції. Це, у свою чергу, веде до підвищення надійності та переносності програм, полегшує їх розуміння.
Існують механізми уникнення суворої типізації, проте використовувати їх доводиться вкрай рідко, тому програми, в яких задіяно механізми уникнення суворої типізації, вважаються недосконалими. З огляду на це, використовувати для програмування слід лише суворо типізовані мови, а до уникнення суворої типізації не потрібно вдаватися у програмуванні суворо типізованою мовою.
17, 18) Зведення типів
Через використання у програмах об'єктів, що мають різні типи значень, постає потреба в перетворенні значень типів. Для цього в мовах передбачається механізм зведення типів [22].
Зведення типів (coercion casting types) – це перетворення значень одного типу до значень іншого типу. Зведення може виконуватись як на наперед визначених, так і на визначуваних типах. Розрізняють явне і неявне зведення типів. У суворо типізованих мовах дозволене тільки явне зведення типів. Якщо у суворо типізованій мові, потрібне неявне зведення типів, то для цього використовуються механізми уникнення суворої типізації. При цьому вважається, що програміст свідомо використовує ці механізми, і вся відповідальність за помилки, що виникли, покладається на нього.