`For..to..step` ?

Еще есть PartitionPoint - по крайней мере, он всегда одинаково работает. Или, можно использовать foreach с генератором нужной последовательности.

ну лишнюю переменную вводить в случаях, когда шаг одинаков всё таки не хочется.

меня больше заинтересовала значимость index для foreach. в каких ситуациях такая конструкция будет полезнее того-же for?

Да, верно сказали. И ещё при том может цикл работать чуть быстрее.

Как пример, найти положение максимального значения F(x) для набора аргументов, вводимых с клавиатуры и ограниченного вводом значения -777.

##
var max := -real.MaxValue;
var imax := -1;
foreach var x in ReadSeqRealWhile(v -> v <> -777.0) index i do
begin
  var y := 3.5 * x ** 3 / Sin(2 * x - 0.4);
  if y > max then
    (max, imax) := (y, i)
end;
Print(max, imax) 
2 лайка