Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.12.05;
Скачать: CL | DM;

Вниз

Цикл 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.007 c
2-1284409732
Zenith
2010-09-14 00:28
2010.12.05
Рисование на канве TImage


4-1242124565
Zalum
2009-05-12 14:36
2010.12.05
передать и принять несколько параметров


2-1284444480
ZV
2010-09-14 10:08
2010.12.05
Компонент ListBox


15-1283027381
Юрий
2010-08-29 00:29
2010.12.05
С днем рождения ! 29 августа 2010 воскресенье


15-1283113780
Юрий
2010-08-30 00:29
2010.12.05
С днем рождения ! 30 августа 2010 понедельник