четвер, 27 квітня 2017 р.

Тема 4. Цикли

Цикли

У мові Pascal розрізняють три оператори циклу:
              1) з передумовою;
              2) з післяумовою;
              3) з параметром.
У більшості задач потрібно здійснювати багаторазове виконання однієї дії. Частина коду, що багаторазово повторюється, називається циклом.
В циклах відбувається перевірка деякої умови і в залежності від результату цієї перевірки відбувається або вихід з циклу, або повторення виконання тіла циклу. Якщо перевірка умови відбувається перед виконанням блоку операторів, то такий цикл називається циклом з передумовою (цикл "while"), а якщо перевірка проводиться після виконання тіла циклу, то це цикл з післяумовою (цикл "repeat").
Причому тіло циклу з післяумовою завжди виконується хоча б один раз, а тіло циклу з передумовою може жодного разу не виконатися.
1.       Цикл з передумовою    While <логічний вираз> do <оператор>;
Оператор після do буде виконуватися доки логічний вираз приймає істинне значення (True). Його істинність перевіряється щоразу перед черговим повторенням оператора циклу, який буде виконуватися доти, поки логічне вираз істинний. Як тільки логічний вираз приймає значення неправда (False), здійснюється перехід до оператора, наступного за while.
Істинність виразу перевіряється до виконання оператора, тому якщо логічний вираз із самого початку буде мати значення неправда (False), то оператор не виконається жодного разу. Варто пам'ятати, що після ключового слова do дозволяється використовувати тільки один оператор. Якщо потрібно виконати кілька операторів, то використовується складений оператор (begin ….. end;).
Приклад:
 X:=10;
While x>0 do x:=x-1;

            2.   Оператор циклу з післяумовою відрізняється від попередньою тим, що:
1)умова перевіряється після одного виконання операторів тіла циклу (таким чином гарантується хоча б одне виконання тіла циклу);
2) критерій припинення циклу полягає в тому, що значення логічного виразу приймає значення істинне; а якщо значення хибне, то даний цикл повторюється. Тіло циклу повторюється до тих пір, поки умова не стане істинна.
            Repeat
                        <серія операторів>
            Until   <логічний вираз>;
Приклад:
 X:=10;
Repeat   x:=x-1; write(‘x=’,x) until x=0;

3. Оператор циклу з параметром використовується в тих випадках, коли число повторень циклу може бути визначене перед початком циклу. Крім цього цикли з параметром дозволяють задавати автоматично зміну значень деякої змінної і використовувати це значення в тілі циклу.
For <змінна>:=<початкове значення> to <кінцеве значення> do <оператор>;
For <змінна>:=<кінцеве значення> downto <початкове значення> do <оператор >;
Діапазон задає зміну значень змінної і кількість повторень тіла циклу. Діапазон–це відрізок з одного із впорядкованих типів. Якщо між виразами стоїть службове слово (to), то значення змінної буде зростати в процесі роботи; при (downto) – спадати. <змінну> називаються лічильником або параметром циклу.
Приклад:
For x:=10 downto 1 do  write(‘x=’,x);
При використанні даного оператора слід пам’ятати:
1)      параметр циклу повинен мати впорядкований тип;
2)      початкове і кінцеве значення діапазону повинні мати такий тип, як і параметр циклу ;
3)  після закінчення циклу значення параметру циклу рівне кінцевому виразу діапазону.



Приклади використання циклів
Приклад 1. Обчислити суму
WHILE
REPEAT
FOR
Фрагмент програми обчислення суми:
i:=1;S:=0;
while i<=10 do
  begin
    S:=S+i;
    i:=i+1;
  end;


i:=1;S:=0;
repeat
    S:=S+i;
    i:=i+1;
until i>10;



S:=0;
For i:=1 to 10 do
  S:=S+i;


Приклад 2.  Протабулювати функцію y=sin x, де х є [0,2П] з кроком П/2.

x:=0;
while x<=2*pi do
  begin
    y:=sin(x);
    writeln(y);
    x:=x+pi/2;
  end;
x:=0;
repeat
    y:=sin(x);
    writeln(y);
    x:=x+pi/2;
until x>2*pi
 


Приклад 3. Ввести 8 цілих чисел і знайти їх суму.

s:=0;
i:=1;
while i<=8 do
  begin
    read(a);
    s:= s+a;
    i := i+1;
  end;
   s:=0;
 i:=1;
 repeat
    read(a);
    s:= s+a;
    i := i+1;
 until i>8;

s:=0;
for i:=1 to 8 do
  begin
    read(a);
    s:= s+a;
  end;




Гуржій, Карташова, Лапінський, Руденко  Інформатика, 8 клас     ст. 273-276

Караванова Інформатика. Основи алгоритмізації та програмування. 777 задачст.80-86

Д/з 1: № 189(1,2,5), 191(2,6), 195(2,3), 197(1,2,4), 201(1,2), 202(2), 203(1), 242, 245  (Караванова Інформатика”)

Д/з 2 (вкладені цикли): №272(1,2),  273(1,2),  276 (Караванова Інформатика”), (вивести таблицю множення одноцифрових чисел)