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

Condicional

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)

Iterativo

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.

168.GIF (5867 bytes)

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