Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LN05 оператори мови PASCAL.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
205.31 Кб
Скачать

7.4.2. Цикл з передумовою

Загальний вигляд:

WHILE <логічний вираз,V> DO <оператор,S>

S

1 (V)

0

Приклад: нескінченний цикл

WHILE TRUE WRITE (‘Нескінченний цикл’);

Приклад: обчислити тобто суму квадратів непрних чисел від одного до n.

program sum_of_sqr;

{Програма обчислює суму квадратів непарних чисел}

var s,n,i,step: integer;

begin

write('введіть кінцеве значення, n:');

readln(n);

i:=1;

step:=2;

s:=0;

while i<=n do begin

s:= s+i*i;

i:=i+step;

end;

writeln('сума дорівнює',s)

end.

З наведених прикладів ясно, що <логічний вираз, v> в тілі циклу повинен змінюватись, бо інакше ми отримаємо нескінченний цикл. Крім того, логічний вираз повинен бути коректним, так як ймовірні ситуації, коли кінець циклу стає недосяжним (зациклювання).

Приклад: Обчислити суму ряду 1/2+1/4+1/8+1/16+ … (коректна умова виходу з циклу - обчислення з наданою точністю)

program sum_2;

var s,st:real;

i:integer;

eps:real;

begin

write('введіть точність обчислювання: ');

readln(eps);

i:=2;

st:=1;

s:=0;

while st>=eps do begin

st:=st/i;

s:=s+st

end;

writeln('сума дорівнює',s)

end.

7.4.3. Цикл з постумовою

Загальний вигляд :

REPEAT <оператор,S1>;

<оператор,S2>;

.

.

<оператор,SN>;

UNTIL <логічний вираз,V>;

Ілюстрація у термінах блок-схем та діаграм дій:

S1

S2

S1

S2

..

SN

SN

(V)

0

1

Приклад 1.Визначити скількі членів ряду складають cуму, що не перевищує

наданого значення sl.

program sum_restrict;

var s,sl:real;

k:integer;

begin

write('введіть верхню границю суми: ');

readln(sl);

k:=0;

s:=0;

repeat

k:=k+1;

s:= s+1/sqr(k);

until s>sl;

writeln('кількість членів ряду дорівнює ',k-1)

end.

Приклад: організація за допомогою циклу багаторазового виконання дій, вихід за бажанням користувача.

program myhelp;

{програма обчислює частку від ділення a/b, вихід - по натиску 'n'чи'n'}

var ratio:real;

a,b:integer;

ans:char;

begin

repeat

write('введіть два числа:');

readln(a,b);

ratio:=a/b;

write('частка дорівнює:',ratio);

write('виконати знову ? (y/n)');

readln(ans);

until (ans='n')or(ans='n');

end.

7.5. Питання для самоконтролю

1. Що таке простий оператор? Які є прості оператори?

2. Що таке структурований оператор? Перелічити структуровані оператори.

3. Вигляд складеного оператору.

4. Навести загальний вигляд, пояснити роботу за допомогою блок-схеми чи діаграми дій:

а) умовного оператору

б) оператору обрання

5.Які види операторів циклу ви знаєте?

6.Чим відрізняються оператори

for i:= no to nf do S

for i:= no downto nf do S

Як у цих операторах змінюється співвідношення між no та nf?

7. Чи можна змінювати змінну циклу у тілі циклу? Чому?

8. Що таке цикл з передумовою, який його загальний вигляд та порядок виконання ?

9. Що таке цикл з постумовою ? Загальний вигляд та порядок виконання ?

10. Чим відрізняється цикл з передумовою від циклу з постумовою ? Який із них виконується хоча б один раз у будь-якому випадку ?

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