Power Builder - III

Embed Size (px)

Citation preview

POWER BUILDER SESION III

Estructuras de Control en Power BuilderLos flujos de control permiten que las acciones a 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 clases 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 End If Tambin es posible anidar varios 'If..Then..Else' consecutivamente. nombre= 'Francisco'

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:

1

POWER BUILDER SESION III 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 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 3 THEN CONTINUE MessageBox("Hola", "B es = " + String(B) ) LOOP

Ejemplo: FOR contador = 1 to 10 IF vector1[Contador] = 0 THEN EXIT NEXT

3

POWER BUILDER SESION IIIEn 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.

4

POWER BUILDER SESION IIIHALT 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))

APLICACIN COMPRAS:En la siguiente aplicacin se ingresa el nombre de un producto, su valor de compra, el porcentaje de utilidad y el porcentaje de descuento. Se debe calcular y mostrar los siguientes resultados: IGV (19% del valor de la compra), Precio de compra (Valor de la compra + IGV), Utilidad (Precio de compra x Porcentaje de utilidad / 100), Precio pblico sugerido (Precio de compra + Utilidad), Descuento (Precio de compra x Porcentaje de descuento / 100) y Precio con descuento (Precio pblico sugerido Descuento). Se han utilizado los siguientes controles: GroupBox, StaticText, SingleLineEdit, EditMask. Crear una carpeta: Aplicacion2, luego crear el WorkSpace: WS_APLICACION2 y Target (Application): AP_APLICACION2 Disear la siguiente ventana: (W_COMPRAS) El Script es el siguiente: AP_APLICACION2 OPEN: open(w_compras)

5

POWER BUILDER SESION IIIW_COMPRAS OPEN: sle_nombre.setfocus() PB_CALCULAR CLICKED: //Definicin de variables Decimal vcompra, utiporc, descporc, igv, pcompra, utisoles Decimal ppsugerido, descsoles, pcdescuento vcompra = dec(em_valcom.text) //Valor de la compra utiporc = dec(em_poruti.text) //Porcentaje de utilidad descporc = dec(em_pordes.text) //Porcentaje de descuento

/* Obtener los resultados que se necesitan mostrar*/ igv = vcompra* 19/100 //Calculo del IGV pcompra = vcompra + igv //Precio de compra utisoles = pcompra * utiporc/100 //Utilidad en soles ppsugerido = pcompra + utisoles //Precio pblico sugerido descsoles = ppsugerido * descporc/100 //Descuento en soles pcdescuento = ppsugerido - descsoles //Precio con descuento

//Mostrar los resultados em_igv.text = string(igv,"###,##0.00") em_precom.text = string(pcompra,"###,##0.00") em_utilidad.text = string(utisoles,"###,##0.00") em_ppsugerido.text = string(ppsugerido,"###,##0.00") em_descuento.text = string(descsoles,"###,##0.00") em_pdescuento.text = string(pcdescuento,"###,##0.00") PB_NUEVO CLICKED: sle_nombre.text = "" em_valcom.text = "" em_poruti.text = "" em_pordes.text = ""

6

POWER BUILDER SESION IIIem_igv.text = "" em_precom.text = "" em_utilidad.text = "" em_ppsugerido.text = "" em_descuento.text = "" em_pdescuento.text = "" sle_nombre.setfocus() PB_SALIR CLICKED: integer n n=messagebox("Confirme : ","Est seguro de salir",question!,yesno!) if n=1 then halt

PROBLEMAS PROPUESTOSDesarrollar una aplicacin para cada uno de los casos presentados a continuacin: 1. Suponga que un individuo desea invertir su capital en un banco y desea saber cunto dinero ganar despus de un mes, si el banco paga a razn de 2% mensual. 2. Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el vendedor desea saber cunto dinero obtendr por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibir en el mes tomando en cuenta su sueldo base y comisiones. 3. Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cunto deber pagar finalmente por su compra. 4. Un alumno desea saber cul ser su calificacin final en la materia de Algoritmos. Dicha calificacin se compone de los siguientes porcentajes: 55% del promedio de sus tres calificaciones parciales. 30% de la calificacin del examen final. 15% de la calificacin de un trabajo final. 5. Calcular el precio de un boleto de viaje, tomando en cuenta el nmero de kilmetros que se van a recorrer, sabiendo que el precio es de S/.10.00 por Km. 6. En un hospital existen 3 reas: Urgencias, Pediatra y Traumatologa. El presupuesto anual del hospital se reparte de la siguiente manera:

7

POWER BUILDER SESION IIIObtener la cantidad de dinero que recibir cada rea para cualquier monto presupuestal.

8