TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

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

             Операторы цикла с параметром (которые  начинаются  со  слова
        for)  вызывает  повторяющееся выполнение оператора (который может
        быть составным оператором) пока управляющей переменной присваива-
        ется возрастающая последовательность значений.

                      ┌───┐   ┌───────────┐   ┌──┐   ┌────────┐
         оператор ───>│for├──>│управляющая├──>│:=├──>│исходное├───┐
         for          └───┘   │переменная │   └──┘   │значение│   │
                              └───────────┘          └────────┘   │
                 ┌────────────────────────────────────────────────┘
                 │      ┌──┐
                 │   ┌─>│to├─────┐   ┌────────┐   ┌──┐   ┌────────┐
                 └───┤  └──┘     ├──>│конечное├──>│do├──>│оператор├───>
                     │  ┌──────┐ │   │значение│   └──┘   └────────┘
                     └─>│downto├─┘   └────────┘
                        └──────┘

                                    ┌────────────────────────┐
         управляющая переменная ───>│идентификатор переменной├───>
                                    └────────────────────────┘

                                 ┌─────────┐
         исходное значение  ────>│выражение├───>
                                 └─────────┘

                                 ┌─────────┐
         конечное значение  ────>│выражение├───>
                                 └─────────┘

             В качестве   управляющей  переменной  должен  использоваться
        идентификатор переменой (без какого-либо  квалификатора), который
        обозначает переменную,  объявленную локальной в блоке,  в котором
        содержится оператор for.  Управляющая переменная должна иметь пе-
        речислимый  тип.  Начальное и конечное значения должны иметь тип,
        совместимый по присваиванию с перечислимым типом.

                   Примечание: О локальности и области действия рассказы-
              вается в Главе 8.

             Когда начинает выполняться оператор for,  начальное и конеч-
        ное значения определяются один раз, и эти значения сохраняются на
        протяжении всего выполнения оператора for.

             Оператор, который содержится в теле оператора for,  выполня-
        ется  один раз для каждого значения в диапазоне между начальным и
        конечным значением. Управляющая переменная всегда инициализирует-
        ся начальным значением. Когда работает оператор for, значение уп-
        равляющей переменной (счетчика циклов) увеличивается  при  каждом
        повторении на единицу. Если начальное значение превышает конечное
        значение, то содержащийся в теле оператора for оператор не выпол-
        нятся.  Когда  в  операторе  цикла  используется  ключевое  слово
        downto,  значение управляющей переменной уменьшается  при  каждом
        повторении на единицу.  Если начальное значение в таком операторе
        меньше,  чем конечное значение,  то содержащийся в теле оператора
        цикла оператор не выполнятся.

             Если оператор,  содержащийся в теле оператора for,  изменяет
        значение управляющей переменной,  то это является ошибкой.  После
        выполнения  оператора  for значение управляющей переменной стано-
        вится неопределенным, если только выполнение оператора for не бы-
        ло прервано с помощью оператора перехода.

             Если принять во внимание эти ограничения, то оператор

             for V := Expr1 to Expr2 do Body;

        эквивалентен оператору:

             begin
               Temp1 := Expr1;
               Temp2 := Expr2;
             if Temp1 <= Temp2 then
             begin
               V := Temp1;
               Body;
                while V <> Temp2 do
                begin
                  V := Succ(V);
                  Body;
                end;
              end;
             end;

        и оператор цикла:

             for V := Expr1 downto Exp2 do Body;

        эквивалентен операторам:

             begin
               Temp1 := Expr1;
               Temp2 := Expr2;
               if Temp1 >= Temp2 then
              begin
                 V := Temp1;
                 Body;
                 while V <> Temp2 o
                 begin
                   V := Pred(V);
                   Body;
                 end;
               end;
              end;

        где Temp1 и Temp2 - вспомогательные переменные,  тип которых сов-
        падает с основным типом переменной V и которые не  встречаются  в
        другом месте программы.

             Приведем примеры оператора цикла с параметром:

             for I := 2 to 63 do
               if Data[I] > Max then Max := Data[I]

             for I := 1 to 10 do
               for J := 1 to 10 do
               begin
                 X := 0;
                 for K := 1 to 10 do
                   X := X + Mat1[I,K]*Mat2[K,J];
                 Mat[I,J] := X;
               end;

              for C := red to blue do Check(C);



Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz