lunes, 17 de mayo de 2010

WMLScript - Parte IV / IV

4.1 Introducción   

Con la finalidad de agilizar la tarea del programador y de reducir el número de código a enviar al teléfono cada vez que se ejecuta un programa en WMLScript, se han incorporado a los móviles una serie de bibliotecas estándar de WMLScript, de cuyas funciones podemos hacer uso.

Destacar que, para poder llamar a alguna de dichas funciones:

1. No es necesario incluir ningún fichero extra en el fichero desde el que se hace la llamada

2. La llamada a funciones de biblioteca tiene la forma:

nombreDeLaBiblioteca.nombreDeLaFuncion( parámetros )

Es decir, que se usa el punto (.) y no la almohadilla para llamar a la función.

4.2 WMLBrowser   

La biblioteca WMLBrowser se usa para poder acceder al contexto de la página WML, esto es, a sus variables. Las funciones que forman parte de esta biblioteca devolverán el valor invalid solo si el teléfono no soporta llamadas a esta biblioteca.

Veamos algunas de sus funciones (atención a mayúsculas y minúsculas):

--------------------------------------------------------------------------------

getVar( nombreDeVariablestring )

Devuelve el valor de la variable nombreDevariable. Si dicha variable no existiera, devuelve la cadena vacía.

Ejemplo:

var a=WMLBrowser.getVar( 'edad' );

--------------------------------------------------------------------------------

setVar( nombreDeVariablestring, valorstring )

Asigna a la variable el valor especificado.

Devuelve true si la asignación es satisfactoria, false en otro caso.

Ejemplo:

var a=WMLBrowser.setVar( 'edad', '18' ); // a=true

--------------------------------------------------------------------------------

go( urlstring )

Carga en el teléfono la página indicada en url. Si url es la cadena vacía, no hace nada.

Devuelve cadena vacía.

Ejemplo:

var a=WMLBrowser.go( 'http://geneura.ugr.es/wap/index.wml' ); // a=""

-------------------------------------------------------------------------------

prev( )

Carga en el teléfono la página anterior a la actual en el historial.

Devuelve cadena vacía.

Ejemplo:

var a=WMLBrowser.prev(); // a=""

--------------------------------------------------------------------------------

newContext( )

Reinicia el contexto de la página WML activa.

Devuelve cadena vacía.

Ejemplo:

var a=WMLBrowser.newContext(); // a=""

--------------------------------------------------------------------------------

getCurrentCard( )

Devuelve el URL relativo más pequeño especificando la carta (si es que la hay) que está siendo procesada en ese instante por el teléfono.

Ejemplo:

var a=WMLBrowser.getCurrentCard(); //

--------------------------------------------------------------------------------

refresh( )

Actualiza el contexto del teléfono haciendo que muestre de nuevo la carta que está procesando. Es especialmente útil para mostrar en pantalla el valor de las variables "globales" una vez han sido calculadas.

Devuelve la cadena vacía

Ejemplo:

var a=WMLBrowser.refresh(); //

--------------------------------------------------------------------------------

Ejercicio 1:

Realizar una página WML con tres cartas.
La primera dará un mensaje de bienvenida; también pedirá el nombre y el año de nacimiento de una persona e incorporará una opción de "ENTRAR AL SITIO WAP". Al seleccionar esta opción se invocará a una función WMLScript que calculará a partir del año de nacimiento si el usuario tiene más de 17 años o no. Si tiene más de 17 años lo enviará a la segunda carta indicándole que puede entrar al sitio WAP. Si no tiene más de 17 años lo enviará a la tercera carta diciéndole que NO puede entrar.

Ejercicio 2:

Realizar una página WML compuesta de dos cartas.
La primera de ellas debe disponer de una variable que comience valiendo 5 y un temporizador de 2 segundos de duración. Cuando se active el evento provocado por el temporizador se debe llamar a una función en WMLScript que haga decrecer la variable contadora, la muestre en pantalla y provoque un salto de nuevo a la primera carta si el contador no ha llegado a cero y a la segunda si ya lo ha hecho.
La segunda carta no tiene más que mostrar un mensaje para confirmar que se ha saltado a ella.

4.3 Lang   

Esta biblioteca, Lang, contiene un conjunto de funciones directamente relacionadas con la especificación del lenguaje WMLScript.

--------------------------------------------------------------------------------

abs( valornúmero )

Devuelve el valor absoluto del número que se le pasa.

Ejemplo:

