Циклические операторы

В операторах цикла производятся повторяющееся выполнение вложенных операторов. В языке Fore.NET доступны следующие виды циклов:

Оператор For выполняет вложенные операторы заданное число раз. Количество итераций определяется начальным и конечным значением переменной цикла, а также его шагом.

В каждом операторе For указывается идентификатор переменной, которая называется переменной цикла. Также указываются выражения, определяющие начальное и конечное значения переменной цикла, а также шаг его изменения. Если шаг изменения переменной цикла не указан, то он считается равным единице.

Внутри оператора For можно использовать оператор Break для выхода из цикла, а также оператор Continue для передачи управления в завершающую точку вложенных операторов цикла и выполнения следующей итерации работы цикла.

Пример

Sub TestFor();
Var
    i, j: integer;
    Rnd: Random = New Random();
Begin
    For i := 0 To 100 Do
        j := Rnd.Next(0100);
        If j > 50 Then
            Break;
        End If;
    End For;
End Sub;

При выполнении примера будет осуществлен выход из цикла, если было сгенерировано случайное целое число больше 50.

Оператор For Each производит перечисление элементов коллекции при этом выполняя блок вложенных операторов для каждого элемента коллекции.

В каждом операторе For Each указывается идентификатор переменной, которая называется переменной цикла. Во время выполнения оператора переменная цикла представляет элемент коллекции для которого в текущий момент производится итерация. Ошибка компиляции выдается в случае если вложенный оператор пытается изменить значение переменной цикла или передать её в качестве значения параметра по ссылке.

Выражение в операторе (его тип) должно представлять собою коллекцию и должно быть определено явное преобразование от типа элементов коллекции к типу переменной цикла.

Системный тип System.Array также является типом-коллекцией. Поскольку все массивы являются производными от данного типа, то в операторе For Each допускается использование любого выражения, являющегося массивом. Порядок обхода элементов массива определяется следующим образом. Если массив является одномерным, то его элементы обходятся в порядке увеличения индекса от наименьшего к наибольшему. Если массив является многомерным, то его элементы обходятся таким образом чтобы в первую очередь  увеличивались индексы самого правого измерения (последнего), а в последнюю очередь самого левого (первого).

Пример

Sub TestForEach();
Var
    s: Array 
Of String = New String[5];
    s1: String;
    i: Array[
0..50..5Of Integer;
    i1: Integer;
Begin
    
//...
    //Заполнение значениями массивов s и i
    //...
    //Обработка элементов массивов в цикле For Each
    For Each s1 In s Do
        
//Операции с s1
    End For;
    For Each i1 In i Do
        
//Операции с i1
    End For;
End Sub;

Оператор Repeat выполняет вложенные операторы в зависимости от условия один или более раз.

Оператор выполняется следующим образом:

Внутри оператора Repeat можно использовать оператор Break для выхода из цикла, а также оператор Continue для передачи управления в завершающую точку вложенных операторов цикла и выполнения следующей итерации работы цикла.

Пример

Sub TestRepeat();
Var
    b: boolean;
Begin
    Repeat
        //Выполняемый в цикле код
        If < Условие выхода из цикла > Then
            b := True;
        End If;
    Until b;
End Sub;

Оператор While выполняет вложенные операторы в зависимости от условия ноль или более раз.

Оператор выполняется следующим образом:

Внутри оператора While можно использовать оператор Break для выхода из цикла, а также оператор Continue для передачи управления в завершающую точку вложенных операторов цикла и выполнения следующей итерации работы цикла.

Пример

Sub TestWhile();
Var
    b: boolean;
Begin
    b := True;
    While b Do
        If < Условие выхода из цикла > Then
            b := False;
        End If;
    End While;
End Sub;

См. также:

Руководство по языку Fore.NET