Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESTRUCTURAS DE CONTROL
INTRODUCCIÓN
Habitualmente, en la secuencia de ejecución de un programa, surge la necesidad de
repetir la ejecución de determinadas instrucciones o condicionar la ejecución de algunas
de ellas. Para dirigir la secuencia de ejecución para que el programa consiga sus
objetivos se utilizan las sentencias de control.
Las sentencias de control se pueden agrupar en las siguientes categorías.
• Sentencias condicionales. Las instrucciones IF y Select Case se conocen
como instrucciones condicionales. Estas instrucciones ejecutan unas u otras
instrucciones en función del valor de expresiones.
• Sentencias iterativas. Las instrucciones While... End While y Do…Loop
incluyen bloques de instrucciones que se ejecutan de forma reiterada
mientras se cumple una condición. También se conocen como bucles.
• Sentencias de salto. Las instrucciones goto y continue se usan para
transferir el control incondicionalmente a otra instrucción. No se
recomienda su uso indiscriminado ya que rompe las reglas de la
programación estructurada.
• Sentencias de control de excepciones. Las instrucciones Try…Catch
permiten capturar los errores de ejecución con excepciones que permiten
controlar el programa cuando el error se produce.
If…Then…Else
La construcción If…Then…Else, nos permite ejecutar una o más condiciones que
podemos comparar utilizando operadores relacionales y operadores lógicos.
Sintasix
If expresión-booleana Then
bloque1
Else
bloque2
End If
La instrucción If evalúa una expresión booleana. Si el resultado de la expresión
booleana es True, el control pasa al primer bloque; si es False y existe una cláusula
Else, el control se transfiere al segundo bloque.
Ejemplo
Se puede utilizar una instrucción If sencilla, como la siguiente:
If numero Mod 2 = 0 Then
Console.WriteLine("par")
End If
If en cascada
La instancia ElseIf permite tener un número arbitrario de ramas. No obstante, las
instrucciones controladas por una instrucción ElseIf son mutuamente excluyentes, lo
que significa que sólo se ejecuta una instrucción de entre todas las instancias ElseIf.
Sintasix
If expresión-booleana1 Then
bloque1
ElseIf expresión-booleana2 Then
bloque2
Else
bloque3
End If
Ejemplo
Dim intValor As Integer = 5
If intValor > 5 Then
Console.WriteLine ("Valor mayor que 5")
ElseIf intValor < 5 Then
Console.WriteLine ("Valor menor que 5")
Else
Console.WriteLine ("Valor igual a 5")
End If
Ejemplo
El siguiente código da información sobre el número introducido o el rango al que
eprtenece.
Sub Main()
Dim valor As Integer
Console.WriteLine("Introducir un número")
valor = Console.ReadLine()
Select Case valor
Case 5
Console.WriteLine("El valor es 5")
Case 120, 250
Console.WriteLine("El valor es 120 ó 250")
Case 3000 To 4000
Console.WriteLine("El valor está en el rango de 3000 a 4000")
Case Is < 10
Console.WriteLine("El valor es menor de 10")
Case Else
Console.WriteLine("El valor es {0}, y no se cumple ningún caso", Valor)
End Select
Console.ReadLine()
End Sub
En el caso de que tras evaluar la expresión, haya más de un Case cuya lista de
expresiones se cumpla, se ejecutará el que esté situado en primer lugar. En el ejemplo
anterior, cuando la variable Valor contiene 5, se cumplen dos casos.
Sintaxis
While Expresión
bloque de instrucciones
End While
Ejemplo
El siguiente ejemplo muestra en consola todos los números desde 1 hasta el valor
introducido
Sub Main()
Dim valor As Integer
Dim contador As Integer=1
Console.WriteLine("Introducir un número")
valor = Console.ReadLine()
Console.WriteLine("Mostrar en consola todos los números desde 1 hasta ”&valor)
While contador <= valor
Console.Write("-" & Contador)
contador += 1
End While
Console.ReadLine()
End Sub
Do...Loop
Esta estructura ejecuta un conjunto de líneas de código en función del valor de una
expresión condicional. La condición puede estar situada al comienzo o final de la
estructura.
Sintaxis
Condición al principio.
Do While | Until Expresión
bloque de instrucciones
Loop
La diferencia entre usar While o Until reside en que empleando While, el código del
bucle se ejecutará mientras la expresión devuelva Verdadero. En el caso de Until, el
código se ejecutará mientras que la expresión devuelva Falso.
Ejemplo
El siguiente ejemplo permite la introducción de un número distinto de 200 y la palabra
coche.
Sintaxis
Condición al final.
La diferencia en este caso, consiste en que el contenido de la estructura se ejecuta al
menos una vez.
Do
bloque de instrucciones
Loop While | Until Expresión
Ejemplo
Realiza la misma operación que el ejemplo anterior
Sub Main()
Dim valor As Integer
Dim palabra As String
End Sub
Sintaxis
For Contador = Inicio To Fin [Step Incremento]
bloque de instrucciones
Next
El elemento Contador se inicializa con un valor y el código existente entre For y Next
es ejecutado una serie de veces, hasta que el valor de Contador se iguala a Fin.
Por defecto, los incrementos de Contador son en uno, pero podemos cambiar este
aspecto utilizando el modificador Step, mediante el que podemos establecer el número
en el que se van a realizar los incrementos. Step también nos permite realizar
decremento utilizando un número negativo.
Ejemplo
El siguiente ejemplo permite observar variaciones del bucle for
Sub Main()
Dim contador As Integer
Dim final As Integer
For Each...Next
La instrucción For Each repite un grupo de sentencias para cada elemento de un array o
de una colección. Esta sentencia será estudiada con detalle en el capítulo dedicado a
Arrays.
Sintasix
For Each Elemento In ColecArray
bloque de instrucciones
Next
Ejemplo
Sub Main()
' crear un array y rellenarlo con valores
Dim isColores() As String = {"Azul", "Verde", "Marino", "Violeta"}
Dim isColor As String
' en cada iteración se obtiene un elemento
' del array lsColores, y se guarda en la variable lsColor
For Each isColor In isColores
Console.WriteLine(isColor)
Next
End Sub
Continue
La sentencia Continue oblige a ejecutar la siguiente iteración del bucle While, Do o For
en el que está contenida.
No se recomienda utilizar esta instrucción pues rompe las reglas de la programación
estructurada.
Sintasix
Continue {While | Do | For}
Sintasix
GoTo etiqueta
.
.
etiqueta:
bloque de instrucciones
Try…Catch
Dentro del esquema de gestión de errores del entorno .NET Framework, encontramos
las figuras del error y la excepción. Estos elementos son utilizados indistintamente en
muchas ocasiones para hacer referencia genérica a los errores producidos; sin embargo,
aunque complementarios, cada uno tiene su propia funcionalidad dentro del proceso de
tratamiento de un error.
• Error. Un error es un evento que se produce durante el funcionamiento de
un programa, provocando una interrupción en su flujo de ejecución. Al
producirse esta situación, el error genera un objeto excepción.
• Excepción. Una excepción es un objeto generado por un error, que contiene
información sobre las características del error que se ha producido.
Visual Basic .NET es un lenguaje orientado a objetos y por lo tanto, la gestión de
errores se realiza mediante excepciones. Cuando se produce un error se lanza una
excepción. Si utilizamos las instrucciones de código necesarias para gestionar las
excepciones, tendremos un control claro en todo momento, sobre la ejecución de
nuestras aplicaciones.
Las instrucciones para usar excepciones tienen una estructura como la que se detalla a
continuación:
Try
bloque de instrucciones donde se detecta la excepción
Catch <tipo_excepción>
bloque de instrucciones en el caso de que suceda una excepción
[Finally
bloque de instrucciones que se ejecutan en cualquier caso]
End Try
Ejemplo
Public Sub Main()
Dim sValor As String
Dim iNumero As Integer
Try
' comienza el control de errores
Console.WriteLine("Introducir un número")
Visual Basic .Net | ESTRUCTURAS DE CONTROL 8
sValor = Console.ReadLine()
' si no hemos introducido un número...
iNumero = sValor ' ...aquí se producirá un error...
' ...y no llegaremos a esta parte del código
iNumero = iNumero + 1000
Catch
' si se produce un error, se genera una excepción
' que capturamos en este bloque de código
' manipulador de excepción, definido por Catch
Console.WriteLine("Error al introducir el número" & _
ControlChars.CrLf &"El valor {0} es incorrecto", sValor)
‘ControlChars.CrLf-> provoca un salto de línea
End Try
' resto del código del procedimiento
' ....
Console.ReadLine()
End Sub
DEPURACIÓN
Se puede utilizar el Visual Studio Debugger para fijar puntos de interrupción en el
código y examinar los valores de variables.
Puede insertar un punto de interrupción pulsando en el margen izquierdo. Vuelva a
pulsar para borrar el punto. Al ejecutar la aplicación en modo de depuración, la
ejecución se detendrá en esta línea y será posible examinar el contenido de variables.
La ventana Inspección resulta útil para supervisar los valores de variables seleccionadas
mientras se ejecuta la aplicación. Si escribe el nombre de una variable en la columna
Nombre, su valor aparecerá en la columna Valor, por lo que podrá ver todos los
cambios que se produzcan durante la ejecución. También es posible sobrescribir el valor
de una variable inspeccionada para modificarla.
Una vez fijados los puntos de interrupción necesarios, se puede ejecutar la aplicación
seleccionando Iniciar Depuración en el menú Depuración o pulsando F5. La
ejecución se detendrá al llegar al primer punto de interrupción.
La ejecución se reanudará al seleccionar Continuar en el menú Depuración, aunque
también se pueden emplear las opciones de avance paso a paso por instrucciones del
menú Depuración para avanzar en el código línea por línea. En el caso de que no se
quiera depurar el interior de un métodos se debe ejecutar sobre la llamada del mismo
sobre la opción avance paso a paso por procedimientos.
PRÁCTICAS
1) Escribir dos versiones (una usando for y otra usando while) de un programa que
imprima una escala de temperatura de -30ºC a +45ªC, en la que varíen de 5 en 5
ºC.
2) Escribir un programa que imprima las tablas de multiplicar del número 1 al 10.
Cada tabla debe ir separada por una línea en blanco.