Вопрос про цикл for

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: Вопрос про цикл for

Сообщение Снег Север » 24.01.2024 07:00:44

Что-то тут сплошные олдфаги... Никто не вспомнил про самый современный вариант: For ... in ... do Это у несчастных сишников нет выбора, кроме архаики с целой переменной.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2997
Зарегистрирован: 27.11.2007 16:14:47

Re: Вопрос про цикл for

Сообщение ZWolol » 24.01.2024 15:59:56

Все очень просто, жмешь в Lazarus F1 на for и получаешь подробную справку (только на английском).
Несчастным сишникам не нужно вспоминать и выбирать, все и так прекрасно работает без всяких лишних переменных.
Как работало со времен DOS так и продолжает пахать без всяких влияний погоды.
ZWolol
новенький
 
Сообщения: 21
Зарегистрирован: 06.01.2023 06:49:21

Re: Вопрос про цикл for

Сообщение Mikhail » 24.01.2024 16:45:14

ZWolol писал(а):Все очень просто, жмешь в Lazarus F1 на for и получаешь подробную справку (только на английском).
Несчастным сишникам не нужно вспоминать и выбирать, все и так прекрасно работает без всяких лишних переменных.
Как работало со времен DOS так и продолжает пахать без всяких влияний погоды.


В Паскале тоже нет никаких проблем, просто нужно его знать, чтобы писать на нем программы, как нужно знать и любой ЯП если пишешь на нем программу.

Если Вы еще не поняли, то for в Паскале и for в Си это два разных цикла.
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Вопрос про цикл for

Сообщение Sharfik » 24.01.2024 18:28:21

ZWolol писал(а):Меня интересовало лишь: почему for на паскале работает не как на других языках?
Но если в описании сказано, что так и должно быть, то у меня вопросов больше нет.

Сильно много не программировал на других, был небольшой опыт работы с VB, PHP, Java. И не помню чтобы там чем то цикл принципиально отличался.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 766
Зарегистрирован: 20.07.2013 01:04:30

Re: Вопрос про цикл for

Сообщение ZWolol » 24.01.2024 20:07:52

@Sharfik
Совершенно верно, там нет разницы, как в прочем и на Фортране и на С кроме Паскаля !!!
Borland C++ Builder использует библиотеки Delphi и там нет танца с бубном.
Я полагаю, что и на Delphi она работает так же. А ведь это Паскаль.

Потому и задал вопрос: чья это особенность?
Мне ответили что это у Паскаля, хотя похоже что это не для каждого Паскаля.

У меня нет желания устанавливать и проверять другие программы.
Я просто принял во внимание, что у Lazarus это не работает.
И не надо мне доказывать, что это правильно а у всех других не правильно.
ZWolol
новенький
 
Сообщения: 21
Зарегистрирован: 06.01.2023 06:49:21

Re: Вопрос про цикл for

Сообщение Mikhail » 24.01.2024 20:28:47

ZWolol писал(а):Совершенно верно, там нет разницы, как в прочем и на Фортране и на С кроме Паскаля !!!

На Фортране тоже самое что и на Паскале.

ZWolol писал(а):Я полагаю, что и на Delphi она работает так же. А ведь это Паскаль.

Именно, и на Delphi и на FreePascal это работает одинаково.

ZWolol писал(а):Мне ответили что это у Паскаля, хотя похоже что это не для каждого Паскаля.

Для каждого.

ZWolol писал(а):И не надо мне доказывать, что это правильно а у всех других не правильно.

Это правила языка, они не могут быть правильными или не правильными.
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Вопрос про цикл for

Сообщение ZWolol » 24.01.2024 22:00:56

Кроме Free Pascal был Turbo Pascal.
У Delphi и Lazarus то же используется язык Паскаль.
Я давно работал на Delphi, но не помню этого ограничения для цикла.
Приведи пожалуйста выдержку из его описания.

Изменение переменной цикла внутри цикла, как и выход из цикла по Go To является логической ошибкой, которая не рекомендуется, но не запрещается.
Все зависит от компилятора. В описании Free Pascal это запрещено, а на других компиляторах это может работать.

Если компилятор будет давать на выходе из цикла значение: final value + 1 то это будет по твоему уже не Паскаль?
То есть давать неопределенную переменную в конце цикла это ПРАВИЛА языка?
Есть язык программирования и требования компилятора (это разные вещи).
ZWolol
новенький
 
Сообщения: 21
Зарегистрирован: 06.01.2023 06:49:21

Re: Вопрос про цикл for

Сообщение Mikhail » 24.01.2024 22:15:53

ZWolol писал(а):Кроме Free Pascal был Turbo Pascal.

И там было точно также.

ZWolol писал(а):Я давно работал на Delphi, но не помню этого ограничения для цикла.

А я помню. :)

ZWolol писал(а):Изменение переменной цикла внутри цикла, как и выход из цикла по Go To является логической ошибкой, которая не рекомендуется, но не запрещается.

Изменение переменной цикла внутри for всегда было невозможным.

ZWolol писал(а):Все зависит от компилятора. В описании Free Pascal это запрещено, а на других компиляторах это может работать.

