
- •Оператори мови програмування Паскаль
- •Тема 7. Оператори мови програмування Паскаль
- •7.1. Загальна характеристика операторів
- •7.2. Складений оператор
- •7.3. Умовні оператори
- •7.3.1. Оператор if
- •If v1 then if v2 then s1 else s2
- •7.3.2. Оператор обрання case
- •7.4. Оператори циклу
- •7.4.1. Цикл з параметром (лічильником)
- •7.4.2. Цикл з передумовою
- •7.4.3. Цикл з постумовою
- •7.5. Питання для самоконтролю
- •7.6. Завдання
7.4.2. Цикл з передумовою
Загальний вигляд:
WHILE <логічний вираз,V> DO <оператор,S>
S
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
S2
..
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. Чим відрізняється цикл з передумовою від циклу з постумовою ? Який із них виконується хоча б один раз у будь-якому випадку ?