You are on page 1of 29

3.

Sentencias de control
Las sentencias de control, denominadas también estructuras de control,
permiten tomar decisiones y realizar un proceso repetidas veces. Se trata de
unas estructuras muy importantes ya que son las encargadas de controlar el
flujo de un programa según los requerimientos del mismo. Visual Basic 6.0
dispone de las siguientes estructuras de control:

If ... Then ... Else


Select Case
For ... Next
Do ... Loop
While … Wend
For Each … Next
Sentencia IF ... THEN ... ELSE ...

Esta estructura permite ejecutar condicionalmente una o más sentencias y


puede escribirse de dos formas.

La primera ocupa sólo una línea y tiene la forma siguiente:


If condicion Then sentencia1 [Else sentencia2]

La segunda es más general y se muestra a continuación:


If condicion Then
sentencia(s)
[Else
sentencia(s)]
End If
Para indicar que se quiere ejecutar uno de varios bloques de sentencias
dependientes cada uno de ellos de una condición, la estructura adecuada es
la siguiente:

If condicion1 Then
sentencias1
ElseIf condicion2 Then
sentencias2
Else
sentencia-n
End If
Por ejemplo, se desea escribir un programa que permita definir si un número a
es menor que un número b,

Solución 1:
If a<b Then Print a & “ es menor que ” & b
If a=b Then Print a & “ es igual que ” & b
If a>b Then Print a & “ es mayor que ” & b

Solución 2:
If a<b Then
Print a & “ es menor que “ & b
ElseIf a=b Then
Print a & “ igual que “ & b
Else
Print a & “ es mayor que “ & b
End If
Ejemplo. Escribir un programa que de como resultado el menor de tres
números a, b, c. Utilizar la sentencia de control If…Then…ElseIf…End If
Sentencia SELECT CASE

Esta sentencia permite ejecutar una de entre varias acciones en función del valor
de una expresión. Es una alternativa a If ... Then ... ElseIf cuando se compara la
misma expresión con diferentes valores.

Select Case expresion


Case etiq1
[ sentencias1]
Case etiq2
[ sentencias2]
Case Else
[ sentenciasn ]
End Select
donde expresion es una expresión numérica o alfanumérica, y etiq1, etiq2, ... pueden
adoptar las formas siguientes:

1. expresion
2. expresion To expresion
3. Is operador-de-relación expresion
4. combinación de las anteriores separadas por comas
Por ejemplo,

Numero = 8 ’ Se inicializa las variable Numero.


’ Se va a evaluar la variable Numero.
Select Case Numero
' Si Numero está entre 1 y 5.
Case 1 To 5
Resultado = "Se encuentra entre 1 y 5“
' Numero es uno de los tres valores.
Case 6, 7, 8
Resultado = "Se encuentra entre 6 y 8“
' Numero es 9 ó 10.
Case Is = 9 , Is = 10
Resultado = "El valor es 9 o 10“
‘Si Numero toma otro valor
Case Else
Resultado = "El número no se encuentra entre 1 y 10"
End Select
Ejemplo. Escribir un programa que de como resultado el menor de tres
números a, b, c. Utilizar la sentencia de control Select Case
Ejercicio. Realizar un programa que calcule las raíces de la ecuación:
a·x2 + b·x + c = 0
Teniendo en cuenta los siguientes casos:
1. Si a=0 y b=0, imprimiremos un mensaje diciendo la ecuación es
degenerada.
2. Si a=0 y b≠0, existe una raíz única con valor –c / b.
3. En los demás casos utilizaremos la fórmula siguiente:

− b ± b 2 − 4·a·c
xi =
2a
La expresión d=b2-4ac se denomina discriminante.
- Si d≥0 entonces hay dos raíces reales
- Si d<0 entonces hay dos raíces complejas de la forma
x + yj, x - yj
Indicar con literales adecuados los datos a introducir, así como los resultados
obtenidos.
Solución.
a. Utilizando la sentencia If … Then … Else …
b. Utilizando la sentencia Select Case
Sentencia FOR ... NEXT

La sentencia For da lugar a un lazo o bucle, y permite ejecutar


un conjunto de sentencias cierto número de veces.
Su forma general es:

For variable = expresion1 To expresion2 [Step expresion3]


[sentencias]
Exit For
[sentencias]
Next [variable]
La sentencia Exit For es opcional y permite salir de un bucle For ... Next antes
de que éste finalice. Por ejemplo,

MyString = "Ing. Química"


For Words = 3 To 1 Step -1
For Chars = Words To Words+4
MyString = MyString & Chars
Next Chars
MyString = MyString & " "
Next Words
Ejercicio. Realizar un programa que permita imprimir los números del 1 al
50. Utilizar la sentencia For … Next

Ejercicio. Realizar un programa que permita imprimir los números impares


del 1 al 50. Utilizar la sentencia For … Next
Sentencia DO ... LOOP

Un Loop (bucle) repite la ejecución de un conjunto de sentencias mientras una


condición dada sea cierta, o hasta que una condición dada sea cierta. La
condición puede ser verificada antes o después de ejecutarse el conjunto de
sentencias. Sus posibles formas son las siguientes:

’ Formato 1:
Do [{While/Until} condición]
[ sentencias]
[Exit Do]
[ sentencias]
Loop
’ Formato 2:
Do
[ sentencias]
[Exit Do]
[ sentencias]
Loop [{While/Until} condicion]

La sentencia opcional Exit Do permite salir de una bucle Do ... Loop antes
de que finalice éste.
Por ejemplo,

Check = True
Counts = 0
Do
Do While Counts < 20
Counts = Counts + 1.
If Counts = 10 Then
Check = False
Exit Do
End If
Loop
Loop Until Check = False
Ejercicio. Realizar un programa que permita imprimir los números del 1 al
50. Utilizar la sentencia Do…Loop

Ejercicio. Realizar un programa que permita imprimir los números impares


del 1 al 50. Utilizar la sentencia Do…Loop
Sentencia WHILE … WEND

Esta sentencia es otra forma de generar bucles que se recorren


mientras se cumpla la condición inicial. Su estructura es la siguiente:
While condicion
[ sentencias]
Wend

Por ejemplo,
Counts = 0
’ Se inicializa la variable.
While Counts < 20 ’ Se comprueba el valor de Counts.
Counts = Counts + 1 ’ Se incrementa el valor de Counts.
Wend ’ Se acaba el bucle cuando Counts > 19.
Ejercicio. Realizar un programa que permita imprimir los números del 1 al
50. Utilizar la sentencia While…Wend

Ejercicio. Realizar un programa que permita imprimir los números del 1 al


50. Utilizar la sentencia While…Wend
Sentencia FOR EACH ... NEXT

Esta construcción es similar al bucle For, con la diferencia de que la variable


que controla la repetición del bucle no toma valores entre un mínimo y un
máximo, sino a partir de los Elementos de un array (o de una colección de
objetos). La forma general es la siguiente:

For Each variable In grupo


[ sentencias]
Next variable
Ejercicios adicionales:

3.1 Escribir un programa que de como resultado la suma de los 100


primeros números naturales

3.2 Realizar un programa que de cómo resultado la suma de los números


pares comprendidos entre dos números a y b.

3.3 Realizar un programa que imprima si un número dado por el teclado es


par o impar, positivo o negativo, entero o decimal.

3.4 Realizar un programa que dé como resultado una tabla donde se


especifique el cuadrado y el cubo de los n primeros números.
NÚMERO CUADRADO CUBO
3.5 Realizar un programa que liste la tabla de sumar entre 0 y 9 de
cualquier número introducido por el teclado.

3.6 Realizar un programa que liste las tablas de multiplicar de todos los
números comprendidos entre otros dos a y b, introducidos por el
teclado.

3.7 Realizar un programa que dé como resultado la suma y la media de un


conjunto de números introducidos por el teclado. La entrada de datos
finalizará, por ejemplo al teclear el número 99999.

3.8 Realizar un programa que de cómo resultado el mayor y el menor de un


conjunto de números introducidos por el teclado. La entrada de datos
finalizará por ejemplo, con el número 99999.
3.9 Realizar un programa que dibuje un triángulo de n filas ,
empleando el carácter asterisco. Realice el programa utilizando:
a. Sentencias For
b. Sentencias While

Por ejemplo, para n=4

*******
*****
***
*
3.10 Implementar un programa que permita evaluar el factorial de un
número entero positivo. Por ejemplo
Si n = 5: S = 5*4*3*2*1
Si n = 3: S = 3*2*1

3.11 Implementar programas que permitan evaluar la suma total de los n


primeros términos de las siguientes series:
a. La suma de los n primeros términos de la serie
S = 1 + 3 + 5 + 7 + ...

b. La suma de los n primeros términos de la serie


1 1 1 1 1
S = − + − + − ...... +
1 2 3 4 n

c. S = 1-2+3-5+8-13+21-34+…..
d. Evaluar los n primeros térmicos de la serie:
1 1 1 1
S = − + − + ......
1! 3! 5! 7!

3.12 Implementar un programa que permita ingresar 4 números


enteros y ordenarlos de acuerdo a las opciones: de mayor a
menor, o de menor a mayor.

3.13 Implementar un programa que permita determinar si un


número entero ingresado es primo.
3.14 Utilizando la sentencia For … Next , escribir un programa que imprima un tablero
de ajedrez en el que las casillas blancas se simbolizarán con una B y las negras con una
N. Así mismo el programa deberá marcar con * las casillas a las que se puede mover
un alfil desde una posición dada. La solución será similar a la siguiente:

Posición del alfil:


Fila 3
Columna 4

B* BNB *BN
NB *B*B NB
BNB*BN BN
NB*B* B NB
B*BNB * BN
*BNBNB * B
BNBNBNB*
NBNBNBNB
Para información más detallada, revisar el capítulo 5 del texto:
Cevallos Javier. Curso de Programación de Visual Basic 6.
Alfaomega. 2000