Peña Online

  • Punto Visitantes: 78
  • Punto Oculto(s): 0
  • Punto Usuarios: 12
  • Punto Usuarios en Línea:

Board Stats

  • stats Total de Usuarios: 6514
  • stats Total de Mensajes: 42588
  • stats Total de Temas: 5395
  • stats Total de Categorías: 12
  • stats Total de Foros: 77
  • stats Máx. usuarios conectados (simultáneamente): 234

Ultimo registro

Top Poster

lampi lampi
16173 Mensajes
maripuri maripuri
10310 Mensajes
erborricobueno erborricobueno
1726 Mensajes
icehot icehot
1135 Mensajes
peke peke
997 Mensajes

Recursos




Calendar

Mayo 2012
Lun Mar Mié Jue Vie Sáb Dom
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 [22] 23 24 25 26 27
28 29 30 31

No se encontraron eventos en el calendario.

Tiendas WiFi












Autor Tema: Bucles y comparadores  (Leído 878 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado daemonclass

  • Usuario
  • *
  • Mensajes: 11
Bucles y comparadores
« en: Mayo 18, 2010, 14:37:39 pm »
1.- Bucles For

Me imagino que sabes hacer un bucle For. Lo que voy a contarte es como hacer que funcione más rápido.

Usa variables enteras para el índice
Procura no hacer cálculos dentro del bucle, de valores que no van a cambiar
No indiques la variable del bucle después de Next
No salgas con GOTO, (¿alguien lo usa todavía?), de un bucle For
 

Listado 1 (correcto, pero...)

' Las variables x, y, b serán del tipo por defecto (Variant)
Dim x, y, b, a$

a$="Hola Mundo"

For x=1 To 10
    b = Len(a$)
    For y = 1 To b
        If Mid$(a$, y, 1) = Chr$(32) Then
            GoTo OtraLinea
        End If
    Next y
OtraLinea:
Next x

Listado 2 (pues, eso...)

Dim x As Integer, y As Integer, b As Integer, a$

a$="Hola Mundo"

b = Len(a$)
For x=1 To 10
    For y = 1 To b
        If Mid$(a$, y, 1) = Chr$(32) Then
            Exit For
        End If
    Next
Next

--------------------------------------------------------------------------------


 2.- Usa siempre Option Explicit

Acostúmbrate a indicar siempre que sea necesario declarar las variables.
Esta opción era una de las pocas cosas que me gustaban de C o Pascal, ya que si no te acostumbras a declarar las variables, al final acabas creando muchas más de las que necesitas.
Antes, (léase Qbasic, GWBASIC, etc.), tenía excusa. Ahora no! Ya que puedes obligarte a declarar las variables, si indicas al inicio del código: Option Explicit
Visual Basic puede hacerlo por ti, si se lo indicas en las opciones del proyecto...
Menú Tools, solapa Environment, opción: Require Variable Declaration

La ventaja: que si te equivocas al escribir una variable, ¿a quién no le ha ocurrido?, VB te indicará que no existe.
La desventaja: Que tienes que declarar todas las variables con Dim, etc.
Ya sabes que si no declaras una variable, y por supuesto no tienes la orden Option Explicit, Visual Basic le asigna por defecto el tipo Variant y la crea si no existe. Con los arrays, crea los valores de 0 a 10.
Por tanto puede que incluso estés desperdiciando memoria:

Variant ocupa más espacio de memoria que cualquier otro tipo
Puede que sólo necesites un array de 5 elementos, el resto que no necesitas, está ocupando memoria que puede ser necesaria para otras cosas: velocidad, más variables, etc.

[ If | Case Select | Do While | Loop While | For...Next ]

--------------------------------------------------------------------------------

Visual Basic como otros lenguajes de programación ejecutan las líneas de código de arriba hacia abajo. Sin embargo fecuentemente deseamos que no todas la líneas se ejecuten siempre cuando el progrma esta corriendo. En lugar de escribir varios progrmas diferentes para este trabajo, se pueden usar comandos de repetición y bifurcación (ramificación).

Los comandos de bifurcación (ramificación) se usan para determinar cuando se ejecuta una pequeña sección de código o cuando no se debe ejecutar. Un ejemplo de este tipo de comando es 'If'.Si la expresión que acomaña al comando If es veradadera el c´digo deberá ser ejecutado, en caso contrario VB continua con las líneas de código de más abajo.

La repetición de comandos es usada para que pequeñas secciones de código se ejecuten varias veces. Si un programador necesita que que el programa lea 200 lineas de texto de un archivo, él deberá usar 200 líneas de código, una para cada una de la expresiones en el archivo o alternativamente un ciclo 'For Next' puede hacer un trabajo similar usando solo tres o cuatro líneas de código.



--------------------------------------------------------------------------------

Comandos de ramificación


If
If en Línea simple (Ejemplo):

  If a > 10 Then Label1.Caption = "A es mayor que  10"
If en Multi-línea (Ejemplo):

  If a > 10 And b < 20 Then

     Label1.Caption = "A es mayor  que 10"
     Label2.Caption = "B es menor que  20"
  End If

El If de multi-línea necesita una expresión 'End If' para definir el final del bloque If.

If y Else (Ejemplo):

  If a > 10 And b < 20 Then

    Label1.Caption = "A es mayor que 10"
    Label2.Caption = "B es menor que  20"
  Else
    Label1.Caption = "A es menor o igual  que 10 ó"

    Label2.Caption = "B es más grande o igul  que  20"
  End If

Si cualquiera de las dos condiciones es falsa, el programa ejecutará el código qu está en el bloque 'Else'.

El comando 'ElseIf' puede usarse para checar una segunda condición en caso de que la primera sea falsa.

If y ElseIf (Ejemplo):
  If a > 10 And b < 20 Then

    lblFirst.Caption = "A es mayor que  10"
    lblSecond.Caption = "B es menor que 20"
  ElseIf c = 8
    lblFirst.Caption = "A es menor o igual que  10 OR"

    lblSecond.Caption = "B es mayor o igula que 20"
    lblThird.Caption = "Sin embargo, C es igual a 8"
  Else
    lblFirst.Caption = "Los primeros dos test fallarón"

  End If



Selecciona caso
Si más ramas son necesarias, entonces usamos el comando 'Select Case'

Case (Ejemplo):

  Select Case dia_actual
    Case 1
      nombre_del_dia = "Domingo"
    Case 2
      nombre_del_dia = "Lunes"
    ...
    Case 7
      nombre_del_dia = "Sábado"

  End Select

La expresión 'End Select' define el final del bloque de casos. Si deseamos que presente un mensaje si se introduce un valor no definido en el bloque de casos, deberemos usar 'Case Else' de la siguiente manera.

    ...
    Case 7
      nombre_del_dia = "Sábado"

    Case Else
      MsgBox "Error en selección, una semana tiene solamente 7 dias"
  End Select



--------------------------------------------------------------------------------

Estructuras de repetición
Los siguientes comandos pueden ser usados para repetir varias veces la ejecución de una sección de código.

Ciclo Do (Sintaxis):

  Do While condición
    líneas de código
  Loop

Ciclo Do (Ejemplo):

  hoy = 1
  Do While hoy = 7
    hoy  = hoy + 1
  Loop


Un ciclo similar a el 'Do While' es el 'Loop While'. La principal diferencia es que el ciclo Do While la condición para poder continuar esta al principio (primero ceha la condición y luego ejecuta el código que se desea repetir), mientras que en el Loop While esta al final, esto es después de que ejecuta el código checa si debe continuar. Esto significa que un ciclo Do While, puede nunca ser ejecutado, mientras que un ciclo Loop While siempre al menos se ejecutará una vez.

Ciclo While (Sintaxis):

  Do
    líneas de código
  Loop While condición

Ciclo While (Ejemplo):

  temp = 0
  Do
    temp = temp + 1
  Loop While temp = 100  ' No hierve


Los ciclos For si los programadores saben cuantas veces un cliclo debe ser ejecutado.

Ciclo For (Sintaxis):

  For contador = valor_inicial To valor_final [Step incremento]
    líneas de código

  Next [contador]

Ciclo For (Ejemplo):

  For dia_actual = 1 To 365
    lblDia.Caption = "Dia = " &Str$(dia_actual)

  Next dia_actual

Ciclos anidados (Ejemplos):

  For semana_actual = 1 To 52
    For dia_actual = 1 To 7
      ...
    Next dia_actual
  Next semana_actual


El incremento en Step como parte del ciclo, es usado para decirle a VB cuanto debe aumentar en cada ciclo la variable de control. Introduce el siguiente código y observa que valores se imprimen.:

  For test = 1 To 10 Step 2
    Print test
  Next test


¿Cuantas veces el código dentro del ciclo?

Prueba con otros valores aparte del 2 .


Fuentes:
http://www.elguille.info/vb/vb_novatos.htm#novato08
http://www.canalvisualbasic.net/manual/inicio-visual-basic/control-programa/

Saludos