web dinámica josé manuel gutiérrez universidad de cantabria [email protected] internet html...

70
Web Dinámica José Manuel Gutiérrez Universidad de Cantabria [email protected] Internet HTML JavaScript Java http://personales. unican .es/ gutierjm

Upload: aaron-cortes-silva

Post on 24-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica

José Manuel Gutiérrez

Universidad de [email protected]

InternetHTML

JavaScript Java

http://personales.unican.es/gutierjm

Page 2: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 2

Www.w3c.org (WWW Consortium)

local

Page 3: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 3

Estructura de un documento HTML

Cada documento HTML tiene asociada una dirección URL (Localizador uniforme de recursos) al que se accede mediante el protocolo HTTP

http://personales.unican.es/gutierjm

La estructura de un documento HTML es sencilla:

<HTML><!-- Documento HTML de prueba -->

<HEAD> <TITLE> Prueba </TITLE> </HEAD> <BODY> El navegador interpreta y visualiza el contenido </BODY>

</HTML>

Page 4: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 4

Comandos HTML

El lenguaje HTML posee una serie de marcas/comandos encerradas entre los signos < y > (signo de marca). Los navegadores ignoran cualquier marca que carezca de sentido y la tratan como texto.

En el nombre del comando no se distingue el uso de mayúsculas y minúsculas y los cambios de línea y espacios son ignorados al visualizar el contenido.

Existen dos tipos de comandos HTML: Comandos con finalizador.

Prueba de <B>texto en negrita</B>

Comandos sin finalizador. Por ejemplo:<IMG SRC="Imagen.gif">

Algunos comandos admiten parámetros:

<IMG SRC="Imagen.gif" ALIGN="RIGHT">

Page 5: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 5

Formularios. Interacción con el servidor

La información es enviada a un CGI (Common Gateway Interface) para su procesamiento.

delimitado por los comandos <FORM> </FORM>. El comando <FORM> admite un parámetro ACTION, cuyo valor es el URL del CGI.

Cada campo se define utilizando el comando <INPUT> y puede ser de diferentes tipos, dependiendo del valor de TYPE:

text: campo de texto.button: botón.radio: botón de radio.checkbox: caja de selección.submit: botón para el envío.reset: borrado.

NAME nombre que utilizará el CGI para referirse al campo.  VALUE utilizado para dar al campo valores por defecto.SIZE establece el tamaño del campo (número de caracteres)MAXSIZE indica el número máximo de caracteres que puede recibir el campo. 

Page 6: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 6

Ej. de Formulario<html><head><title>Formulario</title></head><body><H1>Datos personales</H1>

<FORM ACTION="http://servidor/Directorio/Nombre.cgi">Nombre <INPUT TYPE="text" NAME="Campo1" SIZE=25> Tel&eacute;fono <INPUT TYPE="text" NAME="Campo2" SIZE=10> <BR>Domicilio <INPUT TYPE="text" NAME="Campo3" SIZE=43> <BR>Estado civil: <INPUT TYPE="radio" NAME="ec" VALUE="S">Soltero<INPUT TYPE="radio" NAME="ec" VALUE="C">Casado<INPUT TYPE="radio" NAME="ec" VALUE="D">Divorciado<INPUT TYPE="radio" NAME="ec" VALUE="V">Viudo <BR><BR>Estudios realizados:<SELECT NAME="Estudios"> <OPTION>Sin estudios <OPTION SELECTED>Primarios <OPTION>Bachillerato <OPTION>Universitarios</SELECT><INPUT TYPE="checkbox" NAME="Cliente">Cliente actual<BR><BR>Observaciones:<TEXTAREA NAME="Observ" ROWS=3 COLS=35></TEXTAREA><BR><BR><INPUT TYPE="submit" VALUE="Enviar"><INPUT TYPE="reset" VALUE="Borrar">

</FORM></body></html>

ACTION="mailto:[email protected]" METHOD="POST“ENCTYPE="text/plain"

Page 7: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 7

Page 8: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 8

XML: Esquema para datos Meteorológicos

<?xml version="1.0" encoding="UTF-8"?><Class xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="meteo.xsd"> <Stream model="Wave model"> <Version value="4096"> <Type type="Forecast"> <Date>1967-08-13</Date> <Time>12:00</Time> <Step>24</Step> <Number>0</Number> <Level type="Pressure level">1000</Level> <Parameter table="ECMWF">Z</Parameter> </Type> </Version> </Stream></Class>

XML Instance

XML Schema

Page 9: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 9

Page 10: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 10

Page 11: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 11

XML: Fuentes de información

http://wwws.sun.com/software/xml/ http://www.oasis-open.org/cover/sgml-xml.html

Page 12: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 12

SVG. Scalable Vector Graphics

<?xml version="1.0" encoding="iso-8859-1"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

<svg width= "500" height="500" viewBox="-100 -100 200 200" xmlns="http://www.w3.org/2000/svg">

<!--Imprimimos los patrones [5537]"-->

<g style="stroke-width:0.5; fill:blue; shape-rendering:default">

<circle cx="-26.4095" cy="6.19866" r="0.5"/>

<circle cx="-24.9492" cy="13.0801" r="0.5"/>

<circle cx="-47.9709" cy="63.9941" r="0.5"/>

