четвер, 11 січня 2018 р.

Цикли з лічильником

Структура оператору циклу з параметром

Оператори циклу з параметром бувають двох типів:
  1. З параметром i, що збільшується від start до finish (з кроком 1)
      For i:=start to finish do
      Begin s1; s2; s3; … end;
  2. З параметром i, що зменшується від start до finish (з кроком -1)
      For i:=start downto finish do
      Begin s1; s2; s3; … end;
Тут:
  For, to, downto, do – зарезервовані слова.
  i – змінна
  start, finish – сталі, змінні або вирази
  Begin, end – операторні дужки
  s1; s2; s3 – будь-якіоператори

Термінологія

  1. Параметр циклу (у прикладі i) - будь-яка змінна цілого (byte, Integer, word, longint,…) або символьного типу (char).
  2. Початкове значення параметру (у прикладі start) – стала, змінна або вираз того ж типу, що й параметр.
  3. Кінцеве значення параметру (у прикладі finish) – стала, змінна або вираз того ж типу, що й параметр.
  4. Заголовок циклу вказує, скільки разів буде виконуватись тіло циклу.
    Заголовок циклу:
    • For i:=start to finish do або
    • For i:= start downto finish do
  5. Тіло циклу – оператори, що повторюються.
    Тіло циклу – Begin s1; s2; s3; … end;
  6. Кількість витків циклу – кількість повторень тіла циклу.
Написаний вище оператор І типу на блок-схемі відображається так:

Написаний вище оператор ІI типу на блок-схемі відображається так:

В першому операторі крок дорівнює 1, а в другому –1.

Зауваження

  1. Параметр циклу автоматично по черзі приймає цілі значення від start до finish (для символьних параметрів приймає значення наступного символу з таблиціASCII).
  2. Скільки значень прийме параметр циклу від start до finish, стільки разів виконається тіло циклу.
  3. В операторі з параметром, що збільшується (For i:=start to finish do), щоб виконувалось тіло циклу потрібно, щоб start<=finish. Якщо start >finish, то помилки не буде? але тіло циклу виконуватись не буде.
    Фрагмент програмиРезультат роботи
    For i:=5 to 10 do
    write(‘*’);
    ******
    For i:=10 to 5 do
    write(‘*’);
    Такий фрагмент програми нічого не виведе на екран.
  4. В операторі з параметром, що зменшується (For i:=start downto finish do), щоб виконувалось тіло циклу потрібно, щоб start>=finish. Якщо start < finish, то помилки не буде, але тіло циклу виконуватись не буде.
    Фрагмент програмиРезультат роботи
    For i:=5 downto 1 do
    write(‘*’);
    *****
    For i:=1 downto 5 do
    write(‘*’);
    Такий фрагмент програми нічого не виведе на екран.
  5. Параметр циклу не можна змінювати у тілі циклу. Програма може зациклитись або деякі вітки циклу виконуватись не будуть.
    Наприклад:
    Фрагмент програмиРезультат роботи
    For i:=1 to 3 do
    Begin
    write(i,’  ‘);   i:=5;
    end;
    Програма зациклиться, вона надрукує 1, а потім буде завжди друкувати 6
    1 6 6 6 6…..
    For i:=1 to 3 do
    Begin
    write(i,’  ‘); i:=3;
    end;
    Ця програма надрукує тільки число 1, бо виконає один виток, замість трьох
  6. Якщо програма зациклилась, потрібно натиснути Ctrl+break або Ctrl+Alt+Delete (викликати Диспетчер задач та зняти задачу).
  7. Якщо start та finish – вирази, то їх значення обчислюються один раз, перед початком циклу і змінення їх у тілі циклу не впливає на кількість витків циклу.
    Фрагмент програмиРезультат роботи
    F:=3;
    For i:=1 to F do
    Begin
    write(’*‘); F:=10;
    end;
    ***
    Програма надрук

Немає коментарів:

Дописати коментар