Pascal. Цикли. Оператори закінчення циклу

Цикли. Оператори циклу for, while-do, repeat-until. Оператори закінчення циклу break, continue






1. Які переваги дає використання операторів циклу в програмах?

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

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


2. Які є види операторів циклу в мові Паскаль?

У мові Паскаль передбачено три різновиди операторів циклу:

  • цикл з параметром (for-to-do);
  • цикл з передумовою (while-do);
  • цикл з післяумовою (repeat-until).


3. Який вигляд оператора циклу з параметром for?

Цикл з параметром має два варіанти реалізації.

Варіант 1. Загальний вигляд циклу з параметром:

for Лічильник := ПочатковеЗначення to КінцевеЗначення do
begin
  // Інструкції, оператори

end;

де Лічильник – змінна зчисленого типу, яка в циклі має крок приросту рівний 1; ПочатковеЗначення – початкове значення параметру Лічильник; КінцевеЗначення – кінцеве значення параметра Лічильник.

Якщо ПочатковеЗначення більше за КінцевеЗначення, то інструкції між begin та end не виконуються. Якщо між begin та end є лише одна інструкція (оператор), то ключові слова begin і end можна опустити.

Варіант 2. Загальний вигляд циклу з параметром:

for Лічильник := ПочатковеЗначення downto КінцевеЗначення do
begin
  // Інструкції, оператори

end;

У цьому випадку значення параметру Лічильник не зростає на 1, а зменшується на 1 (крок зміни рівний -1).

Приклад застосування оператора циклу з параметром.

Скласти програму для обчислення факторіалу. Факторіал обчислюється за такою формулою:

n! = 1 * 2 * 3 * … * n.

Фрагмент коду обчислення факторіалу:

...

var
  i,n:integer;
  f:real;

...

begin
  // n - задається

  f:=1;
  for i:=1 to n do
    f:=f*i;

  // f - результат факторіалу

end.


4. Який вигляд має оператор циклу з передумовою while-do?

Загальний вигляд оператора циклу з передумовою:

while умова do
begin
  // деякі інструкції

end;

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

S = 2 + 4 + 6 + … + 200

s := 0;
i := 0;
while i<200 do
begin
  i:=i+2;
  s:=s+i;
end;


5. Який вигляд має оператор циклу з постумовою repeat-until?

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

repeat
  // деякі інструкції

until умова;

Оператори, розміщені між ключовими словами repeat і until будуть виконуватись до тих пір, поки логічний вираз, вказаний після until, не прийме значення true.




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

Завдання.

З допомогою оператора циклу обчислити суму:

S = 1 + 2 + … + 100

Розв’язок 1. Використання оператору циклу з параметром for.

// опис змінних
var
  s, i : integer;
begin

  ...

  s:=0;
  for i := 1 to 100 do
    s := s + i;

  ...

end.

Розв’язок 2. Використання оператору циклу з передумовою while.

// опис змінних
var
  s, i : integer;
begin

  ...

  s := 0;
  i := 0;

  while i<100 do
  begin
    i := i + 1;
    s := s + i;
  end;

  ...
end.

Розв’язок 3. З допомогою оператора циклу з постумовою repeat.

// опис змінних
var
  s, i : integer;
begin

  ...

  s := 0;
  i := 0;

  repeat
    i := i + 1;
    s := s + i;
  until i>=100;...

...

end.


7. Які є оператори закінчення циклу?

Для всіх операторів циклу вихід з циклу здійснюється як внаслідок природного закінчення оператора циклу, так і з допомогою операторів переходу і виходу.

У стандартному Паскалі визначені стандартні оператори Break і Continue.

Оператор Break виконує безумовний вихід з циклу. Оператор Continue забезпечує перехід до початку нової ітерації циклу.


8. Приклад використання оператора break.

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

Фрагмент програмного коду, який визначає наявність заданого елементу в масиві m1. Значення елементу описується у змінній x. Якщо елемент є, то недоцільно здійснювати пошук в масиві далі. У цьому випадку корисною є операція break.

...

f_is := false; // змінна, що визначає, чи є елемент x в масиві m1

for i := 1 to 100 do
begin
  if m1[i]=x then
  begin
    f_is := true; // елемент x є в масиві чисел
    break; // вихід з циклу, недоцільно проводити пошук далі,
           // оскільки елемент вже знайдено
  end;
end;

...


9. Приклад використання оператора continue.

Інструкція continue використовується, коли потрібно зупинити поточну ітерацію і перейти до наступної ітерації.

Приклад фрагменту коду, який множить на 2 усі додатні елементи масиву m1 зі 100 цілих чисел. Якщо зустрічається від’ємний елемент, то він пропускається.

...

for i := 1 to 100 do
begin
  if m1[i]<0 then // пропустити від'ємний елемент
  continue;     // і перейти до наступної ітерації
  m1[i] := m1[i]*2;
end;

...