Capitulo IX
Continuando con el siguiente capitulo de Power Builder 9.0 que lo denominaré MANUAL
INSTRUCTIVO de Power Builder INTERMEDIO... donde veremos lo siguiente
Elementos del lenguaje Power Script
DECLARACION DE VARIABLES
o TIPO DE DATOS STANDART
o TIPO DE DATOS ENUMERATED
o TIPO DE DATOS OBJECT CLASS
o TIPO DE DATOS STRUCTURE
AMBITO DE LAS VARIABLES
ARREGLOS
LLAMADA DE FUNCION
COMENTARIOS
SENTENCIAS DE ASIGNACION
SENTENCIAS DE CONTROL DE PROGRAMA
Cada línea de código comprende uno de estos elementos de lenguaje:
Declaración de variable
Sentencias de asignación
Sentencias de control de programa
Arreglos
Llamada de función
Comentarios
DECLARACION DE VARIABLES.
Al declarar una variable nosotros lo que hacemos es reservar espacio de memoria para recibir
el contenido de esta variable, entonces debemos declarar que tipo debe ser esta variable para
establecer el tamaño de memoria que va a reservar la variable.
Se almacena un valor en una variable con el fin de leer y trabajar con el valor de la variable o
cambiar el valor.
NOMBRANDO UNA VARIABLE.
El nombre de una variable puede ser tan largo como 99 caracteres.
Puede elegir cualquier nombre que quiera.
El primer carácter deberá ser una letra y los caracteres restantes debe ser letras dígitos o
caracteres especiales como: ($),(#),(%),(¡),(¿)
DECLARAR UNA VARIABLE.
El compilador de Power Builder requiere que cada variable sea declarada. DECLARE
VARIABLES – significa notificar a Power Builder acerca de los nombres de las variables que el
Power Script utilizará y el tipo de datos que cada una tendrá.
Para declarar una variable., ingrese el tipo de datos seguidos por uno o más espacios y el
nombre de la variable.
Ejemplo:
STRING NOMBRE
INTEGER COSTO
También se puede declarar variables múltiples del mismo tipo de datos en una línea. Emplee
comas entre los nombres de variables:
Ejemplo:
Nota. Para el Power Script le es indiferente el uso de mayúscula y/o minúsculas.
TIPOS DE DATOS.
Cada variable en la aplicación Power Builder debe tener un tipo de dato específico. El tipo de
dato especifica, la clase de datos que una variable especifica puede contener, tal como un
String, Integer, Date. Existen cuatro tipos de categorías en los tipos de datos en el lenguaje
power Script:
TIPOS DE DATOS STANDART
TIPO DE DATOS DESCRIPCION EJEMPLOS
String Una cadena de texto de hasta 60,000 caracteres. S= “enrique”
Caracter o char Un carácter simple C=”K”
Integer o Int Un entero corto, o más precisamente un entero con
signo de 16 bits, un número completo sin fracción en
el rango –32768 a 32767.
I=32000
I=-32000
UnsignedInteger,
UnsignedInt o Uint
UnsignedInteger
Un entero sin signo de 16 bits en el rango de 0 a
65535
U=0
U=60000
Long Un entero largo, entero con signo de 32 bit en el
rango –2,147,483,648 a 2,147,483,647
I=1000000
I=-1000000
UnsignedLong o
Ulong
Un entero sin signo de 32 bits en un rango de 0 a
4,249,967,295
U=200000
Decimal o Dec Un número decimal con signo de mas de 18 dígitos,
con un punto decimal en cualquier parte de los 18
dígitos.
D=256.369
Real Un número de 32 bits con signo y punto flotante con
aproximadamente 6 dígitos de exactitud y un rango
de 1.17E-38 a 3.4E+38
R=256.369
Double Un número con signo y punto flotante con
aproximadamente 15 dígitos de exactitud y un rango
de 2.2E-308 a 1.7E+308
Dbl=256.369
Date Una fecha, con año, mes y día en el rango 1000-01-
01 a 3000-12-31
D=2005-04-16
Time Una hora del día; hora, minuto, segundo y más de 6
dígitos por segundo fraccional, en el rango 00:00:00 a
23:59:59.99999
T=13:50:00
Datetime Combinación de una fecha y una hora en un único
tipo de datos. Se usa para mantener un valor de este
tipo recuperado de la base de datos.
Boolean Tipo de datos lógico, donde contiene dos posibles
valores: true o false
B=false
Blob (Binary Large
Object)
Utilizado para almacenar una cantidad ilimitada de
datos tal como una cantidad grande de texto o un
gráfico. Datos sin formato, por ejemplo, una imagen o
un bloque de texto.
Any Un tipo de dato genérico capaz de mantener
cualquiera de los tipos de valores
Todas las variables de Power Script declaradas con un tipo de dato estándar se le asigna un
valor inicial, ya sea una declaración hecha o por Power Builder. Un valor inicial es el primer
valor que una variable contiene cuando recién aparece.
Las declaraciones de variables que hemos visto. No especifican un valor inicial. Por ello Power
Builder le asigna un valor en base al tipo de dato.
Por ejemplo:
Los strings se inicializan como cadenas vacias (“”).
Los Integers decimales y otros números como 0.
Los booleanos como se inicializan como false
Si quiere reemplazar los valores iniciales, solo incluya un nuevo valor en la declaración de
variables, como en estos ejemplos:
String apellido=”pando”
Date fechanac=1977-07-26
Integer edad=28
TIPOS DE DATOS ENUMERATED (enumerados)
El tipo de dato enumerado es un tipo de dato con un conjunto limitado de valores especiales.
Por ejemplo “Alignment” es un tipo de dato enumerado. Una variable de tipo alineamiento
puede tener uno de los cuatro valores: center!, left! o right!. A continuación tenemos ejemplos
de tales variables:
Alignment alinea // declara "alinea" para que sea un tipo de variable alignment
Alinea=right! // asigna uno de los cuatro valores posibles de la variable.
st_1.alignment=alinea //cambia la propiedad del control
Nota: Puedes probar este ejercicio agregando un control Static Text y botón de comando,
donde codificarás las líneas arriba.
Se puede hacer este ejemplo de una manera más sencilla y directa, dejando la variable y
cambiando la propiedad directamente
St_1.alignment=left!
CONSTANTES.
También se puede asignar un valor inicial a una variable que no cambiará durante la ejecución,
se deberá considerar la conversión de la variable a constante. Una constante es esencialmente
una variable de solo lectura, sólo se le agrega la palabra “constant” para el inicio de la
declaración. Ejemplo:
Constant dec igv=0.19
El tipo de datos para una constante debe ser un tipo de dato estándar o un tipo de dato
enumerado.
TIPO DE DATOS OBJECT CLASS (CLASE DE OBJETOS)
Una variable declarada con un tipo de dato object class puede utilizarse para referirse a un
objeto.
Cada control dentro de una ventana es una clase de objeto y así mismo un objeto es una
ventana. Suponga que tiene dos controles static text: st_codigo y st_nombre, en una ventana.
Ambos son objetos static text y este script convertirá rojo a ambos. Ejemplo :
St_nombres.backcolor= 255
St_apellidos.backcolor=255
Como alternativa, puede declarar una variable static text y utilizarla como referencia para estos
objetos static text. De esta manera el script cambia a ambos controles al color rojo:
Statictext etiqueta // declara "etiqueta" para ser una variable Static Text
etiqueta=st_nombres //asigna la variable al primer control.
etiqueta.backcolor=255 // cambia el color del fondo a rojo
etiqueta=st_apellidos // Asigna la variable al segundo control.
etiqueta.backcolor = 255 //cambia el color del fondo a rojo
Cada tipo de objeto, tal como el Static Text, es un tipo de dato object class, en otras palabras
se puede utilizar para declarar variables.
Un uso importante de tipos de datos object class es declarar y crear instancias de objetos no
visuales, especialmente para clases de objetos definidos por el usuario.
TIPO DE DATOS STRUCTURE (ESTRUCTURA)
Structure es un tipo de variable definido por el programador. Una variable simple de estructura
puede mantener múltiples valores, algo parecido a un arreglo (array).
Use al pintor de la Estructura para definir las estructuras globales (los grupos de variables) para
el uso en su aplicación. Usted no puede usar al pintor de la Estructura para definir una
estructura local.
Pasos para crear un TIPO DE DATO STRUCTURA
A continuación guardar la ventana (clic en el icono del -para los despistados-), una vez
más vuelvo a recalcar utilizar los prefijos; en este caso a la estructura lo llamaremos s_alumno.
Ahora bien ya esta definida la variable de tipo estructura, lo que nos falta es asignar a una
variable es tipo de estructura. Lo graficaré así para su mayor entendimiento.
Lo que la imagen de arriba muestra significa que estoy declarando el tipo estructura s_alumno
a la variable alumnos.
Escribe nombre de la variable y al lado izquierdo elegir el tipo de dato
Nombre de la estructura, recomiendo usar los prefijos (s_alumno)
Pero ahí no acaba todo... ya solo falta asignar datos a este tipo de variables. Es sencillo
sólo no pierdan la ilación del curso.
y listo terminamos con el tipo de datos Structure. Continuamos con ...
ambito de las variables
Cada vez que se declara una variable, no solo especifica su nombre y tipo de datos sino
tambien su AMBITO. El ambito de la variable determina dos características
LEFESPAN. (Tiempo de vida). ¿Cuándo existe la variable?, ¿Cuánto tiempo vivirá?, y
¿cuándo dejaá de existir?
VISIBILITY (Visibilidad). ¿Qué scripts pueden ver, compartir y cambiar la variable?
Se determina el alcance de una variable, decidiendo donde declararlo. Cada variable debe ser
declarada en alguna parte dentro de la aplicación. Sin embargo existen cinco lugares para
declarar la variable y esto determina el alcance de la variable.
Existe cinco opciones: Global Variables, shared variables, Instance Variables, Global y local
External Functions
Ambito de la variable declaracion Visibilidad Tiempo de vidaLocal Script Sólo el script en el que
se declaraHasta que el script termine
Instancia Instance Variables Para todos los scripts dentro de una instancia simple del objeto en que es declarado y opcionalmente a la entera aplicación. Los siguientes tipos de objetos pueden tener variables de instancia: Ventana, aplicación, objeto de usuario y menú.
Hasta que la instancia del objeto se cierre.
Compartida Shared Variables Para todos los scripts dentro de las instancia de los objetos en el que es declarado . Los siguientes tipos de objetos pueden tener variables de instancia: Ventana, aplicación, objeto de usuario y menú.
Hasta que termine
Global Global Variables Para todos los scripts en una aplicación
Hasta que la aplicación termine.
FUNCIONES EXTERNAS
Global y External functions
Declaración de funciones fuera del ámbito de Power Builder como lo son las FUNCIONES API DE WINDOWS
Hasta que termine la aplicación.
SENTENCIAS DE ASIGNACION
Como en todo lenguaje de programación visual, la asignación de valores se hace de izquierda
a derecha.
Variable = valor de la variable
En otras palabras “Asignar algún valor a algo”. Frecuentemente lo que esta en la izquierda es una variable
T=100
En la parte derecha podría haber un literal, una variable, una llamada de función, una expresión. Así como por ejemplo
T = 3 // valor literalK1 = k2 // valor de variable
Mivalor = contar(p) // llamada a una funciónSumar = s + t // valor de expresión
Un literal puede ser exactamente números, cadenas, fechas, valores de tiempo, etc. Todos los
tipos de datos vistos anteriormente.
UNA EXPRESIÓN puede incluir uno de los siguientes operadores :
Aritméticos : Suma (+) , resta ( - ), multiplicación ( * ), división ( / ) , potenciación (^)
Lógico . not, and y or
Relacional: igual (= ), mayor que (>), menor que (<), diferente a ( <>), mayor que o
igual a (>=), menor que o igual a (<=)
Concatenación (unión) de cadenas(texto): ( + )
CUADRO DE ASIGNACIÓN DE VARIABLES
OPERADORES DE ASIGNACIÓN
EJEMPLO EQUIVALE
++ J++ J=J+1-- J-- J=J-1+= J+=2 J=J+2-= J-=2 J=J-2*= J*=2 J=J*2/= J/=2 J=J/2
Arreglos (ARRAYS)
Una variable tradicional tal como la que hemos visto, es un lugar de almacenamiento simple en
memoria que no puede matener mas de un valor a la vez.
Sin embargo Power Builder proporciona algunos tipos de variables especiales que pueden
mantener valores múltiples. El más conocido de estos es ARRAY.
Un array es una variable especial que mantiene muchos lugares de almacenamientos, no sólo
uno.
Una array puede ser simple o multidimensional. Los arrays de dimensiones simples puede
tener un tamaño fijo o un tamaño variable.
Mientras los arrays multidimensionales deben tener una medida fija.
Los arrays pueden ser de cualquier tipo de datos y son declarados de una manera similar a las
variables de valor simple.
Para crear un arreglo escriba el nombre del arreglo en la sentencia de declaración con un par
de corchetes.
Si los corchetes contienen dos o más números, este es un arreglo de tamaño
fijo.
Si lo corchetes están vacíos es un arreglo de tamaño variable.
Ejemplos: Lo que más desea un estudiante de este curso....
String apellidos[50] // declaro un array con una cantidad fija de elementos
Date fechanac[] // declaro un array con un tamaño variable.
Dec array[0 to 30] // declaro un array con 31 elementos
Dec array[5,3] // declaro un array multimensional con 5 filas 3 columnas
(1,1)
(3,2)
(5,3)
Un ejemplo claro, para aprender el uso de ARRAYS
Para comenzar a trabajar con los arreglos se debe asignar primero los valores en memoria y
luego asignamos los valores según el tipo seleccionado a un control ListBox como en el
ejemplo anterior.
Notas: Para concretizar el ejemplo anterior utilizamos un control commandbutton donde
codificamos y 3 controles listbox
Más Ejemplos:
Integer numeros[3]= {1000,2000,3999}
Para asignar los valores a los arrays creados seguimos los siguientes pasos:
String apellidos[4]={“Vásquez”, “Pando”, “Ticona”, ”Arocutipa”}
Date fechanac[2]={1977-07-26,1981-10-28}
Int edades[]={21,23,25,27,29,9}
LLAMADAS DE FUNCION
Como veremos en el capitulo proximo sobre funciones, éstas son módulos de programas que
se definen una vez y es llamado desde muchas partes en la aplicación. Es mejor llamar a una
función que realizar muchas copias del mismo código.
Llamada de una función
Variable de retorno= nombre función (parámetros)
Ejemplo:
Integer r
R= asc(“@”)
COMENTARIOS
Utilice los comentarios en línea para describir lineas individuales de código, divida scripts largos
y funciones en secciones. Preceda cada sección con un comentario en línea completa,
explicando las propuestas de las secciones. Agregue una línea en blanco debajo y por encima
del comentario de manera que el inicia de la sección sea fácil de ver.
Utilice para realizar un comentario el símbolo ( // - dos slashs continuos -) y luego el comentario
en línea. Ejemplo:
// este es un comentario en línea
Utilice los siguientes símbolos (/* líneas de comentarios /* ) si desea hacer un comentario en
varias líneas contiguas . Ejemplo
/* este es un ejemplo
de varias líneas de
comentarios. Es muy útil
su empleo para facilitar al
educando en su instrucción */
SENTENCIAS DE CONTROL DE PROGRAMA
1. SENTENCIA IF ... THEN SIMPLE
2. SENTENCIA IF .... THEN ... SIN END IF
3. SENTENCIA IF.... THEN .. ELSE
4. SENTENCIA IF... THEN ... ELSEIF ...
5. CHOOSE CASE .... END CHOOSE
6. DO ... LOOP
a. DO .... LOOP WHILE
b. DO ... LOOP UNTIL
c. DO WHILE ... LOOP
d. DO UNTIL ... LOOP
7. CONTINUE .. EXIT
8. RETURN
9. HALT.
I. SENTENCIAS DE CONDICION
Es posible que tengamos muchas alternativas de decisión y se ejecutarán solo si una condición
es verdadera (TRUE). Existen dos formas en la instrucción IF THEN
1. Formas de usar la sentencia IF... THEN
a. Sentencia IF ... THEN simple
IF condición THEN
sentencias1
{Else
sentencias2}
END IF
Ejemplos:
IF cont > 3 THEN
Messagebox (“Titulo”, “usted a vencido sus 3 intentos”)
END IF
Si usted necesita más de una posible respuesta a una condición se podrá utilizar esta
sentencia:
integer nota
nota =integer(sle_nota.text)
if nota>10 and nota<=20 then
messagebox ("Titulo","Aprobado")
else
messagebox ("Titulo","Desaprobado")
end if
si desea hacer algo cuando la condición sea falsa, agregue la palabra NOT antes de la
condición -encerrándola entre paréntesis-, el compilador de Power Script así lo requiere para
hacerlo mas claro. Ejemplo:
IF Not (num=0) Then
Sentencias......
END IF
Lo que nos quiere decir... SI la variable num es diferente de 0 Entonces....
Existe otra forma de hacer lo mismo, utilizando el símbolo “<>” en lugar de “not”, este no
requiere paréntesis. Ejemplo
IF num<>0 Then
Sentencias......
END IF
b. Setencia IF ... THEN sin endif
También se puede construir una instrucción IF ... THEN en una sola línea, es decir, a
continuación del THEN se escribe una sola sentencia. En este caso no terminará con la línea
END IF. Ejemplo
IF edad > 18 THEN messagebox (“Titulo”, “Es mayor de edad”)
c. IF ... THEN ... ELSEIF..
Otra forma más complicada de hacer la sentencia IF.. THEN ... END IF es la construcción de :
IF condicion1THEN
sentencias
ELSEIF condicion2 THEN
sentencias
ELSE
sentencias
END IF
Power Builder verifica la condición 1, si esta es falsa verifica la condición 2 y así sucesivamente
hasta que encuentre una condición verdadera, o ejecutará de lo contrario la sentencia ELSE
con su correspondiente código de instrucciones. Ejemplo:
En este ejemplo el programa pide ingresar un valor el cual mostrará un mensaje si el valor
ingresado es “cero”, “positivo” o “negativo”, observa y analiza las condiciones.
2. SENTENCIA CHOOSE CASE ... END CHOOSE
Cuando la condiciones se trata de hacerlo hacia una misma variable, la sentencia IF... Then se
complica lo cual es muy recomendable usar Choose Case.
Sintaxis:
CHOOSE CASE variable/expresión
CASE
Instrucciones
CASE
Instrucciones
CASE
Instrucciones
CASE
Instrucciones
CASE ELSE
Instrucciones
END CHOOSE
Cualquier número de instrucciones pueden seguir inmediatamente después de la línea CASE,
sólo uno de los casos condicionados será verdadero y ejecutado su correspondiente código,
caso contrario se ejecutará la sentencia CASE ELSE.
El segmento CASE ELSE es opcional pero se utiliza para poner la última línea de instrucciones
en el supuesto caso de que ninguno de los casos anteriores sea verdad. Ejemplo :
Este ejemplo muestra un mensaje de acuerdo a la edad ingresada en una caja de texto
(sle_edad) comparando cada uno de los posibles casos. Analiza el código.
Hay muchas maneras de expresar una condición en la línea CASE, para especificar un una
lista de valores o un rango.
CASE 0 // en el caso de que sea igual a 0
CASE 1,2,3,4 // en el caso que sea 1 o 2 o 3 o 4
CASE 5 to 10 // en el caso que el valor este entre 5 y 10
Case IS < 15 // en el caso que sea menor que 15
Case 16,17,18, 20 to 25 , is <35 // en el caso que sea 16 o 17 o 18 o 20
// o este entre 20 y 25
// o en el caso que sea menor que 35
I. BUCLES O CICLOS REPETITIVOS.
1. DO .. LOOP
Las sentencias DO .. LOOP es una sentencia de bucle, origina que un bloque de código se
ejecute una y otra vez un número de veces finito.
La construcción DO...LOOP tiene cuatro sintaxis diferentes, cada sentencia es ligeramente
diferente de la otra. Las sintaxis son las siguientes:
a) DO ... LOOP WHILE <condicion>
El código se ejecuta MIENTRAS que la condición sea verdadera.
Ejemplo :
integer c=0,s
do
s+=c
c++
lb_1.additem (string(c))
loop while c<10
b) DO ... LOOP UNTIL <condición>
Es semejante a la instrucción anterior, con la excepción que se ejecuta el código dentro del
bucle HASTA que la condición sea verdadera
Ejemplo
integer c=0,s
do
s+=c
c++
lb_1.additem (string(c))
loop until c>9
NOTA: Sólo fíjate y analiza las condiciones, observa que cambian los símbolos de
comparación.
c) DO WHILE <condicion> LOOP
Ejecuta el código dentro del bucle MIENTRAS que la condición es verdadera, observar que la
condición se verifica al inicio de cada ciclo repetitivo de esta manera el script no podrá ejecutar
el código dentro del ciclo repetitivo si la condición no se cumple.
integer c=0,s
do while c<10
s+=c
c++
lb_1.additem (string(c))
loop
d) DO UNTIL <condición> LOOP
De igual manera que la anterior instrucción, la condición se verifica al inicio del ciclo y el código
se ejecuta HASTA que llegue a ser verdadera la condición.
integer c=0,s
do until c>9
s+=c
c++
lb_1.additem (string(c))
loop
II. INSTRUCCIONES PARA EL CONTROL DE LOS CICLOS REPETITIVOS
a) CONTINUE y EXIT
El comando CONTINUE y EXIT interrumpe un bucle en progreso. Más exactamente el
comando CONTINUE termina sola la iteración actual y continua con la siguiente iteración, si
hay algo más que realizar. Por otro lado el comando EXIT, termina abruptamente con las
iteraciones restantes del bucle.
Sintaxis : EXIT
Ejemplo:
integer c=0,s
do while c<10
if c= 5 then EXIT // el bucle termina
s+=c
c++
lb_1.additem (string(c))
loop
b) RETURN
La sentencia RETURN termina el script o función, 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 función regresa un valor, la sentencia RETURN debe incluir el valor.
c) HALT
La sentencia HALT termina definitivamente la ejecución de una aplicación.
Sintaxis : HALT