Você está na página 1de 3

ESTRUCTURAS DE CONTROL EN POWER BUILDER

Los flujos de control permiten que las acciones ha ser realizadas puedan ser bifurcadas a otra
dependiendo de alguna expresin 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 ejecucin del cdigo entre 2 caminos posibles dependiendo de la
veracidad o no de una expresin condicional. El tamao, en lneas de cdigo, de los segmentos,
'verdadero' o 'falso' no tienen un limite.
Ejemplo:
If monto_cuota=13 Then nombre= 'Ramiro'
Else nombre= 'Francisco'
End If
Tambin es posible anidar varios 'If..Then..Else' consecutivamente.
Ejemplo:
If monto_cuota=13 Then
nombre= 'Ramiro'
ElseIf monto_cuota=15 Then
nombre= 'Roberto'
Else
nombre= 'Francisco'
End If
CHOOSE
Permite bifurcar la ejecucin del cdigo entre mltiples caminos posibles; dependiendo de la veracidad o
no de una expresin condicional, principalmente una variable. El tamao, en lneas de cdigo, de los
segmentos 1..'n' no tienen un limite.
Ejemplo:
Choose case monto_cuota
Case Is< 13: nombre='Ramiro'
Case 16 To 48: nombre= 'Roberto'
Else
nombre= 'Francisco'
End Cose
Cada Case puede tener los siguientes valores:
Un valor
Una lista de valores separados por coma. (ej. 2, 4, 6, 8)
Una clusula TO, desde hasta. (ej. 1 TO 30)
Una clusula IS seguida por un operador relacional y un valor a comparar. (ej. IS>5)
Cualquier combinacin de lo anterior, implcitamente indica un OR. (ej.1, 3, 5, 7, 9, 27 TO 33, IS >42)
ITERATIVO
Se refiere a la repeticin 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 nmero definido anterior al comienzo de la
ejecucin de estas sentencias.
El tamao, en lneas de cdigo, del segmento 1, no tienen un limite.
Ejemplo:
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 iteracin, las sentencias no
se ejecutan.
Ejemplo:
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 ejecucin 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 iteracin.
DO..UNTIL | WHILE |LOOP
La sentencia Do es utilizada para repetir una(s) sentencia(s) un nmero no muy definido de veces. El
nmero de veces es casi siempre definido por la comparacin de una variable o expresin condicional.
Dentro de esta sentencia existen variantes, cuya nica diferencia es el momento cuando se evala la
expresin que condiciona la ejecucin del bloque.

Ejemplo:
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
Observacin
En ambos tipos de iteraciones se puede terminar la ejecucin del bloque utilizando la sentencia Exit.
Ejemplo:
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
Ejemplo:
FOR contador = 1 to 10
IF vector1[Contador] = 0 THEN EXIT
NEXT
En ambos tipos de iteraciones se puede continuar la ejecucin del bloque, desde el principio y no
ejecutando las dems instrucciones del bloque.
Instrucciones para el control de los ciclos repetitivos
EXIT
Permite abandonar la ejecucin de un bucle (For y Do Loop) ejecutando la siguiente instruccin despus
del bucle, es decir que el control pasa a la sentencia que va a continuacin del Loop. Una sentencia Exit
se puede utilizar en cualquier lugar de un bloque de sentencias
Ejemplo:
Integer A = 1, C = 0
Do While A < 20
If C > 15 Then EXIT
C++
A++

Loop
A=0
// La sentencia Exit pasa el control aqu
La sentencia Loop se ejecuta mientras el valor de A sea menor que 20. la sentencia IF del bloque de
sentencias ejecuta una sentencia EXIT cuando el calor de C se hace mayor que 15. Esto provoca que
finalice la sentencia LOOP y se pase el control a la sentencia que va a continuacin de ella.
CONTINUE
Cuando aparece una sentencia CONTINUE en una Do While Loop; el control pasa al Do While; las
sentencias existentes entre CONTINUE y Loop no se ejecutan. En una estructura Do While Loop anidada,
una sentencia CONTINUE slo afecta a la estructura Do While Loop en la que se encuentra.
En resumen esta sentencia permite volver a ejecutar el bucle sin necesidad que se ejecuten todas las
instrucciones que contiene.
La funcin MessageBox solo se muestra 2 veces
Int A = 1, B = 1
Do While A < 11
A++
B++
If B > 3 Then Continue
MessageBox(Valores, A = + String(A) + B= + String(B))
Loop
RETURN
La sentencia RETURN termina el script o funcin, devolviendo el control a quien lo llame. Si es un script
de evento, RETURN generalmente devuelve el control a Power Builder. Si el script o funcin regresa un
valor, la sentencia RETURN debe incluir el valor.
HALT
La sentencia HALT termina definitivamente la ejecucin de una aplicacin.
Sintaxis : HALT
GOTO
Cambia el control de una sentencia a otra donde se especifica una etiqueta..
Int A = 1
Do While A < 11
A++
If A =6 Then GOTO Mensaje
MessageBox(Valores, A = + String(A))
Loop
Mensaje:
MessageBox(Salida, A = + String(A))