fbpx

Розробка додатків для ТехЕдітора: Посібник

Оператор циклу FOR **

Рейтинг користувача: 5 / 5

Активна зіркаАктивна зіркаАктивна зіркаАктивна зіркаАктивна зірка
 

Оператор FOR используется для циклического выполнения действий определенное число раз.

Общий формат использования оператора FOR

Оператор FOR имеет следующий формат:

for <Index> := <Start> to <Finish> [step <Step>] do <statement>;

Здесь

  • Index — переменная цикла
  • Start — начальное значение переменной Index
  • Finish — финальное значение переменной Index
  • Step — шаг изменения переменной Index (необязательно)
  • Statement — оператор или группа операторов, выполняющихся на каждой итерации цикла

Переменная цикла

Переменная цикла в операторе for должна быть целым числом, т. е. иметь тип Integer, LongInt, Int64 или другой целочисленный тип.

В следующем примере пользователю дважды выводится сообщение "Message 1", "Message 2". Номер сообщения формируется переменной цикла i:

var
i: Integer;
begin
for i := 1 to 2 do
ShowMessage('Message ' + IntToStr(i));
end;

Синтаксис TechEditor допускает упрощенный формат объявления переменных, поэтому тип переменной цикла можно не указывать:

var
i;
begin
for i := 1 to 2 do
ShowMessage('Message ' + IntToStr(i));
end;

Подобная сокращенная запись не рекомендуется из-за несовместимости с другими средами программирования. Чтобы код приложения можно было повторно использовать в других проектах, рекомендуется явно указывать тип переменной.

Начальное и финальное значения переменной цикла

Цикл FOR выполняется N раз. Количество итераций определяется формулой N = Finish - Start + 1. Переменная цикла последовательно получает значения Start, Start + 1, Start + 2 и так далее, до Finish включительно.

Разработчик приложения должен проконтролировать, возрастает или убывает значение переменной цикла. Следующий цикл не будет выполнен, поскольку начальное значение переменной превышает конечное:

var
i: Integer;
begin
for i := 2 to 1 do
ShowMessage('Message ' + IntToStr(i));
end;

Для исправления ситуации, используйте следующую конструкцию оператора:

var
i: Integer;
begin
for i := 2 downto 1 do
ShowMessage('Message ' + IntToStr(i));
end;

При уменьшении значения переменной в операторе for вместо директивы to должна использоваться директива downto.

Цикл с шагом, отличным от 1

Оператор FOR можно использовать с шагом, большим или меньшим 1:

var
i: Integer;
begin
for i := 1 to 10 step 2 do
ShowMessage('Message ' + IntToStr(i));
end;

В этом случае переменная цикла получает значения Start, Start+Step, Start+2*Step, и так далее. Она может не достигнуть величины Finish: в предыдущем примере i = 1, 3, 5, 7, 9.

Если значение переменной убывает, используйте отрицательный шаг цикла. При этом укажите директиву to:

var
i: Integer;
begin
for i := 10 to 1 step -2 do
ShowMessage('Message ' + IntToStr(i));
end;

Примеры использования оператора FOR

Пример 1. Определение центра тяжести сечения

Следующий алгоритм вычисляет координаты центра тяжести сечения, состоящего из набора примитивов Primitives. С помощью оператора FOR, набор последовательно перебирается от начального значения 0 до последнего примитива с номером (Primitives.Count - 1).

Сначала в цикле накапливаются промежуточные значения, т. е. суммируются статические моменты сечения. Финальным действием статические моменты делятся на площадь сечения и результат записывается в исходные переменные X, Y.

begin
X := 0;
Y := 0;
for i := 0 to Primitives.Count - 1 do begin X := X + Primitives[i].GetAreaMomentX; Y := Y + Primitives[i].GetAreaMomentY; end; X := X / Area; Y := Y / Area;
end;

Події

На жаль, зараз у нас немає подій.
Переглянути всі події

Простий калькулятор в TechEditor за 10 хвилин!

Ontario Building Code 2012 | Load combination (Free Application & Report Template)

Відеоогляд версії 1.0

Нові статті

Dystlab™ — Project for Engineers

Dystlab™ — торговельна марка, зареєстрована в Державному реєстрі свідоцтв України на знаки для товарів і послуг 26.02.2018, свідоцтво № 238304. Власник: фізична особа-підприємець Артьомов В. Є., ЄДРПОУ/ІНН: 3003314690.

E-mail:
technot needed texteditoranother not needed text@dystlabdummy text.store

Telegram:
https://t.me/techeditor

 

Все найцікавіше про TechEditor — в Твіттері. Приєднуйся!

TechEditor Twitter