Re: Вопрос про цикл for
Добавлено: 24.01.2024 06:00:44
Что-то тут сплошные олдфаги... Никто не вспомнил про самый современный вариант: For ... in ... do Это у несчастных сишников нет выбора, кроме архаики с целой переменной.
В Паскале тоже нет никаких проблем, просто нужно его знать, чтобы писать на нем программы, как нужно знать и любой ЯП если пишешь на нем программу.ZWolol писал(а):Все очень просто, жмешь в Lazarus F1 на for и получаешь подробную справку (только на английском).
Несчастным сишникам не нужно вспоминать и выбирать, все и так прекрасно работает без всяких лишних переменных.
Как работало со времен DOS так и продолжает пахать без всяких влияний погоды.
Сильно много не программировал на других, был небольшой опыт работы с VB, PHP, Java. И не помню чтобы там чем то цикл принципиально отличался.ZWolol писал(а):Меня интересовало лишь: почему for на паскале работает не как на других языках?
Но если в описании сказано, что так и должно быть, то у меня вопросов больше нет.
На Фортране тоже самое что и на Паскале.ZWolol писал(а):Совершенно верно, там нет разницы, как в прочем и на Фортране и на С кроме Паскаля !!!
Именно, и на Delphi и на FreePascal это работает одинаково.ZWolol писал(а):Я полагаю, что и на Delphi она работает так же. А ведь это Паскаль.
Для каждого.ZWolol писал(а):Мне ответили что это у Паскаля, хотя похоже что это не для каждого Паскаля.
Это правила языка, они не могут быть правильными или не правильными.ZWolol писал(а):И не надо мне доказывать, что это правильно а у всех других не правильно.
И там было точно также.ZWolol писал(а):Кроме Free Pascal был Turbo Pascal.
А я помню.ZWolol писал(а):Я давно работал на Delphi, но не помню этого ограничения для цикла.
Изменение переменной цикла внутри for всегда было невозможным.ZWolol писал(а):Изменение переменной цикла внутри цикла, как и выход из цикла по Go To является логической ошибкой, которая не рекомендуется, но не запрещается.
Не может и не работает.ZWolol писал(а):Все зависит от компилятора. В описании Free Pascal это запрещено, а на других компиляторах это может работать.
Я уже написал, что это UB, если это не выход по Break.ZWolol писал(а):Если компилятор будет давать на выходе из цикла значение: final value + 1 то это будет по твоему уже не Паскаль?
Да.ZWolol писал(а):То есть давать неопределенную переменную в конце цикла это ПРАВИЛА языка?
не является ошибкой!ZWolol писал(а):Изменение переменной цикла внутри цикла, как и выход из цикла по Go To является логической ошибкой, которая не рекомендуется, но не запрещается.
Я всё-таки порекомендовал бы правильно формулировать фразы. Потому что это тоже не ошибка!ZWolol писал(а):Изменение переменной цикла внутри цикла
уже писали, что есть разные реализации Паскаля. Если взглянуть в сторону Си/Си++ то там столько компиляторов, и которые могут очень сильно не совпадать друг с другом в конечной реализации кода.ZWolol писал(а):Если компилятор будет давать на выходе из цикла значение: final value + 1 то это будет по твоему уже не Паскаль?
Уточнить надо про что вообще речь? Про какую переменную?ZWolol писал(а):То есть давать неопределенную переменную в конце цикла это ПРАВИЛА языка?
была какая-то реализация Паскаля, где по выходу из цикла счётчик увеличивался.Mikhail писал(а):И там было точно также.
Вообще-то я привел цитату из "Language reference guide FreePascal", если Вы не в курсе, он обратно совместим с TurboPascal и ObjectPascal (Delphi).ZWolol писал(а):С каждым программным продуктом идет свое описание.
Приведи пожалуйста выдержку из этих описаний про for.
Так что словоблудием занимаетесь Вы, а не я.ZWolol писал(а):Занимаетесь словоблудием однако...
Вас тролят.ZWolol писал(а):Я задал вопрос и давно получил ответ.
Код: Выделить всё
i:=0;
repeat
....
i:=i+1;
until i=8;смутно припоминаю что в 90х в борланд (или турбо) паскале я таким регулярно пользовался и это не считалось неправильнымMikhail писал(а):Изменение переменной цикла внутри for всегда было невозможным.
С тех пор for оптимизировали.sts писал(а):смутно припоминаю что в 90х в борланд (или турбо) паскале я таким регулярно пользовался и это не считалось неправильным