- •1) Програма. Комп’ютерна програма. Програма, як система.
- •2) Програмне забезпечення. Життєвий цикл.
- •7) Лексичний рівень інкапсуляції. Алфавіт мови. Лексеми. Лексичний аналіз. Лексичний устрій тексту програм.
- •8)Напередвизначені позначення. Позначення, що визначаються.
- •9) Тип, загальні положення.
- •Класифікація напередвизначених типів
- •12) Прості змінні
- •13) Зміна значень програмних об’єктів
- •Оператор присвоювання
- •14) Вираз
- •15) Блок
- •Нумерація, номер і глибина вкладеності блока
- •Мембранний ефект. Регулювання області дії
- •16) Регулювання періоду існування
- •Глобальне розрізнення видимості позначень (імен)
- •17) Суворо типізована мова
- •17, 18) Зведення типів
- •Явне зведення типів
- •Неявне зведення типів
- •Уникнення суворої типізації
- •21) Стратегія динамічного розподілу пам'яті на основі блока
- •22) Стратегія розподілу пам'яті в купі
- •Реалізація стратегії статичного розподілу пам'яті
- •Динамічний розподіл пам'яті на основі блока
- •Динамічний розподіл пам'яті на основі купи.
- •24) Структурна капсула
- •25) Структурні оператори
- •26) Оператори вибору
- •27) Оператор повторення
- •Форма оператора повторення do
- •Форма оператора повторення while
Динамічний розподіл пам'яті на основі блока
Оскільки у мовах Pascal і С блок використовується по різному, то реалізації зазначеної стратегії також різняться.
Реалізація в мові Pascal. Динамічно розподіляються об'єкти описані в підпрограмах. З огляду на те, що підпрограми вивчатимуться далі, саме далі буде розглянуто такі об'єкти.
Реалізація в мові С. Динамічно розподіляються об'єкти, описані у блоці за допомогою описувача auto. Наприклад, у програмі
main ( )
{auto nA int;
auto pnA * int;
:
:
},
пам'ять під об'єкти (змінні) nA і pnA буде розподілено динамічно «при вході» у блок, а конструкції об'єктів буде розміщено у стеку. Оскільки більшість об'єктів розподіляється саме в такий спосіб, то в мові С прийнято рішення замовчувати описувач auto.
Динамічний розподіл пам'яті на основі купи.
Купа (heap) - це спеціальний спосіб розподілювана пам'ять. Особливість розподілу купи полягає в тому, він здійснюється на вільне місце в пам'яті-купі під управлінням спеціального засобу – менеджера купи.
Спільним для більшості мов є те, що для реалізації цієї стратегії використовується вказівна типізована змінна. При цьому сама змінна розподіляється статично або динамічно на основі блока, а її розіменований уручну вміст розміщується в купі.
Реалізація в мові Pascal. Для розподілу пам'яті використовується спеціальний оператор new. Для вивільнення пам'яті в купі в мові Pascal використовується оператор despose, а в мові С оператор delete. Тоді, наприклад, у програмі:
program MyProgram
var|
pnA : ^ingeger;
nA : integer;
begin
:
new (pnA):
^pnA : = nA;
:
despose pnA
end.,
розіменований вручну вміст змінної pnA буде розподілено в купі.
Реалізація в мові С. Для розподілу пам'яті використовується також, як і в мові Pascal спеціальний оператор new. Тоді, наприклад, у програмі
main ( )
{pnA * int;
nA int;
:
:
pnA = new(int);
*pnA = nA;
:
delete pnA;
}
розіменований вручну вміст змінної pnA буде розподілений в купі.
«Сміття» можна створити, наприклад, наступним чином:
main ( )
{pnA * int;
nA int;
:
:
pnA = new(int);
*pnA = nA;
pnA=new(int);
:
delete pnA;
}
24) Структурна капсула
Лексеми виступають як частини, що утворюють структурну капсулу, а оболонка капсули і інтерфейс реалізуються через організаційні обмеження, які, по-перше, забороняють довільний доступ до конструкцій усередині капсули, а по-друге, забороняють довільний вихід із капсули . Це стосується застосування операторів goto, break, exit або continuous. Обмеження, технічно можна подолати, але якщо їх враховуючи, то у будь-якої структурної капсулі передбачається тільки один вхід і один вихід, за допомогою яких вона з’єднується з іншими капсулами.
Структурні капсули називаються структурними операторами і утворюють основу структурного операторного базису мов|язиків| програмування.