FOR I=1 TO N STEP 2 не работает =(

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

FOR I=1 TO N STEP 2 не работает =(

Сообщение Attid »

в первые за несколько лет работы в фпц понадобился шаг в цикле, а он не работает =(

это я не так думаю или он такое не поддерживает ? я конечно сейчас воспользуюсь каким нибуть другим циклом, но просто интересно .

фпц ругнулся так :
fmsePrint.pas(1084,32) Fatal: Syntax error, "DO" expected but "identifier STEP" found
PublicJoke
новенький
Сообщения: 41
Зарегистрирован: 04.07.2006 12:21:07

Сообщение PublicJoke »

Это вы с басиком спутали. Цитата из Borland Pascal help:

for...to, for...downto (reserved words)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
The for statement causes the statement after do to be executed once for each
value in the range first to last.

Syntax:
for var := first to last do
statement
OR
for var := first downto last do
statement

Remarks:
The control variable and the initial and final values must be of an ordinal
type.

to:
With to, the value of the control variable is incremented by 1 for each
loop.

downto:
With downto, the value of the control variable is decremented by 1 for each
loop.
ev
долгожитель
Сообщения: 1789
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение ev »

в первые за несколько лет работы в фпц понадобился шаг в цикле, а он не работает =(

шаг есть только в обероне ;)
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

ev писал(а):шаг есть только в обероне ;)

в турбо паскале вроде был, а дельфе не скажу, но сегодня проверю.

Добавлено спустя 2 минуты 47 секунд:
PublicJoke писал(а):Это вы с басиком спутали.

вот это конечно может быть, на нем я еще на ПК "Львов" писал, такая дура с кнопочками подключалась к телевизору.
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Attid писал(а):в турбо паскале вроде был,

Не было и там. В языке Паскаль вообще иная концепция цикла... Например, он может проходить по значениям перечислимого типа, где неопределена операция "плюс", но есть succ и pred.
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

ну и зря =)

сделал через

Код: Выделить всё

for i := 0 to 100 do
if (i and 3 = 3 ) then
  . . . .
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

обычно делают цикл с изменяемым шагом через repeat until
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

Padre_Mortius писал(а):обычно делают цикл с изменяемым шагом через repeat until

Да? А я считал что через while do.
А вопрос интересный.

Народ, чем чаще пользуетесь?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

B4rr4cuda
Всё зависит от логики. Где что удобнее - то и используй.
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

В таких случаях я всегда использую while. Когда, последний раз использовал repeat, даже не помню.
Вопрос задан из любопытства.
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

B4rr4cuda писал(а):Народ, чем чаще пользуетесь?


они разные, repeat выполняется всегда минимум один раз, while может не разу.

ну и условие у одного внаяале у другого в конце проверяется, а если значение переменой меняется внутри то тоже надо решить когда его удобнее проверить.
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

Аттид, ты меня уважаешь? :lol: Не надо теории, просто ответь, плиз, чем чаще пользуешься?
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

B4rr4cuda писал(а):просто ответь, плиз, чем чаще пользуешься?

for =)
SAK
постоялец
Сообщения: 158
Зарегистрирован: 17.02.2006 23:45:14
Откуда: Тим
Контактная информация:

Сообщение SAK »

А что мешает умножить переменную цикла на требуемый шаг?

Код: Выделить всё

step:=2;
for i:=0 to N div step do
 writeln(i*step);

Хотя это и немного медленнее чем while
Добавлено спустя 13 минут 15 секунд:
B4rr4cuda писал(а):Народ, чем чаще пользуетесь?

Да, интересный вопрос, это примерно как: чем чаще пользуетесь ложкой или вилкой?
Ответить можно только так: пользуюсь тем что больше подходит к конкретной ситуации.
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

SAK писал(а):Да, интересный вопрос, это примерно как: чем чаще пользуетесь ложкой или вилкой?

Вилкой =)
Ответить