Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Bucle For / Sentencia If

Estas en el tema de Bucle For / Sentencia If en el foro de Visual Basic clásico en Foros del Web. Buenas a todos, tengo una duda. Quisiera saber si es lo mismo hacer cierta acción en un bucle For, como en una Sentencia If, con ...
  #1 (permalink)  
Antiguo 30/09/2011, 15:38
 
Fecha de Ingreso: julio-2011
Mensajes: 53
Antigüedad: 12 años, 9 meses
Puntos: 2
Bucle For / Sentencia If

Buenas a todos, tengo una duda.
Quisiera saber si es lo mismo hacer cierta acción en un bucle For, como en una Sentencia If, con respecto a la velocidad. Me explico: Ejemplo que tenemos un Array con 5 cadenas:

Código:
Dim Array(1 to 5) As String

Array(1) = "Hola"
Array(2) = "Chau"
Array(3) = "Adios"
Array(4) = "Nombre"
Array(5) = "Pepito"
Ahora quiero agregar el contenido de este array a una lista, pero que el contenido "Adios" no lo agregue:

Código:
Dim i As Integer

For i = 1 to 5
     if not Array(i) = "Adios" Then
         list1.additem Array(i)
     end if
Next i
Buenísimo, ahora tenemos otra forma de hacerlo, mucho más larga, y si el Array estaría cargado con 100 elementos, sería inmenso:

Código:
If Not Array(1) = "Adios" Then
      list1.additem Array(1)
Elseif Not Array(2) = "Adios" Then
      list1.additem Array(2)
....
Así sucesivamente hasta que el que tenga el contenido "Adios" no lo va a agregar.

Ahora, yo quiero saber, si el Bucle For, por ser mucho más dinámico al tener una cantidad de elementos por agregar a un listbox (usé esto como ejemplo, es en general) es más lento al momento de ejecutarse que hacer todas las condiciones, aunque estas sean 100 o más.

Solo eso muchachos, Gracias
  #2 (permalink)  
Antiguo 01/10/2011, 09:50
Usuario no validado
 
Fecha de Ingreso: junio-2010
Ubicación: Guatemala
Mensajes: 196
Antigüedad: 13 años, 10 meses
Puntos: 25
Respuesta: Bucle For / Sentencia If

En teoría, si miramos las operaciones "a pasitos", con el For estas haciendo más operaciones, por lo que te puedes tardar un poco más:

For
Estableces el valor inicial del contador la 1.
Haces una comparación al inicio para verificar que el valor del contador se encuentre en el rango establecido.
Haces una comparación para verificar el valor del arreglo y que no sea igual a "Adios"
Añades el valor del arreglo en la posición del valor de tu contador a la lista.
Le sumas 1 al valor de tu contador.
Regresas a la comparación del rango del For

Con un arreglo de 100 elementos, harías un aproximado de 599 operaciones.

If
Haces una comparación para verificar el valor del arreglo.
Añades el valor del arreglo en la posición del valor asignado.

Con un arreglo de 100 elementos, harías un aproximado de 199 operaciones.

Es lógico que a más pasos, más tiempo.

Última edición por JonathanB; 01/10/2011 a las 09:57
  #3 (permalink)  
Antiguo 01/10/2011, 15:44
 
Fecha de Ingreso: julio-2011
Mensajes: 53
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Bucle For / Sentencia If

Perfecto, excelente respuesta me ha quedado todo claro.

Gracias!
  #4 (permalink)  
Antiguo 02/10/2011, 08:11
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Respuesta: Bucle For / Sentencia If

Lo que dice jonathan esta bien pensado desde el punto de vista humano... Pero en realidad esas cantidad de operaciones seria la logica segun el lenguaje utilizado. Pero no te olvides que todo eso el compilador lo transforma en algo mas primitivo que escapa al conocimiento del programador normal, lo cual optimiza los procesos al maximo. Usando un FOR, es mas rapido que usando 100 if...

Aparte, en esta epoca donde existen microprocesadores sixcore y con tecnologia hyperthreading, esa cantidad de operaciones no son nada, estamos hablando de nanosegundos, o incluso menos.

Etiquetas: bucle, sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:00.