Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция Pascal_mat №6_7.doc
Скачиваний:
4
Добавлен:
02.12.2018
Размер:
149.5 Кб
Скачать

Лекція №6-7

Тема: Оператори циклу в мові Паскаль. Цикл з параметром. Цикл з передумовою. Цикл з післяумовою. Порівняльний аналіз операторів циклу. Оператор переходу.

Оператори повторення

Цикл - алгоритмічна структура для запису багаторазово повторюваних дій.

Оператори повторення мови Turbo Pascal підтримують напряму три із чотирьох класичних керуючих конструкцій повторення: цикл із передумовою (while), цикл із післяумовою (repeat) і цикл із лічильником (for).

Оператор циклу з передумовою while

Оператор while разом з оператором case є самими універсальними керуючими конструкціями. За допомогою операторів case можна записати умову розгалуження довільної складності, а за допомогою оператора while можна записати будь-яку циклічну дію.

Спрощено загальну структуру оператора циклу із передумовою можна зобразити одним із двох наступних способів.

Якщо тіло циклу складається з одного оператора

Якщо тіло циклу включає більше одного оператора

while Умова do

Оператор

while Умова do

begin

Оператор;

Оператор;

. . .

Оператор

end

Оператор while дозволяє багаторазово виконувати ті самі дії залежно від деякої Умови, що записується між ключовими словами while і do і повинне бути виразом логічного типу, тобто приймати тільки значення True або False.

Опишемо роботу циклу while більш докладно. Спочатку, при вході в цикл, обчислюється Умова. Якщо вона дорівнює False, то вхід у цикл не виконується й керування передається операторові, що випливає безпосередньо за Операторами тіла циклу. Якщо ж Умова дорівнює True, то відбувається вхід у цикл і однократне виконання Операторів його тіла. Як тільки досягнуто кінець тіла циклу, керування знову передається на його заголовок, де знову обчислюється Умова. Якщо значення Умови усе ще дорівнює True (що залежить від зміни значень змінних під час попереднього виконання Операторів циклу), то тіло циклу виконується ще один раз, і так далі. Як тільки чергове обчислення Умови циклу дає значення False, робота циклу завершується.

З метою порівняння властивостей операторів циклу while, repeat і for при описі роботи кожного з них розглянемо, як з їхньою допомогою записується той самий фрагмент програми, що обчислює суму елементів масиву розмірністю в n елементів.

Const n = 20;

Begin

. . .

Summa := 0;

i := 1; {Повинні бути початкові установки змінних, що стоять в умові циклу}

while i <= n do

begin

Summa := Summa + A[i];

i := i + 1; {Як мінімум в одному операторі тіла циклу повинна бути зміна}

{змінних умови циклу, що приводять в результаті до хибності умови}

end

. . .

end.

О ператор циклу з післяумовою repeat

Оператор циклу з післяумовою складається із ключового слова repeat;, за яким ідуть оператори тіла циклу, і замикаючого ключового слова until, після якого .називається умова закінчення циклу.

Спрощено загальну структуру оператора repeat можна представити так:

repeat

Оператор; Оператор;

Оператор

until Умова

Помітимо, що на відміну від while, оператор repeat не вимагає використання складеного оператора, коли в його тілі необхідно записати більше одного оператора.

Крім того, оператор repeat є не настільки універсальним, як оператор while, оскільки його Умова розташовується наприкінці тіла циклу й оператори його тіла будуть, на відміну від циклу while, завжди виконуватися як мінімум один раз. Це означає, що оператор repeat не годиться для запису циклів, у яких може виникати ситуація, коли тіло циклу не повинне виконуватися жодного разу.

Вираз, що використовується як Умова закінчення циклу, повинен давати результат логічного типу.

Загальний принцип роботи циклу repeat такий же, як у циклу із передумовою, але на відміну від while, Умова перевіряється не перед виконанням тіла циклу, а після нього, і керування циклом repeat прямо протилежно керуванню циклом while. Toбто цикл триває поки Умова дорівнює False і закінчується, коли Умова стає рівною True.

Const n = 20;

Begin

. . .

Summa : = 0;

i := 1; {Повинні бути початкові установки змінних, що стоять в умові циклу}

Repeat

Summa := Summa + A[i];

i : = i + 1; {Як мінімум в одному операторі тіла циклу повинна бути зміна}

{змінні умови циклу, що приводить в результаті до хибності умови}

until i > n

. . .

end.