Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
08_Лекция_стУ.doc
Скачиваний:
3
Добавлен:
23.11.2019
Размер:
103.42 Кб
Скачать

6 Оператор циклу з передумовою While, з постумовою repeat

Цикли while і repeat є недетермінованими.

Це означає, що кількість ітерацій не обов’язково має бути відомою до початку виконання циклу.

Цикли whilе і repeat можна також використовувати замість for в ролі детермінованих.

Таким чином, кожний цикл for можна замінити еквівалентним йому циклом while або repeat, але не навпаки.

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

На рисунку наведено блок-схему циклу while. Синтаксис циклу while має вигляд:

While Умова do Оператор;

де while, do – ключові слова;

Умова – це константа, змінна або вираз логічного типу;

Оператор – це оператор, що виконується в циклі і утворює так зване тіло циклу.

Фраза від слова while до слова do є заголовком циклу

Згідно з синтаксисом оператора While тіло циклу є одним оператором.

Якщо в циклі виконується група операторів, її слід перетворити в один складений оператор за допомогою операторних дужок begin ... end.

Конструкція while Умова do Оператор; перекладається як «поки умова істинна, виконувати оператори тіла циклу».

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

Слід пам’ятати:

  1. Вміст тіла циклу має обов’язково впливати на умову циклу для уникнення за циклювання (в середині тіла циклу має бути зміна параметру циклу);

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

Розв’яжемо задачу. Потрібно написати програму для переведення значення температури, заданої в шкалі Цельсия, у значення, що відповідають шкалі Кельвіна. У шкалі Кельвіна за точку відліку прийнятий абсолютний нуль, це –273,15 °С, а ціна поділки збігається із ціною поділки шкали Цельсия. Використаємо для розв'язання цього завдання цикл while .. do. У випадку цього циклу немає обмежень на тип параметра циклу та крок його приросту. Тому побудуємо таблицю із кроком 0,5 градуса.

Позначимо початкове значення температури (first temperature) у Цельсиях – C_F, а кінцеве значення (last temperature) – C_L. Температуру в Кельвінах – K. Параметр циклу позначимо змінною T. Крок циклу – змінна shag.

Зверніть увагу на присвоювання T:=C_f перед циклом. Без нього значення T може бути будь-яким, і умова в заголовку циклу може бути некоректною. Значення T змінюється усередині циклу. При цьому безпечніше так писати тіло циклу, щоб оператор, що впливає на умову, був останнім у тілі.

program Celsius_While;

{$APPTYPE CONSOLE}

var C_f,C_L,T,K,shag:real;

i:integer;

begin

writeln('Enter first temperature');

readln(C_f);

writeln('Enter last temperature');

readln(C_L);

writeln('Enter shag');

readln(shag);

//Заголовок таблиці

For i:=1 to 20 do write('*');writeln;

writeln('* Celcius *','Kelvin':7,'*':2);

For i:=1 to 20 do write('*');writeln;

// Повинна бути початкова установка змінної,

// яка знаходиться у заголовку циклу. Якщо цього не буде зроблено,

//то T може бути будь-яким, та умова може бути некоректною

T:=C_f; ;

While T<=C_L do

begin

K:=T+273.15;

writeln('*',T:6:1,'*':4,K:7:2,'*':2);

T:=Shag+T; ; //Зміна параметру циклу

end;

For i:=1 to 20 do write('*');writeln;

readln

end.

Результат роботи програми

Цикл While може містити в своєму тілі інші, вкладені цикли (вкладені цикли можуть впливати на параметр циклу).

(repeat Самостійно!!!!)

Як і цикл з передумовою, цикл з постумовою застосовують тоді коли кількість ітерацій циклу може бути невідомою до початку його виконання. Але розглянутий раніш цикл While вирішує, виконувати своє тіло чи ні до першої ітерації. Якщо це не відповідає логіці алгоритму, то можливо використовувати цикл с постумовою, який вирішує, виконувати своє тіло чи ні, лише після попередньої.

  • Оператор циклу с постумовою дозволяє багаторазово виконувати одні й ті ж дії, які знаходяться поміж ключовими словами repeat та until. Умова завершення циклу вказується після слова until.

На рис. наведена блок-схема циклу repeat.

С интаксис циклу repeat має вигляд:

repeat

Оператор1;

Оператор2;

...

ОператорN

until Умова;

Де repeat, until – ключові слова;

Умова –константа, змінна або вираз логічного типу;

Оператор1, Оператор2, ..., ОператорN – тіло циклу.

Дослівно ця мовна конструкція перекладається так: «Повторювати послідовність операторів доти, доки не виконається умова».

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

Символ «;» після останнього оператора тіла циклу також є не обов’язковим, що уможливлює запис циклу із порожнім тілом.

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

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

Дія оператору. Спочатку виконується група операторів – Оператор1, Оператор2, ..., ОператорN. Потім обчислюється значення Умови, яка є умовою завершення циклу. Якщо воно істинно, то цикл завершується, інакше виконується наступна ітерація циклу. Цикл завжди виконується один раз.

При написанні циклів з післяумовою, як і з передумовою, слід пам’ятати:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]