- •1) Програма. Комп’ютерна програма. Програма, як система.
- •2) Програмне забезпечення. Життєвий цикл.
- •7) Лексичний рівень інкапсуляції. Алфавіт мови. Лексеми. Лексичний аналіз. Лексичний устрій тексту програм.
- •8)Напередвизначені позначення. Позначення, що визначаються.
- •9) Тип, загальні положення.
- •Класифікація напередвизначених типів
- •12) Прості змінні
- •13) Зміна значень програмних об’єктів
- •Оператор присвоювання
- •14) Вираз
- •15) Блок
- •Нумерація, номер і глибина вкладеності блока
- •Мембранний ефект. Регулювання області дії
- •16) Регулювання періоду існування
- •Глобальне розрізнення видимості позначень (імен)
- •17) Суворо типізована мова
- •17, 18) Зведення типів
- •Явне зведення типів
- •Неявне зведення типів
- •Уникнення суворої типізації
- •21) Стратегія динамічного розподілу пам'яті на основі блока
- •22) Стратегія розподілу пам'яті в купі
- •Реалізація стратегії статичного розподілу пам'яті
- •Динамічний розподіл пам'яті на основі блока
- •Динамічний розподіл пам'яті на основі купи.
- •24) Структурна капсула
- •25) Структурні оператори
- •26) Оператори вибору
- •27) Оператор повторення
- •Форма оператора повторення do
- •Форма оператора повторення while
27) Оператор повторення
Оператор використовується для опису дій, які мають повторюватися стільки разів, скільки це необхідно. Застосовуються дві форми оператора повторення (циклу) (repetition (cycle) statement) – do і while.
Форма оператора повторення do
Оператор, виконання якого повторюється утворює, так зване тіло циклу. Виконання оператора do починається з виконання на обраному векторі оператора, розміщеного в тілі циклу, стану на обраному векторі. Після виконання обчислюється вираз G, результат якого бульового типу. Якщо результат true, то виконання циклу завершується і вектор передається оператору наступному за цим оператором повторення. У протилежному випадку вектор-стан передається оператору в тілі циклу, і він знову виконується.
Якщо вираз G не чутливий до результату обчислення оператора в тілі циклу, то або оператор тіла виконується один раз, або виконання циклу ніколи не завершується (говорять, що оператор зациклюється). Оскільки, ці випадки не становлять інтересу, то вважається, що позначення прийнаймі деяких об'єктів із G мають з’являтися в лівих частинах операторів присвоювання в тілі циклу.
Форма циклу do має використовуватися тоді, коли необхідно змінити (повторним застосуванням оператора в тілі циклу) деяку ситуацію, описувану виразом G. Початок циклу do відбувається в умовах що не відповідають G, а оператор у тілі циклу виконується хоча б двічі. Тому цикл do використовується тоді, коли ситуація, яку намагається встановити програміст, описується виразом G, що не має жодного сенсу доти, доки не буде виконано деяку конкретну дію, котра визначає значення цього виразу і, отже її сенс. Це істотно для ініціалізації (підготовки) циклу тому, якщо підготовка циклу відбувається у тілі циклу, то, вочевидь, її необхідно виконати один раз і при подальших повтореннях пропускати.
Наприклад, для мови Pascal:
repeat
if ((nA <> 0) and (nA >= 10))
then
nA := 0
else
nA := nA + 1;
until nA < 10;,
тут оператор if-then-elsе утворює тіло циклу, і вираз nA < 10 (після until) – це вираз G. Оператор присвоювання в частині then оператору вибору виконує ініціалізацію циклу.
Синтаксис оператора для мови С має такий вигляд (дод. В):
Наприклад, для мови С:
do
{
nA = nA + 1;
nI = nI + 1;
}
while (nI < 10);
тут складений оператор
{
nA = nA + 1;
nI = nI + 1;
}
є тілом циклу, а вираз відношення nI < 10 – це вираз G.
Форма оператора повторення while
Ця форма оператора повторення використовується тоді, коли якусь дію (оператор) необхідно повторювати доти, доки зберігається умова G. На відміну від форми do, яка починається у стані G – «ні», виконання while починається у стані G – «так». Для цієї форми оператора ініціалізація циклу відбувається за межами оператора повторення і успадковується як частина вектора–стану. Тому, існує небезпека утворення сильного взаємозв'язку між попередніми операторами та оператором циклу.
Синтаксис цієї форми оператора повторення для мови Pascal має наступний вигляд (дод. А):
Наприклад, для мови Pascal:
while nI < 20 do
begin
nA := nA + nI;
nI := nI + 1;
end;.
Тут складений оператор є тілом циклу.
Синтаксис оператора для мови С має такий вигляд (дод. В):
Наприклад, для мови С:
while (nI < 20)
{
nA = nA + nI;
nI = nI + 1;
Тут також складений оператор є тілом циклу.