Не может и не работает.

ZWolol писал(а):Если компилятор будет давать на выходе из цикла значение: final value + 1 то это будет по твоему уже не Паскаль?

Я уже написал, что это UB, если это не выход по Break.

ZWolol писал(а):То есть давать неопределенную переменную в конце цикла это ПРАВИЛА языка?

Да. :wink:
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Вопрос про цикл for

Сообщение Seenkao » 24.01.2024 22:19:12

ZWolol писал(а):Изменение переменной цикла внутри цикла, как и выход из цикла по Go To является логической ошибкой, которая не рекомендуется, но не запрещается.

не является ошибкой!
Но да, не рекомендуется к использованию. И надо понимать почему. Причина проста, большинство ошибок происходит от того что люди не контролируют код, который они делают. А GoTo отслеживание такой ошибки усложняет (потому что люди именно в таких местах ошибки и делают).

ZWolol писал(а):Изменение переменной цикла внутри цикла

Я всё-таки порекомендовал бы правильно формулировать фразы. Потому что это тоже не ошибка!

ZWolol писал(а):Если компилятор будет давать на выходе из цикла значение: final value + 1 то это будет по твоему уже не Паскаль?

уже писали, что есть разные реализации Паскаля. Если взглянуть в сторону Си/Си++ то там столько компиляторов, и которые могут очень сильно не совпадать друг с другом в конечной реализации кода.

ZWolol писал(а):То есть давать неопределенную переменную в конце цикла это ПРАВИЛА языка?

Уточнить надо про что вообще речь? Про какую переменную?


Когда переходишь с одного ЯП на другой, в любом случае сталкиваешься с проблемами. От этого ни куда не уйти. Просто используй обходные пути чтоб реализовать свой код, так как надо тебе.

Добавлено спустя 2 минуты 44 секунды:
Mikhail писал(а):И там было точно также.

была какая-то реализация Паскаля, где по выходу из цикла счётчик увеличивался.
А я(в то время) пользовался только Delphi 7, TP и возможно FP.
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

Re: Вопрос про цикл for

Сообщение ZWolol » 25.01.2024 04:02:10

@Mikhail
С каждым программным продуктом идет свое описание.
Приведи пожалуйста выдержку из этих описаний про for.
Это осталось без ответа...
Занимаетесь словоблудием однако...

Я задал вопрос и давно получил ответ.
О чем тогда идет речь и что вы хотите?

Если хотите предложить решение, то я его уже сделал и мне другого не нужно.
Если хотите что-то доказать, то оставьте их себе. Мне они не нужны.
Доказывай лучше другим, которые утверждают обратное.
ZWolol
новенький
 
Сообщения: 21
Зарегистрирован: 06.01.2023 06:49:21

Re: Вопрос про цикл for

Сообщение Mikhail » 25.01.2024 11:10:14

ZWolol писал(а):С каждым программным продуктом идет свое описание.
Приведи пожалуйста выдержку из этих описаний про for.

Вообще-то я привел цитату из "Language reference guide FreePascal", если Вы не в курсе, он обратно совместим с TurboPascal и ObjectPascal (Delphi).

Тоже самое написано в ISO 7185:1990, и в стандарте на модулу-2.

ZWolol писал(а):Занимаетесь словоблудием однако...

Так что словоблудием занимаетесь Вы, а не я.
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Вопрос про цикл for

Сообщение stikriz11 » 25.01.2024 11:31:57

ZWolol писал(а):Я задал вопрос и давно получил ответ.

Вас тролят.
stikriz11
постоялец
 
Сообщения: 114
Зарегистрирован: 04.09.2023 15:54:19

Re: Вопрос про цикл for

Сообщение svk12 » 25.01.2024 14:10:30

Кажется, я понял что вызвало недоумение ТС. В Си цикл for управляется условием продолжения (входа). В Паскале - условием завершения (выхода). Что-то вроде:
Код: Выделить всё
i:=0;
repeat
....
i:=i+1;
until i=8;

Подобная логика отсутствует в Си, а потому непривычна для ТС.
svk12
постоялец
 
Сообщения: 407
Зарегистрирован: 09.06.2008 18:42:47

Re: Вопрос про цикл for

Сообщение sts » 25.01.2024 14:24:02

Mikhail писал(а):Изменение переменной цикла внутри for всегда было невозможным.

смутно припоминаю что в 90х в борланд (или турбо) паскале я таким регулярно пользовался и это не считалось неправильным
sts
постоялец
 
Сообщения: 415
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Re: Вопрос про цикл for

Сообщение stikriz11 » 25.01.2024 17:53:33

sts писал(а):смутно припоминаю что в 90х в борланд (или турбо) паскале я таким регулярно пользовался и это не считалось неправильным

С тех пор for оптимизировали.
mov eax, 0

jmp for_condition ; переходим к проверке условия

for_start:
add eax, 1
for_condition:
cmp eax, 10
jl for_start ; если условие соблюдено переходим к метке for_start для выполнения действий
stikriz11
постоялец
 
Сообщения: 114
Зарегистрирован: 04.09.2023 15:54:19

Пред.След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27

Рейтинг@Mail.ru