En ocasiones, los formatos gráficos de mapas de bits, o comprimidos, no resultan apropiados para mostar información en la Web. Ejemplo svg.

Page 13: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 13

MathML. Mathematica Markup Languaje

La notación matemática es de un extremado rigor y está libre de ambigüedad.

MathML permite codificar objetos matemáticos definiendo tanto la notación que representa al objeto matemático, como la estructura del mismo objeto:

•Marca de presentación / estructura.•Marca de contenido.•MathML Interface. HTML4.0, etc.

Contenido Estructura

Page 14: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 14

Hojas de estilo CSS

Con el HTML se intentó desde un principio la definición de estilos lógicos que se centrasen más en el contenido de la información que en su presentación.

El gran éxito de Internet motivó una evolución del HTML centrada en mejorar su presentación.

Hemos llegado a un HTML demasiado complejo para sus objetivos iniciales y en muchos casos incompatible entre los principales navegadores.

Las hojas de estilo vienen a intentar volver a separar en un documento el contenido del estilo físico.

CSS son las siglas de "Cascade StyleSheet" y se trata de una especificación sobre los estilos físicos aplicables a un documento HTML, trata de dar la separación definitiva de la estructura y la presentación del documento.

La finalidad de las hojas de estilo es crear unos estilos físicos, separados de las etiquetas HTML, y aplicarlos en los bloques de texto en los que se quieran aplicar, en lugar de cómo parámetros de las etiquetas.

Page 15: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 15

Aplicación

Tenemos varias posibilidades para definir un estilo:

1. Directamente en la etiqueta en la que queremos usarlo.

2. Definirlo globalmente para toda la página html.

<HTML><HEAD> <TITLE>ejemplo1</TITLE></HEAD><BODY><P STYLE=color:blue;font-size:18pt;>Este p&aacute;rrafo tiene aplicado un estilo<P>y este otro no.</BODY></HTML>

1. Directamente en la etiqueta en la que queremos usarlo:

<ETIQUETA STYLE=propiedad1:valor;....;propiedad2:valor;>....</ETIQUETA>

Page 16: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 16

Aplicación

2. Para definir una hoja de estilos de forma global empleamos la etiqueta <STYLE> ... </STYLE> que debe estar colocada en la cabecera del documento.

<STYLE TYPE="text/css"><!—Etiqueta1:{propiedad1:valor;...propiedadn:valor}/* podemos introducir comentarios */...Etiquetam:{propiedad1:valor;...}//--></STYLE>

<HTML><HEAD> <TITLE>ejemplo3</TITLE><STYLE> <!-- P {font-family:Verdana;color=green} B {color=blue}--></STYLE></HEAD><BODY><P>Fuente de estilo Verdana y color verde, la <B> negrita </B> en azul</BODY></HTML>

Page 17: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 17

Aplicación

Podemos definir el estilo en un fichero externo de texto con la extensión .css y luego referenciarlo desde el propio documento HTML, lo haremos dentro de la cabecera del documento con la etiqueta:

<LINK REL="stylesheet" TYPE="text/css" HREF="estilo1.css">

/* Fichero estilo1.css */<!-- P {font-family:Verdana;color=green} B {color=blue}-->

<HTML><HEAD> <TITLE>ejemplo3</TITLE> <LINK REL="stylesheet"

TYPE="text/css" HREF="estilo1.css"></HEAD><BODY><P>Fuente de estilo Verdana y color azul, la <B> negrita </B> en verde</BODY></HTML>

Page 18: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 18

Herencia de estilos

Las etiquetas de un documento HTML estan organizadas de manera que unas engloban a otras. Esta organización permite una relación padre-hijo de manera que los estilos definidos para etiquetas padres serán heredados por los hijos. Sin embargo si tenemos definido un estilo para una etiqueta "padre", podremos definir un estilo distinto para una etiqueta "hija", el cual prevalece sobre el heredado.<HTML><HEAD><TITLE>Ejemplo4</TITLE><STYLE> <!-- P {font-family:Verdana; color=green} B {color=blue}--></STYLE></HEAD><BODY><P><I>La letra cursiva hereda el estilo del p&aacute;rrafo</I> mientras que <B>la negrita tiene su estilo propio</B></BODY></HTML>

Page 19: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 19

Clases

Una clase es una definición de estilo que en principio no está asociado a alguna etiqueta HTML, pero que podemos asociar, en el documento, a etiquetas concretas. Definimos la clase como un estilo más, de la forma:

.Nombre_de_la_Clase {propiedad1:valor;propiedad2:valor;...}

Para aplicar el estilo de una clase a una etiqueta concreta, utilizaremos el parámetro CLASS

<etiqueta CLASS="Nombre_de_la_Clase">....</etiqueta>

<HTML><HEAD> <TITLE>ejemplo7</TITLE><STYLE TYPE="text/css"> <!--

BODY {font-family:Verdana; color=blue;}B,P {color=red;}.Baqua {color=aqua;}

--></STYLE></HEAD><BODY>El texto est&aacute; escrito en azul <P>los p&aacute;rrafos en rojo</P>as&iacute; como <B> la negrita </B>, <B CLASS="Baqua">pero en estaotra negrita estoy aplicando una clase.</B></BODY></HTML>

Page 20: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 20