var a=Lang.abs( -24.89 ); // a=24.89

--------------------------------------------------------------------------------

min( valor_1número, valor_2número )

Devuelve el valor menor de los dos que se le pasan.

Ejemplo:

var a=Lang.min( 75, -1 ); // a=-1

-------------------------------------------------------------------------------

max( valor_1número, valor_2número )

Devuelve el valor mayor de los dos que se le pasan.

Ejemplo:

var a=Lang.max( 75, -1 ); // a=75



--------------------------------------------------------------------------------

parseInt( valorstring )

Devuelve el valor entero correspondiente a la cadena que se le ha pasado, parando en el momento en que encuentra cualquier carácter distinto de los dígitos 0 al 9.

Ejemplo:

var a=Lang.parseInt( '120 km/h' ); // a=175

--------------------------------------------------------------------------------

parseFloat( valorstring )

Devuelve el valor real correspondiente a la cadena que se le ha pasado, parando en el momento en que encuentra cualquier carácter distinto de los dígitos 0 al 9, el punto (.) o la letra e indicadora de la notación científica.

Ejemplo:

var a=Lang.parseFloat( '-1.20e2 km/h' ); // a=1.2e2

--------------------------------------------------------------------------------

isInt( valorcualquier tipo )

Devuelve true si el valor pasado puede convertirse a entero usando parseInt

Ejemplo:

var a=Lang.isInt( '24.78 km/h' ); // a=true

--------------------------------------------------------------------------------

isFloat( valorcualquier tipo )

Devuelve true si el valor pasado puede convertirse a real usando parseFloat

Ejemplo:

var a=Lang.isFloat( '24.78e3 km/h' ); // a=true

--------------------------------------------------------------------------------

maxInt()

Devuelve el mayor número entero soportado.

Ejemplo:

var a=Lang.maxInt( ); // a=2147483647

--------------------------------------------------------------------------------

minInt()

Devuelve el menor número entero soportado.

Ejemplo:

var a=Lang.minInt( ); // a=-2147483648

--------------------------------------------------------------------------------

float()

Devuelve true si se soportan los números reales, false si no.

Ejemplo:

var a=Lang.float( ); // a=depende del teléfono

--------------------------------------------------------------------------------

exit ( valorcualquier tipo)

Finaliza la interpretación del código en WMLScript devolviendo el control a la entidad que llamó a la función.

Devuelve el valor que se le pasa como parámetro.

Ejemplo:

Lang.exit( "Finalizando. Código 1");

--------------------------------------------------------------------------------

abort( valorstring)

Finaliza la interpretación del código en WMLScript devolviendo el control a la entidad que llamó a la función junto a una descripción del error. Se utiliza cuando no se puede continuar con la ejecución del código en WMLScript debido a problemas serios.

Devuelve el valor que se le pasa como parámetro.

Ejemplo:

Lang.abort( "Fatal error");

--------------------------------------------------------------------------------

random( valornúmero)

Devuelve un número entero aleatorio (bueno, pseudo-aleatorio) entre 0 y el valor que se le pasa (ambos incluidos). El valor no puede ser negativo, y si es un número real, primero se pasa a entero (con Float.int).

Ejemplo:

var a=Lang.random( 10 )-5; // a=-5..5

--------------------------------------------------------------------------------

seed( valornúmero)

Inicializa el generador de números aleatorios con el valor que se le pasa. Si dicho valor es negativo se usa inicializa a un valor aleatorio. Si es un valor no válido, no se cambia el valor de inicialización.

Devuelve cadena vacía.

Ejemplo:

var a=Lang.seed( 5 ); // a=""

--------------------------------------------------------------------------------

characterSet( )

Devuelve el código del juego de caracteres usado por el teléfono que está ejecutando el WMLScript. Dicho código es establecido por el IANA.

Ejemplo:

var a=Lang.characterSet(); // a=4 para latin1

--------------------------------------------------------------------------------

Ejercicio 3:

Realizar una página WML que pida dos números reales y permita elegir una operación entre: SUMAR, RESTAR, MULTIPLICAR y DIVIDIR.
Una vez elegida la operación e introducidos los números, llamar a una función WMLScript que realice la operación y muestre el resultado.

Ejercicio 4:

Hacer una función WMLScript que genere secuencias de números de 4 dígitos aleatorios. Estos números podemos pensar que son los PINES de las tarjetas de crédito de una persona.
Para utilizar la función crear una página WML que pida un pin de 4 dígitos el cual será usado como semilla para generar la secuencia anteriormente citada.
Lo que se persigue es que siempre que el usuario introduzca el mismo pin se le muestre la misma secuencia de pines aleatorios.

