Справочные данные по языку C++_____________________________657

переменной цикла i. После структуры for стоит точка с запятой, что означает пус-
тое тело цикла.

В приведенных примерах переменная цикла увеличивалась на единицу при
каждом цикле. Можно, конечно, организовывать циклы с уменьшением перемен-
ной. Ниже приведен такой пример. В нем приведена программа, которая берет
строку, записанную в окне редактирования Editi, шифрует ее сложением по опе-
рации исключающее ИЛИ каждого символа строки с произвольным ключом и воз-
вращает строку в окно редактирования. Если повторно применить эту процедуру с
тем же ключом к зашифрованной строке, то будет произведена дешифровка и в
окне отобразится исходная строка.

AnsiString s;

char Key = 'A' ;

s = Editl->Text;

for (int i = s.Length!); i >0; s[i--] = s[i] " Key);

Editl->Text = s;

В этом примере начальное значение переменной i задано равным числу симво-
лов в строке, полученному применением функции LengthQ. В дальнейшем при
каждом выполнении цикла i уменьшается на 1 постфиксной операцией декремен-
та. В этом случае целесообразно именно уменьшение счетчика цикла, поскольку в
противном случае во втором выражении структуры for пришлось бы каждый раз
проверять с помощью функции LengthQ, не кончилась ли строка. А в приведенном
варианте обращение к LengthQ производится всего один раз.

Выражения в структуре for являются необязательными. Иногда может отсут-
ствовать первое выражение, если начальное значение управляющей переменной
задано где-то в другом месте программы. Если отсутствует второе выражение,
предполагается, что условие продолжения цикла всегда истинно и таким образом
создается бесконечно повторяющийся цикл. Выйти из такого цикла можно, прове-
рив в теле цикла какие-то условия и прервав выполнение передачей управления за
пределы цикла оператором goto или применить другие способы прерывания, рас-
смотренные в разделе 11.8.2.4. Может отсутствовать в структуре for и третье выра-
жение, если приращение переменной осуществляется операторами в теле структу-
ры или если приращение не требуется.

При пропуске какого-то из выражений, точка с запятой после пропущенного
выражения (кроме третьего) должна писаться. Например, в заголовке

for(; i<10;) ... ;

пропущено первое условие и третье.

Если условие продолжения цикла не удовлетворяется с самого начала, то опе-
раторы тела структуры for не выполняются ни разу.

Операторы цикла for могут быть вложенные. Следующий пример содержит
три вложенных цикла for, осуществляющих вычисление матрицы Mat, равной
произведению двух квадратных матриц Mati и Mat2 размером М на М. Все матри-
цы представлены двумерными массивами. Формула для вычисления:

м
Mat[I,J] = ^ Matl[I, К] • Mat2[K,J]

К=1

int I, J, К, X;

for(I =1; I <= М; I++)
for(J =1; J <= M; J++)
(
X = 0;

for (К =1; К <= М; К++)

X += Mati[I] [К] * Mat2[К][J] ;

Mat[l][J] = х;

1