Цикл for собой представляет
for <счетчик цикла>:=s1 to s2 do <тело цикла>;
В теле цикла нельзя самому изменять значение счётчика, но можно ли в нём изменять значения s1 и s2? В плане принято ли так вообще или это моветон?
Другие языки программирования и технологии
Цикл for в Дельфи или Паскале
В зависимости от компилятора, в теле цикла можно менять даже счетчик цикла (freepascal не позволяет, видимо как и другие современные), просто это нарушает принципы разработки и ведёт к тому, что потом программист будет сражаться с багами в подобном цикле, это же справедливо и для изменений границ в самом цикле.
Во фрипаскале переменные границ можно менять
но это ни к чему не приводит - компилятор кэширует значения s1 и s2 при первом проходе и их изменение никак не влияет на количество выполнений цикла, он все равно будет выполняться до i = 10;
Старые досовские турбо паскали, насколько помню, вели себя иным образом - все переменные можно было менять, однако если переменную цикла изменить на значение большее s2, то цикл будет продолжаться бесконечно.
Во фрипаскале переменные границ можно менять
program Hello;
var i, s1, s2:integer;
begin
s1 := 0;
s2 := 10;
for i:=s1 to s2 do begin
writeln ('i = ', i);
if i = 8 then
s2 := 2;
end
end.
но это ни к чему не приводит - компилятор кэширует значения s1 и s2 при первом проходе и их изменение никак не влияет на количество выполнений цикла, он все равно будет выполняться до i = 10;
Старые досовские турбо паскали, насколько помню, вели себя иным образом - все переменные можно было менять, однако если переменную цикла изменить на значение большее s2, то цикл будет продолжаться бесконечно.
Можно менять. Но это моветон в смысле читаемости кода и никак не влияет на собственно цикл.
Выражения s1 и s2 вычисляются единственный раз - перед началом цикла. И дальше в цикле используются только эти вычисленные значения - независимо от того, как меняются значения переменных, входящих в выражения s1 и s2. Так что можешь делать с этими переменными внутри цикла что угодно - на количестве итераций цикла это никак не скажется.
Настоящий программист пробует, а вдруг.

представь что s2 у тебя это, к примеру, кол-во объектов в коллекции - ты поймаешь эксепшн в цикле если будешь удалять объекты из коллекции (т.е. изменять s2)
Похожие вопросы
- цикл for не может обрабатывать массивы? (паскаль)
- *.bat - Не работает set /a внутри цикла for!
- Цикл For в паскале
- Вопрос про цикл For
- программирование. с какого языка лучше начать программирование? дельфи или паскаль? какой язык нужнее? какой по-легче?
- По-человечески объясните цикл "for"
- Хорошо ли использовать бесконечный цикл for в C++?
- C++. В операторе switch нельзя разве использовать case x? а x пробежать в цикле for?
- Вопрос по стилю в Си. Читаю C Elements of Style (Steve Qualline), встретила такой стиль записи цикла for
- помогите решить задачи с циклом по информатике в программе паскаль