Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   for contando hacia atras (https://www.clubdelphi.com/foros/showthread.php?t=23516)

Duc 19-07-2005 20:55:20

for contando hacia atras
 
Hola a todos

tengo un trozo de codigo donde tengo un for que cuenta hacia atras. Es decir tengo algo del estilo de For i:=0 to 10 y cuando ejecuto paso a paso veo como i va de 10 a 0.
Alguien sabe que puede pasar?

Gracias

delphi.com.ar 19-07-2005 20:56:49

¿Que estas utilizando para evaluar i?....
¿Nos podías mostrar el fragmento de código?

maeyanes 19-07-2005 21:19:31

De casualidad el for no es de la forma: for..downto..do?

jachguate 19-07-2005 21:48:48

Tengo entendido que como parte de la optimización de código, si no usas la variable de control dentro del ciclo, este se ejecuta de adelante hacia atras (de 10 a 0). Cuando usas la variable, va correctamente de 0 a 10.

Desconozco las razones por las que el contador hacia atras puede ser mas óptimo que el contador hacia adelante.

Hasta luego.

;)

delphi.com.ar 19-07-2005 23:04:54

Cita:

Empezado por jachguate
Desconozco las razones por las que el contador hacia atras puede ser mas óptimo que el contador hacia adelante.

Estuve viendo el código compilado, y básicamente si no se necesita el valor de i, se ahorra un paso:
Código Delphi [-]
  { Son dos for de 0..$0b }

  {Versión incremental: }
  asm
    xor ebx, ebx { Pone ebx en 0 }
  @@ciclo:
    inc ebx      { Incrementa en 1 ibx }
    cmp ebx, $0b { Comparo el valor del registro contra
                   la cantida de ciclos a realizar }
    jnz @@ciclo  { Cicla hasta que eb sea 0 }
  end;


  {Versión Decremental: }
  asm
    mov ebx, $0b { Inicializa el contador con
                   la cantida de ciclos a realizar }
  @@ciclo:
    dec ebx      { Decrementa en 1 ibx }
    jnz @@ciclo  { Cicla hasta que eb sea 0 }
  end;

Saludos!

ContraVeneno 19-07-2005 23:27:47

Diablos! :o
Uno que apenas esta aprendiendo Delphi
y ahora tambien tengo que aprender asm :o

Un saludo a todos :D :D

vtdeleon 20-07-2005 00:16:18

Saludos

Sinceramente, No entiendo NADITA:(

Duc 20-07-2005 10:23:13

For hacia atras
 
muchas gracias a todos,

especialmente a delphi.com.rar, me ha quedado muy claro el porqué delphi hace los bucles hacia atrás, (aunque para ahorrarse una linia de asm me ha vuelto loco :rolleyes:).
Al final, con la desesperación, cambié el código; pero creo que sí, que una de las variables de control no la usaba, -eran dos FORs anidados.

Gracias.


La franja horaria es GMT +2. Ahora son las 14:04:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi