Flujos de Control
Los flujos de control permiten que las acciones ha ser realizadas puedan ser bifurcadas a otra dependiendo de alguna expresión condicional. Existen 2 tipos de flujos de control
Se refiere a que el flujo de control es bifurcado desde una sentencia, o conjunto de estas, a otra, o conjunto de estas. Existen 2 clase de Flujos de control condicionales
IF..THEN..ELSE
La sentencia 'If' permite bifurcar la ejecución del código entre 2 caminos posibles dependiendo de la veracidad o no de una expresión condicional
El tamaño, en líneas de código, de los segmentos, 'verdadero' o 'falso' no tienen un limite.
Ej. If monto_cuota=13 Then nombre= 'Ramiro'
Else nombre= 'Francisco'
End If
También es posible anidar varios 'If..Then..Else' consecutivamente.
Ej.
If monto_cuota=13 Then
nombre= 'Ramiro'
ElseIf monto_cuota=15 Then
nombre= 'Roberto'
Else
nombre= 'Francisco'
End If
CHOOSE
Permite bifurcar la ejecución del código entre múltiples caminos posibles; dependiendo de la veracidad o no de una expresión condicional, principalmente una variable.
El tamaño, en líneas de código, de los segmentos 1..'n' no tienen un limite.
Ej.
Choose case monto_cuota
Case Is< 13: nombre='Ramiro'
Case 16 To 48:nombre= 'Roberto'
Else
nombre='Francisco'
End Choose
Cada Case <expresión> puede tener los siguientes valores:
· Un valor
· Una lista de valores separados por coma. (ej. 2, 4, 6, 8)
· Una cláusula TO, desde hasta. (ej. 1 TO 30)
· Una cláusula IS seguida por un operador relacional y un valor a comparar. (ej. IS>5)
· Cualquier combinación de lo anterior, implícitamente indica un OR. (ej.1, 3, 5, 7, 9, 27 TO 33, IS >42)
Se refiere a la repetición de una(s) sentencia(s) que son definidas dentro de un bloque clarificado por una sentencia iterativa. Existen 2 clases de Flujos de control Iterativos.
FOR..NEXT..STEP
La sentencia for permite repetir una(s) sentencia(s) un número definido anterior al comienzo de la ejecución de estas sentencias.
El tamaño, en líneas de código, del segmento 1, no tienen un limite.
Ej.
for i= 1 to 23
j= i + ( j * 1.2 )
next
La variable i se denomina "contador", el valor final de iteraciones no debe ser superior al rango definido para el tipo de dato del contador. Si el valor de i es superior al valor final de iteración, las sentencias no se ejecutan.
Ej.
For n = 5 to 25 step 5
a = a+10
Next
En este ejemplo la sentencia se ejecutara cuando n>=5 y n<=25, y el valor inicial de n (5) se incrementa en 5 por cada ejecución de las sentencias del bloque dentro de la sentencia for. El valor de Step puede ser negativo, en cuyo caso el valor inicial de la variable contador deberá ser inferior al valor final de la iteración.
DO..UNTIL | WHILE |LOOP
La sentencia Do es utilizada para repetir una(s) sentencia(s) un número no muy definido de veces. El número de veces es casi siempre definido por la comparación de una variable o expresión condicional.
Dentro de esta sentencia existen variantes, cuya única diferencia es el momento cuando se evalúa la expresión que condiciona la ejecución del bloque.
Ej.
integer A = 1, B = 1 //Emite un pito por los parlantes hasta que la variable
DO UNTIL A > 15 // A sea mayor que 15.
Beep(A)
A = (A + 1) * B
LOOP
integer A = 1, B = 1 //Emite un pito por los parlantes mientras la variable
DO WHILE A <= 15 // A sea menor o igual a 15.
Beep(A)
A = (A + 1) * B
LOOP
Observación
En ambos tipos de iteraciones se puede terminar la ejecución del bloque utilizando la sentencia Exit.
Ej.
FOR contador = 1 to 10
IF vector1[Contador] = 0 THEN EXIT
NEXT
En ambos tipos de iteraciones se puede continuar la ejecución del bloque, desde el principio y no ejecutando las demás instrucciones del bloque.
Ej.
integer A=1, B=1
DO WHILE A < 100
A = A+1
B = B+1
IF B > 3 THEN CONTINUE
MessageBox("Hola", "B es = " + String(B) )
LOOP