Download doc - Power Builder 9 - 2

Transcript
Page 1: Power Builder 9 - 2

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.

Page 2: Power Builder 9 - 2

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:

Page 3: Power Builder 9 - 2

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

Page 4: Power Builder 9 - 2

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

Page 5: Power Builder 9 - 2

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:

Page 6: Power Builder 9 - 2

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)

Page 7: Power Builder 9 - 2

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.

Page 8: Power Builder 9 - 2

Pasos para crear un TIPO DE DATO STRUCTURA

Page 9: Power Builder 9 - 2

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)

Page 10: Power Builder 9 - 2

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.

Page 11: Power Builder 9 - 2

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

Page 12: Power Builder 9 - 2

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.

Page 13: Power Builder 9 - 2

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

Page 14: Power Builder 9 - 2

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:

Page 15: Power Builder 9 - 2

// 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.

Page 16: Power Builder 9 - 2

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

Page 17: Power Builder 9 - 2

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

Page 18: Power Builder 9 - 2

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

Page 19: Power Builder 9 - 2

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

Page 20: Power Builder 9 - 2

// 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++

Page 21: Power Builder 9 - 2

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))

Page 22: Power Builder 9 - 2

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