Você está na página 1de 23

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 I=32000

signo de 16 bits, un número completo sin fracción en I=-32000

el rango –32768 a 32767.


UnsignedInteger, Un entero sin signo de 16 bits en el rango de 0 a U=0

UnsignedInt o Uint 65535 U=60000

UnsignedInteger
Long Un entero largo, entero con signo de 32 bit en el I=1000000

rango –2,147,483,648 a 2,147,483,647 I=-1000000


UnsignedLong o Un entero sin signo de 32 bits en un rango de 0 a U=200000

Ulong 4,249,967,295
Decimal o Dec Un número decimal con signo de mas de 18 dígitos, D=256.369

con un punto decimal en cualquier parte de los 18

dígitos.
Real Un número de 32 bits con signo y punto flotante con R=256.369
aproximadamente 6 dígitos de exactitud y un rango

de 1.17E-38 a 3.4E+38
Double Un número con signo y punto flotante con Dbl=256.369

aproximadamente 15 dígitos de exactitud y un rango

de 2.2E-308 a 1.7E+308
Date Una fecha, con año, mes y día en el rango 1000-01- D=2005-04-16

01 a 3000-12-31
Time Una hora del día; hora, minuto, segundo y más de 6 T=13:50:00

dígitos por segundo fraccional, en el rango 00:00:00 a

23:59:59.99999
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 B=false

valores: true o false


Blob (Binary Large Utilizado para almacenar una cantidad ilimitada de

Object) 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
Escribe nombre de la
Nombre de la estructura, variable y al lado izquierdo
recomiendo usar los elegir el tipo de dato
prefijos (s_alumno)

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.

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 vida


Local Script Sólo el script en el que Hasta que el script
se declara termine
Instancia Instance Variables Para todos los scripts Hasta que la instancia
dentro de una instancia del objeto se cierre.
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ú.
Compartida Shared Variables Para todos los scripts Hasta que termine
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ú.
Global Global Variables Para todos los scripts en Hasta que la aplicación
una aplicación termine.
FUNCIONES Global y External Declaración de Hasta que termine la
EXTERNAS functions funciones fuera del aplicación.
ámbito de Power Builder
como lo son las
FUNCIONES API DE
WINDOWS

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 literal


K1 = k2 // valor de variable
Mivalor = contar(p) // llamada a una función
Sumar = 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 EJEMPLO EQUIVALE


ASIGNACIÓN
++ 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