4.4 Float   


La biblioteca Float contiene las funciones que más se utilizan a la hora de operar con números reales.

--------------------------------------------------------------------------------

int( valornúmero )

Devuelve la parte entera del número que se le pasa como parámetro.

Ejemplo:

var a=Float.int( -0.34) // a=0

--------------------------------------------------------------------------------

floor( valornúmero )

Devuelve el número entero más cercano pero no mayor que el valor que se le pasa.

Ejemplo:

var a=Float.floor( -0.34) // a=-1
var b=Float.floor( 2.34) // b=2

--------------------------------------------------------------------------------

ceil( valornúmero )

Devuelve el número entero más cercano pero no menor que el valor que se le pasa.

Ejemplo:

var a=Float.ceil( -0.34) // a=-0
var b=Float.ceil( 2.34) // b=3

--------------------------------------------------------------------------------

pow( valor_1número,valor_2número )

Devuelve valor_1 elevado a valor_2, teniendo en cuenta que si valor_1 es negativo, valor_2 debe ser un entero.

Ejemplo:

var a=Float.pow( 5,3) // a=125

--------------------------------------------------------------------------------

round( valornúmero )

Devuelve el número entero más cercano al valor que se le pasa.

Ejemplo:

var a=Float.round( -0.34) // a=-0
var b=Float.round( 2.65) // b=3

------------------------------------------------------------------------------

sqrt( valornúmero )

Devuelve la raíz cuadrada del valor que se le pasa. Dicho valor debe ser positivo, si no devuelve invalid.

Ejemplo:

var a=Float.sqrt( 123*123) // a=123

--------------------------------------------------------------------------------

maxFloat( )

Devuelve el mayor número real soportado.

Ejemplo:

var a=Float.maxFloat() // a=4.40282347E+38

--------------------------------------------------------------------------------

minFloat( )

Devuelve el menor número real soportado.

Ejemplo:

var a=Float.minFloat() // a=1.17549435E-38

--------------------------------------------------------------------------------

Ejercicio 5:

Modificar la calculadora del ejercicio 3 para que permita hacer otras operaciones como potencias, raíces cuadradas, etc.

4.5 String   

String aglutina funciones para el tratamiento de cadenas, aunque también nos puede servir para implementar matrices.

--------------------------------------------------------------------------------

length( cadenastring )

Devuelve un número entero indicando el número de caracteres que forman la cadena.

Ejemplo:

var a=String.length( "Hola!" ) // a=5

--------------------------------------------------------------------------------

isEmpty( cadenastring )

Devuelve true si la cadena es vacía.

Ejemplo:

var a=String.isEmpty( "Hola!" ) // a=false

--------------------------------------------------------------------------------

charAt( cadenastring, posicionnúmero )

Devuelve el carácter que se halla en la posición indicada de la cadena (el primer carácter está en la posición 0).

Ejemplo:

var a=String.charAt( "Hola!",2 ) // a="l"

--------------------------------------------------------------------------------

subString( cadenastring, posicionnúmero, longitudnúmero )

Devuelve la subcadena incluida en cadena empezando en posición y tomando longitud caracteres a partir de ella.

Ejemplo:

var a=String.subString( "Hola!",2,3 ) // a="la!"

--------------------------------------------------------------------------------

find( cadena_1string, cadena_2string )

Devuelve el índice del carácter a partir del cual se encuentra la cadena_2 incluida en cadena_1. Si no se incluye, devuelve -1.

Ejemplo:

var a=String.find( "Hola!","ol" ) // a=1

--------------------------------------------------------------------------------

replace( cadenastring, viejostring, nuevostring )

Devuelve una nueva cadena en la que se han substuido todas las ocurrencias de viejo por nuevo.

Ejemplo:

var a=String.replace( "Pandereta","a","1" ) // a="P1nderet1"

--------------------------------------------------------------------------------

elements( cadenastring, separadorcarácter )

Devuelve el número de elementos en la cadena separados por el separador.

Ejemplo:

var a=String.elements( "mi.casa.es","." ) // a=3

--------------------------------------------------------------------------------

elementAt( cadenastring, posiciónnúmero, separadorcarácter )

Devuelve el elemento número posición que resulta de descomponer la cadena según el separador.

Ejemplo:

var a=String.elementAt( "mi.casa.es",2,"." ) // a="es"

