![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
почему нет STEP в цикле FOR??? [D7, WinXP]
cvg © (2004-07-09 11:24:00)Еще вопрос от чайника: на строчку
for i := 12 to 120 step 8 do
компилятор говорит:
'DO' expected but indentifier 'step' found
А как же тогда задать шаг инекремента i?
Тимохов (2004-07-09 19:05:00) [1]если не ошибаюсь inc - это compiler magic, а не просто процедура.
VMcL (2004-07-09 18:55:00) [2]>>Ega23 © (09.07.04 15:20) [20]
>>TUser © (09.07.04 18:17) [22]
Фактически функции Inc() в скомпилированном коде нет. Будет просто что-нибудь вроде:
inc dword ptr [eax+123]
или
inc edx
VMcL (2004-07-09 18:53:00) [3]По поводу Inc().
AFAIR, при выключенной оптимизации Inc(X) генерит более оптимальный код, чем X:=X+1, а при включенной по-моему одинаковый - оптимальный. Можно в CPU Window проверить.
TUser (2004-07-09 18:17:00) [4]
> Я пытался найти описание Inc, но меня "обматерили",
А зачем тебе это описание? Впрочем, его можно найти в хелпе, а исходников ф-ции тебе Борланд все равно не даст.
Anatoly Podgoretsky (2004-07-09 15:23:00) [5]Это не проблема, пользуйся каноническими именами.
Ega23 (2004-07-09 15:20:00) [6]Anatoly Podgoretsky © (09.07.04 15:18) [19]
Я пытался найти описание Inc, но меня "обматерили", сказав
Unit SysIni was compiled with a different version of System. @RunError
Anatoly Podgoretsky (2004-07-09 15:18:00) [7]Как раз насчет красоты спорно, а насчет оптимальности без разницы, будет сгенерирован одинаковый код.
nejest (2004-07-09 15:17:00) [8]2 DimKa
Можно, но While будет короче
Ega23 (2004-07-09 15:16:00) [9]красивее и оптимальнее написать Inc(i, 12);
Уверен? Красивее - может быть, а вот с оптимальностью - вопрос спорный.
evvcom (2004-07-09 15:13:00) [10]Лучше использовать [1] + поправлю [4]: i:=i+12; красивее и оптимальнее написать Inc(i, 12);
DimKa (2004-07-09 14:43:00) [11]А можно так :
for j := 1 to 10 do begin
i := j * 12;
{операторы, работающие с i}
end;
TUser (2004-07-09 14:00:00) [12]А ты запусти программу
if 'Pascal' = 'Basic' then
showMessage('Вы можете использовать STEP в операторе FOR')
else
showMessage('Увы, использование STEP в операторе FOR недопустимо');
:)
Amoeba (2004-07-09 13:50:00) [13]
> cvg (09.07.04 13:47) [12]
Еще Васик вспомни.
cvg (2004-07-09 13:47:00) [14]Почему не следую? Потому что в Клиппере по жизни был STEP. И в в Перле есть for($i=2;$i<5;++$i) (сердечное спасибо корпорации Nuntacket и лично Ларри Уоллу).
Anatoly Podgoretsky (2004-07-09 13:34:00) [15]REA © (09.07.04 13:31) [9]
А в Си нет чистого цикла FOR там по сути while
Ega23 (2004-07-09 13:33:00) [16]А зачем?
REA (2004-07-09 13:31:00) [17]А в Си можно:
for (i=x=2;(i!=x++)||(--x);x+=(i--))
результат очевиден?
Думкин (2004-07-09 11:48:00) [18]> [6] cvg (09.07.04 11:36)
Я тебе уже в одной ветке дал совет, почему не следуешь?
Anatoly Podgoretsky (2004-07-09 11:40:00) [19]Потому что данным языком это не предусмотрено, цикл с шагом по сути цикл while (особый вид записи). Вирт не стал нарушать концепцию языка.
cvg (2004-07-09 11:36:00) [20]Да, вижу уже, что то, что я предложил, не прокатывает... мля... По-моему, у Йенсена и Вирта такая фича была?..