Читайте также:
|
|
Оператори циклу з параметром (які починаються із словаfor) викликає виконання оператора, що повторюється (який можебути складовим оператором) поки управляючої змінної присвоюється зростаюча послідовність значень.
Як управляюча змінна повинен використовуватисяідентифікатор зміною (без якого-небудь кваліфікатора), якийпозначає змінну, оголошену локальній в блоці, в якомуміститься оператор for. Управляюча змінна повинна мати перелічувальний тип. Початкове і кінцеве значення повинні мати типсумісний по привласненню з перелічувальним типом.
Коли починає виконуватися оператор 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 про
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 До:= 1 to 10 do
X:= X + Mat1[I,K]*Mat2[K,J];
Mat[I,J]:= X;
end;
for З:= red to blue do Check(C);
Дата добавления: 2015-01-29; просмотров: 102 | Поможем написать вашу работу | Нарушение авторских прав |