Propiedades

Propiedades de las fuentes

font-family font-style font-weight font-size

Arial, Courier... | sans-serif normal |italic |bold 100 | 200... 400 |... 900 XX unidades | %

Propiedades del texto

text-transform text-align text-decoration text-indent

uppercase | lowercase| none | capitalize

left | right |center | justify underline | overline | line-throug | blink | none

XX unidades | % | 0

Propiedades de los colores y los fondos

color background-color background-image

red, blue... | RGB

transparent | red, blue... | RGB

none | url("direccion")

aqua, black, blue, fucshia, gray, green, lime, marron, navy, olive, purple, red, silver, teal, white y yellow

Propiedades de márgenes y padding

margin-top, margin-botton, margin-left, margin-right, margin

padding-top, padding-botton, padding-left, padding-right, padding

XX unidades | % | auto | 0 XX unidades | %

Page 21: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 21

Ejemplo de hojas de estilo I<HTML><HEAD><TITLE>ejemplo5</title><LINK REL="stylesheet" TYPE="text/css" HREF="estilo2.css"><STYLE> <!--

TD B {color=olive}UL B {color=purple}

--></STYLE></HEAD><BODY>Texto normal <B>y texto en negrita</B>, según el estilo que hemos importado.<UL><LI>Elemento 1<LI>Elemento 2<LI><B>Elemento 3 en negrita</B></UL><TABLE BORDER="1"><TR><TD>Celda (1,1)</TD><TD>Celda (1,2)</TD></TR><TR><TD><B>Celda (2,1) en negrita</B></TD><TD>Celda (1,2)</TD></TR></TABLE></BODY></HTML>

/*fichero estilo2.css */<!--/* estilo para el documento */ BODY {font-family:Verdana,Arial; color=blue}/* estilos para otras etiquetas */ B,TD {color=red}-->

Page 22: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 22

Ejemplo de hojas de estilo II

La etiqueta A,

A:link {propiedad1:valor;propiedad2:valor;...}

A:visited {propiedad1:valor;propiedad2:valor;...}

A:active {propiedad1:valor;propiedad2:valor;...}

A:hover {propiedad1:valor;propiedad2:valor;...}

<HTML><HEAD> <TITLE>ejemplo6</TITLE><STYLE TYPE="TEXT/CSS"> <!--

