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#novato08http://www.canalvisualbasic.net/manual/inicio-visual-basic/control-programa/Saludos