Вторник, 20.11.2018, 13:28
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1182
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Цикл for в паскале

Оператор For состоит из заголовка и тела цикла. Он может быть представлен в двух форматах:

   for  <имя> := N1  to  N2  do 

          <оператор>;

   for  <имя> := N1  downto  N2  do 

          <оператор>;

Здесь fordo   заголовок цикла; <имя> – это имя переменной – параметра цикла; N1 – ее начальное значение; N2 – ее конечное значение; <оператор> – тело цикла.Тело цикла может быть простым или составным оператором.Переменная цикла (счетчик), нижняя граница N1 (переменная, константа или выражение) и верхняя граница N2 (переменная, константа или выражение) должны относиться к эквивалентным порядковым типам данных.Если тип нижней или верхней границы не эквивалентен типу счетчика, а лишь совместим с ним, то осуществляется неявное приведение: значение границы преобразуется к типу счетчика, в результате чего возможны ошибки.

Цикл for-to работает следующим образом:

      1)      вычисляется значение верхней границы N2;
      2)     
переменной цикла присваивается значение нижней границы N1;
      3)     
производится проверка того, что переменная цикла не превосходит N2;
      4)     
если это так, то выполняется <оператор>;
      5)     
значение переменной цикла увеличивается на единицу;
      6)     
пункты 3-5, составляющие одну итерацию цикла, выполняются до тех пор, пока переменная цикла не станет строго больше, чем N2; как только это произошло, выполнение цикла прекращается, а управление передается следующему за ним оператору.
Из этой последовательности действий можно понять, какое количество раз отработает цикл for-to в каждом из трех случаев:
     Ø     
N1 < N2: цикл будет работать N2-N1+1 раз;
     Ø     
N1 = N2: цикл отработает ровно один раз;
     Ø     
N1 > N2: цикл вообще не будет работать.

После окончания работы цикла переменная-счетчик может потерять свое значение. Таким образом, нельзя с уверенностью утверждать, что после того, как цикл завершил работу, обязательно окажется, что ее значение равно N2+1.Поэтому попытки использовать переменную-счетчик сразу после завершения цикла (без присваивания ей какого-либо нового значения) могут привести к непредсказуемому поведению программы при отладке.

Цикл for-downto работает следующим образом:

      1)      вычисляется значение верхней границы N2;
      2)     
переменной цикла присваивается значение нижней границы N1;
      3)     
производится проверка того, что переменная цикла не меньше N2;
      4)     
если это так, то выполняется <оператор>;
      5)     
значение переменной цикла уменьшается на единицу;
      6)     
пункты 1-3 выполняются до тех пор, пока переменная цикла не станет меньше, чем N2; как только это произошло, выполнение цикла прекращается, а управление передается следующему за ним оператору.

Из этой последовательности действий можно понять, какое количество раз отработает цикл for-downto в каждом из трех случаев:

           Ø      N1 < N2: цикл вообще не будет работать
    Ø     
N1 = N2: цикл отработает ровно один раз;
    Ø     
N1 > N2: цикл будет работать N1-N2+1 раз.

Замечание о неопределенности значения счетчика после окончания работы цикла справедливо и в этом случае.

Основные требования к оператору FOR

     Ø      Параметр цикла, начальное и конечное значения должны быть одного и того же порядкового типа (лучше всего – целого типа, недопустимо - вещественного).
  Ø     
Начальное и конечное значения вычисляются лишь один раз – при входе в цикл, и, следовательно, должны быть определены до входа в цикл и не могут быть изменены в теле цикла.
  Ø     
Дополнительно (принудительно) изменять значение параметра в теле цикла не рекомендуется, поскольку контроль за правильностью исполнения такого цикла очень затруднен.
  Ø     
Не допускается изменение параметра цикла на величину, отличную от единицы.

Примеры:

    For i:=1 to 20 do  writeln(Sqrt(i));
             
{выведет 20 результатов извлечения квадратного корня из i  }
    For  ch:=’A’  to ’z’ do writeln(ch);
{выведет латинские буквы }
    For  j:=14 downto 10 do  writeln(j);
{выведет числа от 14 до 10}

Задача. Вывести на экран квадраты и кубы целых чисел от 8 до 1 (в обратном порядке).

Особенность: переменная цикла должна уменьшаться.

Решение:

    for i:=8 downto 1 do
    begin

      
i2 := i*i;

      
i3 := i2*i;

      
writeln(i:4, i2:4, i3:4);

   
end;

Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---