--------------------------------------------------------------------------------

removeAt( cadenastring, posiciónnúmero, separadorcarácter )

Devuelve la misma cadena en la que se ha quitado el elemento número posición que resulta de descomponer la cadena según el separador. El separador que sigue al elemento a quitar también desaparece.

Ejemplo:

var a=String.removeAt( "mi.casa.es",1,"." ) // a="mi.es"

--------------------------------------------------------------------------------

replaceAt( cadenastring, nuevostring posiciónnúmero, separadorcarácter )

Devuelve la misma cadena en la que se ha substituido por nuevo el elemento número posición que resulta de descomponer la cadena según el separador.

Ejemplo:

var a=String.replaceAt( "mi.casa.es","perro",1,"." ) // a="mi.perro.es"

--------------------------------------------------------------------------------

insertAt( cadenastring, nuevostring posiciónnúmero, separadorcarácter )

Devuelve la misma cadena en la que se ha incluido nuevo el elemento número posición que resulta de descomponer la cadena según el separador. Junto a nuevo se incluye el separador si hace falta.

Ejemplo:

var a=String.insertAt( "mi.casa.es","perro",1,"." ) // a="mi.perro.casa.es"

--------------------------------------------------------------------------------

squeeze( cadenastring )

Devuelve la misma cadena en la que se han substituido los grupos de espacios en blanco por uno solo.

Ejemplo:

var a=String.squeeze( "esta      es mi    casa" ) // a="esta es mi casa"

--------------------------------------------------------------------------------

trim( cadenastring )

Devuelve la misma cadena en la que se han quitado todos los espacios del principio y del final.

Ejemplo:

var a=String.trim( "    esta    es mi  casa " ) // a="esta    es mi  casa"

--------------------------------------------------------------------------------

compare( cadena_1string, cadena_2string )

Devuelve -1 si cadena_1 va alfabéticamente antes que cadena_2; 0 si son iguales y 1 si es al revés.

Ejemplo:

var a=String.compare( "Juan", "Luis") // a=-1

--------------------------------------------------------------------------------

toString( valorcualquier tipo )

Devuelve una cadena que representa al valor que se le ha pasado.

Ejemplo:

var a=String.toString( 12 ) // a="12";
var b=String.toString( false ) // b="false";
--------------------------------------------------------------------------------

format( formatocadena, valorcualquier tipo )

Devuelve una cadena que representa al valor que se le ha pasado utilizando el formato que se le indica como parámetro.

El formato se especificará como:

%[longitud].[precision] tipo

donde el tipo puede ser:

d Entero
f Real
s Cadena

Ejemplo:

var a=String.format( "%4d",12 ) // a="  12";
var b=String.toString( "%2.3f", 1.25 ) // b="1.250";

--------------------------------------------------------------------------------
Ejercicio 6:

Crear una función que compruebe si tras quitar los espacios iniciales y finales a una cadena sigue quedando algo o es la cadena vacía.

Ejercicio 7:

Realizar una página WML que pida el nombre y apellidos de una persona. Llamar posteriomente a una función WMLScript que muestre en pantalla las iniciales de dicha persona a partir de su nombre y apellidos.

Ejercicio 8:

Realizar una página WML qie pida el nombre y apellidos de una persona. Posteriormente llamara a una función WMLScript que le genere cinco posibles identificadores (para login o correo electrónico) atendiendo a las siguientes cinco reglas:
1. Iniciales del nombre seguidas del primer apellido.
2. Primer nombre más iniciales de los apellidos.
3. Iniciales del nombre y del primer apellido seguidas del último apellido.
4. Primer nombre y primer apellido separados por _.
5. Nombre completo (cambiando los espacios por _ si los hubiera) seguido de 4 dígitos aleatorios.

4.6 Url   

La biblioteca URL contiene funciones que manejan direcciones URL tanto absolutas como relativas.

Téngase en cuenta que la sintaxis genérica de un URL es:

scheme://host:port/path;params?query#fragment

--------------------------------------------------------------------------------

isValid( urlcadena )

Devuelve true si la cadena que se le pasa tiene una sintaxis correcta de URL, y false si no.

Ejemplo:

var a=URL.isValid( "http://geneura.ugr.es/w.html?a=5" )// a=true
var b=URL.isValid( "algo:??//conecta.com" ); // b=false

--------------------------------------------------------------------------------