A:link {color:#0000ff;}A:visited {color:#00ff00;}A:active {color:#cccccc;}A:hover {color:#f3fe1e;}

--></STYLE><BODY><P>Un <a href="http://www.unican.es"> enlace </A> de prueba</BODY></HTML>

Page 23: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 23

Ejemplos de hojas de estilos III

/* fichero de estilo */P { font-size : 12pt; font-family : arial,helvetica; font-weight : normal;} H1 { font-size : 36pt; font-family : verdana,arial; text-decoration : underline; text-align : center; background-color : Teal;}TD { font-size : 10pt; font-family : verdana,arial; text-align : center; background-color : #666666;}BODY { background-color : #006600; font-family : arial; color : White;}

Page 24: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 24

Ejemplo de estilos IV

Page 25: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 25

HTML Dinámico (introducción)

HTML + DOM + JavaScript<html> ... </html> window.document, ... <script> ... </script>

Elementos estándar (multiplataforma), independientes del navegador:

DHTML: Es un término de marketing, empleado por Netscape y Microsoft, para describir las tecnologías soportadas en la version 4 de sus respectivos navegadores. Y por ello tiene una gran dependencia con el navegador que emplemos.

Page 26: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 26

HTML Dinámico (Cliente)

Capas + Estilos + JavaScript <div> ... </div> css <script> ... </script>

Flash <object> ... </object>

Java <object> ... </object>

Elementos incorporados en los propios navegadores, y por tanto no es necesario descargarse ningún software.

VRML <object> ... </object>

Elementos externos a los navegadores, que son incrustados en las páginas web (<object>). Para su funcionanmiento en una página web necesitan de un software especial o plugin.

HTML + DOM + JavaScript<html> ... </html> window.document, ... <script> ... </script>

Elementos estándar (multiplataforma), independientes del navegador:

Page 27: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 27

HTML Dinámico (Ejemplo: VRML)

http://www.canoma.com/vrml

http://www.web3d.orghttp://www.cai.com/cosmo/

http://web3d.about.com/

•Lenguaje de Modelado para Realidad Virtual. Creación de mundos virtuales, objetos 3D y escenarios 3D, posibilitando la interacción con los objetos, y movimiento del espectador

EJEMPLO

Page 28: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 28

HTML Dinámico (Ejemplo: FLASH)

http://www.flash-es.net/topten/topten.html

http://www.plusmedia.es/

http://www.macromedia.com

http://www.programatium.com/flash/

Programas de edición de animaciones, que permiten desarrollar fácilmente ficheros que se pueden incrustar en una página Web. Ejemplo

Toda la programación se realiza de forma visual (arrastrando objetos, etc.).

El código resultante es específico de cada producto y se requiere un plugg-in en el navegador para poder interpretarlo.

Page 29: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 29

Aplicaciones cliente / servidor

•Cuando un servidor web recibe una petición de una página HTML simple, solamente se trata de encontrar el archivo adecuado y devolverlo. Se trata de contenido estático.

•Actualmente la gran parte de de las páginas web son de contenido dinámico, debido a que presentan información que cambia con el tiempo.

•Podemos querer que en función de la fecha, hora, país o identificación del ususario la respuesta a esta petición sea diferente.

•También es muy frecuente encontrar páginas web que muestran información originada en una base de datos.

Page 30: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 30

Java es un potente lenguaje de programación orientado a objetos.

Todo el entorno de desarrollo (SDK) para crear ficheros .class con código pseudocompilado para intérpretes Java.

Los programas son compilados en ficheros “pseudo-ejecutables” que se pueden ser interpretados:

– (aplicaciones) máquina virtual, o

– (applets) plug-in de un navegador Web. Tiene reglas estrictas sobre cómo

declarar y utilizar variables.(control estricto de tipos)

• Independencia de plataforma(UNIX, Windows, Mac,...).

• Orientado a objetos (Obligado a implementar).

• Seguridad y confianza: lenguaje, compilador, interprete

• Simplicidad:gestión automática de “basura”.

• Estándar.• Computación distribuida.• “Clases" potentes para desarrollo.

(GUI,NET,BD)

• Generación rápida de código.• Documentación y Mantenimiento.• Rendimiento????.

JAVA no es sólo un Lenguaje de Programación, JAVA es además un conjunto de herramientas avanzadas: JAVA es una Tecnología

Tecnología Java

Page 31: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 31

HTML Dinámico (Ejemplo: JAVA)

Java: Lenguaje de programación desarrollado para la Web. Su principal fundamento es, que todo programa, puede ejecutarse, sin ser modificado, en cualquier plataforma.

http://java.sun.com/

Page 32: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 32

Tecnologías Actuales Java

                                                                                                                                   

JavaTM technologies:

•J2SETM ,•J2EETM ,•J2METM,•JAX XML.

SDK (Standard Development Kit)

JRE (Java RunTime Enviroment)

Page 33: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 33

Elementos de Desarrollo para Java

•Java 1.0–212 Clases, 8 paquetes

•Java 1.1–504 Clases, 23 paquetes–Mejopras en el rendimiento de la VM

•Java 1.2–1520 Clases, 59 paquetes–Plataforma Java 2.0

•Java 1.4.1 (Beta), Julio 2002

• Para trabajar con Java 1.0 o Java 1.1

–Java Development Kit para la versión (JDK)

• Para trabajar con Java 1.2 (Renombrado como Java 2)

–Software Development Kit(SDK) o más concreto:

–Java 2 SDK, Standard Edition Ver. 1.2, ...

El lenguaje de programación Java: Lenguaje de programación.

Un lenguaje con una sintaxis similar a C, orientado a ObjetosEvitando las características complejas que han caracterizado a otros lenguajes como C++

La máquina virtual Java (JVM): Hardware/Software (habitual).Es la parte imprescindible para poder ejecutar programas Java•Sun: Solaris, Linux y Windows, También para Mac, Unix…Palm OS…

A pesar de ser un intérprete, la VM tiene un buen rendimiento. JIT Compiler (Just-In-Time compilers).

–Propio de la Máquina Virtual–Bytecodes convertidos instantáneamente en código nativo de la plataforma correspondiente–Mejora en la velocidad de ejecución–Hotspot => Buena implantación de JIT

• Java Runtime Environment (JRE) Contiene todo lo necesario para ejecutar programas

Java pero no para desarrollarlos

Page 34: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 34

Ejemplo de un Applet JAVA

import java.applet.*;import java.awt.*;public class MiApplet extends Applet { public void paint (Graphics g){ g.drawLine(1,1,50,50); g.fillOval(40,40,20,20);}}

<html><head></head><body><applet code="MiApplet.class" width="100" height="100"></body></html>

EjemploApplet.html

MiApplet.java

Ver Ejemplo

Page 35: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 35

Otras Tecnologías Web .Net (Microsoft)

Page 36: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 36

HTML Dinámico (Ejemplo: CAPAS)

Inclusión de capas (documentos independientes incluidos en el propio documento) de posicionamiento absoluto, permite dar dinamismo a las páginas Web.

<DIV ID="mylayer" STYLE="postition:absolute;..."> <A HREF="pagina.html">Enlace</A> ponemos algo de texto<BR> ahora una imagen <IMG SRC="image.gif"> y mas texto

</DIV>

width:300pxheight:300pxleft:300pxtop:300px z-index:1Visibility:hidden (visible)

Netscape: document.layers["ID"].visibility

IE: document.all["ID"].style.visibility

var layerRef="", styleSwitch=""; function init(){ if (navigator.appName == "Netscape") { var layerRef="document.layers"; var styleSwitch=""; }else{ var layerRef="document.all"; var styleSwitch=".style"; }}

document.getElementById("ID")

Page 37: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 37

Teniendo en cuenta el tipo de navegador

var layerRef="", styleSwitch=""; function init(){ if (navigator.appName == "Netscape") { var layerRef="document.layers"; var styleSwitch=""; }else{ var layerRef="document.all"; var styleSwitch=".style"; }}

n = (document.layers) ? 1:0ie = (document.all) ? 1:0n6 = (document.getElementById) ? 1:0

function show() { if (n) document.uno.visibility = "show" if (n6) document.getElementById('uno').style.visibility = "visible" if (ie) uno.style.visibility = "visible"}

Page 38: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 38

<html><head><title>Ejemplo Capas - Curso JavaScript</title></head>

<body>Pagina ejemplo de capas<div id="c1" style="position:absolute; left:245px; top:168px; width:157px; height:151px; z-index:1; visibility: visible"> <img src="imagenes/perrito-marron.jpg"> Esta es la primera capa, la del perro marron </div></body></html>

Ejemplo de Capas

Page 39: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 39

Ejemplo de capas (con estilos)

<html><head><title>Ejemplo Capas - Curso JavaScript</title><STYLE TYPE="text/css">#c1 {background-color:#66CCFF;width:150px; height:150px;border-width:5px; border-style:ridge; padding:5%}</STYLE></head>

<body>Pagina ejemplo de capas<div id="c1" style="position:absolute;

left:250px; top:150px; z-index:1; visibility: visible;">

<img src="imagenes/perrito-marron.jpg" width="157" height="136"> Esta es la primera capa, la del perro marron </div></body></html>

Page 40: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 40

Ejemplo Simple: Mostrando y Ocultando Capas

Ejemplo Simple de Capas

Page 41: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 41

Mostrando y Ocultando Capas (Código, IE)

<html> <head><title>Ejemplo Capas - Curso JavaScript</title></head>

<body bgcolor="#FFFFFF"><div id="capamarron" style="position:absolute; width:157px; height:151px; z-index:1;

left: 165px; top: 138px; visibility: hidden"> <img src="imagenes/perrito-marron.jpg" width="223" height="275"> Esta es la primera capa, la del perro marron </div>

<div id="capanegro" style="position:absolute; width:305px; height:217px; z-index:2; left: 214px; top: 161px; visibility: hidden">

<img src="imagenes/perrito-negro.jpg" width="306" height="231"> Esta es la segunda capa, la del perro negro </div>

<input type="button" value="capa1" onMouseOver="document.all['capanegro'].style.visibility='visible'; document.all['capamarron'].style.visibility='hidden';"

onMouseDown="document.all['capanegro'].style.visibility='visible'; document.all['capamarron'].style.visibility='visible';">

<input type="button" value="capa2" onMouseOver="document.all['capanegro'].style.visibility='hidden'; document.all['capamarron'].style.visibility='visible';"

onMouseDown="document.all['capanegro'].style.visibility='visible'; document.all['capamarron'].style.visibility='visible';">

</body></html>

Page 42: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 42

HTML Dinámico (JavaScript + capas)

Controlando capas desde un formulario

Controlando capas con eventos del ratón

Ejemplo. La inclusión de capas en HTML, que permite superponer, ocultar y mover elementos de forma interactiva.

JavaScript es un lenguaje de programación que permite añadir dinamismo a las páginas Web. Para ello se utiliza una marca especial

<script> ... </script>

Página con diversos scripts de JavaScript

El acceso a bases de datos permite tener la información actualizada, y requiere un esquema de programación cliente/servidor.

Página web de AIMet

Page 43: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 43

Capas en Movimiento<html><head><SCRIPT>var izquierda=0;function corre() { object = document.getElementById("c1").style; if (izquierda < 650) { izquierda += 10; object.left = izquierda; setTimeout("corre()",10) }}</SCRIPT><STYLE TYPE="text/css"> #c1 {position:relative; top:50px; left:15px; background-color:#990000;width:200px; z-index=0; }</STYLE></head>

<body>Para mover una CAPA<br><input type="button" value="Pulsa" onclick="corre()"><DIV ID="c1" ><img src="corredor.gif" width="114" height="134" alt="" border="0"></DIV>

</body></html>

Page 44: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Objetos y Eventoscon JavaScript

José M. Gutiérrez

Universidad de [email protected]

InternetHTML

JavaScript Java

Page 45: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 45

Programación: JavaScript vs Java

JavaScript es un lenguaje simple para usos sencillos.

Es relativamente fácil de utilizar. No es necesario ningún Kit de

desarrollo, ya que sólo se precisa escribir scripts.

Los scripts se insertan directamente en el código HTML, por lo que no hay necesidad de compilarlo.

Está basado en objetos, que pueden utilzarse en un script.

Es muy poco restrictivo en cuanto a la declaración y uso de variables.

Java es un potente lenguje de programación orientado a objetos.

Es complicado de utilizar. Necesita JDK para crear

ficheros .class con códigopseudocompilado para intérpretes Java.

Los programas son compilados en ficheros “ejecutables” o en “applets” que se pueden incrustar en páginas Web.

Es un completo lenguaje de programación orientada a objetos.

Tiene reglas estrictas sobre cómo declarar y utilizar variables.

Ambos lenguajes son independientes de plataforma y sus programas pueden ejecutarse sobre Internet, en una página Web.

Page 46: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 46

Estructura del documento (DOM)

Un documento tiene asociada una jerarquía de componentes que los relaciona entre sí.

En este ejemplo: dos imágenes, un enlace y un formulario.

window +--frames +--location +--history +--document +--forms | | | elements (text, button) | +--layers +--links +--Plugin +--anchors

Page 47: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 47

Programación Orientada a Objetos

En la programación orientada a objetos, el desarrollo de una aplicación se organiza en torno a los datos, en torno a los cuales se organizan los procesos. Para ello, estos lenguajes tienen la posibilidad de:

– Definir objetos compuestos de un conjunto de variables (o propiedades) y funciones (o métodos) asociadas.

– Definir una estructura jerárquica, donde se heredan variables y métodos de padres a hijos.

– Control de sucesos a través de la estructura gerjárquica definida.

Reusabilidad del código.

Fácil modificación

Facilidad de desarrollo.

Fácil comprensión.

– de clases

– estructural

Programación Orientada a Objetos

Page 48: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 48

Dos Formas de Incrustar JavaScript en HTML

<HTML><HEAD><SCRIPT LANGUAGE="JavaScript"><!-- oculta a navegadores antiguosdocument.write("Hola !");// --></SCRIPT></HEAD>

<BODY><P>Hola otra vez ! </P></BODY></HTML>

<HTML><HEAD> </HEAD>

<BODY><FORM><INPUT TYPE="BUTTON"

ONCLICK="alert('Hola !')"></FORM></BODY> </HTML>

Incluyendo Scripts

Acciones en las Marcas <>

Page 49: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 49

Más ejemplos simples

Generamos un sencillo script para añadir información al final de una página Web, en concreto la fecha de modificación.

<SCRIPT LANGUAGE="JAVASCRIPT">document.write("Ultima modificacion:");document.write(document.lastModified)</SCRIPT>

Otro ejemplo, ahora en una propiedad del body:

<BODY ONLOAD="alert('est&aacute;s entrando en la pagina')">

JavaScript diferencia mayúsculas y minúsculas

Se suele tomar como convenio denotar lasvariables y funciones de la forma:

lastModified

alert

Page 50: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 50

Valores, variables y literalesNumeros, como 42 o 3.14159 .

Logicasl (Booleanas) <true> or <false>.

Cadenas, utilizadas del mismo modo que en Java!.

null, denota una variable nula; undefined, propiedad o variable indefinida

Valores

Variables son nombres simbólicos de los valores.

Comienzan con una letra letra o con ("_") seguidos de caracteres o dígitos (0-9).

Variables

Un string literal es cero o más caracteres encerrados entre (") o (') comillas.Ejemplos de string literales: “hola" ‘Java' “una linea \n otra linea"

Literales

Page 51: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 51

Manejo de Literales.-1<html><head>

<title>strings_1</title><!-- INICIO SCRIPT --><SCRIPT LANGUAGE="JAVASCRIPT">cafes = ["French Roast", "Monka", "Dromedario"];document.write("<strong> MARCAS de CAFE </strong> <br> <hr>"); document.write(“marca \t =+cafes[0]+"<br>"); document.write(cafes[1]+"<br>"); document.write(cafes[2]+"<br>");

</SCRIPT><!-- FIN SCRIPT --></head>

<body>

</body></html>

Caracteres Especiales\b Backspace \f Form feed \n New line \r Carriage return \t Tab \' Apostrophe or single quote \" Double quote

Page 52: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 52

Manejo de Literales.-2<html><head>

<title>strings_2</title><!-- INICIO SCRIPT --><SCRIPT LANGUAGE="JAVASCRIPT">num = [1, 2,3,4,5,6,7,8,9 ];document.write("<strong> <H1>TABLA de SUMAR</H1></strong> <br> <hr>"); document.write("1+"+num[0]+"\t = \t"+eval(1+num[0])+"<br>"); document.write("1+"+num[1]+"="+eval(1+num[1])+"<br>"); document.write("1+"+num[2]+"="+eval(1+num[2])+"<br>"); document.write("1+"+num[3]+"="+eval(1+num[3])+"<br>"); document.write("1+"+num[4]+"="+eval(1+num[4])+"<br>"); </SCRIPT><!-- FIN SCRIPT --></head>

<body>

</body></html>

Ejemplo 1 de tabla de Sumar

Propuesta: ¿cómo hacer la tabla de cualquier otro número?

Page 53: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 53

Introducción a las Variables

<html><head>

<title>strings_2</title><!-- INICIO SCRIPT --><!-- INICIO SCRIPT --><SCRIPT LANGUAGE="JAVASCRIPT">num = [1,2,3,4,5,6,7,8,9 ];var NumerodeTabla;NumerodeTabla=prompt("Quieres la tabla de SUMAR del número?","0"); document.write("<strong> <H1>TABLA de SUMAR del\t"+NumerodeTabla+"</H1></strong> <hr>"); document.write(NumerodeTabla+"+\t"+num[0]+"\t = t"+eval(eval(NumerodeTabla)+num[0])+"<br>"); document.write(NumerodeTabla+"+\t"+num[1]+"\t = t"+eval(eval(NumerodeTabla)+num[1])+"<br>"); document.write(NumerodeTabla+"+\t"+num[2]+"\t = t"+eval(eval(NumerodeTabla)+num[2])+"<br>"); document.write(NumerodeTabla+"+\t"+num[3]+"\t = t"+eval(eval(NumerodeTabla)+num[3])+"<br>"); </SCRIPT></head>

<body>

</body></html>

Ejemplo 2 de tabla de Sumar

Interactuar con el usuario

Propuesta: ¿cómo hacer la tabla de cualquier otro número?

Prompt(String,Valor por defecto)

Page 54: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 54

Funciones.......1

Para definir una funciónfunction nombre (parametros) {

Sentencias....}

<html><head>

<title>Var1</title><!-- INICIO SCRIPT --><SCRIPT LANGUAGE="JAVASCRIPT">function square(number) { return number * number;}</SCRIPT><!-- FIN SCRIPT --></head>

<body>

<input name="entra" type="text" value=“0"><input name="sale" type="text" value=""><input type="button" value="x^2" onclick="sale.value=square(entra.value)">

</body></html>

Sin declarar variables

Propuesta: Realizar la tabla de sumar de cualquier número usando una función

Page 55: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 55

Funciones.......2

<html><head>

<title>Var2</title><!-- INICIO SCRIPT --><SCRIPT LANGUAGE="JAVASCRIPT">var resul=0;function square(number) { resul= number * number;}</SCRIPT><!-- FIN SCRIPT --></head>

<body>

<input name="entra" type="float" value="2">

<input type="button" value="x^2" onclick="eval(square(entra.value));alert(resul)">

</body></html>

Declarando variables

Page 56: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 56

Funciones.......3

<html><head>

<title>Var3</title><SCRIPT LANGUAGE="JAVASCRIPT">var variable="SOY GLOBAL";function VarGlobal() { alert(variable);}function VarLocal() { variable="SOY LOCAL"; alert(variable);}</SCRIPT><!-- FIN SCRIPT --></head><body><input type="button" value="Muestra Global" onclick="VarGlobal()"><input type="button" value="Muestra Local" onclick="VarLocal()"></body></html>

VariablesGlobales y

Locales

Page 57: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 57

Operadores Aritméticos 1

<html><head>

<title>Var4</title>

</head>

<body>

Numero <input type="text" name="entra" value=1><br><input type="button" value="x+=2" onclick="entra.value+=2"><input type="button" value="x -= 1" onclick="entra.value-=1"><input type="button" value="x *= 2" onclick="entra.value*=2"><input type="button" value="x /= 3" onclick="entra.value/=3"><input type="button" value="x %= 5" onclick="entra.value%= 5"><input type="button" value="Inicio" onclick="entra.value=1">

</body></html>

x += y x = x + yx -= y x = x - yx *= y x = x * yx /= y x = x / yx %= y x = x % y

Page 58: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 58

Sentencias.....If ....Else

function Nota(a,b) {var media=(parseInt(a)+parseInt(b))/2;var final=""; if (media<5) { final="Suspenso";} else { final="Aprobado";}

document.Notas.Calificar.value=final;//return final;

}<form name="Notas">"HTML "<input type="text" name="Html" value=""><br>"JavaScript "<input type="text" name="JS" value=""><br>

<input type="button" name="Java" value="Calificación" onclick="Nota(Html.value,JS.value)"> <input type="text" name="Calificar"> </form>

if (condition) { statements1 }[else { statements2 } ]

Propuesta: Ampliar calificación a Notable y Sobresaliente

Page 59: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 59

Bucles.....For (1)

function Nota(a,b) {var media=(parseInt(a)+parseInt(b))/2;var final=""; if (media<5) { final="Suspenso";} else { final="Aprobado";}

document.Notas.Calificar.value=final;//return final;

}<form name="Notas">"HTML "<input type="text" name="Html" value=""><br>"JavaScript "<input type="text" name="JS" value=""><br>

<input type="button" name="Java" value="Calificación" onclick="Nota(Html.value,JS.value)"> <input type="text" name="Calificar"> </form>

for (initialExpression; condition; crementExpression) {statements }

Propuesta: Utilizar un ciclo for para realizar el ejemplo de la tabla de sumar de un número que elija el usuario

Page 60: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 60

Bucles.....For. (2)

<html><head>

<title>For_2</title><SCRIPT>function TablaSumar(num) { for (var i=1; i < 11; i++) { document.writeln(i+"+\t"+num+"\t =\t "+eval(i+eval(num))+"<br>"); }}num=prompt("Quieres la tabla de SUMAR del número?","0"); TablaSumar(num);</SCRIPT></head>

<body>

</body></html>

Propuesto: Se genere de forma aleatoria una quiniela de 15 resultados con “1”, “X” y “2”

Page 61: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 61

Bucles.....For. (3)

<SCRIPT>function Quiniela() { for (var i=0; i < 16; i++) { var casilla=(Math.floor(3*Math.random())); if (casilla==0){ rellenar="1"}

else{ if (casilla==1){rellenar="X"} else {rellenar="2"} }

document.write("Casilla \t\t\t"+i+"\t\t=\t"+rellenar +"<br>"); }}</SCRIPT></head>

<body onload="Quiniela()">

</body>

Page 62: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 62

Bucles.....While. (1)

<SCRIPT>pregunta="¡Que número he pensado del 0 al 10?";var acierto=Math.round(10*Math.random());var bien='<img src="bien.gif" width="87" height="128" border="0">';function Acertijo() { var i=0; var respuesta=prompt(pregunta,"0"); while ((i<10)&(respuesta != acierto)) { var respuesta=prompt(pregunta,"0");

if(respuesta == acierto) { document.write("Correcto = "+bien+acierto +"<br>"); }

} }

</SCRIPT></head>

<body onload="Acertijo()">

</body></html>

En este ejemplo: La máquina piensa un número y el usuario tiene que acertarlo en 10 intentos

Page 63: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 63

Recursividad.....1

<SCRIPT LANGUAGE="JAVASCRIPT">function Factorial(num){ if (num>1){ return num*Factorial(num-1); } else {

return num; }

}</SCRIPT></head><body><SCRIPT LANGUAGE="JAVASCRIPT">var numero=prompt("Dame un número entero","0");var calcula=Factorial(numero);document.write("Factorial de "+numero+" = <b>"+calcula+"</b>");</SCRIPT></body></html>

Page 64: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 64

Recursividad.....2

<SCRIPT LANGUAGE="JAVASCRIPT">function Test(item){//var pregunta = "¿Cuánto vale 2+2?";var acierto =eval(item);var pregunta= "¿Cuánto vale " + item+"?";var bien='<img src="bien.gif" width="87" height="128" border="0">';var mal='<img src="mal.gif" width="87" height="133" border="0">';var respuesta=prompt(pregunta,"0");return (respuesta == acierto) ? bien :Test(item); }</SCRIPT></head><body><SCRIPT LANGUAGE="JAVASCRIPT">var resultado=Test("2+2");document.write(resultado);</SCRIPT></body></html>

CUIDADOcon la

Recursividad

Page 65: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 65

Recursividad.....3<SCRIPT LANGUAGE="JAVASCRIPT">function Test(item,intentos){//var pregunta = "¿Cuánto vale 2+2?";var acierto =eval(item);var pregunta= "¿Cuánto vale " + item+"?";var bien='<img src="bien.gif" width="87" height="128" border="0">';var mal='<img src="mal.gif" width="87" height="133" border="0">';var respuesta=prompt(pregunta,"0");if (intentos >1){ return (respuesta == acierto) ? bien :Test(item,intentos-1);}else {

return (respuesta == acierto) ? bien :mal; }

}</SCRIPT><body><SCRIPT LANGUAGE="JAVASCRIPT">var resultado=Test("2+2",3);document.write(resultado);</SCRIPT></body>

CONTROLAR laRecursividad

Propuesta: Utilizar la recursividad para el ejemplo de acertar un número del 1 al N con máximo de intentos

Page 66: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 66

El lenguaje: Sintáxis y variables

Si la declaración de una variable se hace dentro de una función, dicha variable es local, sino es global.

var SoyUnaVariable;SoyUnaVariable=2.1;

var UnArray = new Array();UnArray[1]=1;UnArray[2]="soy el segundo";

La sintaxis de JavaScript es muy parecida a la de C++. Las instrucciones terminan con un punto y coma y se agrupan mediante llaves; una doble barra (//) indica que el resto de la línea es un comentario.

Los operadores matemáticos también son los mismos: + (que también sirve para cadenas), -, *, /, % (módulo), ++ y --.

Las asignaciones (=) son también como en C y C++, incluyendo +=, -=, etc.En cuanto a los operadores lógicos tenemos ||, &&, !, ^ (xor), << y >> y las comparaciones son <, >, <=, >=, == y !=.

Creamos objetos de clases predefinidas.

Todas las variables numéricas son floating-point: 2.1, 21e-1

Page 67: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 67

Palabras reservadas

break do function null typeofcase else if return varcontinue export import switch voiddefault false in this whiledelete for new true with

catch const enum finally throwclass debugger extends super try

Palabras reservadas por ECMA para futuras extensiones (no incluidas en v1.2).

Alert Math parseFloat find NaNisFinite close frames open resizetoLength Object Function menubar . . .

Otros símbolos pueden redefinirse:

Page 68: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 68

Ejemplo de tratamiento de variables

<html><head>

<script language="JavaScript"><!-- hidefunction calculation() { var x= 12; var y= 5; var result= x + y;

alert(result);}// --></script>

</head><body>

<form><input type="button" value="Calculate" onClick="calculation()"></form>

</body></html>

Page 69: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 69

La función factorial

<script language="javascript">

function factorial(n) { var result; if ((n == 0) || (n == 1)){

return 1 }else {

result = (n * factorial(n-1) );return result

}

}</script>

<body onload="alert(factorial(6))">

<input type="text" name="entrada"><input type="button" value="calcula" onclick="alert(factorial(entrada.value))">

La función factorial (recursiva e iterativa)

function factorial(n) { var fact; for (i=1,fact=1; i<=n; i++){

fact*=i;}return fact;

}

Page 70: Web Dinámica José Manuel Gutiérrez Universidad de Cantabria gutierjm@unican.es Internet HTML JavaScriptJava

Web Dinámica (José M. Gutiérrez, Santander) 2005, slide 70

Estructuras de Control

Las estructuras if...else, for, while funcionan igual que sus equivalentes en C.La única diferencia con dicho lenguaje: la estructura for...in.

for (contador in UnArray){ document.write(UnArray[contador])};

<script language="javascript">var texto = new Array("hola");var numero = new Array(1,2,3,4);var win=window.open('','ventana');for (i in texto){

win.document.write(texto[i]);}for (i in numero){

win.document.write(numero[i]);}</script>