Оператор цикла со счетчиком (с параметром) for

   
На этом шаге мы рассмотрим цикл с известным числом повторений.

   
Оператор цикла со счетчиком подходит для программирования только таких циклических фрагментов, в которых до выполнения цикла
известны начальное и конечное значения счетчика повторений цикла. Это обусловливает его менее широкую сферу применения, чем более универсальных
операторов while и repeat. Однако в тех случаях, когда его использование возможно, оператор for, благодаря своей высокой наглядности,
имеет несомненное преимущество перед операторами цикла с условиями.

   
Упрощенно общую структуру оператора цикла со счетчиком можно представить одним из следующих способов.

  • Если счетчик при выполнении цикла наращивает свое значение:
      for <Переменная>:=<НачальноеЗначениеСчетчика> 
          to <КонечноеЗначениеСчетчика> do
              <Оператор>;
    

    Чтобы Оператор выполнился хотя бы один раз НачальноеЗначениеСчетчика должно быть не больше, чем КонечноеЗначениеСчетчика.

  • Если счетчик при выполнении цикла уменьшает свое значение:
      for <Переменная>: = <НачальноеЗначениеСчетчика> 
          downto    <КонечноеЗначениеСчетчика> do 
              <Оператор>;
    

    Чтобы Оператор выполнился хотя бы один раз НачальноеЗначениеСчетчика должно быть не меньше, чем КонечноеЗначениеСчетчика.

  •    
    Пример.

    begin
      .   .   .   .
      Summa  := 0;
      for i := 1 to n do
        Summa   :=  Summa  + A[i];
      .   .   .   .
    end.
    

       
    Заметим, что для оператора for, в отличие от while и repeat, установка начального значения счетчика циклов (i:=l) выполняется
    не перед заголовком цикла, а прямо в заголовке. Кроме того, после окончания тела цикла наращивание/уменьшение значения счетчика происходит
    автоматически. Таким образом, специальный оператор для увеличения значения счетчика (i:=i+l) не требуется.
    Более того, такой оператор привел к неправильной работе цикла.

       
    Пример с ошибкой:

    begin			
      .   .   .   .
      Summa := 0;
      for i:= 1 to n do
      begin	 
        Summa :=Summa + A[i];
        i : = i + 1; { Ошибка! }
      end;
      .   .   .   .
    end.
    

       
    В большинстве реализаций языка Pascal изменение значений переменных, используемых в заголовке цикла for, запрещено и
    приводит выдаче сообщения об ошибке на этапе компиляции. В реализации Вorland (Turbo) и Object Pascal этот запрет снят, однако такие действия
    рамках цикла for, как правило, приводят к его непредсказуемому поведению и считаются плохим стилем программирования.

       
    В Object Pascal, также как и во всех других реализациях языка Pascal, оператор for имеет два существенных ограничения:

    • шаг изменения счетчика циклов может быть только или +1 (если используется ключевое слово to), или -1 (если используется ключевое слово downto);
    • переменная, выступающая в роли счетчика циклов, может быть
      только порядкового типа и должна быть локальной для того блока, в котором находится оператор for.

       
    На следующем шаге мы проведем небольшое сравнение результатов работы операторов цикла.



    Вы можете оставить комментарий, или Трекбэк с вашего сайта.

    Оставить комментарий