getScheme( urlcadena )
getHost( urlcadena )
getPort( urlcadena )
getPath( urlcadena )
getParameters( urlcadena )
getQuery( urlcadena )
getFragment( urlcadena )

Devuelven cada una la parte del URL correspondiente según la sintaxis:

scheme://host:port/path;params?query#fragment

Ejemplo:

var a=URL.getScheme( "http://www.algo.es/" ) // a="http" var b=URL.getHost( "http://www.algo.es" ) // b="www.algo.es" var c=URL.getPort( "http://www.algo.es:8080" ) // c="8080" var d=URL.getPath( "http://www.algo.es/d1/d2/h.html" ) // d="/d1/d2/h.html" var e=URL.getParameters( "http://www.algo.es/h.html;3;4" ) // e="3;4" var f=URL.getQuery( "http://www.algo.es/h.html?name=pepe" ) // f="name=pepe" var g=URL.getFragment( "http://www.algo.es/h.html#ancla" ) // g="ancla"

--------------------------------------------------------------------------------

getBase( )

Devuelve el URL absoluto (sin la parte del fragment) de la biblioteca en que se ejecuta.

Ejemplo:

var a=URL.getBase( ) // a="http://www.algo.es/w.wmls"

--------------------------------------------------------------------------------

getReferer( )

Devuelve el URL relativo más pequeño del fichero desde el que se llamó a la biblioteca en que se ejecuta.

Ejemplo:

var a=URL.getReferer( ) // a="w1.wml"

--------------------------------------------------------------------------------

resolve( URLBasestring, URLIncluidostring )

Devuelve el URL absoluto que se forma uniendo el URLBase con el URLIncluido.

Ejemplo:

var a=URL.resolve( "http://www.a.es/","h.html") // a="http://www.a.es/h.html"

--------------------------------------------------------------------------------

escapeString( cadenastring )

Devuelve la cadena que se le pasa convirtiendo los caracteres especiales en su correspondiente secuencia en hexadecimal con la forma %xx.

Los caracteres especiales son:

- De control: del 00 al 1F y el 7F.
- Espacio: el 20.
- Reservados: ; / ? : @ & = + $ ,
- Otros: { } | \ ^ [ ] `
- Delimitadores: < > # % "

Ejemplo:

var a=URL.escapeString( "http://www.a.es/") // a="http%3a%2f%2fwww.a.es%2f"

--------------------------------------------------------------------------------

unescapeString( cadenastring )

Devuelve la cadena que se le pasa convirtiendo los caracteres especiales de su correspondiente secuencia en hexadecimal a su representación normal.

Ejemplo:

var a=URL.escapeString( "http%3a%2f%2fwww.a.es%2f") // a="http://www.a.es/"

--------------------------------------------------------------------------------

loadString( urlstring, contenidostring )

Devuelve el contenido especificado por el url absoluto y el tipo de contenido

Ejemplo:

var a=URL.loadString( "http://www.a.es/yo.vcf", "text/x-vcard") // a=contendría la información de la vcard especificada.

4.7 Dialogs   
Dialogs es una biblioteca con tres funciones cuyos nombres y funcionalidad serán muy conocidos por los programadores de JavaScript.

--------------------------------------------------------------------------------

alert( mensajestring)

Muestra el mensaje al usuario y espera hasta que pulsa OK.

Devuelve la cadena vacía.

Ejemplo:

Dialogs.alert( "Contacte en el 555 45 43 42" );

--------------------------------------------------------------------------------

confirm( mensajestring, aceptarstring, cancelarstring )

Muestra al usuario un mensaje junto a las alternativas aceptar y cancelar, y espera a que éste elija una de ellas.

Devuelve true si el usuario elige la alternativa aceptar, false si elige cancelar.

Ejemplo:

var a=Dialogs.confirm( "¿Desea acabar?", "Si", "No") // a=true o false

--------------------------------------------------------------------------------

prompt( mensajestring, valorPorDefectostring )

Muestra al usuario un mensaje y le permite introducir un valor, dándole también un valor por defecto.

Devuelve una cadena con el valor introducido por el usuario.

Ejemplo:

var a=Dialogs.prompt( "Su marca de coche:", "Seat" ); // a=lo que introduzca el usuario

--------------------------------------------------------------------------------
Ejercicio 9:

Realizar una página WML que permita introducir pares de valores nombre de producto/precio, alertando al usuario si introduce valores vacíos o negativos. La página debe ser tal que permita añadir nuevos productos, vaciar la lista entrea y visualizarla.

No hay comentarios:

Publicar un comentario