Форум: "Начинающим";
Текущий архив: 2010.12.05;
Скачать: [xml.tar.bz2];
ВнизЦикл For To Do Найти похожие ветки
← →
ZV © (2010-09-14 10:05) [0]Меня интересует вопрос по циклу
for to do;
А что в этом цикле нельзя задать шаг приращения ? Увеличение возможно только на один? И можно ли в нем добавить дополнительное условие сравнение?
Во основном я работаю на Си там это можно делать
← →
Andy BitOff © (2010-09-14 10:10) [1]Дык, для начала неплохо было бы почитать книжки по синтаксису изучаемого языка.
← →
бумбум (2010-09-14 10:12) [2]Есть
While <Условие> do <цикл>
Repeat <цикл> until <Условие>
мути как хочешь
← →
Anatoly Podgoretsky © (2010-09-14 10:14) [3]> ZV (14.09.2010 10:05:00) [0]
В Си нет цикла For, то что там есть это по сути цикл While. Исходя из этого
факта, ты тоже можешь использовать цикл WHILE
← →
12 © (2010-09-14 10:37) [4]сейчас побьют, но можно и так примерно сделать :)
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to 11 do
begin
asm
inc i
end;
ShowMessage(inttostr(i));
end;
end;
← →
ZV © (2010-09-14 10:44) [5]Понятно. Буду делать на while
← →
oldman © (2010-09-14 12:17) [6]
> 12 © (14.09.10 10:37) [4]
> сейчас побьют, но можно и так примерно сделать :)
нельзя так делать!
← →
Игорь Шевченко © (2010-09-14 12:57) [7]12 © (14.09.10 10:37) [4]
> сейчас побьют
побьют
← →
Anatoly Podgoretsky © (2010-09-14 12:59) [8]Гроссмейстер подумал, сейчас будут бить.
(с) Ильф и Петров.
← →
И. Павел © (2010-09-14 13:10) [9]> [4] 12 © (14.09.10 10:37)
А вдруг Delphi код соптимизирует, и сделает downto. Если он на "inc i" не ругается, то и это, ИМХО, может.
← →
И. Павел © (2010-09-14 13:13) [10]> [9] И. Павел ©
Хотя оптимизирует он только если i в теле цикла не используется. А тогда и нет смысла выставлять шаг...
← →
И. Павел © (2010-09-14 13:22) [11]Хотя такое, мне кажется, запросто соптимизирует и перевернет цикл (хотя я и не разу не замечал, чтобы у меня компилятор так поступал), так что лучше не рисковать:
for i := 1 to 10 do
begin
asm
inc i
end;
sum := sum + a[i];
end;
← →
12 © (2010-09-14 13:23) [12]да все понятно, никогда так не делаю
это не понятно, по меньшей мере
просто, что б на D не наезжали :)
← →
И. Павел © (2010-09-14 13:26) [13]А действительно: почему нельзя менять i в цикле? Какое от этого преимущество при выполнении программы? Она же все равно JUNP должна делать, а перед этим - какое-то условие проверить? Не всегда же можно сразу развернуть цикл в последовательный код, да и не всегда это правильно, т.к. увеличится размер программы.
PS: [10] и [11] - ерунда. Я запутался, извиняюсь. Жаль, нельзя удалять посты самостоятельно...
← →
Anatoly Podgoretsky © (2010-09-14 13:30) [14]> И. Павел (14.09.2010 13:22:11) [11]
Под страхом смерти запрещается изменять вручную управляющую переменную.
← →
Anatoly Podgoretsky © (2010-09-14 13:32) [15]> И. Павел (14.09.2010 13:26:13) [13]
Почитай описание конструкции цикла, да и часто ни какой переменной I нет. Да
и вообще почитай, что такой цикл FOR
← →
12 © (2010-09-14 13:36) [16]
> Она же все равно JUNP должна делать, а перед этим - какое-
> то условие проверить?
обычно сx=0
LOOPNZ - повторять пока cx не 0. потому и downto компилятор часто делает, имхо так
← →
бумбум (2010-09-14 13:44) [17]Когда я был маленьким мне очень было нужно при определенных условиях вернуть переменной i значение 0, но я нашел обходной вариант с whal’ом. Хотя мне и сейчас кажется было бы проще присвоить переменной i 0 и пустить один и тот же цикл заново
← →
Игорь Шевченко © (2010-09-14 14:10) [18]
> потому и downto компилятор часто делает, имхо так
зачем имхо, открой view|debug windows|cpu
увидишь, что компилятор так не делает
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.12.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c