Está en la página 1de 118

INSTITUTO SUPERIOR TECNOLGICO NORBERT WIENER

Manual del Alumno


ASIGNATURA: Aplicativos V (Visual Basic Script y Javascript)

PROGRAMA: S3C

Lima-Per

Manual del Alumno

INDICE
Introduccin ................................................................................................................................................. 6 ActiveX Scripting ..................................................................................................................................... 6 VBScript en otras aplicaciones y exploradores ........................................................................................ 6 INTERPRETACIN ................................................................................................................................ 6 COMPILACIN ...................................................................................................................................... 7 Agregar cdigo de VBScript a una pgina HTML ....................................................................................... 7 La etiqueta <SCRIPT> ............................................................................................................................. 7 Tipos de datos de VBScript ........................................................................................................................ 10 Cules son los tipos de datos de VBScript? .......................................................................................... 10 Subtipos de Variant ................................................................................................................................ 10 Variables de VBScript ................................................................................................................................ 11 Qu es una variable? ............................................................................................................................. 11 Declaracin de variables ......................................................................................................................... 11 Restricciones de nombre ......................................................................................................................... 12 Alcance y vida de las variables............................................................................................................... 12 Asignacin de valores a variables .......................................................................................................... 12 Constantes de VBScript .............................................................................................................................. 13 Qu es una constante? ........................................................................................................................... 13 Creacin de constantes ........................................................................................................................... 13 Variables escalares y variables de matrices ................................................................................................ 14 Instruccin Dim .......................................................................................................................................... 15 Descripcin ............................................................................................................................................. 15 Sintaxis : Dim nombredevariable[([subndices])][, nombredevariable[([subndices])]] . . . ............... 15 Comentarios............................................................................................................................................ 15 Operadores de VBScript ............................................................................................................................. 17 Prioridad de los operadores .................................................................................................................... 17 Operadores de VBScript ............................................................................................................................. 18 Funciones ................................................................................................................................................... 18 Funcin Abs ........................................................................................................................................... 18 Funcin Array......................................................................................................................................... 18 Funcin Asc ............................................................................................................................................ 19 Instruccin Call ...................................................................................................................................... 19 Funcin CBool ....................................................................................................................................... 20 Funcin CByte ........................................................................................................................................ 20 Funcin CCur ......................................................................................................................................... 20 Funcin CDate ........................................................................................................................................ 21 Funcin CDbl ......................................................................................................................................... 21 Funcin Chr ............................................................................................................................................ 22 Funcin CInt ........................................................................................................................................... 22 Funcin CLng ......................................................................................................................................... 23 Funcin CSng ......................................................................................................................................... 23 Funcin CStr........................................................................................................................................... 24 Funcin Exp ........................................................................................................................................... 24 Funciones Int y Fix ................................................................................................................................. 25 Funcin GetObject.................................................................................................................................. 25 Funcin Hour .......................................................................................................................................... 27 Funcin IsDate ....................................................................................................................................... 27 Funcin LBound ..................................................................................................................................... 28 Funcin LCase ........................................................................................................................................ 28 Funcin Left ........................................................................................................................................... 28 Funcin Len ............................................................................................................................................ 28 Funcin LoadPicture .............................................................................................................................. 29 Funciones LTrim, RTrim y Trim ............................................................................................................ 29 Funcin Mid ........................................................................................................................................... 29 Funcin Minute ...................................................................................................................................... 30 Funcin Month ....................................................................................................................................... 30 Funcin MonthName .............................................................................................................................. 30

Manual del Alumno


Funcin Now .......................................................................................................................................... 31 Funcin RGB .......................................................................................................................................... 31 Funcin Right ......................................................................................................................................... 32 Funcin Rnd ........................................................................................................................................... 32 Funcin Round ....................................................................................................................................... 33 Funcin Second ...................................................................................................................................... 33 Funcin Sgn ............................................................................................................................................ 34 Funcin Space ........................................................................................................................................ 34 Funcin Sqr ............................................................................................................................................ 35 Funcin String ........................................................................................................................................ 35 Funcin UBound .................................................................................................................................... 35 Funcin UCase ....................................................................................................................................... 36 Funcin VarType .................................................................................................................................... 36 Funcin Weekday ................................................................................................................................... 37 Funcin WeekdayName ......................................................................................................................... 38 Funcin Year .......................................................................................................................................... 39 Procedimientos de VBScript ...................................................................................................................... 40 Tipos de procedimientos ......................................................................................................................... 40 Procedimientos Sub .................................................................................................................................... 40 Instruccin Sub ....................................................................................................................................... 40 Procedimientos Function ............................................................................................................................ 41 Instruccin Function ............................................................................................................................... 42 Obtencin de datos dentro y fuera de procedimientos ................................................................................ 44 Uso de los procedimientos Sub y Function en cdigo ................................................................................ 44 Uso de instrucciones condicionales ............................................................................................................ 45 Control de la ejecucin del programa ......................................................................................................... 45 Toma de decisiones utilizando If ... Then ... Else ....................................................................................... 45 Instruccin If...Then...Else ..................................................................................................................... 45 Ejecucin de instrucciones si una condicin es True ............................................................................. 46 Ejecucin de ciertas instrucciones si la condicin es True y ejecucin de otras si es False ................... 47 Decisin entre varias alternativas ........................................................................................................... 47 Toma de decisiones utilizando Select Case ................................................................................................ 47 Instruccin Select Case............................................................................................................................... 48 Bucles mediante cdigo .............................................................................................................................. 49 Uso de bucles para repetir cdigo ............................................................................................................... 49 Uso de bucles Do ........................................................................................................................................ 50 Instruccin Do...Loop ............................................................................................................................. 50 Repeticin de instrucciones mientras una condicin es True ..................................................................... 51 Repeticin de una instruccin hasta que una condicin pasa a ser True .................................................... 51 Salida de una instruccin Do ... Loop desde dentro del bucle .................................................................... 52 Uso de While ... Wend................................................................................................................................ 52 Instruccin While...Wend ....................................................................................................................... 52 Uso de For ... Next ..................................................................................................................................... 53 Instruccin For...Next ............................................................................................................................. 54 Uso de For Each...Next............................................................................................................................... 55 Instruccin For Each...Next .................................................................................................................... 56 Operador de Concatenacin & .................................................................................................................. 58 Operador +.................................................................................................................................................. 58 Operadores de comparacin ....................................................................................................................... 59 Funcin InStr .......................................................................................................................................... 61 Funcin IsNumeric ................................................................................................................................. 62 Formateo de Nmeros ................................................................................................................................ 62 Funcin FormatNumber ......................................................................................................................... 62 Funcin FormatCurrency ........................................................................................................................ 64 Funcin FormatPercent .......................................................................................................................... 65 InputBoxes y Message Box ........................................................................................................................ 66 Funcin InputBox ................................................................................................................................... 67 Funcin MsgBox .................................................................................................................................... 67 Funcin Date .......................................................................................................................................... 70

Manual del Alumno


Funcin DateAdd ................................................................................................................................... 70 Funcin DateDiff .................................................................................................................................... 71 Funcin Day ........................................................................................................................................... 72 Funcin Time ......................................................................................................................................... 73 Funcin TimeSerial ................................................................................................................................ 73 Funcin TimeValue ................................................................................................................................ 73 Tipos de eventos ......................................................................................................................................... 74 Eventos de ratn ..................................................................................................................................... 74 Eventos de teclado .................................................................................................................................. 74 Eventos de enfoque................................................................................................................................. 74 Eventos de formulario ............................................................................................................................ 74 Eventos de carga de pgina .................................................................................................................... 74 Modelo de Objetos ..................................................................................................................................... 75 Evento onMouseOver ......................................................................................................................... 76 Objeto form ............................................................................................................................................ 78 Objeto window ....................................................................................................................................... 78 Objeto document .................................................................................................................................... 79 Objeto form ............................................................................................................................................ 79 Objeto location ....................................................................................................................................... 80 Objeto navigator ..................................................................................................................................... 80 Objeto history ......................................................................................................................................... 81 Introduccin a Java Script .......................................................................................................................... 82 Escritura de Cdigo en Java Script ............................................................................................................. 82 Instrucciones ........................................................................................................................................... 82 Comentarios............................................................................................................................................ 83 Asignaciones e igualdad ......................................................................................................................... 83 Expresiones ............................................................................................................................................ 83 Caracteristicas ............................................................................................................................................ 84 Diferencia con JAVA ................................................................................................................................. 84 Principales aplicaciones.............................................................................................................................. 84 Donde incluirlo ........................................................................................................................................... 84 En el cuerpo del documento ................................................................................................................... 85 En archivo aparte .................................................................................................................................... 85 Usando manejadores de evento .............................................................................................................. 85 Haciendo una llamada a funcin ............................................................................................................ 86 Variables de Java Script ............................................................................................................................. 87 Declarar variables ................................................................................................................................... 87 Nombrar variables .................................................................................................................................. 87 Conversin.............................................................................................................................................. 88 Tipos de Datos ............................................................................................................................................ 89 Qu son los tipos de datos de JScript? .................................................................................................. 89 Tipo de dato Cadena ............................................................................................................................... 89 Tipo de dato numrico ............................................................................................................................ 89 Tipo Boolean .......................................................................................................................................... 90 Tipo de dato no definido......................................................................................................................... 90 Tipo de dato Null .................................................................................................................................... 90 Operadores de Java Script .......................................................................................................................... 91 Precedencia de operadores...................................................................................................................... 91 Arreglos y Cadenas .................................................................................................................................... 93 Indexacin de matrices ........................................................................................................................... 93 Referencias a matrices ............................................................................................................................ 93 Objetos Intrnsecos ..................................................................................................................................... 94 Objeto Array ........................................................................................................................................... 94 Objeto String .......................................................................................................................................... 95 Objeto Math............................................................................................................................................ 95 Objeto Date............................................................................................................................................. 96 Objeto Number ....................................................................................................................................... 97 Control del Flujo del Programa .................................................................................................................. 98 Por qu controlar el flujo de la ejecucin? ............................................................................................ 98

Manual del Alumno


Usar instrucciones condicionales ............................................................................................................ 98 Operador condicional ............................................................................................................................. 99 Usar repeticiones o bucles ...................................................................................................................... 99 Usar bucles for........................................................................................................................................ 99 Usar bucles for...in................................................................................................................................ 100 Usar bucles while ................................................................................................................................. 100 Usar instrucciones break y continue ..................................................................................................... 101 Objeto window ......................................................................................................................................... 103 open ...................................................................................................................................................... 103 close ...................................................................................................................................................... 103 alert ....................................................................................................................................................... 104 status ..................................................................................................................................................... 104 defaultStatus ......................................................................................................................................... 104 Objeto document ...................................................................................................................................... 104 write ...................................................................................................................................................... 104 lastModified.......................................................................................................................................... 104 bgColor ................................................................................................................................................. 104 Objeto history ........................................................................................................................................... 105 Objeto form .............................................................................................................................................. 105 submit ................................................................................................................................................... 105 text ........................................................................................................................................................ 105 Objeto date ............................................................................................................................................... 105 Objeto math .............................................................................................................................................. 105 Objeto navigator ....................................................................................................................................... 105 Objeto screen ............................................................................................................................................ 106 Eventos ..................................................................................................................................................... 106 Lista de Eventos ................................................................................................................................... 106 Un ejemplo ........................................................................................................................................... 107 Objeto event ............................................................................................................................................. 107 DHTML .................................................................................................................................................... 108 Qu es CSS ............................................................................................................................................... 108 ANIMACIONES ...................................................................................................................................... 111 ESTILOS .............................................................................................................................................. 111 EJEMPLOS .......................................................................................................................................... 112 Cookies ..................................................................................................................................................... 116 Funciones bsicas ..................................................................................................................................... 116 Un ejemplo ............................................................................................................................................... 117

Manual del Alumno

Semana 1 : VBScript y la Web


Introduccin
Microsoft Visual Basic Scripting Edition, el miembro ms reciente de la familia de lenguajes de programacin Visual Basic, suministra una automatizacin activa a una amplia variedad de entornos, incluidas las secuencias de comandos del cliente de Web en Microsoft Internet Explorer y las secuencias de comandos del servidor de Web en Microsoft Internet Information Server. Si ya conoce Visual Basic o Visual Basic for Applications, VBScript le ser muy familiar. Incluso si no conoce Visual Basic, una vez que lo haya aprendido podr programar con toda la familia de lenguajes Visual Basic.

ActiveX Scripting
VBScript se comunica con las aplicaciones de host mediante ActiveX Scripting. Con ActiveX Scripting, evita que los exploradores y otras aplicaciones host necesiten escribir cdigo especial de integracin para cada componente de la secuencia de comandos. ActiveX Scripting permite a un host compilar una secuencia de comandos, obtener y llamar puntos de entrada, y administrar el espacio de nombres disponible para el programador. Con ActiveX Scripting, los distribuidores de lenguajes pueden crear run times de lenguaje estndar para la secuencia de comandos. Microsoft proporcionar soporte de tiempo de ejecucin para VBScript. Microsoft est trabajando con varios grupos de Internet para definir el estndar de ActiveX Scripting de modo que se puedan intercambiar los motores de automatizacin. ActiveX Scripting se utiliza en Microsoft Internet Explorer y en Microsoft Internet Information Server.

VBScript en otras aplicaciones y exploradores


Como programador, puede licenciar su implementacin de origen de VBScript sin cargo para utilizarla en sus productos. Microsoft proporcionar implementaciones binarias de VBScript para la API de Windows de 32 bits, la API de Windows de 16 bits y la de Macintosh. VBScript se integra con exploradores de World Wide Web. VBScript y ActiveX Scripting tambin se pueden utilizar como un lenguaje de automatizacin general en otras aplicaciones.

INTERPRETACIN
VENTAJAS El cdigo es cmodo para depurar, ya que no es necesario volver a compilar tras un cambio. No es necesario disponer de un compilador, ya que el intrprete (que forma parte del navegador) ejecuta el script. El mantenimiento es fcil y rpido, por parte del autor o de otro programador. INCONVENIENTES La ejecucin se ralentiza, al ser necesaria la interpretacin lnea a lnea cada vez. El cdigo es visible y puede ser objeto de plagio por parte de otras personas. El usuario tiene acceso al cdigo y puede modificarlo, estropeando alguna operacin.

Manual del Alumno

COMPILACIN
VENTAJAS El cdigo compilado se ejecuta muy rpido, al no ser necesaria una traduccin cada vez. El cdigo compilado no puede ser "abierto" por otras personas. No es necesario transmitir el cdigo fuente. El cdigo compilado puede estar, ntegramente, incluido en un solo fichero. INCONVENIENTES Es necesario disponer de un compilador-linkador para el proceso de la compilacin. El cdigo compilado suele ocupar bastante en disco, ya que incorpora en el propio cdigo algunas libreras del sistema. Depurar un programa implica volver a compilar tras los cambios.

El cdigo en VBScript puede, adems, estar diseado para su ejecucin en el lado del cliente o en el del servidor. La diferencia es que un cdigo que se ejecuta en el lado del servidor no es visible en el lado del cliente. Este recibe los resultados, pero no el cdigo. El cdigo que se debe de ejecutar en el lado del servidor estar incluido en la pgina web correspondiente entre los tags <% y %> . Adems habr que renombrar la pgina para aplicarle la extensin .asp (Active Server Page -pgina activa en servidor-). El funcionamiento intrnseco de la ASP's est fuera de los objetivos de ste temario, aunque lo comentaremos por encima al final. Este texto se refiere, por tanto, al lenguaje VBScript en el lado del cliente.

El lenguaje VBScript solo funciona correctamente con el navegador Internet Explorer 4.0 y superiores, por lo que ser necesario disponer del mismo. Los usuarios de otros navegadores no podrn disfrutar de la potencia y versatilidad del VBScript.

Agregar cdigo de VBScript a una pgina HTML


Puede usar el elemento SCRIPT para agregar cdigo de VBScript a una pgina HTML.

La etiqueta <SCRIPT>
El cdigo de VBScript se presenta en una pgina HTML dentro de una parejas de etiquetas <SCRIPT>. Por ejemplo, un procedimiento que comprueba una fecha de envo aparece como:

Manual del Alumno


<SCRIPT LANGUAGE="VBScript"> <!-Function PuedeEntregar(Dt) PuedeEntregar = (CDate(Dt) - Now()) > 2 End Function --> </SCRIPT>
Las etiquetas <SCRIPT> de comienzo y fin rodean el cdigo. El atributo LANGUAGE indica el lenguaje de secuencia de comandos. Necesita especificar el lenguaje porque los exploradores pueden utilizar otros lenguajes de secuencia de comandos. Observe que la funcin PuedeEntregar aparece entre etiquetas de comentario (<!-y -->). Esto evita que los exploradores que no entienden la etiqueta <SCRIPT> muestra el cdigo. Como el ejemplo es una funcin general no est vinculado a ningn control de formulario en particular puede incluirlo en la seccin HEAD de la pgina:

<HTML> <HEAD> <TITLE>Haga su pedido</TITLE> <SCRIPT LANGUAGE="VBScript"> <!-Function PuedeEntregar(Dt) PuedeEntregar = (CDate(Dt) - Now()) > 2 End Function --> </SCRIPT> </HEAD> <BODY> ...
Puede utilizar procedimientos en cdigo en cualquier lugar de una pgina. Puede colocar procedimientos en las secciones BODY y HEAD. Sin embargo, puede que desee colocar todos los procedimientos en la seccin HEAD para mantener todo el cdigo junto. Mantener el cdigo en la seccin HEAD asegura que todo el cdigo se lee y decodifica antes de que se necesite debido a una llamada dentro de la seccin BODY. Una excepcin destacable a esta regla es que puede desear proporcionar formularios en lnea con cdigo de secuencia de comandos para responder a eventos de objetos del formulario. Por ejemplo, puede incluir cdigo de secuencia de comandos para responder a un clic en un botn en el formulario:

<HTML> <HEAD> <TITLE>Probar eventos de botn</TITLE> </HEAD> <BODY>

Manual del Alumno


<FORM NAME="Formulario1"> <INPUT TYPE="Button" NAME="Boton1" VALUE="Clic"> <SCRIPT FOR="Boton1" EVENT="onClick" LANGUAGE="VBScript"> MsgBox "Botn presionado!" </SCRIPT> </FORM> </BODY> </HTML>
La mayora del cdigo aparecer en procedimientos Sub o Function y slo se llamar cuando el cdigo que ha escrito provoca su ejecucin. Sin embargo, puede escribir cdigo de VBScript fuera de procedimientos, pero dentro de un bloque SCRIPT. Este cdigo se ejecuta slo una vez, cuando se carga la pgina HTML. Esto le permite inicializar los datos o cambiar dinmicamente la apariencia de su pgina Web cuando se carga.

10

Manual del Alumno

Semana 2 : Bases de VBScript


Tipos de datos de VBScript
Cules son los tipos de datos de VBScript?
VBScript slo tiene un tipo de datos que se llama Variant. Un tipo Variant es una clase especial de tipo de datos que puede contener diferentes tipos de informacin, dependiendo de cmo se utilice. Como Variant es el nico tipo de datos en VBScript, tambin es el nico tipo de datos devuelto por todas las funciones en VBScript.

En su forma ms sencilla, un tipo Variant puede contener tanto informacin numrica como de cadena. Un tipo Variant se comporta como un nmero cuando se utiliza en un contexto numrico y como una cadena cuando se utiliza en un contexto de cadena. Esto quiere decir que si trabaja con datos que parecen nmeros, VBScript asume que son nmeros y realiza lo que es ms adecuado para nmeros. Igualmente, si trabaja con datos que slo pueden ser datos de cadena, VBScript los trata como datos de cadena. Por supuesto, siempre puede hacer que los nmeros se comporten como cadenas, escribindolos entre comillas (" ").

Subtipos de Variant
Ms all de las simples clasificaciones numricas y de cadena, un tipo Variant puede hacer ms distinciones acerca de la naturaleza especfica de la informacin numrica. Por ejemplo, puede tener informacin numrica que representa una fecha o una hora. Cuando se utiliza con datos de fecha u hora, el resultado se expresa siempre como una fecha o una hora. Por supuesto, tambin puede tener una amplia variedad de informacin numrica en el intervalo de tamaos de sencillos valores Boolean a enormes nmeros de signo flotante. Estas categoras diferentes de informacin que puede contener un tipo Variant se llaman subtipos. La mayora de las veces slo se puede establecer el tipo de datos que desea en un tipo Variant y se comporta del modo ms adecuado para el tipo de datos que contiene.

La tabla siguiente muestra varios subtipos de datos que puede contener un tipo Variant.

Subtipo Empty

Descripcin Variant est sin inicializar. El valor es 0 para variables numricas o una cadena de longitud cero ("") para variables de cadena.

11

Manual del Alumno


Null Boolean Byte Integer Currency Long Single Variant contiene intencionadamente datos no vlidos. Contiene True o False. Contiene un entero entre 0 y 255. Contiene un entero -32.768 y 32.767. -922.337.203.685.477,5808 a 922.337.203.685.477,5807. Contiene un entero -2.147.483.648 y 2.147.483.647. Contiene un nmero de precisin simple y signo flotante entre -3,402823E38 y -1,401298E-45 para valores negativos, y entre 1,401298E-45 y 3.402823E38 para valores negativos. Contiene un nmero de precisin doble y punto flotante en el intervalo de 1,79769313486232E308 y -4,94065645841247E-324 para valores negativos, y entre 4,94065645841247E-324 y 1,79769313486232E308 para valores positivos. Contiene un nmero que representa una fecha entre el 1 de enero de 100 y el 31 de diciembre de 9999. Contiene una cadena de longitud variable que puede contener hasta 2 mil millones de caracteres de longitud. Contiene un objeto. Contiene un nmero de error.

Double

Date (Time) String Object Error

Puede usar las funciones de conversin para convertir datos un subtipo a otro. Adems la funcin VarType devuelve informacin acerca de cmo se almacenan los datos en un tipo Variant.

Variables de VBScript
Qu es una variable?
Una variable es un marcador de posicin til que hace referencia a una ubicacin de la memoria del equipo donde puede almacenar informacin de programa que puede cambiar durante el tiempo en que se ejecuta la secuencia de comandos. Por ejemplo, podra crear una variable llamada CuentaClics para almacenar el nmero de veces que el usuario hizo clic en un objeto de una determinada pgina Web. El lugar donde se ubica la variable en la memoria del equipo no es importante. Lo que es importante es que slo tiene que hacer referencia a su nombre para ver o cambiar su valor. En VBScript, las variables siempre son de un tipo de datos fundamental, Variant.

Declaracin de variables
Declare variables explcitamente en la secuencia de comandos utilizando la instruccin Dim, la instruccin Public y la instruccin Private. Por ejemplo:

Dim GradosFahrenheit

12

Manual del Alumno


Declare mltiples variables separando cada nombre de variable por una coma. Por ejemplo:

Dim Arriba, Abajo, Izquierda, Derecha

Tambin puede declarar una variable implcitamente por el simple uso de su nombre en alguna parte de la secuencia de comandos. Esto no se considera adecuado, ya que podra escribir mal el nombre de la variable en uno o ms lugares provocando resultados inesperados cuando ejecuta el cdigo. Por este motivo, existe la instruccin Option Explicit para solicitar una declaracin explcita de todas las variables. La instruccin Option Explicit debe ser la primera instruccin en la secuencia de comandos.

Restricciones de nombre
Los nombres de variables siguen las normas estndar de denominacin en VBScript. Un nombre de variable: Debe comenzar con un carcter alfabtico. No puede contener un punto. No debe superar 255 caracteres. Debe ser nico en el alcance donde se declara.

Alcance y vida de las variables


El alcance de una variable se determina cuando se declara. Cuando declara una variable dentro de un procedimiento, slo el cdigo dentro de ese procedimiento puede tener acceso o cambiar el valor de esa variable. Tiene scope local y se llama variable de nivel de procedimiento. i declara una variable fuera de un procedimiento, la hace reconocible en todos los procedimientos de la secuencia de comandos. Este tipo de variable de nivel de secuencia de comandos y tiene alcance de nivel de secuencia de comandos.

El tiempo que una variable existe es su vida. La vida de una variable de nivel de secuencia de comandos se extiende desde el momento en que se declar hasta el momento en que finaliza la ejecucin de la secuencia de comandos. A nivel de procedimiento, una variable existe slo cuando se encuentra en el procedimiento. Cuando sale del procedimiento, la variable se destruye. Las variables locales son adecuadas como espacio de almacenamiento temporal cuando se ejecuta un procedimiento. Puede tener variables locales del mismo nombre en varios procedimientos diferentes porque cada una slo se reconoce en el procedimiento en que se declar.

Asignacin de valores a variables

13

Manual del Alumno


Los valores se asignan a variables creeando un expresin de la siguiente manera: la variable est en la parte izquierda de la expresin y el valor que desea asignar a la misma est a la derecha. Por ejemplo:

B = 200

Constantes de VBScript
Qu es una constante?
Una constante es un nombre significativo que contiene un nmero o una cadena que nunca cambia. VBScript define un nmero de constantes intrnsecas. Puede obtener informacin sobre estas constantes intrnsecas en Referencia del lenguaje VBScript.

Creacin de constantes
En VBScript puede crear constantes definidas por el usuario utilizando la instruccin Const. Utilizando la instruccin Const, puede crear constantes numricas o de cadena con nombres significativos y asignarlas a valores literales. Por ejemplo:

Const MiCadena = "Esta es mi cadena." Const MiEdad = 49


Observe que el literal de cadena se escribe entre comillas (" "). Las comillas son la mejor y ms clara forma de diferenciar valores de cadena y valores numricos. Los literales de fecha y los literales de hora se representan encerrndolos entre signos de nmero (#). Por ejemplo:

Const FechaCorte = #6-1-97#


Puede que desee adoptar una combinacin de nombres para diferenciar constantes de variables. Esto impedir que intente reasignar sus valores mientras se ejecuta la secuencia de comandos. Por ejemplo, podra desear utilizar un prefijo "vb" en los nombres de constantes o puede dar nombre a las constantes en maysculas. Al diferenciar las constantes de las variables elimina la confusin cuando desarrolla secuencias de comando complejas.

14

Manual del Alumno

Semana 3 : Arreglos
Variables escalares y variables de matrices
Muchas veces, slo desea asignar un nico valor a una variable que ha declarado. Una variable que contiene un nico valor es una variable escalar. Otras veces, es til asignar ms de un valor relacionado a una nica variable. Entonces puede crear una variable que pueda contener una serie de valores. Esto se llama una variable de matriz. Las variables matriz se declaran de la misma forma que las variables escalares. La diferencia es que una declaracin de una variable de matriz utiliza parntesis ( ) a continuacin del nombre de la variable. En el siguiente ejemplo se declara una matriz de una dimensin que contiene 11 elementos:

Dim A(10)
Aunque el nmero que se muestra entre parntesis es 10, todas las matrices en VBScript son de base cero, por lo que la matriz realmente contiene 11 elementos. En una matriz de base cero, el nmero de elementos de la misma siempre es el nmero mostrado entre parntesis ms uno. Este tipo de matriz se llama una matriz de tamao fijo. Asigne datos a cada elemento de la matriz utilizando un ndice dentro de la matriz. Comenzando en cero y terminando en 10, es posible asignar datos a los elementos de una matriz del siguiente modo:

A(0) = 256 A(1) = 324 A(2) = 100 . . . A(10) = 55


Del mismo modo, se pueden recuperar los datos de cualquier elemento utilizando el ndice que desee dentro del elemento de la matriz deseado. Por ejemplo:

. . . AlgunaVariable = A(8) . . .
Las matrices no estn limitadas a una nica dimensin. Puede tener hasta 60 dimensiones aunque la mayora de las personas no pueden comprender ms de tres o cuatro. Las dimensiones mltiples se declaran separando con comas los nmeros de tamao de la matriz dentro del parntesis. En el siguiente ejemplo, la variable MiTabla es una matriz bidimensional que consta de 6 filas y 11 columnas:

Dim MiTabla(5, 10)


En una matriz bidimensional, el primer nmero siempre es el nmero de filas y el segundo el nmero de columnas.

15

Manual del Alumno

Instruccin Dim
Descripcin
Declara variables y asigna espacio de almacenamiento.

Sintaxis : Dim nombredevariable[([subndices])][, nombredevariable[([subndices])]] . . .

La sintaxis de la instruccin Dim tiene las siguientes partes:

Parte

Descripcin

nombredevariable Nombre de la variable que cumple con las convenciones estndar de asignacin de nombres de variables. subndices Dimensiones de una variable de matriz; se pueden declarar hasta 60 dimensiones mltiples. El argumento subndices usa la siguiente sintaxis: lmitesuperior [,lmitesuperior] . . . El lmite inferior de una matriz siempre es cero.

Comentarios
Las variables declaradas con Dim a nivel de secuencia de comandos estn disponibles para todos los procedimientos dentro de la secuencia de comandos. A nivel de procedimiento, las variables slo estn disponibles dentro del procedimiento. Tambin puede usar la instruccin Dim con parntesis vacos para declarar una matriz dinmica. Despus de declarar una matriz dinmica, use la instruccin ReDim dentro de un procedimiento para definir el nmero de dimensiones y elementos de la matriz. Si intenta volver a declarar una dimensin para una variable de matriz cuyo tamao se especific explcitamente en una instruccin Dim, se produce un error. Cuando se inician las variables, una variable numrica se inicia a 0 y una cadena se inicia a una cadena de longitud cero ("").

Sugerencia Al usar la instruccin Dim en un procedimiento, generalmente se coloca la instruccin Dim al principio del procedimiento.

16

Manual del Alumno


Los siguientes ejemplos muestran el uso de la instruccin Dim:

Dim Nombres(9) ' Declara una matriz con 10 elementos. Dim Nombres() ' Declara una matriz dinmica Dim MiVar, MiNum ' Declara dos variables

Tambin puede declarar una matriz cuyo tamao cambia durante el tiempo en que se ejecuta la secuencia de comandos. Esto se llama una matriz dinmica. La matriz inicialmente se declara dentro de un procedimiento utilizando la instruccin Dim como con cualquier tipo de matriz o la instruccin ReDim. Sin embargo, en una matriz dinmica, no se establece un tamao o un nmero de dimensiones dentro del parntesis. Por ejemplo:

Dim MiMatriz() ReDim OtraMatriz()


Para utilizar una matriz dinmica, debe utilizar a continuacin ReDim para determinar el nmero de dimensiones y el tamao de cada una de ellas. En el siguiente ejemplo, ReDim establece el tamao inicial de la matriz dinmica a 25. La siguiente instruccin ReDim cambia el tamao de la matriz a 30, pero utiliza la palabra clave Preserve para conservar el contenido de la matriz cuando se produce el cambio de tamao.

ReDim MiMatriz(25) . . . ReDim Preserve MiMatriz(30)


No hay lmite en cuanto al nmero de veces que puede cambiar el tamao de una matriz dinmica, pero debe saber que si hace una matriz ms pequea de lo que era, pierde los datos de los elementos eliminados.

17

Manual del Alumno

Semana 4 : Operadores y Funciones en VBScript


Operadores de VBScript
VBScript tiene un completo conjunto de operadores, incluyendo operadores aritmticos, operadores de comparacin, operadores de concatenacin y operadores lgicos.

Prioridad de los operadores


Cuando se producen varias operaciones en una expresin, cada parte se evala y se resuelve en un orden predeterminado. Este orden se conoce como prioridad de los operadores. Puede utilizar parntesis para invalidar el orden de prioridad y forzar que se evalen algunas partes de una expresin antes que otras. Las operaciones entre parntesis siempre se ejecutan antes que las de fuera. Sin embargo, dentro de los parntesis se mantiene la prioridad de los operadores.

Cuando las expresiones contienen operadores de ms de una categora, se evalan primero los operadores aritmticos, a continuacin los operadores de comparacin y por ltimo los lgicos. Todos los operadores de comparacin tienen la misma prioridad; esto quiere decir que se evalan en el orden en que aparecen, de izquierda a derecha. Los operadores aritmticos y lgicos se evalan en el siguiente orden de prioridad. Aritmtico Descripcin Exponenciacin Negacin unaria Multiplicacin Divisin Divisin entera Mdulo aritmtico Suma Resta Concatenacin de De comparacin Smbolo Descripcin ^ * / \ Mod + & Igualdad Desigualdad Menor que Mayor que Menor o igual que Mayor o igual que Equivalencia de objeto Lgico Smbolo Not And Or Xor Eqv Imp

Smbolo Descripcin = <> < > <= >= Is Logical negation Logical conjunction Disyuncin lgica Exclusin lgica Equivalencia lgica Implicacin lgica

18

Manual del Alumno


cadenas

Cuando una multiplicacin y una divisin se producen juntas en una expresin, cada operacin se evala como ocurre de izquierda a derecha. Del mismo modo, cuando una suma y una resta se producen juntas en una expresin, cada operacin se evala segn el orden de aparicin, de izquierda a derecha. El operador de concatenacin de cadenas (&) no es un operador aritmtico, pero en la prioridad se ejecuta despus de todos los operadores aritmticos y antes de todos los operadores de comparacin. El operador Is es un operador de comparacin de referencia de objeto. No compara objetos o sus valores; slo se comprueba para determinar si dos referencias a objetos se refieren al mismo objeto.

Operadores de VBScript
Funcin Abs
Devuelve el valor absoluto de un nmero.

Sintaxis : Abs(nmero)
El argumento nmero puede ser cualquier expresin numrica vlida. Si nmero contiene Null, se devuelve Null ; si es un valor no iniciado, se devuelve cero.

El valor absoluto de un nmero es su magnitud sin signo. Por ejemplo, Abs(-1) y Abs(1) devuelven 1. El siguiente ejemplo usa la funcin Abs para compute the absolute value of a number:

Dim MiNumero MiNumero = Abs(50.3) 'Devuelve 50.3 MiNumero = Abs(-50.3) 'Devuelve 50.3

Funcin Array
Devuelve un objeto Variant que contiene una matriz.

Sintaxis : Array(listadeargumentos)
El argumento requerido listadeargumentos es una lista de valores separados por comas, que se asignan a los elementos de una matriz contenida en el objeto Variant. Si no se especifica ningn argumento, se crea una matriz de longitud cero.

19

Manual del Alumno


La notacin usada para hacer referencia a un elemento de una matriz, consta del nombre de la variable seguido de parntesis que contienen un nmero de ndice que indica el elemento deseado. En el siguiente ejemplo, la primera instruccin crea una variable llamada A. La segunda instruccin asigna una matriz a la variable A. La ltima instruccin asigna el valor contenido en la segunda matriz a otra variable.

Dim A A = Array(10,20,20) B = A(2)

Funcin Asc
Devuelve el cdigo de carcter ANSI que corresponde a la primera letra de una cadena.

Sintaxis : Asc(cadena)
El argumento cadena es cualquier expresin de cadena vlida. Si cadena no contiene ningn carcter, se produce un error en tiempo de ejecucin. En el ejemplo siguiente, Asc devuelve el cdigo de carcter ANSI de la primera letra de cada cadena:

Dim MiNumero MiNumero = Asc("A") 'Devuelve 65 MiNumero = Asc("a") 'Devuelve 97 MiNumero = Asc("Azcar") 'Devuelve 65

Instruccin Call
Transfiere el control a un procedimiento Sub o Function.

Sintaxis : [Call] nombre [listadeargumentos]


La sintaxis de la instruccin Call tiene las siguientes partes: Parte Call Descripcin Palabra clave opcional. Si se especifica, debe encerrar listadeargumentosentre parntesis. Por ejemplo: Call MiProc(0) nombre Requerido. Nombre del procedimiento al que se llama.

listadeargumentos Opcional. List de variables, matrices o expresiones delimitada por comas que se pasa al procedimiento. No necesita usar la palabra clave Call al llamar a un procedimiento. Sin embargo, si usa la palabra clave Call para llamar a un procedimiento que necesita argumentos, listadeargumentos debe estar encerrado entre parntesois. Si omite la palabra clave Call, tambin debe omitir los parntesis que encierran a listadeargumentos. Con cualquier sintaxis de Call que use para llamar a cualquier funcin intrnseca o definida por el usuario, se descarta el valor devuelto por la funcin.

Call MiFuncion("Hola mundo")

20

Manual del Alumno


Function MiFuncion(texto) MsgBox texto End Function

Funcin CBool
Devuelve una expresin convertida en Variant de subtipo Boolean.

Sintaxis : CBool(expresin)
El argumento expresin es cualquier expresin vlida.

Si expresin es cero, se devuelve False; de lo contrario, se devuelve True. Si expresinno se puede interpretar como valor numrico, se produce un error en tiempo de ejecucin. El siguiente ejemplo usa la funcin CBool para convertir una expresin en Boolean. Si la expresin se evala como un valor distinto de cero, CBool devuelve True; de lo contrario, devuelve False.

Dim A, B, Comprobacion A = 5: B = 5 ' Inicia variables Comprobacion = CBool(A = B) ' Comprobacion contiene True A = 0 ' Define la variable Comprobacion = CBool(A) ' Comprobacion contiene False

Funcin CByte
Devuelve una expresin que se convirti en Variant de subtipo Byte.

Sintaxis : CByte(expresin)
El argumento expresin es cualquier expresin vlida. En general, puede documentar su cdigo con las funciones de conversin de subtipos para mostrar que el resultado de alguna operacin se debe expresar como un tipo de datos particular, en lugar del tipo de datos predeterminado. Por ejemplo, use CByte para forzar aritmtica de tipo byte en casos en los que normalmente se usara aritmtica de moneda, precisin simple, precisin doble o entero. Si expresin est fuera del intervalo aceptable para el subtipo Byte, se produce un error. El siguiente ejemplo usa la funcin CByte para convertir una expresin en byte:

Dim MiDoble, MiByte MiDoble = 125.5678 MiByte = CByte(MiDoble)

' MiDoble es un Double ' MiByte contiene 126

Funcin CCur
Devuelve una expresin que se convirti en Variant de subtipo Currency.

21

Manual del Alumno Sintaxis : CCur(expresin)


El argumento expresin es cualquier expresin vlida. Debe usar la funcin CCur para proporcionar conversiones internacionales estndar desde cualquier tipo de datos al subtipo Currency. Por ejemplo, distintos separadores de decimales o de miles se reconocen correctamente segn la configuracin local de su sistema. El siguiente ejemplo usa la funcin CCur para convertir una expresin en tipo de datos Currency:

Dim MiDoble, MiMoneda MiDoble = 543.214588 MiMoneda = CCur(MiDoble * 2) MiDoble * 2 (1086.429176) (1086.4292)

' MiDoble es de tipo Double ' Convierte el resultado de ' en tipo de datos Currency

Funcin CDate
Devuelve una expresin que se convirti en Variant del subtipo Date.

Sintaxis : CDate(fecha)
El argumento fecha es cualquier expresin de fecha vlida. Use la funcin IsDate para determinar si se puede convertir fecha en una fecha u hora. CDate reconoce literales de fecha y literales de hora, as como algunos nmeros que se encuentran dentro del rango de fechas aceptable. Al convertir un nmero a fecha, la parte entera del nmero se convierte en una fecha. Cualquier parte fraccionaria del nmero se convierte en una hora del da, a partir de medianoche. En el siguiente ejemplo se usa la funcin CDate para convertir una cadena en una fecha. En general, no se recomienda establecer fechas y horas como cadenas mediante programacin (como se muestra en este ejemplo). En su lugar, use literales de fecha y hora, como #10/19/1962# o #4:45:23 PM#.

MiFecha = "19 de octubre de 1962" ' Define la fecha MiHoraCorta = CDate(MiFecha) ' Convierte al tipo de datos Date MiHoraCompleta = "4:35:47 PM" ' Define la hora completa MiHoraCorta = CDate(MiHoraCompleta) ' Convierte al tipo de datos Date

Funcin CDbl
Devuelve una expresin que se convirti en Variant de subtipo Double.

Sintaxis : CDbl(expresin)
El argumento expresin es cualquier expresin vlida.

22

Manual del Alumno


En general, puede documentar su cdigo con las funciones de conversin de subtipos para mostrar que el resultado de alguna operacin se debe expresar como un tipo de datos particular, en lugar del tipo de datos predeterminado. Por ejemplo, use CDbl o CSng para forzar aritmtica de doble precisin o simple precisin en casos en los que normalmente se usara aritmtica de moneda o de entero. Este ejemplo usa la funcin CDbl para convertir una expresin en Double.

Dim MiMoneda, MiDoble MiMoneda = CCur(234.456784) tipo Currency. MiDoble = CDbl(MiMoneda * 8.2 * 0.01) resultado en Double.

' MiMoneda es de ' Convierte el

Funcin Chr
Devuelve el carcter asociado al cdigo de carcter ANSI especificado.

Sintaxis : Chr(cdigodecarcter)
El argumento cdigodecarcter es un nmero que identifica un carcter. Los nmeros entre 0 y 31 son iguales a los cdigos ASCII estndar, no imprimibles. Por ejemplo, Chr(10) devuelve un carcter de avance de lnea.

El siguiente ejemplo usa la funcin Chr para devolver el carcter asociado al cdigo de carcter especificado:

Dim MiCaracter MiCaracter = Chr(65) MiCaracter = Chr(97) MiCaracter = Chr(62) MiCaracter = Chr(37)

' ' ' '

Devuelve Devuelve Devuelve Devuelve

A. a. >. %.

Funcin CInt
Devuelve una expresin que se convirti enVariant del subtipo Integer.

Sintaxis : CInt(expresin)
El argumento expresin es cualquier expresin vlida.

En general, puede documentar su cdigo con las funciones de conversin de subtipos para mostrar que el resultado de alguna operacin se debera expresar como un tipo de datos particular, en lugar del tipo de datos predeterminado. Por ejemplo, use CInt o CLng para forzar aritmtica de enteros en casos en los que normalmente se usara aritmtica de moneda, precisin simple o precisin doble. Si expresin est fuera del intervalo aceptable para el subtipo Integer, se produce un error.

23

Manual del Alumno


El siguiente ejemplo usa la funcin CInt para convert a value to an Integer:

Dim MiDoble, MiEntero MiDoble = 2345.5678 ' MiDoble es de tipo Double. MiEntero = CInt(MiDoble) ' MiEntero contiene 2346.

Funcin CLng
Devuelve una expresin que se convirti en Variant del subtipo Long.

Sintaxis : CLng(expresin)
El argumento expresin es cualquier expresin vlida. En general, puede documentar su cdigo con las funciones de conversin de subtipos para mostrar que el resultado de alguna operacin se debera expresar como un tipo de datos particular, en lugar del tipo de datos predeterminado. Por ejemplo, use CInt o CLng para forzar aritmtica de enteros en casos en los que, normalmente, se usara aritmtica de precisin simple o precisin doble. Si expresin est fuera del intervalo aceptable para el subtipo Long, se produce un error. El siguiente ejemplo usa la funcin CLng para convertir un valor en Long:

Dim MiVal1, MiVal2, MiLong1, MiLong2 MiVal1 = 25427.45: MiVal2 = 25427.55 are Doubles. MiLong1 = CLng(MiVal1) MiLong2 = CLng(MiVal2)

' MiVal1, MiVal2

' MiLong1 contiene 25427. ' MiLong2 contiene 25428.

Funcin CSng
Devuelve una expresin que se convirti en Variant del subtipo Single.

Sintaxis : CSng(expresin)
El argumento expresin es cualquier expresin vlida. En general, puede documentar su cdigo con las funciones de conversin de tipos de datos para mostrar que el resultado de algunas operaciones se debera expresar como un tipo de datos particular, en lugar del tipo de datos predeterminado. Por ejemplo, use CDbl o CSng para forzar aritmtica de precisin doble o precisin simple en casos en los que, normalmente, se usara aritmtica de moneda o de enteros. Si expresin est fuera del intervalo aceptable para el subtipo Single, se produce un error. El siguiente ejemplo usa la funcin CSng para convertir un valor en Single:

Dim MiDoble1, MiDoble2, MiSimple1, MiSimple2 MiDoble2 are Doubles.

' MiDoble1,

24

Manual del Alumno


MiDoble1 = 75.3421115: MiDoble2 = 75.3421555 MiSimple1 = CSng(MiDoble1) ' MiSimple1 contiene 75.34211. MiSimple2 = CSng(MiDoble2) ' MiSimple2 contiene 75.34216.

Funcin CStr
Devuelve una expresin que se convirti en Variant del subtipo String.

Sintaxis : CStr(expresin)
El argumento expresin es cualquier expresin vlida. En general, puede documentar su cdigo con funciones de conversin de tipos de datos para mostrar que el resultado de alguna operacin se debera expresar como un tipo de datos particular, en lugar del tipo de datos predeterminado. Por ejemplo, use CStr para forzar que el resultado se exprese como String. Los datos almacenados en expresin determinan el valor devuelto de acuerdo con la siguiente tabla: Si expresin es Boolean Date Null Empty Error Otro valor numrico CStr devuelve Un valor de tipo String que contiene True o False. Un valor de tipo String que contiene una fecha en formato de fecha corta de su sistema. Un error en tiempo de ejecucin. Un valor de tipo String de longitud cero (""). Un valor de tipo String que contiene la palabra Error seguido por el nmero de error. Un valor de tipo String contiene el nmero.

El siguiente ejemplo usa la funcin CStr para convertir un valor numrico en String:

Dim MiDoble, MiCadena MiDoble = 437.324 MiCadena = CStr(MiDoble)

' MiDoble es de tipo Double. ' MiCadena contiene "437.324".

Funcin Exp
Devuelve e (la base de los logaritmos naturales) elevado a una potencia.

Sintaxis : Exp(nmero)
El argumento nmero puede ser cualquier expresin numrica vlida.

25

Manual del Alumno


Si el valor de nmero supera 709.782712893, se produce un error. La constante e aproximadamente igual a 2.718282. El siguiente ejemplo usa la funcin Exp para devolver e elevado a una potencia:

Dim MiAngulo, MiSenoH ' Define el ngulo en radianes. MiAngulo = 1.3 ' Calcula el seno hiperblico. MiSenoH = (Exp(MiAngulo) - Exp(-1 * MiAngulo)) / 2

Funciones Int y Fix


Devuelve la parte entera de un nmero.

Sintaxis :

Int(nmero)

Fix(nmero)

El argumento nmero puede ser cualquier expresin numrica vlida. Si nmero contiene Null, se devuelve Null. Int y Fix quitan la parte fraccional de nmero y devuelven el valor entero resultante. La diferencia entre Int y Fix es que si nmero es negativo, Int devuelve el primer entero negativo menor o igual a nmero, mientras que Fix devuelve el primer entero negativo mayor o igual a nmero. Por ejemplo, Int convierte -8.4 a -9, y Fix convierte -8.4 a -8. Fix(nmero) es equivalente a:

Sgn(nmero) * Int(Abs(nmero))
Los siguientes ejemplo muestran cmo devuelven partes enteras de nmeros las funciones Int y Fix:

MiNumero MiNumero MiNumero MiNumero MiNumero MiNumero

= = = = = =

Int(99.8) Fix(99.2) Int(-99.8) Fix(-99.8) Int(-99.2) Fix(-99.2)

' ' ' ' ' '

Devuelve Devuelve Devuelve Devuelve Devuelve Devuelve

99. 99. -100. -99. -100. -99.

Funcin GetObject
Devuelve una referencia a un objeto de automatizacin desde un archivo.

Sintaxis : GetObject([nombrederuta] [, clase])


La sintaxis de la funcin GetObject tiene las siguientes partes: Parte Descripcin

nombrederuta Opcional; String. Ruta y nombre completos del archivo que contiene el objeto que desea recuperar. Si se omite nombrederuta, se requiere clase. clase Opcional; String. Clase del objeto.

26

Manual del Alumno


El argumento claseusa la sintaxis nombredeaplicacin.tipodeobjeto y tiene las siguientes partes: Parte Descripcin

nombredeaplicacin Requerido; String. Nombre de la aplicacin que proporciona el objeto. tipodeobjeto Requerido; String. Tipo o clase de objeto que desea crear.

Use la funcin GetObject para tener acceso a un objeto de automatizacin desde un archivo y asignar el objeto a una variable de objeto. Use la instruccin Set para asignar el objeto devuelto por GetObject a la variable de objeto. Por ejemplo:

Dim CADObject Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")


Cuando se ejecuta este cdigo, se inicia la aplicacin asociada con el nombre de ruta especificado y el objeto del archivo especificado se activa. Si nombrederuta es una cadena de longitud cero (""), GetObject devuelve una nueva instancia de objeto del tipo especificado. Si se omite el argumento nombrederuta, GetObject devuelve un objeto activo del tipo especificado. Si no existe ningn objeto del tipo especificado, se produce un error. Algunas aplicaciones le permiten activar parte de un archivo. Agregue un signo de admiracin (!) al final del nombre del archivo y, a continuacin, agregue una cadena que identifique la parte del archivo que desea activar. Para obtener informacin acerca de cmo crear esta cadena, consulte la documentacin de la aplicacin que cre el objeto. Por ejemplo, en una aplicacin de dibujo podra tener varias capas de un dibujo almacenado en un archivo. Podra usar el siguiente cdigo para activar una capa de un dibujo llamado SCHEMA.CAD:

Set ObjetoCapa = GetObject("C:\CAD\SCHEMA.CAD!Layer3")


Si no especifica la clase de objeto, la automatizacin determina la aplicacin que debe iniciar el objeto para activarlo, basado en el nombre de archivo proporcionado. Sin embargo, es posible que algunos archivos admitan ms de una clase de objeto. Por ejemplo, un dibujo puede admitir tres tipos de objeto distintos: un objeto Application, un objeto Drawing y un objeto Toolbar, y todos forman parte del mismo archivo. Para especificar qu objeto desea activar en un archivo, use el argumento opcional clase. Por ejemplo:

Dim MiObjeto Set MiObjeto = "FIGMENT.DRAWING")

GetObject("C:\DIBUJOS\EJEMPLO.DRW",

En el ejemplo anterior, FIGMENT es el nombre de una aplicacin de dibujo y DRAWING es uno de los tipos de objeto que admite. Una vez activado un objeto, se hace referencia a l en el cdigo mediante la variable de objeto definida. En el

27

Manual del Alumno


ejemplo anterior, se tiene acceso a las propiedades y mtodos del nuevo objeto con la variable de objeto MiObjeto. Por ejemplo:

MiObjeto.Line 9, 90 MiObjeto.InsertText 9, 100, "Hola mundo." MiObjeto.SaveAs "C:\DIBUJOS\EJEMPLO.DRW"

Funcin Hour
Devuelve un nmero entero entre 0 y 23, ambos incluidos, que representa la hora del da.

Sintaxis : Hour(hora)
El argumento hora es cualquier expresin que pueda representar una hora. Si hora contiene Null, se devuelve Null. El siguiente ejemplo usa la funcin Hour para obtener la hora a partir de la hora actual:

Dim MiHoraCompleta, MiHora MiHoraCompleta = Now MiHora = Hour(MiHoraCompleta) ' MiHora contiene el nmero que representa la hora actual.

Funcin IsDate
Devuelve un valor de tipo Boolean que indica si una expresin se puede o no convertir en una fecha.

Sintaxis : IsDate(expresin)
El argumento expresin puede ser cualquier expresin de fecha o expresin de cadena reconocible como fecha u hora. IsDate devuelve True si la expresin es una fecha o si se puede convertir en una fecha vlida. De lo contrario, devuelve False. En Microsoft Windows, el intervalo vlido de fechas es desde el 1 de enero del ao 100 hasta el 31 de diciembre del ao 9999; los intervalos varan segn el sistema operativo. El siguiente ejemplo usa la funcin IsDate para determinar si una expresin se puede o no convertir en una fecha:

Dim MiFecha, SuFecha, NingunaFecha, MiComprobacion MiFecha = "October 19, 1962": SuFecha = #10/19/62#: NingunaFecha = "Hola" MiComprobacion = IsDate(MiFecha) ' Devuelve True. MiComprobacion = IsDate(SuFecha) ' Devuelve True. MiComprobacion = IsDate(NingunaFecha) ' Devuelve False.

28

Manual del Alumno Funcin LBound


Devuelve el subndice ms pequeo disponible para la dimensin indicada de una matriz.

Sintaxis : LBound(nombredematriz[, dimensin])


La sintaxis de la funcin LBound tiene las siguientes partes: Parte Descripcin

nombredematriz Nombre de la variable de matriz, que cumple con las convenciones estndar de asignacin de nombres de variables. dimensin Nmero entero que indica de qu dimensin se devuelve el lmite inferior. Use 1 para la primera dimensin, 2 para la segunda y as sucesivamente. Si se omite dimensin, se asume 1.

Funcin LCase
Devuelve una cadena convertida a minsculas.

Sintaxis : LCase(cadena)
El argumento cadena es cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null.

Funcin Left
Devuelve un nmero de caracteres especificado a partir del lado izquierdo de una cadena.

Sintaxis : Left(cadena, longitud)


La sintaxis de la funcin Left tiene los siguientes argumentos: Parte cadena Descripcin Expresin de cadena a partir de la que se devuelven los caracteres que estn ms a la izquierda. Si cadena contiene Null, se devuelve Null.

longitud Expresin numrica que indica cuntos caracteres se van a devolver. Si es igual a 0, se devuelve una cadena de longitud cero (""). Si es mayor o igual al nmero de caracteres de cadena, se devuelve la cadena completa.

Funcin Len
Devuelve el nmero de caracteres en una cadena o el nmero de bytes necesarios para almacenar una variable.

Sintaxis : Len(cadena | nombredevariable)


La sintaxis de la funcin Len tiene las siguientes partes: Parte Descripcin

29

Manual del Alumno


cadena Cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null.

nombredevariable Cualquier nombre de variable vlido. Si nombrevariable contiene Null, se devuelve Null. En el siguiente ejemplo se usa la funcin Len para devolver el nmero de caracteres que contiene una cadena:

Dim MiCadena MiCadena = Len("VBSCRIPT") MiCadena contiene 8.

Funcin LoadPicture
Devuelve un objeto de imagen. Slo est disponible en plataformas de 32 bits.

Sintaxis : LoadPicture(nombredeimagen)
El argumento nombredeimagen es una expresin de cadena que indica el nombre del archivo de imagen que se va a cargar. Los formatos grficos reconocidos por LoadPicture incluyen archivos de mapa de bits (.bmp), archivos de iconos (.ico), archivos cifrados de longitud continua (.rle), metaarchivos (.wmf), metaarchivos mejorados (.emf), archivos GIF (.gif) y archivos JPEG (.jpg).

Funciones LTrim, RTrim y Trim


Devuelve una copia de una cadena sin espacios iniciales (LTrim), espacios finales (RTrim) o ambos (Trim).

Sintaxis : LTrim(cadena)

RTrim(cadena) Trim(cadena)

El argumento cadena es cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null. Los siguientes ejemplos usan las funciones LTrim, RTrim y Trim para recortar espacios iniciales, espacios finales y ambos, respectivamente:

Dim MiVar MiVar = LTrim(" vbscript ") MiVar = RTrim(" vbscript ") MiVar = Trim(" vbscript ")

'MiVar contiene "vbscript ". 'MiVar contiene " vbscript". 'MiVar contiene "vbscript".

Funcin Mid
Devuelve un nmeros especificado de caracteres a partir de una cadena.

Sintaxis : Mid(cadena, inicio[, longitud])


La sintaxis de la funcin Mid tiene los siguientes argumentos: Parte cadena Descripcin Expresin de cadena a partir de la que se devuelven los caracteres. Si cadena contiene Null, se devuelve Null.

30

Manual del Alumno


inicio Posicin de carcter en cadena en la que comienza la parte que se va a obtener. Si inicio es mayor que el nmero de caracteres que hay en cadena, Mid devuelve una cadena de longitud cero ("").

longitud Nmero de caracteres que se va a devolver. Si se omite o si hay menos caracteres que longitud en el texto (incluido el carcter que est en la posicin inicio), se devuelven todos los caracteres desde la posicin inicio hasta el final de la cadena. Para determinar el nmero de caracteres que hay en cadena, use la funcin Len.

El siguiente ejemplo usa la funcin Mid para devolver seis caracteres, comenzando en el cuarto carcter, en una cadena:

Dim MiVar MiVar = Mid("VB Script es divertido", 4, 6) 'MiVar contiene "Script".

Funcin Minute
Devuelve un nmero entero entre 0 y 59, ambos incluidos, que representa el minuto de la hora.

Sintaxis : Minute(hora)
El argumento hora es cualquier expresin que puede representar una hora. Si hora contiene Null, se devuelve Null. El siguiente ejemplo usa la funcin Minute para devolver el minuto de la hora:

Dim MiVar MiVar = Minute(Now)

Funcin Month
Devuelve un nmero entero entre 1 y 12, ambos incluidos, que representa el mes del ao.

Sintaxis : Month(fecha)
El argumento fecha es cualquier expresin que pueda representar una fecha. Si fecha contien Null, se devuelve Null. El siguiente ejemplo usa la funcin Mes para devolver el mes actual:

Dim MiVar MiVar = Month(Now) ' MiVar contiene el nmero correspondiente al mes actual.

Funcin MonthName
Devuelve una cadena que indica el mes especificado.

31

Manual del Alumno Sintaxis : MonthName(mes[, abreviar])


La sintaxis de la funcin MonthName tiene las siguientes partes: Parte mes abreviar Descripcin Requerido. La designacin numrica del mes. Por ejemplo, enero es 1, febrero es 2 y as sucesivamente. Opcional. Valor de tipo Boolean que indica si el nombre del mes se debe abreviar. Si se omite, el valor predeterminado es False, que significa que el nombre del mes no se debe abreviar.

El siguiente ejemplo usa la funcin MonthName para devolver un nombre de mes abreviado para una expresin de fecha:

Dim MiVar MiVar = MonthName(10, True) ' MiVar contiene "Oct".

Funcin Now
Devuelve la fecha y hora actuales segn la configuracin de la fecha y hora de su sistema.

Sintaxis : Now
El siguiente ejemplo usa la funcin Now para devolver la fecha y hora actuales:

Dim MiVar MiVar = Now ' MiVar contiene la fecha y hora actuales.

Funcin RGB
Devuelve un nmero entero que representa un valor de un color RGB.

Sintaxis : RGB(rojo, verde, azul)


La funcin RGB tiene las siguientes partes: Parte Descripcin rojo verde azul Requerido. Nmero en el intervalo entre 0 y 255 que representa el componente rojo del color. Requerido. Nmero en el intervalo entre 0 y 255 que representa el componente verde del color. Requerido. Nmero en el intervalo entre 0 y 255 que representa el componente azul del color.

Los mtodos y propiedades de aplicaciones que aceptan una especificacin de color esperan que la especificacin sea un nmero que represente un valor de un color RGB. Un valor de un color RGB especifica la intensidad relativa de rojo, verde y azul para producir la visualizacin de un color especfico. El byte menos significativo contiene el valor del rojo, el byte del medio contiene el valor del verde y el byte ms significativo contiene el valor del azul.

32

Manual del Alumno


Para aplicaciones que requieren que el orden de los bytes se invierta, la siguiente funcin proporcion la misma informacin con los bytes invertidos:

Function InvertirRGB(rojo, verde, azul) InvertirRGB= CLng(azul + (verde * 256) + (rojo * 65536)) End Function
Se asume que el valor de cualquier argumento RGB que exceda 255, es 255.

Funcin Right
Devuelve un nmero de caracteres especificado a partir del lado derecho de una cadena.

Sintaxis : Right(cadena, longitud)


La sintaxis de la funcin Right tiene los siguientes argumentos:

Parte cadena

Descripcin Expresin de cadena desde la que se devuelven los caracteres que estn ms a la derecha. Si cadena contiene Null, se devuelve Null.

longitud Expresin numrica que indica cuntos caracteres se van a devolver. Si es igual a 0, se devuelve una cadena de longitud cero. Si es mayor o igual al nmero de caracteres que hay en cadena, se devuelve toda la cadena. Para determinar el nmero de caracteres que hay en cadena, use la funcin Len. El siguiente ejemplo usa la funcin Right para devolver un nmero especificado de caracteres a partir del lado derecho de una cadena:

Dim CualquierCadena, MiCad CualquierCadena = "Hola mundo" MiCad = Right(CualquierCadena, 1) MiCad = Right(CualquierCadena, 6) MiCad = Right(CualquierCadena, 20)

'Define la ' Devuelve ' Devuelve ' Devuelve

cadena. "d". " mundo". "Hola mundo".

Funcin Rnd
Devuelve un nmero aleatorio.

Sintaxis : Rnd[(nmero)]
El argumento nmero puede ser cualquier expresin numrica vlida.

33

Manual del Alumno


La funcin Rnd devuelve un valor menor que 1 pero mayor o igual a 0. El valor de nmero determina cmo Rnd genera un nmero aleatorio: Si nmero es Menor que cero Mayor que cero Igual a cero No suministrado Rnd genera El mismo nmero cada vez, con nmero como semilla. El siguiente nmero aleatorio de la secuencia. El ltimo nmero generado. El siguiente nmero aleatorio de la secuencia.

Para cualquier semilla inicial proporcionada, se genera la misma secuencia de nmeros porque cada llamada sucesiva a la funcin Rnd usa el nmero anterior como semilla para el siguiente nmero de la secuencia. Antes de llamar a Rnd, use la instruccin Randomize sin ningn argumento para iniciar el generador de nmeros aleatorios con una semilla basada en el reloj del sistema. Para producir enteros aleatorios dentro de un intervalo especfico, use esta frmula:

Int((lmitesuperior - lmiteinferior + 1) * Rnd + lmiteinferior)


Aqu, lmitesuperior es el nmero ms alto del intervalo y lmiteinferior es el nmero ms bajo del intervalo.

Funcin Round
Devuelve un nmero redondeado a un nmero especificado de posiciones decimales.

Sintaxis : Round(expresin[, posicionesdecimales])


La sintaxis de la funcin Round tiene las siguientes partes: Parte expresin Descripcin Requerido. Expresin numrica que se va a redondear.

posicionesdecimales Opcional. Nmero que indica cuntas posiciones a la derecha del decimal se incluyen en el redondeo. Si se omite, la funcin Round devuelve enteros. El siguiente ejemplo usa la funcin Round para redondear un nmero a dos posiciones decimales:

Dim MiVar, pi pi = 3.14159 MiVar = Round(pi, 2) 'MiVar contiene 3.14.

Funcin Second
Devuelve un nmero entero entre 0 y 59, ambos incluidos, que representa el segundo del minuto.

34

Manual del Alumno Sintaxis : Second(hora)


El argumento hora es cualquier expresin que pueda representar una hora. Si hora contiene Null, se devuelve Null. El siguiente ejemplo usa la funcin Second para devolver el segundo actual:

Dim MiSeg MiSeg = Second(Now) 'MiSeg contiene el nmero que representa el segundo actual.

Funcin Sgn
Devuelve un entero que indica el signo de un nmero.

Sintaxis : Sgn(nmero)
El argumento nmero puede ser cualquier expresin numrica vlida.

Valores devueltos
La funcin Sgn devuelve los siguientes valores: Si nmero es Mayor que cero Igual a cero Menor que cero Sgn devuelve 1 0 -1

El signo del argumento nmero determina el valor devuelto de la funcin Sgn. El siguiente ejemplo usa la funcin Sgn para determinar el signo de un nmero:

Dim MiVar1, MiVar2, MiVar3, MiSigno MiVar1 = 12: MiVar2 = -2.4: MiVar3 = 0 MiSigno = Sgn(MiVar1) ' Devuelve 1. MiSigno = Sgn(MiVar2) ' Devuelve -1. MiSigno = Sgn(MiVar3) ' Devuelve 0.

Funcin Space
Devuelve una cadena que consta del nmero de espacios especificado.

Sintaxis : Space(nmero)
El argumento nmero es el nmero de espacios que desea en la cadena. El siguiente ejemplo usa la funcin Space para devolver una cadena que consta de un nmero de espacios especificado:

Dim MiCadena MiCadena = Space(10) ' Devuelve una cadena con 10 espacios. MiCadena = "Hola" & Space(10) & "mundo" ' Inserta 10 espacios entre las dos cadenas.

35

Manual del Alumno Funcin Sqr


Devuelve la raz cuadrada de un nmero.

Sintaxis : Sqr(nmero)
El argumento nmero puede ser cualquier expresin numrica vlida mayor o igual a 0. El siguiente ejemplo usa la funcin Sqr para calcular la raz cuadrada de un nmero:

Dim MyRaiz MyRaiz = Sqr(4) MyRaiz = Sqr(23) MyRaiz = Sqr(0) MyRaiz = Sqr(-4)

' ' ' '

Devuelve 2. Devuelve 4.79583152331272. Devuelve 0. Genera un error en tiempo de ejecucin.

Funcin String
Devuelve una cadena de caracteres repetidos de la longitud especificada.

Sintaxis : String(nmero, carcter)


La sintaxis de la funcin String tiene los siguientes argumentos: Parte nmero Descripcin Longitud de la cadena devuelta. Si nmero contiene Null, se devuelve Null.

carcter Cdigo de carcter que especifica el carcter o expresin de cadena cuyo primer carcter se usa para generar la cadena devuelta. Si carcter contiene Null, se devuelve Null. Si especifica un nmero para carcter mayor que 255, String convierte el nmero en un cdigo de carcter vlido con la frmula:

carcter Mod 256


El siguiente ejemplo usa la funcin String para devolver cadenas de caracteres repetidos de la longitud especificada:

Dim MiCadena MiCadena = String(5, "*") MiCadena = String(5, 42) MiCadena = String(10, "ABC")

' Devuelve "*****". ' Devuelve "*****". ' Devuelve "AAAAAAAAAA".

Funcin UBound
Devuelve el mayor subndice disponible para la dimensin indicada de una matriz.

Sintaxis : UBound(nombredematriz[, dimensin])


La sintaxis de la funcin UBound tiene las siguientes partes: Parte Descripcin

nombredematriz Requerido. nombre de la variable de matriz que cumple con el estndar de asignacin de nombres de variables.

36

Manual del Alumno


dimensin Opcional. Nmero entero que indica para qu dimensin se va a devolver el lmite superior. Use 1 para la primera dimensin, 2 para la segunda y as sucesivamente. Si se omite dimensin, se asume que es igual a 1.

La funcin UBound se usa con la funcin LBound para determinar el tamao de una matriz. Use la funcin LBound para buscar el lmite inferior de una dimensin de una matriz. El lmite inferior de cualquier dimensin siempre es igual a 0. Como resultado, UBound devuelve los siguientes valores para una matriz con estas dimensiones:

Dim A(100,3,4)
Instruccin UBound(A, 1) UBound(A, 2) UBound(A, 3) Valor devuelto 100 3 4

Funcin UCase
Devuelve una cadena que se convirti en maysculas.

Sintaxis : UCase(cadena)
El argumento cadena es cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null.

Slo se convierten en maysculas las letras minsculas; todas las letras maysculas y caracteres que no son letras no cambian. El siguiente ejemplo usa la funcin UCase para devolver una versin en maysculas de una cadena:

Dim MiPalabra MiPalabra = UCase("Hola mundo")

' Devuelve "HOLA MUNDO".

Funcin VarType
Devuelve un valor que indica el subtipo de una variable.

Sintaxis : VarType(nombredevariable)
El argumento nombredevariable puede ser cualquier variable.

Valores devueltos
La funcin VarType devuelve los siguientes valores: Constante Valor Descripcin

37

Manual del Alumno


vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString vbObject vbError vbBoolean vbVariant vbDataObject vbByte vbArray 0 1 2 3 4 5 6 7 8 9 10 11 12 13 17 8192 Empty (no iniciado) Null (datos no vlidos) Entero Entero largo Nmero de coma flotante de precisin simple Nmero de coma flotante de precisin doble Moneda Fecha Cadena objeto de automatizacin Error Valor de tipo Boolean Valor de tipo Variant (slo se usa con matrices de valores de tipo Variant) Un objeto de acceso a datos Valor de tipo Byte Matriz

Nota Estas constantes las especifica VBScript. Como resultado, los nombres se pueden usar en cualquier parte del cdigo en lugar de los valores reales.

Funcin Weekday
Devuelve un nmero entero que representa el da de la semana.

Sintaxis : Weekday(fecha, [primerdasemana])


La sintaxis de la funcin Weekday tiene los siguientes argumentos: Parte fecha Descripcin Cualquier expresin que pueda representar una fecha. Si fecha contiene Null, se devuelve Null.

primerdasemana Una constante que especifica el primer da de la semana. Si se omite, se asume vbSunday.

Valores
El argumento primerdasemana tiene los siguientes valores: Constante vbUseSystem vbSunday vbMonday Valor 0 1 2 Descripcin Usar configuracin de API NLS. Domingo Lunes

38

Manual del Alumno


vbTuesday vbWednesday vbThursday vbFriday vbSaturday 3 4 5 6 7 Martes Mircoles Jueves Viernes Sbado

Valores devueltos
La funcin Weekday puede devolver cualquiera de los siguientes valores: Constante vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday Valor 1 2 3 4 5 6 7 Descripcin Domingo Lunes Martes Mircoles Jueves Viernes Sbado

El siguiente ejemplo usa la funcin Weekday para obtener el da de la semana de una fecha especificada:

Dim MiFecha, MiDiaDeLaSemana MiFecha = #19 de octubre de 1962# ' Asigna una fecha. MiDiaDeLaSemana = Weekday(MiFecha) ' MiDiaDeLaSemana contiene 6 porque MiFecha representa un viernes.

Funcin WeekdayName
Devuelve una cadena que indica el da de la semana especificado.

Sintaxis : WeekdayName(dasemana, abreviar, primerdasemana)


La sintaxis de la funcin WeekdayName tiene las siguientes partes: Parte dasemana Descripcin Requerido. La designacin numrica para el da de la semana. El valor numrico de cada da depende de la configuracin del valor primerdasemana. Opcional. Valor de tipo Boolean que indica si el nombre del da de la semana se debe abreviar. Si se omite, el valor predeterminado es False, que significa que el nombre del da de la semana no se abrevia.

abreviar

primerdasemana Opcional. Valor numrico que indica el primer da de la semana. Consulte la seccin Valores para saber cules son los valores permitidos.

Valores
El argumento primerdasemana puede tener los siguientes valores:

39

Manual del Alumno


Constante vbUseSystem vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday Valor Descripcin 0 1 2 3 4 5 6 7 Usar configuracin de API NLS. Domingo (predeterminado) Lunes Martes Mircoles Jueves Viernes Sbado

El siguiente ejemplo usa la funcin WeekDayName para devolver el da especificado:

Dim MiFecha MiFecha = WeekDayName(6, True)

'MiFecha contiene Vie.

Funcin Year
Devuelve un nmero entero que representa el ao.

Sintaxis : Year(fecha)
El argumento fecha es cualquier expresin que pueda representar una fecha. Si fecha contiene Null, se devuelve Null.

El siguiente ejemplo usa la funcin Year para obtener el ao a partir de una fecha especificada:

Dim MiFecha, MiAno MiFecha = #19 de octubre de 1962# ' Asigna una fecha. MiAno = Year(MiFecha) ' MiAno contiene 1962.

40

Manual del Alumno

Semana 5 : Procedimientos en VBScript


Procedimientos de VBScript
Tipos de procedimientos
En VBScript hay dos tipos de procedimientos; el procedimiento Sub y el procedimiento Function.

Procedimientos Sub
Un procedimiento Sub es una serie de instrucciones de VBScript, entre instrucciones Sub y End Sub, que ejecutan acciones pero no devuelven ningn valor. Un procedimiento Sub puede tener argumentos (constantes, variables o expresiones que se transfieren por una llamada a un procedimiento). Si un procedimiento Sub no tiene argumentos, su instruccin Sub debe incluir un par de parntesis vacos (). El siguiente procedimiento Sub utiliza dos funciones de VBScript intrnsecas o incorporadas, MsgBox y InputBox, para preguntar al usuario cierta informacin. Despus muestra los resultados del clculo en base a esa informacin. El clculo se ejecuta en un procedimiento Function creado mediante VBScript. Se muestra en la explicacin del procedimiento Function a continuacin.
Sub ConvertirTemp() temp = InputBox("Escriba la temperatura en grados Farenheit.", 1) MsgBox "La temperatura es de " & Celsius(temp) & " grados Celsius." End Sub

Instruccin Sub
Declara el nombre, argumentos y cdigo de que forman el cuerpo de un procedimiento Sub.

Sintaxis : [Public | Private] Sub nombre [(listadeargumentos)] [instrucciones] [Exit Sub] [instrucciones] End Sub
La sintaxis de la instruccin Sub tiene las siguientes partes: Parte Public Private nombre Descripcin Indica que el procedimiento Sub es accesible desde todos los dems procedimientos en todas las secuencias de comandos. Indica que el procedimiento Sub es accesible slo desde los procedimientos de la secuencia de comandos en la que se declara. Nombre del procedimiento Sub; sigue la convencin de nomenclatura estndar de variables.

41

Manual del Alumno


listadeargumentos Lista de variables que representan los argumentos pasados al procedimiento Sub al ser llamado. Las distintas variables se separan con comas. instrucciones Cualquier grupo de instrucciones para ser ejecutadas dentro del cuerpo del procedimiento Sub.

El argumento listadeargumentos tiene las siguiente sintaxis y las siguientes partes: [ByVal | ByRef] nombredevariable[( )] Parte ByVal ByRef Descripcin Indica que el argumento se pasa por valor. Indica que el argumento se pasa por referencia.

nombredevariable Nombre de la variable que representa el argumento; sigue la convencin de nomenclatura estndar de variables. Si no se especifica explcitamente mediante Public o Private, los procedimientos Sub son pblicos de forma predeterminada, esto es, son visibles a todos los dems procedimientos en la secuencia de comandos. El valor de las variables en un procedimiento Sub no se preserva entre llamadas al procedimiento. Todo el cdigo ejecutable debe estar contenido en procedimientos. No se puede definir un procedimiento Sub dentro de otro procedimiento Sub o Function. La instruccin Exit Sub produce la salida inmediata del procedimiento Sub. La ejecucin del programa contina con la instruccin siguiente a la que llam al procedimiento Sub. Puede aparecer cualquier nmero de instrucciones Exit Sub en cualquier parte de un procedimiento Sub. Como un procedimiento Function, un procedimiento Sub es un procedimiento independiente que puede tomar argumentos, ejecutar una serie de instrucciones y cambiar el valor de sus argumentos. Sin embargo, a diferencia de un procedimiento Function, que devuelve un valor, un procedimiento Sub no puede utilizarse en una expresin. Puede llamar un procedimiento Sub mediante el nombre del procedimiento seguido por la lista de argumentos. Vea la instruccin Call para obtener informacin especfica acerca de como llamar procedimientos Sub.

Procedimientos Function
Un procedimiento Function es una serie de instrucciones VBScript entre instrucciones Function y End Function. Un procedimiento Function es similar a un procedimiento Sub, pero tambin puede devolver un valor. Un procedimiento Function puede tener argumentos (constantes, variables o expresiones que se transfieren por una llamada a un procedimiento). Si un procedimiento Function no tiene argumentos, su instruccin Function debe incluir un par de parntesis vacos. Un procedimiento Function devuelve un valor asignando un valor a su nombre en

42

Manual del Alumno


una o ms instrucciones del procedimiento. El tipo de datos devuelto por un procedimiento Function siempre es un tipo Variant. En el siguiente ejemplo, la funcin Celsius calcula los grados Celsius a partir de grados Fahrenheit. Cuando se llama a la funcin desde el procedimiento Sub ConvertTemp, se transfiere a la funcin una variable que contiene el valor del argumento. El resultado del clculo se devuelve al procedimiento que realiz la llamada y se muestra en un cuadro de mensajes.
Sub ConvertirTemp() temp = InputBox("Escriba la temperatura en grados Farenheit.", 1) MsgBox "La temperatura es de " & Celsius(temp) & " grados Celsius." End Sub Function Celsius(fGrados) Celsius = (fGrados - 32) * 5 / 9 End Function

Instruccin Function
Declara el nombre, argumentos y cdigo que forma el cuerpo de un procedimiento Function.

Sintaxis : [Public | Private] Function nombre [(listadeargumentos)] [instrucciones] [nombre = expresin] [Exit Function] [instrucciones] [nombre = expresin] End Function
La sintaxis de la instruccin Function tiene las siguientes partes: Parte Public Private nombre Descripcin Indica que el procedimiento Function es accesible para todos los dems procedimientos de todas las secuencias de comandos. Indica que el procedimiento Function es accesible slo para los dems procedimientos de la secuencia de comandos donde est declarado. Nombre de Function que cumple con las convenciones estndar de asignacin de nombres de variables.

listadeargumentos Lista de variables que representa los argumentos que se pasan al procedimiento Function cuando se llama. Mltiples variables se separan con comas. instrucciones expresin Cualquier grupo de instrucciones que se va a ejecutar dentro del cuerpo del procedimiento Function. Valor devuelto por Function.

El argumento listadeargumentos tiene la siguiente sintaxis y partes: [ByVal | ByRef] nombredevariable[( )]

43

Manual del Alumno


Parte ByVal ByRef Descripcin Indica que el argumento se pasa por valor. Indica que el argumento se pasa por referencia.

nombredevariable Nombre de la variable que representa el argumento. Cumple con las convenciones estndar de asignacin de nombres de variables.

Si no se especifica explcitamente mediane Public o Private, los procedimientos Function son pblicos de manera predeterminada, es decir, son visibles a todos los dems procedimientos de su secuencia de comandos. El valor de las variables locales de un procedimiento Function no se mantiene entre llamadas al procedimiento. Todo el cdigo ejecutable debe estar contenido en procedimientos. No se puede definir un procedimiento Function dentro de otro procedimiento Function o Sub. La instruccin Exit Function produce una salida inmediata desde un procedimiento Function. La exjecucin del programa contina con la instruccin siguiente a la instruccin que llam al procedimiento Function. Puede aparecer cualquier nmero de instrucciones Exit Function en cualquier parte de un procedimiento Function. Al igual que los procedimientos Sub, un procedimiento Function es un procedimiento separado que puede recibir argumentos, realizar una seria de instrucciones y cambiar los valores de sus argumentos. Sin embargo, a diferencia de un procedimiento Sub, puede usar un procedimiento Function en la parte derecha de una expresin de la misma forma que usa las funciones intrnsecas, como Sqr, Cos o Chr, cuando desee usar el valor devuelto por la funcin. Para llamar a un procedimiento Function se usa el nombre de la funcin, seguido de la lista de argumentos entre parntesis, en una expresin. Vea la instruccin Call para obtener informacin especfica acerca de cmo llamar procedimientos Function.

Precaucin Los procedimientos Function pueden ser recursivos; es decir, se pueden llamar a ellos mismos para realizar una tarea determinada. Sin embargo, la recursividad puede producir un desbordamiento de la pila.

Para devolver un valor desde una funcin, asigne el valor al nombre de la funcin. Puede aparecer cualquier cantidad de asignaciones de ese tipo en cualquier lugar, dentro del procedimiento. Si no se asigna ningn valor a nombre, el procedimiento devuelve un valor predeterminado: una funcin numrica devuelve 0 y una funcin de cadena devuelve una cadena de longitud cero (""). Una funcin que devuelve una referencia a un objeto devuelve Nothing si no se asigna ninguna referencia de objeto a nombre (mediante el uso de Set) dentro de Function. El siguiente ejemplo muestra cmo asignar un valor devuelto a una funcin llamada BusquedaBinaria. En este caso, se aigna False al nombre para indicar que no se encontr algn valor.

44

Manual del Alumno


Function BusquedaBinaria(. . .) . . . ' Valor no encontrado. Devuelve un valor False. If inferior > superior Then BusquedaBinaria = False Exit Function End If . . . End Function Las variables usadas en procedimientos Function pueden ser de dos categoras: las que se declaran explcitamente dentro del procedimiento y las que no. Las variables que se declaran explcitamente en un procedimiento (mediante el uso de Dim o el equivalente) son siempre locales al procedimiento. Las variables que se usan pero no se declaran explcitamente en un procedimiento tambin son locales a menos que se declaren explcitamente en un nivel superior desde fuera del procedimiento.

Obtencin de datos dentro y fuera de procedimientos


Cada fragmento de datos se transfiere a los procedimientos utilizando un argumento. Los argumentos sirven como marcadores de posicin para los datos que desea transferir al procedimiento. Cuando crea un procedimiento utilizando la instruccin Sub o la instruccin Function, se deben incluir parntesis despus del nombre del procedimiento. Los argumentos se colocan dentro de estos parntesis, separados por comas. En el siguiente ejemplo, fGrados es un marcador de posicin para el valor que se va a transferir a la funcin Celsius para la conversin: Function Celsius(fGrados) Celsius = (fGrados - 32) * 5 / 9 End Function Para obtener datos fuera de un procedimiento, debe utilizar un procedimiento Function. Recuerde que un procedimiento Function puede devolver un valor, mientras que un procedimiento Sub no puede hacerlo.

Uso de los procedimientos Sub y Function en cdigo


Un procedimiento Function en el cdigo, siempre se debe utilizar en la parte derecha de una asignacin de variable o en una expresin. Por ejemplo:
Temp = Celsius(fGrados) o MsgBox "La temperatura Celsius es de " & Celsius(fGrados) & " grados."

Para llamar a un procedimiento Sub desde otro procedimiento, escriba slo el nombre del procedimiento junto con los valores de los argumentos necesarios, separados por una coma. La instruccin Call no se necesita, pero si la utiliza, debe escrirbir los argumentos entre parntesis. El siguiente ejemplo muestra dos llamadas al procedimiento MiProc. Uno utiliza la instruccin Call en el cdigo y el otro no. Ambos procedimientos hacen exactamente lo mismo.

45

Manual del Alumno


Call MiProc(primerarg, segundoarg) MiProc primerarg, segundoarg
Observe que los parntesis se omiten en la llamada cuando no se utiliza la instruccin Call.

Semana 6 : Estructuras de control.


Uso de instrucciones condicionales Control de la ejecucin del programa
YPuede controlar el flujo de su secuencia de comandos con instrucciones condicionales e instrucciones de bucle. Utilizando instrucciones condicionales, puede escribir cdigo de VBScript que tome decisiones y repita acciones. Las siguientes instrucciones condicionales estn disponibles en VBScript: Instruccin If...Then...Else Instruccin Select Case

Toma de decisiones utilizando If ... Then ... Else


La instruccin If...Then...Else sse utiliza para evaluar si una condicin es True o False y despus especificar qu instrucciones ejecutar, dependiendo del resultado. Normalmente, la condicin es una expresin que utiliza un operador de comparacin para comparar un valor o una variable con otra. Para obtener ms informacin acerca de los operadores de comparacin, consulte Operadores de comparacin. Las instrucciones If...Then...Else se pueden anidar en tantos niveles como necesite.

Instruccin If...Then...Else
Ejecuta de manera condicional un grupo de instrucciones, segn el valor de una expresin.

46

Manual del Alumno


Sintaxis : If condicin Then instrucciones[Else instruccioneselse] O puede usar la sintaxis en forma de bloque: If condicin Then [instrucciones] [ElseIf condicin-n Then [instruccioneselseif]] . . . [Else [instruccioneselse]] End If
La sintaxis de la instruccin If...Then...Else tiene las siguientes partes: Parte condicin Descripcin Uno o ms de los siguientes dos tipos de expresiones: Una expresin numrica o expresin de cadena que se evala a True o False. Si condicin es Null, condicin se trata como False. Una expresin de la forma TypeOf nombredeobjeto Is tipodeobjeto. nombredeobjeto es cualquier referencia a un objeto y tipodeobjetoes cualquier tipo de objeto vlido. La expresin es igual a True si nombredeobjeto es el tipo de objeto especificado por tipodeobjeto; en caso contrario es igual a False. instrucciones condicin-n Una o ms instrucciones separadas por dos puntos; que se ejecuta si condicin es True. Igual que condicin.

instruccioneselseif Una o ms instrucciones que se ejecutan si la condicin-n asociada es True. instruccioneselse Una o ms instrucciones que se ejecutan si ninguna expresin condicin o condicin-n anterior es igual a True.

Ejecucin de instrucciones si una condicin es True


Si slo necesita ejecutar una instruccin cuando una condicin es True, puede utilizar la sintaxis de linea nica de la instruccin If...Then...Else. El siguiente ejemplo muestra la sintaxis de lnea nica; observe que este ejemplo omite la palabra clave Else. Sub FechaFija() Dim miFecha miFecha = #12/05/95# If miFecha < Now Then miFecha = Now End Sub Si desea ejecutar ms de una lnea de cdigo, debe utilizar la sintaxis de mltiples lneas (o de bloque). Esta sintaxis incluye la instruccin End If, como se muestra en el siguiente ejemplo:

47

Manual del Alumno


Sub AvisoUsuario(valor) If valor = 0 Then EtiquetaAviso.ForeColor = vbRojo EtiquetaAviso.Font.Bold = True EtiquetaAviso.Font.Italic = True End If End Sub

Ejecucin de ciertas instrucciones si la condicin es True y ejecucin de otras si es False


Puede utilizar una instruccin If...Then...Else para definir dos bloques de instrucciones ejecutables: un bloque que se ejecuta si la condicin es True y otro que se ejecuta si la condicin es False. Sub AvisoUsuario(valor) If valor = 0 Then EtiquetaAviso.ForeColor = EtiquetaAviso.Font.Bold = EtiquetaAviso.Font.Italic Else EtiquetaAviso.Forecolor = EtiquetaAviso.Font.Bold = EtiquetaAviso.Font.Italic End If End Sub

vbRojo True = True vbNegro False = False

Decisin entre varias alternativas


Una variacin en la instruccin If...Then...Else le permite elegir entre varias alternativas. Agregar la clusula ElseIf ampla la funcionalidad de la instruccin If...Then...Else para que pueda controlar el flujo del programa basndose en diferentes posibilidades. Por ejemplo: Sub ValorDevuelto(valor) If valor = 0 Then MsgBox valor ElseIf value = 1 Then MsgBox valor ElseIf value = 2 then Msgbox valor Else Msgbox "Valor fuera de lmites!" End If Puede agregar tantas clusulas ElseIf como necesite para proporcionar opciones alternativas. El uso intensivo de clusulas ElseIf frecuentemente llega a ser voluminosos. La mejor forma de elegir entre varias alternativas es la instruccin Select Case.

Toma de decisiones utilizando Select Case


La estructura Select Case proporciona una alternativa a la ejecucin de If...Then...ElseIf selectivamente en un bloque de instrucciones de entre mltiples bloques de instrucciones. Una instruccin Select Case proporciona una

48

Manual del Alumno


funcionalidad similar a la instruccin If...Then...Else, pero hace el cdgio ms eficiente y legible. Una estructura Select Case trabaja con una expresin de comprobacin sencilla que se calcula una vez, al comienzo de la estructura. Despus el resultado de la expresin se compara con los valores para cada Case. Si existe una coincidencia, se ejecuta el bloque de instrucciones asociado con ese Case:

Select Case Document.Formulario1.TipoTarjeta.Options(ndiceSeleccionado).Text Case "MasterCard" MostrarLogoMC ValidarCuentaMC Case "Visa" MostrarLogoVisa ValidarCuentaVisa Case "American Express" MostrarLogoAMEXCO ValidarCuentaAMEXCO Case Else MostrarOtraImagen VolverAPedir End Select

Observe que la estructura Select Case calcula una expresin una vez al comienzo de la estructura. Por el contrario, la estructura If...Then...ElseIf puede evaluar una expresin diferente en cada instruccin ElseIf. Slo puede reemplazar una estructura If...Then...ElseIf con una estructura Select Case si cada instruccin ElseIf calcula la misma expresin.

Instruccin Select Case


Ejecuta uno de varios grupos de instrucciones, segn el valor de una expresin.

Sintaxis Select Case expresindecomprobacin [Case listadeexpresiones-n [instrucciones-n]] . . . [Case Else listadeexpresiones-n [instruccioneselse-n]] End Select
La sintaxis de la instruccin Select Case tiene las siguientes partes: Parte Descripcin

expresindecomprobacin Cualquier expresin numrica o expresin de cadena. listadeexpresiones-n instrucciones-n Requerido si aparece Case. Lista delimitada de una o ms expresiones. Una o ms instrucciones que se ejecutan si expresindecomprobacin coincide con cualquier parte de listadeexpresiones-n. Una o ms instrucciones ejecutadas si expresindecomprobacin no coincide con ninguna de las clusulas Case.

instruccioneselse-n

49

Manual del Alumno


Si expresindecomprobacin coincide con alguna expresin Case listadeexpresiones, las instrucciones que aparecen a continuacin de la clusula Case se ejecutan hasta la siguiente clusula Case, o para la ltima clusula, hasta End Select. Luego, el control pasa a la instruccin que sigue a End Select. Si expresindecomprobacin coincide con una expresin listadeexpresiones en ms de una clusula Case, slo se ejecutan las instrucciones que siguen a la primera coincidencia. La clusula Case Else se usa para indicar que se ejecute instruccioneselse si no se encuentra ninguna coincidencia entre expresindecomprobacin y una listadeexpresiones en cualquier otra seleccin Case. Aunque no es necesario, es una buena idea tener una instruccin Case Else en su bloque Select Case para controlar los valores de expresindecomprobacin imprevistos. Si ningn Case listadeexpresiones coincide con expresindecomprobacin y no hay una instruccin Case Else, la ejecucin contina en la instruccin siguiente a End Select. Las instrucciones Select Case se pueden anidar. cada instruccin Select Case anidada debe tener una instruccin End Select correspondiente. El siguiente ejemplo muestra el uso de la instruccin Select Case:

Dim Color, MiVar Sub CambiarFondo (Color) MiVar = lcase (Color) Select Case MiVar Case "rojo" document.bgColor = "red" Case "verde" document.bgColor = "green" Case "azul" document.bgColor = "blue" Case Else MsgBox "seleccione otro color" End Select End Sub

Bucles mediante cdigo Uso de bucles para repetir cdigo


Los bucles le permiten ejecutar un grupo de instrucciones de forma repetida. Algunos bucles repiten instrucciones hasta que una condicin es False; otros repiten instrucciones hasta que la condicin es True. Tambin hay bucles que repiten instrucciones un nmero de veces especfico. En VBScript estn disponibles las siguientes instrucciones de bucles: Do...Loop: ejecuta el bucle mientras o hasta que una condicin es True While...Wend: ejecuta el bucle mientras una condicin es True For...Next: utiliza un contador para ejecutar instrucciones un nmero de veces especfico

50

Manual del Alumno


For Each...Next: Repite un grupo de instrucciones para cada elemento de una coleccin o para cada elemento de una matriz.

Uso de bucles Do
Puede utilizar las instrucciones Do...Loop para ejecutar un bloque de instrucciones un nmero de veces indefinido. Las instrucciones se repiten mientras una condicin es True o hasta que una condicin pasa a ser True.

Instruccin Do...Loop
Repite un bloque de instrucciones mientras una condicin es True o hasta que una condicin es True.

Sintaxis Do [{While | Until} condicin] [instrucciones] [Exit Do] [instrucciones] Loop O puede usar la sintaxis: Do [instrucciones] [Exit Do] [instrucciones] Loop [{While | Until} condicin]

La sintaxis de la instruccin Do...Loop tiene las siguientes partes:

Parte condicin

Descripcin Expresin numrica o expresin de cadena que es True o False. Si condicin es Null, condicin se trata como False.

instrucciones Una o ms instrucciones que se repiten mientras o hasta que condicin es True.

51

Manual del Alumno

Repeticin de instrucciones mientras una condicin es True


Utilice la palabra clave While para comprobar una condicin en una instruccin Do...Loop. Puede comprobar la condicin antes de entrar en el bucle (como se muestra en el ejemplo CompPrimerWhile a continuacin) o puede comprobarla despus de que el bucle se haya ejecutado al menos una vez (como se muestra en el ejemplo CompUltimoWhile). En el procedimiento CompPrimerWhile, si miNum se establece a 9 en lugar de 20, las instrucciones que hay dentro del bucle nunca se ejecutaran. En el procedimiento CompUltimoWhile, las instrucciones que hay dentro del bucle slo se ejecutan una vez porque la condicin ya es False.

Sub CompPrimerWhile() Dim contador, miNum contador = 0 miNum = 20 Do While miNum > 10 miNum = miNum - 1 contador = contador + 1 Loop MsgBox "El bucle realiz " & contador & " repeticiones." End Sub Sub CompUltimoWhile() Dim contador, miNum contador = 0 miNum = 9 Do miNum = miNum - 1 contador = contador + 1 Loop While miNum > 10 MsgBox "El bucle realiz " & contador & " repeticiones." End Sub

Repeticin de una instruccin hasta que una condicin pasa a ser True
Puede utilizar la palabra clave Until de dos formas para comprobar una condicin en una instruccin Do...Loop. Puede comprobar la condicin antes de entrar en el bucle (como se muestra en el ejemplo CompPrimerUntil) o puede comprobarla despus de que el bucle se haya ejecutado al menos una vez (como se muestra en el ejemplo CompUltimoUntil). Mientras la condicin es False se ejecuta el bucle. Sub CompPrimerUntil() Dim contador, miNum contador = 0 miNum = 20 Do Until miNum = 10 miNum = miNum - 1 contador = contador + 1 Loop MsgBox "El bucle realiz " & contador & " repeticiones." End Sub

52

Manual del Alumno


Sub CompUltimoUntil() Dim contador, miNum contador = 0 miNum = 1 Do miNum = miNum + 1 contador = contador + 1 Loop Until miNum = 10 MsgBox "El bucle realiz " & contador & " repeticiones." End Sub

Salida de una instruccin Do ... Loop desde dentro del bucle


Puede salir de una instruccin Do ... Loop utilizando la instruccin Exit Do. Puesto que normalmente desea salir slo en ciertas situaciones, como evitar un bucle sin fin, debe utilizar la instruccin Exit Do en el bloque de instrucciones True de una instruccin If...Then...Else. Si la condicin es False, el bucle se ejecuta normalmente. En el siguiente ejemplo, miNum se asigna a un valor que crea un bucle sin fin. La instruccin If...Then...Else comprueba esta condicin, impidiendo la repeticin infinita. Sub EjemploSalir() Dim contador, miNum contador = 0 miNum = 9 Do Until miNum = 10 miNum = miNum - 1 contador = contador + 1 If miNum < 10 Then Exit Do Loop MsgBox "El bucle realiz " & contador & " repeticiones." End Sub

Uso de While ... Wend


La instruccin While ... Wend se proporciona en VBScript para las personas que estn familiarizadas con su uso. Sin embargo, se recomienda que utilice Do ... Loop debido a la escasa flexibilidad de la instruccin While ... Wend.

Instruccin While...Wend
Ejecuta una serie de instrucciones mientras un condicin dada se evale como True.

53

Manual del Alumno


Sintaxis : While condicin [instrucciones] Wend

La sintaxis de la instruccin While...Wend tiene las siguientes partes:

Parte condicin

Descripcin expresin numrica o expresin de cadena que se evala como True o False. Si condicin es Null, condicin se trata como False.

instrucciones Una o ms instrucciones ejecutadas mientras la condicin se evale como True. Si condicin se evala como True, todas las instrucciones en instrucciones se ejecutan hasta que se encuentre la instruccin Wend. Entonces el control vuelve a la instruccin While y condicin se comprueba de nuevo. Si condicin se sigue evaluando como True, el proceso se repite. Si no se evala como True, la ejecucin continua con la instruccin que sigue a la instruccin Wend. Los bucles While...Wend se pueden anidar en cualquier nivel. Cada Wend coincide con el While ms cercano.

Uso de For ... Next


Puede utilizar las instrucciones For...Next para ejecutar un bloque de instrucciones un nmero de veces especfico. Para bucles, utilice una variable de tipo contador cuyo valor aumente o disminuya con cada repeticin del bucle. Por ejemplo, el siguiente procedimiento ejecuta 50 veces un procedimiento llamado MiProc. La instruccin For especifica la variable de tipo contador x y los valores inicial y final de la misma. La instruccin Next aumenta la variable de tipo contador de 1 en 1.

Sub HazMiProc50Veces() Dim x For x = 1 To 50 MiProc Next End Sub Utilizando la palabra clave Step puede aumentar o disminuir la variable tipo contador en el valor que especifique. En el siguiente ejemplo, la variable tipo

54

Manual del Alumno


contador aumenta de 2 en 2 cada vez que se repite el bucle. Cuando el bucle finaliza, total es la suma de 2, 4, 6, 8 y 10. Sub TotalesdePares() Dim j, total For j = 2 To 10 Step 2 total = total + j Next MsgBox "El total es " & total End Sub Para disminuir la variable tipo contador, utilice un valor Step negativo. Cuando lo haga, debe especificar un valor final que sea menor que el valor inicial. En el siguiente ejemplo, la variable tipo contador miNum disminuye de 2 en 2 cada vez que se repite el bucle. Cuando el bucle termina, total es la suma de 16, 14, 12, 10, 8, 6, 4 y 2. Sub NuevoTotal() Dim miNum, total For miNum = 16 To 2 Step -2 total = total + miNum Next MsgBox "El total es " & total End Sub Puede salir de cualquier instruccin For...Next antes de que el contador alcance su valor final utilizando la instruccin Exit For. Como normalmente desea salir slo en ciertas situaciones, como cuando se produce un error, debe utilizar la instruccin Exit For en el bloque de instrucciones True de una instruccin If...Then...Else. Si la condicin es False, el bucle se ejecuta normalmente.

Instruccin For...Next
Repite un grupo de instrucciones un nmero especificado de veces.

Sintaxis :
For contador = inicio To fin [Step paso] [instrucciones] [Exit For] [instrucciones] Next

La sintaxis de la instruccin For...Next tiene las siguientes partes:

Parte contador

Descripcin Variable numrica que se usa como contador de bucle. La variable no puede ser un elemento de una matriz o un elemento de un tipo definido por el usuario. Valor inicial de contador.

inicio

55

Manual del Alumno


fin paso Valor final de contador. Cantidad que se cambia contador cada vez que se ejecuta el bucle. Si no se especifica, el valor predeterminado de paso es uno.

instrucciones Una o ms instrucciones entre For y Next que se ejecutan el nmero de veces especificado. El argumento paso puede ser positivo o negativo. El valor del argumento paso determina el procesamiento del bucle como se indica a continuacin: Valor Positivo o 0 Negativo El bucle se ejecuta si contador <= fin contador >= fin

Una vez iniciado el bucle y una vez se comienzan a ejecutar todas las instrucciones del bucle, se suma paso a contador. En este punto, las instrucciones del bucle se vuelven a ejecutar (basado en la misma comprobacin que produjo la ejecucin inicial del bucle), o se sale del bucle y contina la ejecucin con la instruccin que sigue a la instruccin Next.

Uso de For Each...Next


Un bucle For Each...Next es parecido a un bucle For...Next. En lugar de repetir las instrucciones un nmero determinado de veces , un bucle For Each...Next repite un grupo de instrucciones para cada elemento de una coleccin de objetos para cada elemento de una matriz. Esto es especialmente til si no desea conocer cuntos elementos hay en una coleccin. En el ejemplo de cdigo HTML completo siguiente, el contenido de un objeto Dictionary se utiliza para colocar texto en varios cuadros de texto:

<HTML> <HEAD><TITLE>Formularios y elementos</TITLE></HEAD> <SCRIPT LANGUAGE="VBScript"> <!-Sub cmdCambiar_OnClick Dim d 'Crea una variable Set d = CreateObject("Scripting.Dictionary") d.Add "0", "Atenas" 'Agrega algunas claves y elementos d.Add "1", "Belgrado" d.Add "2", "El Cairo" For Each I in d Document.frmForm.Elements(I).Value = D.Item(I) Next End Sub --> </SCRIPT> <BODY> <CENTER>

56

Manual del Alumno


<FORM NAME="frmForm" <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type = "Button" NAME="cmdCambiar" VALUE="Haga clic aqu"><p> </FORM> </CENTER> </BODY> </HTML>

Instruccin For Each...Next


Repite un grupo de instrucciones para cada elemento de una matriz o coleccin.

Sintaxis : For Each elemento In grupo [instrucciones] [Exit For] [instrucciones] Next [elemento]

La sintaxis de la instruccin For Each...Next tiene las siguientes partes:

Parte elemento

Descripcin Variable que se usa para iterar por los elementos de la coleccin o matriz. Para colecciones, elemento slo puede ser una variable Variant, una variable Object genrica o cualquier variable de objeto de automatizacin especfica. Para matrices, elemento slo puede ser una variable Variant. Nombre de una matriz o coleccin de objetos.

grupo

instrucciones Una o ms instrucciones que se ejecutan en cada elemento de grupo. Se entra en el bloque For Each si al menos hay un elemento en grupo. Una vez que se ha entrado en el bucle, se ejecutan todas las instrucciones del bucle para el primer elemento de grupo. Mientras haya ms elementos en grupo, las instrucciones del bucle se siguen ejecutando para cada elemento. Cuando no hay ms elementos en grupo, se sale del bucle y contina la ejecucin con la instruccin que sigue a la instruccin Next. Exit For slo se puede usar dentro de una estructura de control For Each...Next o For...Next para proporcionar una forma alternativa de salir. Se puede colocar cualquier cantidad de instrucciones Exit For en cualquier parte del bucle. Exit For se suele usar con la evaluacin de algunas condiciones (por ejemplo, If...Then), y transfiere el control a la instruccin siguiente a Next. Puede anidar bucles For Each...Next colocando un bucle For Each...Next dentro de otro. Sin embargo, cada elemento del bucle debe ser nico.

57

Manual del Alumno


Nota Si omite elemento en una instruccin Next, la ejecucin contina como si lo hubiera incluido. Si se encuentra una instruccin Next antes de su instruccin For correspondiente, se produce un error.

El siguiente ejemplo muestra el uso de la instruccin For Each...Next:

Function MostrarListaDeCarpetas(especificaciondecarpeta) Dim fso, f, f1, fc, s Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(especificaciondecarpeta) Set fc = f.Files For Each f1 in fc s = s & f1.name s = s & "<BR>" Next MostrarListaDeCarpetas = s End Function

58

Manual del Alumno

Semana 7 : Cadenas y nmeros.


Operador de Concatenacin &
Se utiliza para forzar la concatenacin de las cadenas de dos expresiones.

Sintaxis : resultado = expresin1 & expresin2

La sintaxis del operador & consta de las siguientes partes:

Parte resultado expresin1 expresin2

Descripcin Cualquier variable. Cualquier expresin. Cualquier expresin.

Si una expresin no es una cadena de caracteres, se convierte en un tipo String. Si ambas expresiones son Null, el resultado tambin es Null. Sin embargo, si slo una expresin es Null, esa expresin se considera como una cadena de longitud cero al concatenarse con la otra expresin. Cualquier expresin Empty se considera tambin una cadena de longitud cero. Null Un valor que indica que una variable no contiene datos vlidos. Null es el resultado de: Una asignacin explcita de Null a una variable. Cualquier operacin entre expresiones que contienen Null.

Empty Un valor que indica que una variable no tiene asignado ningn valor inicial. Las variables Empty son iguales a 0 en un contexto numrico o de longitud cero ("") en un contexto de cadena.

Operador +
Se utiliza para sumar dos nmeros.

Sintaxis : resultado = expresin1+expresin2

59

Manual del Alumno


La sintaxis del operador + consta de estas partes:

Parte resultado expresin1 expresin2

Descripcin Cualquier variable numrica. Cualquier expresin. Cualquier expresin.

Cuando utilice el operador + para concatenar dos cadenas de tipo carcter, debera utilizar el operador & para que la concatenacin elimine la ambigedad y proporcione cdigo de documentacin propia. Cuando utilice el operador +, no ser capaz de determinar si se producir una suma o una concatenacin de cadenas. El subtipo base de las expresiones determina el comportamiento del operador + del siguiente modo: Si Ambas expresiones son numricas Ambas expresiones son del tipo String Una expresin es de un tipo de datos numrico y la otra de tipo String Entonces Suma. Concatenacin. Suma.

Si una de las expresiones o ambas son expresiones de tipo Null, resultado es Null. Si ambas expresiones son Empty, resultado es Integer. Sin embargo, slo una de las expresiones es Empty, se devuelve la otra sin modificaciones como resultado.

Operadores de comparacin
Utilizado para comparar expresiones.

Sintaxis : resultado = expresin1 operadorcomparacin expression2 resultado = objeto1 Is objeto2

Los operadores de comparacin constan de las siguientes partes:

60

Manual del Alumno


Parte resultado expresin operadorcomparacin objeto Descripcin Cualquier variable numrica. Cualquier expresin. Cualquier operador de comparacin. Cualquier nombre de objeto.

El operador Is tiene una funcionalidad de comparacin especfica que se diferencia de los operadores en la siguiente tabla. sta contiene una lista de operadores de comparacin y las condiciones que determinan si resultado es True, False o Null: Operador Descripcin < <= > >= = <> Menor que Menor o igual que Mayor que Mayor o igual que Igual a Distinto de True si expresin1 < expresin2 expresin1 <= expresin2 expresin1 > expresin2 expresin1 >= expresin2 expresin1 = expresin2 expresin1 <> expresin2 False si expresin1 >= expresin2 expresin1 > expresin2 expresin1 <= expresin2 expresin1 < expresin2 expresin1 <> expresin2 expresin1 = expresin2 Null si expresin1 o expresin2 = Null expresin1 o expresin2 = Null expresin1 o expresin2 = Null expresin1 o expresin2 = Null expresin1 o expresin2 = Null expresin1 o expresin2 = Null

Cuando compara dos expresiones, puede no ser capaz de determinar fcilmente si las expresiones se estn comparando como nmeros o como cadenas. La siguiente tabla muestra cmo se comparan las expresiones o qu resulta de la comparacin, dependiendo del subtipo base:

Si Las dos expresiones son numricas Las dos expresiones son cadenas

entonces Realiza una comparacin numrica. Realiza una comparacin de cadena.

Una expresin es numrica y la La expresin numrica es menor que la expresin de otra es una cadena cadena. Una expresin es Empty y la otra es numrica Ejecuta una comparacin numrica, utilizando 0 para la expresin Empty.

61

Manual del Alumno


Una expresin es Empty y la otra es una cadena Las dos expresiones son Empty Ejecuta una comparacin de cadena, utilizando una cadena de longitud cero para la expresin Empty. Las expresiones son iguales.

Funcin InStr
Devuelve la posicin de la primera coincidencia de una cadena dentro de otra.

Sintaxis : InStr([inicio, ]cadena1, cadena2[, comparacin])


La sintaxis de la funcin InStr tiene los siguientes argumentos: Parte inicio Descripcin Opcional. Expresin numricaque establece la posicin inicial para cada bsqueda. Si se omite, la bsqueda comienza en la posicin del primer carcter. Si inicio contiene Null, se produce un erro. El argumento inicio se requiere si se especifica comparacin. Requerido. Expresin de cadena en la que se busca. Requerido. Expresin de cadena buscada.

cadena1 cadena2

comparacin Opcional. Valor numrico que indica el tipo de comparacin que se va a usar al evaluar subcadenas. Consulte la seccin Valores para saber cules son los valores permitidos. Si se omite, se realiza una comparacin binaria.

Valores
El argumento comparacin puede tener los siguientes valores: Constante vbBinaryCompare vbTextCompare Valor 0 1 Descripcin Realiza una comparacin binaria. Realiza una comparacin de texto.

Valores devueltos
La funcin InStr devuelve los siguientes valores: Si cadena1 es de longitud cero cadena1 es Null cadena2 es de longitud cero InStr devuelve 0 Null inicio

62

Manual del Alumno


cadena2 es Null cadena2 no se encuentra cadena2 se encuentra dentro de cadena1 inicio > Len(cadena2) Null 0 Posicin en la que se encuentra la coincidencia 0

Funcin IsNumeric
Devuelve un valor de tipo Boolean que indica si una expresin se puede evaluar como un nmero.

Sintaxis : IsNumeric(expresin)
El argumento expresin puede ser cualquier expresin. IsNumeric devuelve True si toda la expresin se reconoce como un nmero. De lo contrario, devuelve False. IsNumeric devuelve False si expresin es una expresin de fecha. El siguiente ejemplo usa la funcin IsNumeric para determinar si una variable se puede evaluar como un nmero:

Dim MiVar, MiComprobacion MiVar = 53 ' Asigna un valor. MiComprobacion = IsNumeric(MiVar) ' Devuelve True. MiVar = "459.95" ' Asigna un valor. MiComprobacion = IsNumeric(MiVar) ' Devuelve True. MiVar = "45 Help" ' Asigna un valor. MiComprobacion = IsNumeric(MiVar) ' Devuelve False.

Formateo de Nmeros
Funcin FormatNumber
Devuelve una expresin con formato de nmero.

Sintaxis : FormatNumber(Expresin [,NmDgitosDespusDeDecimal [,IncluirDgitoInicio [,UsarParntesisParaNmerosNegativos [,GrupoDgitos]]]])

63

Manual del Alumno


La sintaxis de la funcin FormatNumber tiene las siguientes partes:

Parte Expresin NmDgitosDespusDeDecimal

Descripcin Requerido. Expresin a la que se va a aplicar formato. Opcional. Valor numrico que indica cantos lugares se muestran a la derecha del decimal. El valor predeterminado es -1, que indica que se usa la configuracin regional del equipo. Opcional. Constante de tres estados que indica si se debe mostrar o no un cero inicial para valores fraccionarios. Consulte la seccin Valores para saber cules son los valores permitidos.

IncluirDgitoInicio

UsarParntesisParaNmerosNegativos Opcional. Constante de tres estados que indica si se deben encerrar o no los valores negativos entre parntesis. Consulte la seccin Valores para saber cules son los valores permitidos. GrupoDgitos Opcional. Constante de tres estados que indica si se deben agrupar o no los nmeros con el delimitador de grupos especificado en el Panel de control. Consulte la seccin Valores para saber cules son los valores permitidos.

Valores
Los argumentos IncluirDgitoInicio, UsarParntesisParaNmerosNegativos y GrupoDgitos tienen los siguientes valores: Constante TristateTrue TristateFalse TristateUseDefault Valor Descripcin -1 0 -2 True False Usa la configuracin regional del equipo.

Cuando se omiten uno o ms de los argumentos opcionales, los valores de los argumentos omitidos los proporciona la configuracin regional del equipo.

Nota Toda la informacin de configuracin y valores se obtiene de la ficha Nmero de Configuracin regional.

El siguiente ejemplo usa la funcin FormatNumber para dar formato a un nmero para que tenga cuatro lugares decimales:

64

Manual del Alumno


Function EjemploDeFormatNumber Dim MiAngulo, MiSecante, MiNumero MiAngulo = 1.3 ' Define un ngulo en radianes. MiSecante = 1 / Cos(MiAngulo) ' Calcula la secante. EjemploDeFormatNumber = FormatNumber(MiSecante,4) ' Da formato a MiSecante para que tenga cuatro lugares decimales. End Function

Funcin FormatCurrency
Devuelve una expresin con formato como una valor de moneda, que usa el smbolo de moneda definido en el panel de control del sistema.

Sintaxis : FormatCurrency(Expresin[,NmDgitosDespusDeDecimal [,IncluirDgitoInicio [,UsarParntesisParaNmerosNegativos [,GrupoDgitos]]]])

La sintaxis de la funcin FormatCurrency tiene las siguientes partes:

Parte Expresin NmDgitosDespusDeDecimal

Descripcin Requerido. Expresin a la que se va a aplicar el formato. Opcional. Valor numrico que indica cantos lugares se muestran a la derecha del decimal. El valor predeterminado es -1, que indica que se usa la configuracin regional del equipo. Opcional. Constante de tres estados que indica si se debe mostrar o no un cero inicial para valores fraccionarios. Consulte la seccin Valores para saber cules son los valores permitidos.

IncluirDgitoInicio

UsarParntesisParaNmerosNegativos Opcional. Constante de tres estados que indica si se deben encerrar o no los valores negativos entre parntesis. Consulte la seccin Valores para saber cules son los valores permitidos. GrupoDgitos Opcional. Constante de tres estados que indica si se deben agrupar o no los nmeros con el delimitador de grupos especificado en la configuracin regional del equipo. Consulte la seccin Valores para saber cules son los valores permitidos.

65

Manual del Alumno Valores


Los argumentos IncluirDgitoInicio, UsarParntesisParaNmerosNegativos y GrupoDgitos tienen los siguientes valores: Constante TristateTrue TristateFalse TristateUseDefault Valor Descripcin -1 0 -2 True False Usa la configuracin regional del equipo.

Cuando se omiten uno o ms argumentos opcionales, los valores de los argumentos omitidos los proporciona la configuracin regional del equipo. La posicin del signo de moneda relativa al valor de moneda se determina con la configuracin regional del sistema. Nota Toda la informacin de configuracin se obtiene de la ficha Moneda de Configuracin regional, excepto el cero inicial que se obtiene de la ficha Nmero.

El siguiente ejemplo usa la funcin FormatCurrency para dar formato de moneda a la expresin y asignarlo a MiMoneda: Dim MiMoneda MiMoneda = FormatCurrency(1000)

'MiMoneda contiene $1000.00

Funcin FormatPercent
Devuelve una expresin con formato de porcentaje (multiplicada por 100) con una carcter % inicial.

Sintaxis : FormatPercent(Expresin[,NmDgitosDespusDeDecimal [,IncluirDgitoInicio [,UsarParntesisParaNmerosNegativos [,GrupoDgitos]]]])

La sintaxis de la funcin FormatPercent tiene las siguientes partes:

Parte Expresin

Descripcin Requerido. Expresin a la que se va a aplicar formato.

66

Manual del Alumno


NmDgitosDespusDeDecimal Opcional. Valor numrico que indica cantos lugares se muestran a la derecha del decimal. El valor predeterminado es -1, que indica que se usa la configuracin regional del equipo. Opcional. Constante de tres estados que indica si se debe mostrar o no un cero inicial para valores fraccionarios. Consulte la seccin Valores para saber cules son los valores permitidos.

IncluirDgitoInicio

UsarParntesisParaNmerosNegativos Opcional. Constante de tres estados que indica si se deben encerrar o no los valores negativos entre parntesis. Consulte la seccin Valores para saber cules son los valores permitidos. GrupoDgitos Opcional. Constante de tres estados que indica si se deben agrupar o no los nmeros con el delimitador de grupos especificado en el Panel de control. Consulte la seccin Valores para saber cules son los valores permitidos.

Valores
Los argumentos IncluirDgitoInicio, UsarParntesisParaNmerosNegativos GrupoDgitos tienen los siguientes valores: Constante TristateTrue TristateFalse TristateUseDefault Valor Descripcin -1 0 -2 True False Usa la configuracin regional del equipo. y

Cuando se omiten uno o ms argumentos opcionales, los valores de los argumentos omitidos los proporciona la configuracin regional del sistema.

Nota Toda la informacin de configuracin y valores se obtiene de la ficha Nmero de Configuracin regional.

El siguiente ejemplo usa la funcin FormatPercent para dar formato a una expresin como porcentaje:

Dim MiPorcentaje MiPorcentaje = FormatPercent(2/32) 'MiPorcentaje contiene 6.25%

InputBoxes y Message Box

67

Manual del Alumno Funcin InputBox


Muestra una solicitud en un cuadro de dilogo, espera a que el usuario escriba texto o haga clic en un botn y devuelve el contenido del cuadro de texto.

Sintaxis : InputBox(solicitud[, ttulo][, predeterminado][, posx][, posy][, archivodeayuda, contexto])


La sintaxis de la funcin InputBox tiene los siguientes argumentos: Parte solicitud Descripcin Expresin de cadena mostrada como mensaje en el cuadro de dilogo. La longitud mxima de solicitud es, aproximadamente, 1024 caracteres, dependiendo del ancho de los caracteres usados. Si solicitud consta de ms de una lnea, puede separar las lneas con un carcter de retorno de carro (Chr(13)), un carcter de avance de lnea (Chr(10)) o la combinacin de retorno de carro y avance de lnea ( Chr(13) & Chr(10)) entre cada lnea. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si omite ttulo, el nombre de la aplicacin se muestra en la barra de ttulo.

ttulo

predeterminado Expresin de cadena en el cuadro de texto que aparece como respuesta predeterminada si no se proporciona ningn otro texto. Si omite predeterminado, el cuadro de texto se muestra vaco. posx Expresin numrica que especifica, en twips, la distancia horizontal desde el borde izquierdo del cuadro de dilogo hasta el borde izquierdo de la pantalla. Si se omite posx, el cuadro de dilogo se centra horizontalmente. Expresin numrica que especifica, en twips, la distancia vertical desde el borde superior del cuadro de dilogo hasta el borde superior de la pantalla. Si se omite posy, el cuadro de dilogo se centra verticalmente, aproximadamente a la altura de un tercio de la pantalla.

posy

archivodeayuda Expresin de cadena que identifica el archivo de Ayuda que se va a usar para proporcionar Ayuda contextual para el cuadro de dilogo. Si se proporciona archivodeayuda, tambin se debe proporcionar contexto. contexto Expresin numrica que identifica el nmero de contexto de Ayuda asignado por el creador de la Ayuda al tema de Ayuda adecuado. Si se proporciona contexto, tambin se debe proporcionar archivodeayuda.

Funcin MsgBox
Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn y devuelve un valor que indica en qu botn hizo clic el usuario.

Sintaxis : MsgBox(solicitud[, botones][, ttulo][, archivodeayuda, contexto])


La sintaxis de la funcin MsgBox tiene los siguientes argumentos: Parte Descripcin

68

Manual del Alumno


solicitud Expresin de cadena que se muestra como mensaje en el cuadro de dilogo. La longitud mxima de solicitud es aproximadamente igual a 1024 caracteres, segn el ancho de los caracteres usados. Si solicitud consta de ms de una lnea, puede seperar las lneas con un carcter de retorno de carro (Chr(13)), un carcter de avance de lnea (Chr(10)) o la combinacin de caracteres de retorno de carro y avance de lnea (Chr(13) y Chr(10)) entre cada lnea. Expresin numrica que es igual a la suma de los valores que especifican la cantidad y el tipo de botones que se van a mostrar, el estilo de icono que se va a usar, la identidad del botn predeterminado y el modo de cuadro de dilogo. Consulte la seccin Valores para saber cules son los valores permitidos. Si se omite, el valor predeterminado de botones es 0. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si omite ttulo, el nombre de la aplicacin aparece en la barra de ttulo.

botones

ttulo

archivodeayuda Expresin de cadena que identifica el archivo de Ayuda que se va a usar para proporcionar Ayuda contextual para el cuadro de dilogo. Si se proporciona archivodeayuda, tambin se debe proporcionar contexto. No est disponible en plataformas de 16 bits. contexto Expresin numrica que identifica el nmero de contexto de Ayuda asignado por el creador de la Ayuda al tema de Ayuda adecuado. Si se proporciona contexto, tambin se debe proporcionar archivodeayuda. No est disponible en plataformas de 16 bits.

Valores
Los valores del argumento botones son: Constante vbOKOnly vbOKCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo vbRetryCancel vbCritical vbQuestion vbExclamation vbInformation vbDefaultButton1 vbDefaultButton2 vbDefaultButton3 vbDefaultButton4 vbApplicationModal Valor Descripcin 0 1 2 3 4 5 16 32 48 64 0 256 512 768 0 Slo muestra el botn Aceptar. Muestra los botones Aceptar y Cancelar. Muestra los botones Anular, Reintentar e Ignorar. muestra los botones S, No y Cancelar. Muestra los botones S y No. Muestra los botones Reintentar y Cancelar. Muestra el icono de mensaje crtico. Muestra el icono de consulta de advertencia. Muestra el icono de mensaje de advertencia. Muestra el icono de mensaje de informacin. El primer botn es el botn predeterminado. El segundo botn es el botn predeterminado. El tercer botn es el botn predeterminado. El cuarto botn es el botn predeterminado. Aplicacin modal; el usuario debe responder al cuadro de mensaje antes de seguir trabajando en la aplicacin actual.

69

Manual del Alumno


vbSystemModal 4096 Sistema modal; todas las aplicaciones se suspenden hasta que el usuario responde al cuadro de mensaje.

El primer grupo de valores (0 a 5) describe el nmero y el tipo de botones mostrados en el cuadro de dilogo; el segundo grupo (16, 32, 48, 64) describe el estilo de iconos; el tercer grupo (0, 256, 512, 768) determina cul es el botn predeterminado y el cuarto grupo (0, 4096) determina el modo del cuadro de mensaje. Al sumar nmeros para crear un valor final para el argumento botones, use slo un nmero de cada grupo.

Valores devueltos
La funcin MsgBox devuelve los siguientes valores: Constante vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Valor Botn 1 2 3 4 5 6 7 Aceptar Cancelar Anular Reintentar Ignorar S No

Cuando se proporcionan archivodeayuda y contexto, el usuario puede presionar F1 para ver el tema de Ayuda que corresponde al contexto. Si el cuadro de dilog muestra un botn Cancelar, si presiona la tecla ESC tiene el mismo efecto que si hace clic en Cancelar. Si el cuadro de dilogo contiene un botn Ayuda, se proporcionar Ayuda contextual para el cuadro de dilogo. Sin embargo, no se devuelve ningn valor hasta que no se presiona cualquiera de los otros botones. El siguiente ejemplo usa la funcin MsgBox para mostrar un cuadro de mensaje y devolver un valor que describe qu botn se presion:

Dim MiVar MiVar = MsgBox ("Hola mundo", 65, "Ejemplo de MsgBox") ' MiVar contiene 1 o 2 segn el botn en el que se haga clic.

70

Manual del Alumno

Semana 8 : Fecha / hora y Controladores de Eventos.


Funcin Date
Devuelve la fecha actual del sistema. Date El siguiente ejemplo usa la funcin Date para devolver la fecha actual del sistema:

Sintaxis :

Dim MiFecha MiFecha = Date sistema.

' MiFecha contiene la fecha actual del

Funcin DateAdd
Devuelve una fecha a la que se agreg un intervalo de tiempo especificado.

Sintaxis : DateAdd(intervalo, nmero, fecha)


La sintaxis de la funcin DateAdd tiene las siguientes partes: Parte Descripcin

intervalo Requerido. Expresin de cadena que es el intervalo que desea agregar. Consulte la seccin Valores para saber cules son los valores permitidos. nmero Requerido. Expresin numrica que es el nmero de intervalo que desea agregar. La expresin numrica puede ser positiva, para fechas futuras, o negativas, para fechas pasadas. Requerido. Variant o literal que representa la fecha a la que se agrega intervalo.

fecha

Valores :
El argumento intervalo puede tener los siguientes valores: Valor Descripcin yyyy q m y d Ao ww Trimestre Mes Da del ao Da h n s Semana del ao Hora Minuto Segundo w Da de la semana

Puede usar la funcin DateAdd para sumar o restar un intervalo de tiempo especificado a una fecha. Por ejemplo, puede usar DateAdd para calcular una fecha 30 das a partir de hoy o una hora 45 minutos desde ahora. Para agregar das a fecha, puede usar Da del ao ("y"), Da ("d") o Da de la semana ("w").

Instituto Superior Tecnolgico Norbert Wiener

71

Manual del Alumno

La funcin DateAdd no devolver una fecha no vlida. El siguiente ejemplo suma un mes al 31 de enero:

Nuevafecha = DateAdd("m", 1, "31-Ene-95")


En este caso, DateAdd devuelve 28-Feb-95, no 31-Feb-95. Si fecha es 31-Ene-96, devuelve 29-Feb-96 porque 1996 es un ao bisiesto. Si la fecha calculada es anterior al ao 100, se produce un error. Si el nmero no es un valor de tipo Long, se redondea al nmero entero ms cercano antes de evaluarlo.

Funcin DateDiff
Devuelve el nmero de intervalos entre dos fechas.

Sintaxis : DateDiff(intervalo, fecha1, fecha2 [,primerdasemana[, primerasemanaao]])


La sintaxis de la funcin DateDiff tiene las siguientes partes: Parte intervalo Descripcin Requerido. Expresin de cadena que es el intervalo que desea usar para calcular las diferencias entre fecha1 y fecha2. Consulte la seccin Valores para saber cules son los valores permitidos. Requerido. Expresiones de fecha. Dos fechas que desea usar en el clculo. Opcional. Constante que especifica el da de la semana. Si no se especifica, se asume Domingo. Consulte la seccin Valores para saber cules son los valores permitidos.

fecha1, fecha2 primerdasemana

primerasemanaao Opcional. Constante que especifica la primera semana del ao. Si no se especifica, se asume que la primera semana es la semana del 1 de enero. Consulte la seccin Valores para saber cules son los valores permitidos.

Valores
El argumento intervalo puede tener los siguientes valores: Valor yyyy q m y d w Descripcin Ao Trimestre Mes Da del ao Da Da de la semana

Instituto Superior Tecnolgico Norbert Wiener ww h n s Semana del ao Hora Minuto Segundos

72

Manual del Alumno

El argumento primerdasemana puede tener los siguientes valores: Constante vbUseSystem vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday Valor Descripcin 0 1 2 3 4 5 6 7 Usar la configuracin de API NLS. Domingo (predeterminado) Lunes Martes Mircoles Jueves Viernes Sbado

El argumento primerasemanaao puede tener los siguientes valores: Constante vbUseSystem vbFirstJan1 vbFirstFourDays vbFirstFullWeek Valor Descripcin 0 1 2 3 Usar configuracin de API NLS. Comienza con la semana del 1 de enero(predeterminado). Comienza con la semana que tiene al menos cuatro das en el nuevo ao. Comienza con la primera semana completa del nuevo ao.

Funcin Day
Devuelve un nmero entero entre 1 y 31, ambos incluidos, que representa el da del mes.

Sintaxis : Day(fecha)
El argumento fecha es cualquier expresin que puede representar una fecha. Si fecha contiene Null, se devuelve Null. El siguiente ejemplo usa la funcin Day para obtener el da del mes a partir de una fecha especificada:

Dim MiDia MiDia = Day("19 de octubre de 1962")

'MiDia contiene 19.

Instituto Superior Tecnolgico Norbert Wiener

73

Manual del Alumno

Funcin Time
Devuelve un valor Variant del subtipo Date que indica la hora actual del sistema.

Sintaxis : Time
El siguiente ejemplo usa la funcin Time para devolver la hora actual del sistema:

Dim MiHoraCompleta MiHoraCompleta = Time sistema.

' Devuelve la hora actual del

Funcin TimeSerial
Devuelve un valor Variant del subtipo Date que contiene la hora para una hora, minuto y segundo especficos.

Sintaxis : TimeSerial(hora, minuto, segundo)


La sintaxis de la funcin TimeSerial tiene los siguientes argumentos: Parte hora minuto Descripcin Nmero entre 0 (12:00 a.m.) y 23 (11:00 p.m.), ambos inluidos, o una expresin numrica. Cualquier expresin numrica.

segundo Cualquier expresin numrica. Para especificar una hora, como 11:59:59, el intervalo de nmeros para cada argumento TimeSerial debera estar dentro del intervalo aceptado para la unidad; es decir, entre 0 y 23 para las horas y entre 0 y 59 para los minutos y segundos. Sin embargo, tambin puede especificar horas ralativas para cada argumento, mediante el uso de cualquier expresin numrica que represente algn nmero de horas, minutos o segundos antes o despus de una hora determinada. Los siguientes ejemplos usan expresiones en lugar de nmeros de hora absolutos. La funcin TimeSerial devuelve una hora para 15 minutos antes (-15) de seis horas antes del medioda (12 - 6) o 5:45:00 a.m.

TimeSerial(12 - 6, -15, 0)
Cuando cualquier argumento excede el intervalo aceptado para ese argumento, se incrementa hasta la siguiente unidad mayor segn sea adecuado. Por ejemplo, si especifica 75 minutos, se evala como una hora y 15 minutos. Sin embargo, si cualquier argumento est fuera del intervalo entre -32768 y 32767 o si la hora especificada por los tres argumentos, directamente o a travs de una expresin, hace que la fecha exceda el intervalo de fechas permitido, se produce un error.

Funcin TimeValue
Devuelve un valor Variant del subtipo Date containing the time.

Sintaxis : TimeValue(hora)
Normalmente, el argumento hora es una expresin de cadena que representa una hora desde 0:00:00 (12:00:00 a.m.) hasta 23:59:59 (11:59:59 p.m.), ambas

Instituto Superior Tecnolgico 74 Norbert Wiener Manual del Alumno incluidas. Sin embargo, hora tambin puede ser cualquier expresin que represente una hora en ese intervalo. Si hora contiene Null, se devuelve Null.

Tipos de eventos
Aqu se listan los principales eventos que se pueden asociar a una imagen, hipervnculo, cadena de texto, etc. A continuacin aparecen agrupados segn donde se originen (ratn teclado, etc). Estos eventos son los mas usados. Existen otros, pero no siempre funcionan bien con los dos navegadores, y adems son bastantes exticos, acadmicos y de uso poco prctico. No los veremos aqu.

Eventos de ratn
ONCLICK ONDBLCLICK ONMOUSEMOVE ONMOUSEOVER ONMOUSEOUT ONMOUSEUP ONDRAGSTART ONSELECT Se activa con un botn del ratn. Se activa si se hace un doble click. Se activa si se mueve el mouse. Se activa cuando el puntero se sita sobre el objeto que incluye al evento. Se activa cuando el puntero sale del objeto que incluye al evento. Se activa si se suelta un botn pulsado en el mouse (es contrario a ONCLICK). Se activa cuando se inicia un arrastre. Se activa cuando se ha realizado una seleccin con el ratn.

ONMOUSEDOWN Se activa si se pulsa el botn izquierdo del mouse.

ONSELECTSTART Se activa cuando se inicia una seleccin con el ratn.

Eventos de teclado
ONKEYDOWN Se activa si se pulsa una tecla cualquiera. ONKEYPRESS Se activa si se pulsa y suelta una tecla. ONKEYUP ONHELP Se activa cuando se suelta una tecla pulsada. Se activa si se pulsa la tecla de ayuda (normalmente F1).

Eventos de enfoque
ONFOCUS ONBLUR Se activa cuando se entra en el mbito de un elemento al que est asociado el evento. Se activa al abandonar el mbito del elemento al que est asociado. ONRESET Se activa al pulsar un botn de reset de un formulario.

Eventos de formulario
ONSUBMIT Se activa al enviar un formulario.

Eventos de carga de pgina


ONABORT ONERROR ONLOAD ONUNLOAD Se activa cuando se aborta la carga de la pgina. Se activa cuando se produce un error inesperado durante la carga de la pgina. Se activa cuando se carga la pgina. Se activa cuando el usuario descarga la pgina (es decir, carga

Instituto Superior Tecnolgico Norbert Wiener otra o pretende salir del navegador). ONAFTERUPDATE Se activa si se actualiza o recarga la pgina.

75

Manual del Alumno

Semana 9 : Modelo de Objetos del Documento.


Modelo de Objetos
En ste apndice vamos a listar los objetos de que disponemos en VBScript, as como sus distintas propiedades, mtodos y eventos. Este apndice est dedicado a los objetos en el lado del Cliente. En el lado del servidor, la lista se ampla bastante. Como hemos comentado, este manual est orientado a VBScript en el lado del Cliente. Sin embargo, he incluido una breve introduccin a la tecnologa ASP en el mismo. Bien. Empecemos asegurando posiciones. Vamos a puntualizar cuatro conceptos cuya comprensin es vital para entender el funcionamiento de la POO y la jerarqua de objetos.

OBJETO:

Es cada una de los elementos que se gestionan en una pgina web o en cualquier aplicacin informtica que tienen una identidad propia. Un objeto podra ser la ventana de navegacin, o el documento activo, o un campo de un formulario, o una tabla, etc. La lista de los objetos que podemos manejar en VBScript de Cliente se incluyen en este Apndice.

PROPIEDAD:

Es cada una de las caractersticas de un objeto. Una propiedad sera el color de fondo de una tabla, la barra de estado de la ventana de navegacin, etc. Tambin llamamos propiedad a un objeto derivado de otro. Se dice que el objeto derivado es propiedad del objeto padre.

METODO:

Es una operacin que se puede realizar dentro de un objeto. Por ejemplo. Cerrar una ventana sera un mtodo del objeto ventana. Poner el foco en un campo de formulario sera un mtodo del objeto que representa a ese campo en concreto.

EVENTO:

Un evento es la previsin de que el usuario realice una determinada accin. En realidad el usuario puede realizar la accin o no realizarla, pero se deja prevista en la programacin la posibilidad de que la realice. De esta forma, si la realiza suceder algo (lo que hayamos programado) como respuesta a esa accin. Un evento sera pasar el ratn sobre una imagen determinada, hacer clic en una parte de la pantalla, pulsar una tecla, etc. Tambin existe la posibilidad de prever

Instituto Superior Tecnolgico 76 Norbert Wiener Manual del Alumno eventos del sistema. Un evento de sistema es, por ejemplo, la carga de una pgina, o un error en un proceso. Resumiendo: un evento se dispara cuando ocurre la accin prevista por el mismo. Supongamos el siguiente cdigo. Utiliza el evento ONMOUSEOVER, asociado al hiperenlace. Cuando el usuario va a pulsar el enlace y coloca el puntero del ratn sobre el mismo, se dispara el evento, que llama a la funcin mensaje(). Esta genera un cuadro de aviso en la pantalla y obliga al usuario a pulsar el botn Aceptar. Con lo que nunca podr usar el enlace.

Evento onMouseOver
<HTML> <HEAD> <TITLE>Prueba de evento ONMOUSEOVER</TITLE> <SCRIPT LANGUAGE = "VBScript"> FUNCTION mensaje() MSGBOX ("Nunca podrs pulsarlo") END FUNCTION </SCRIPT> </HEAD> <BODY> <H1> Intenta pulsar el enlace... <BR> si puedes. </H1> <A HREF = "http://www.gratisweb.com/infomegacine" ONMOUSEOVER = "mensaje()"> Acceder a la pgina de Latinmail </A> </BODY> </HTML> Para referirse a una propiedad o un mtodo de un objeto usamos una notacin de puntos. As: OBJETO.PROPIEDAD O bien: OBJETO.METODO() Observa que el mtodo lleva unos parntesis y la propiedad no. Esto es as porque, en definitiva, los mtodos son casos particulares de funciones, asociadas a objetos. Y, como cabra esperar, algunos mtodos reciben argumentos y otros no. Bien. Veamos la lista de objetos de VBScript de Cliente. Veamos otro ejemplo, para afianzar conceptos: VBScript en el navegador <HTML> <HEAD> <TITLE>Otra prueba de POO</TITLE> </HEAD> <BODY> <A HREF = "http://www.gratisweb.com/infomegacine" ONMOUSEOVER

Instituto Superior Tecnolgico Norbert Wiener Manual = "window.status = 'El mejor site de cine';return true"> Pulsa aqu para ver infomegacine </A> </BODY> </HTML>

77

del Alumno

Aqu podemos ver varias cosas que van mas all de todo lo estudiado hasta ahora. En primer lugar vamos a aclarar lo que hace el cdigo. Muestra un hiperenlace y, cuando el usuario pasa el ratn por encima, muestra un mensaje en la barra de estado, que ya permanece ah. Bien. Analicemos el cdigo para ver como funciona. Realmente toda la gracia est en esta lnea: <A HREF = "http://www.gratisweb.com/infomegacine" ONMOUSEOVER ="window.status = 'El mejor site de cine';return true"> La primera parte es un hiperenlace normal de HTML sin mas. Lo primero que nos interesa ahora es la palabra ONMOUSEOVER, que indica al navegador que detecte la presencia del cursor del ratn sobre el texto que constituye el hiperenlace. ONMOUSEOVER es el evento que queremos detectar. A la derecha el signo igual aparece la accin que queremos desencadenar si se produce el evento especificado. Esta accin aparece entre comillas dobles. En concreto se trata de establecer un valor para la propiedad status del objeto window; es decir, el contenido de la barra de estado de la ventana de navegacin. En este caso hemos programado que aparezca en la barra de estado una cadena literal (el mejor site de cine). Fjate que la cadena de texto aparece encerrada entre comillas simples. A continuacin aparece un signo de punto y coma y la instruccin return true. Esta ltima sirve, en este caso, para que el cambio de la barra de estado se produzca de forma inmediata. De no usarla, al poner el ratn sobre el enlace veremos la direccin de la pgina especificada y, solo al quitar el ratn, veremos el mensaje que habamos programado. Evidentemente sto ltimo no es lo que perseguamos. Bien. Casi tenemos completo el estudio de esta lnea, salvo por un pequeo detalle. Palabras reservadas del lenguaje, como son window, status, return y true aparecen en minsculas en este ejemplo, cuando hemos dicho que en este temario las palabras reservadas las ponamos en maysculas. Esto es as porque en este caso las instrucciones no han sido programadas dentro de VBScript, sino directamente en HTML. Existen algunas instrucciones de los lenguajes de Script que pueden programarse de esta manera (de hecho, algunas veces DEBEN programarse de esta manera). En estos casos, el navegador no interpreta las instrucciones como de VBScript, sino como de JavaScript. Y JavaScript (ya lo veremos en el correspondiente temario) es, al contrario que VBScript, muy exigente con el tema de las maysculas y minsculas. Cada palabra debe escribirse de un modo exacto, y no de otro, o no funcionar. En la lista que incluyo en ste Apndice de objetos, propiedades, mtodos y eventos he seguido este ltimo criterio, a fin de familiarizar al lector con la sintaxis mas adecuada. La lista de los principales objetos de VBScript es: Objeto window Objeto location Objeto document Objeto navigator Objeto frame Objeto history Objeto link Objeto anchor

Instituto Superior Tecnolgico Norbert Wiener

78

Manual del Alumno

Objeto form
Como ya hemos mencionado en este temario, los objetos siguen una jerarqua. El de mas alto nivel es el objeto WINDOW, que representa a la ventana activa. Todos los dems, son objetos derivados de ste. Veamos cuales son las propiedades y mtodos que acepta cada uno, as como los eventos que les afectan.

Objeto window
Representa la ventana activa del navegador y es el mas alto de la jerarqua. Propiedades: defaultStatus document frames [] history length location name navigator self status window Mtodos: close () open () permite cerrar la ventana activa. Su sintaxis es self.close() permite abrir una nueva ventana, como sub ventana de la actual. Su sintaxis es: nueva_ventana = window.open ("URL", "Target", "Opciones") se refiere al mensaje que aparecer por defecto en la barra de estado. representa al documento HTML en ejecucin en ese momento. es una matriz que contiene los frames de la ventana. representa un registro histrico de las pginas visitadas en la actual sesin de uso de Internet. contiene el nmero total de frames de la ventana. representa a la direccin (URL) actual de Internet. contiene el nombre de la ventana activa. representa al navegador que estamos utilizando. se refiere a la propia ventana. Es el mismo objeto window. es el mensaje que aparece en la barra de estado en un momento determinado. representa a la ventana activa o a otra ventana o sub-ventana de navegacin.

En la sintaxis expresada, nueva_ventana es el nombre que queremos darle a la sub-ventana. URL es la direccin de la pgina que queremos que se cargue en la sub-ventana. Target es la direccin del frame donde queremos que se abra la nueva ventana (caso de existir frames) como hacemos en HTML con los hiperenlaces. Opciones son las propiedades de la nueva ventana, de acuerdo a la siguiente tabla. propiedad Tipo de dato Explicacin toolbar booleano Ventana con barra de herramientas.

Instituto Superior Tecnolgico Norbert Wiener location Status menubar resizable width height top left Eventos: onLoad Se ejecuta cuando se carga la pgina. booleano booleano booleano booleano pxeles pxeles pxeles pxeles directories booleano Ventana con directorios. Ventana con barra de estado Ventana con barra de mens.

79

Manual del Alumno

Ventana con barra de direcciones.

scrollbars booleano

Ventana con barras de desplazamiento. Ventana de tamao redefinible por el usuario. Anchura de la ventana Altura de la ventana. Posicin Y de la ventana Posicin x de la ventana

onUnload Se ejecuta cuando se descarga (se cierra) la pgina.

Objeto document
Representa el documento activo. Propiedades: alinkColor bgColor fgColor linkColor location title vlinkColor Mtodos: Write () Escribe un texto. Representa el color de los enlaces activos. Representa el color de fondo del documento. Representa el color del texto Representa el color de los enlaces. Representa la URL del documento. Representa el ttulo del documento. Representa el color de los enlaces visitados.

lastModified Representa la fecha de la ltima modificacin.

Writeln() Escribe una lnea de texto. Eventos: Ninguno

Objeto form
Este objeto se refiere a un formulario empleado en el documento. Se accede a cada formulario mediante un ndice: document.form [ndice]

Instituto Superior Tecnolgico 80 Norbert Wiener Manual del Alumno El nmero de ndice se corresponde con el orden de creacin de formulario en el documento. Propiedades: action length Representa la URL donde est el programa encargado de procesar un formulario (al que se llama al activar el botn Submit). Es el nmero de elementos del formulario.

method Es el mtodo de envo (GET o POST). Mtodos: submit Se usa para forzar el envo. Eventos: onSubmit Se produce cuando se pulsa el botn Submit del formulario.

Objeto location
Contiene la URL de la pgina actual Propiedades: href Representa la propia URL.

pathname Representa la ruta del disco del servidor donde se aloja la pgina. Mtodos: Ninguno. Eventos: Ninguno.

Objeto navigator
Representa al navegador actual. Propiedades: appName Es el nombre del navegador.

appVersion Se refiere a la versin del navegador. Mtodos: Ninguno.

Instituto Superior Tecnolgico Norbert Wiener Eventos: Ninguno.

81

Manual del Alumno

Objeto history
Representa el historial de las pginas visitadas en la sesin actual de uso de Internet Propiedades: length Representa la cantidad total de pginas visitadas. Mtodos: back () go (n) Eventos: Ninguno. navega a la pgina anterior. navega n pginas hacia delante (o hacia atrs, si n es negativo).

forward() navega a la pgina siguiente.

Semana 10 : Examen Parcial.

Instituto Superior Tecnolgico Norbert Wiener

82

Manual del Alumno

Semana 11 :
Introduccin

JavaScript.

JScript es la implementacin de Microsoft de la especificacin de lenguaje ECMA 262. Es una implementacin completa, adems de algunas mejoras que aprovechan las capacidades de Microsoft Internet Explorer. Este tutorial pretende ayudarle a comenzar a trabajar con JScript. JScript es un lenguaje de secuencias de comandos basado en objetos e interpretado. Aunque tiene menos capacidades que los lenguajes orientados a objetos de altas prestaciones como C++ y Java, JScript es ms que suficientemente eficiente para los propsitos para los que est creado. JScript no es una versin reducida de cualquier otro lenguaje (slo est relacionado, distante e indirectamente, con Java, por ejemplo), ni es una simplificacin de ningn lenguaje. Sin embargo, es un lenguaje limitado. Por ejemplo, no es posible escribir aplicaciones independientes en JScript y la capacidad de lectura y escritura de archivos es mnima. Ms an, las secuencias de comandos de JScript slo pueden ejecutarse con un intrprete, que bien puede estar en un servidor Web o en un explorador de Web. JScript es un lenguaje en el que no necesita declarar los tipos de datos. Esto significa que no es necesario declarar explcitamente los tipos de datos de las variables. Ms an, en muchos casos JScript realiza conversiones, automticamente, cuando son necesarias. Por ejemplo, si intenta agregar un nmero a un elemento que contiene texto (una cadena), el nmero se convierte en texto.

Escritura de Cdigo en Java Script


Al igual que muchos otros lenguajes de programacin, Microsoft JScript se escribe en forma de texto y se organiza en instrucciones, bloques formados por conjuntos de instrucciones relacionadas y comentarios. En una instruccin puede utilizar variables, datos inmediatos como cadenas y nmeros, y expresiones.

Instrucciones
Una instruccin de cdigo JScript est formada por uno o ms elementos y smbolos en una misma lnea. Cada nueva lnea inicia una nueva instruccin, pero es una buena idea terminar las instrucciones de forma explcita. Puede hacerlo si agrega un punto y coma (;), que es el carcter de terminacin de JScript.

unPajaro = "Colibr"; var hoy = new Date();


Un grupo de instrucciones JScript encerrado entre llaves ({}) se denomina bloque. Los bloques de instrucciones se utilizan, por ejemplo, en funciones y expresiones condicionales. En el siguiente ejemplo la primera instruccin inicia la definicin de una funcin, que est formada por un bloque de cinco instrucciones. Las tres ltimas instrucciones, que no estn incluidas en las llaves, no son un bloque y no forman parte de la funcin.

Instituto Superior Tecnolgico Norbert Wiener

83

Manual del Alumno

function convert(pulgadas) { pies= pulgadas / 12; // Estas cinco instrucciones estn en un bloque. millas = pies / 5280; millasNauticas = pies / 6080; cm = pulgadas * 2.54; metros = pulgadas / 39.37; } km = metros / 1000; // Estas tres instrucciones no estn en un bloque. kradio = km; mradio= millas;

Comentarios
Un comentario de una sola lnea en JScript comienza con un par de barras inclinadas (//). Un comentario multilnea comienza con una barra inclinada seguida por un asterisco (/*) y termina con los mismos elementos en orden inverso (*/).
unaBuenaIdea = "Incluya muchos comentarios en su cdigo."; // Este es un comentario de una sola lnea. /* Este es un comentario multilnea que explica la instruccin de cdigo anterior. La instruccin asigna un valor a la variable unaBuenaIdea. El valor que est encerrado entre comillas, se conoce como un literal. Un literal contiene informacin de forma directa y explcita, no hace referencia a la informacin de forma indirecta. (Las comillas no forman parte del literal.) */ // Este es otro comentario multilnea, escrito como una serie de comentarios de una sola lnea. // Despus de ejecutar la instruccin, puede hacer referencia al contenido de la variable. // unaBuenaIdea utilizando su nombre, como en la siguiente instruccin, en la que se agrega un literal de cadena a // la variable unaBuenaIdea mediante concatenacin para crear una nueva variable. var ideaAmpliada = unaBuenaIdea + " Nunca puede saber cundo tendr que averiguar lo que hace.";

Asignaciones e igualdad
El signo igual (=) se utiliza en JScript para indicar una accin en la que se asigna un valor. Es decir, una instruccin de cdigo JScript podra decir

unEntero

= 3;

Significa "Asigna el valor 3 a la variable unEntero" o "unEntero recibe el valor 3". Cuando desee comparar dos valores para averiguar si son iguales, deber utilizar un par de signos de igual (==). Este aspecto se ve con ms detalle en Controlar el flujo del programa.

Expresiones
Una expresin JScript es algo que una persona puede leer como una expresin de tipo Boolean o como una expresin numrica. Las expresiones contienen caracteres de smbolos como "+" en lugar de palabras como "sumado a". Una expresin est formada por cualquier combinacin vlida de valores, variables, operadores y expresiones.
var var var var unaExpresion= "3 * (4 / 5)"; unaSegundaExpresion = "Math.PI * radio * 2"; unaTerceraExpresion = unaSegundaExpresion + "%" + unaExpresion; unaCuartaExpresion = "(" + unaSegundaExpresion + ") % (" + unaExpresion

Instituto Superior Tecnolgico Norbert Wiener

84

Manual del Alumno

Caracteristicas
Es simple, no hace falta tener conocimientos de programacin para poder hacer un programa en JavaScript. Maneja objetos dentro de nuestra pgina Web y sobre ese objeto podemos definir diferentes eventos. Dichos objetos facilitan la programacion de paginas interactivas, a la vez que se evita la posibilidad de ejecutar comandos que puedan ser peligrosos para la maquina del usuario, tales como formateo de unidades, modificar archivos etc. Es dinmico, responde a eventos en tiempo real. Eventos como presionar un botn, pasar el puntero del mouse sobre un determinado texto o el simple hecho de cargar la pgina o caducar un tiempo. Con esto podemos cambiar totalmente el aspecto de nuestra pgina al gusto del usuario, evitndonos tener en el servidor un pgina para cada gusto, hacer calculos en base a variables cuyo valor es determinado por el usuario, etc.

Diferencia con JAVA


La principal diferencia es que JAVA es un lenguaje compilado, mientras que JavaScript es interpretado. JAVA al compilar crea programas independientes, llamados APPLETS que se invocan desde una pagina Web, mientras que el codigo de JavaScript va incluido en la pagina. Esta orientado a objetos de forma limitada ya que no maneja los conceptos de clase ni herencia. En JavaScript no es necesario declarar el tipo de variable, ni debe existir las referencias a bjetos antes de ejecutarlos, por lo que se hable de una ligazon dinamica a diferencia de la ligazon estatica del JAVA.

Principales aplicaciones
Si bien hoy en da, JavaScript, es un lenguaje muy usado, sus principales aplicaciones son: Responder a eventos locales dentro de la pgina, como apretar un botn, La realizacin de clculos en tiempo real La validacin de formularios dentro de una pgina. La personalizacin de la pgina por el usuario, que le permitir tener una pgina web a su medida. La inclusin de datos del propio sistema, como son la hora y la fecha.

Aunque segn pasa el tiempo sus aplicaciones se van incrementando.

Donde incluirlo

Instituto Superior Tecnolgico 85 Norbert Wiener Manual del Alumno Antes siquiera de que conozcamos la sintaxis o una primera orden de JavaScript, debemos saber primero cmo se incluye un script dentro de un documento HTML. El codigo JavaScript se inserta directamente en nuestra pagina HTM. Hay cuatro (4) maneras de hacerlo:

En el cuerpo del documento


Es decir entre los comandos <BODY> y </BODY> usando el comando SCRIPT
<HTML> <HEAD> <TITLE>Titulo</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE=JavaScript> <!-- escondemos el codigo> document.write("Hola que tal"); // hasta aqui escondo --> <SCRIPT> </BODY> </HTML>

Este codigo se ejecuta inmediatamente al cargar la pagina y lo que produce es un texto sobre la pagina, para ello use el metodo write del objeto document, que representa al documento actual. Nota que use un comentario <!-- --> para ocultar el codigo a los navegadores que no soportan JavaScript.

En archivo aparte
En este caso todo el codigo del script esta situado en otro archivo y se hace una llamada.
<HTML> <HEAD> <TITLE>Titulo</TITLE> </HEAD> <BODY> <SCRIPT SRC=codigo.js> <SCRIPT> </BODY> </HTML>

Nota que aqui no fue neceario esconder ningun codigo y que los navegadores que no soporte el comando SCRIPT simplemente lo ignoraran.

Usando manejadores de evento


Los comandos de JavaScript son evaluados inmediatamente al cargarse la pagina. Las funciones son almacenadas, pero no ejecutadas, hasta cierto evento.

Instituto Superior Tecnolgico Norbert Wiener

86

Manual del Alumno

<HTML> <HEAD> <TITLE>Titulo</TITLE> <BODY> <A HREF="" onMouseOver="window.status='Figura';return true"> <IMG SRC=fig.gif></A> </BODY> </HTML>

Nota que aqui es un evento el que dispara.

Haciendo una llamada a funcin


Dentro de la cabecera, despues del titulo. Es decir, entre los comandos </TITLE> y </HEAD> y luego la llamada a la funcion en el cuerpo.
<HTML> <HEAD> <TITLE>Titulo</TITLE> <SCRIPT LANGUAGE=JavaScript> <!-- escondemos el codigo> funcion llamada(x){ alert("Le dije que NO!"+x); } // hasta aqui escondo --> <SCRIPT> </HEAD> <BODY> No haga Clic <A HREF="JavaScript:llamada('Curioso!')">AQUI</A> </BODY> </HTML>

Observa que aqu se defini la funcin en la cabecera, pero recin se ejecuta al hacer clic en el enlace, que es el evento que llama a la funcin a la cual se le para un parmetro. NOTA: Excepto en texto encomillado , JavaScript es sensible a maysculas y minsculas, por lo que tendrs que tener el cuidado al usar por ejemplo document.write de escribirlo as, en minsculas o no se interpretar. Cualquier error simplemente es ignorado. Se puede usar la comilla simple para los valores de atributos.

Instituto Superior Tecnolgico Norbert Wiener

87

Manual del Alumno

Semana 12 :
Variables de Java Script

Scripting Basics.

Las variables se utilizan el Microsoft JScript para almacenar valores en sus secuencias de comandos. Son un mtodo para recuperar y manipular valores mediante nombres de cadenas. Cuando se utilizan correctamente pueden ayudar a comprender el funcionamiento de una secuencia de comandos.

Declarar variables
Aunque no es necesario, se considera una buena prctica declarar las variables antes de utilizarlas. Se hace utilizando la instruccin var. La nica ocasin en la que se debe utilizar la instruccin var es al declarar variables locales a una funcin. En las restantes ocasiones, utilizar la instruccin var para declarar las variables antes de utilizarlas es una prctica recomendada. Los siguientes ejemplos de cdigo son sobre la declaracin de variables:

var mim = "Un hombre, un plan, un canal, !Panam!"; // El valor almacenado en mim es del tipo cadena. // La frase entre comillas, el valor asignado a mim, es un literal de cadena. var ror = 3; // El valor almacenado en ror es de tipo numrico. var nen = true; // El valor almacenado en nen es de tipo Boolean. var fif = 2.718281828 // El valor almacenado en fif es de tipo numrico.

Nombrar variables
JScript es un lenguaje que distingue entre maysculas y minsculas, por tanto, es diferente llamar a una variable miContador que llamarla MIContador. Adems, los nombres de las variables, que pueden tener cualquier longitud, deben seguir ciertas reglas: El primer carcter debe ser una letra (mayscula o minscula) o un carcter de subrayado (_), o un signo de dlar ($). Los siguientes caracteres pueden ser letras, nmeros, caracteres de subrayado o signos de dlar. El nombre de una variable no puede ser una palabra reservada.

Algunos ejemplos de nombres de variables vlidos: _numeropaginas Parte9 Numero_elementos

Algunos nombres de variables no vlidos: 99Globos // Comienza con un nmero. Smith&Wesson // El signo & no es un carcter vlido para los nombres de las variables.

En los casos en los que quiera declarar una variable e iniciarla sin proporcionar ningn valor concreto, deber asignarle un valor especial, null.
var zaz = null; var notanto = 3 * zaz; // En este punto, notanto se convierte en 0.

Instituto Superior Tecnolgico Norbert Wiener

88

Manual del Alumno

Si declara una variable sin asignarla un valor, la variable existir, pero ser no definida.
var godot; var esperarA= 1 * godot; definida. // Asigna el valor NaN a esperarA, ya que godot no est

Una variable se puede definir de forma implcita (sin utilizar var) tan slo con asignarle un valor. Sin embargo, no se puede utilizar una variable que an no haya sido declarada de ningn modo. Si lo hace obtendr un error en tiempo de ejecucin.
lel = ""; // La variable se declara de forma implcita. var unLio = vyv + zez; // Genera un error, ya que vyv y zez no existen.

Conversin
Dado que JScript es un lenguaje en el que no es necesario declarar los tipos de datos, las variables en JScript tcnicamente no tienen un tipo fijo. En cambio, tienen un tipo equivalente al tipo del valor que contienen. Bajo determinadas circunstancias, es posible forzar la conversin automtica de una variable de un tipo de dato en un tipo diferente. Se pueden incluir nmeros en las cadenas, pero las cadenas no se pueden incluir directamente en los nmeros, por lo que se proporcionan las funciones de conversin explcitas, parseInt() y parseFloat().
var elDesde = 1; var elHasta = 10; var queHacer= "Contar desde "; queHacer+= elDesde + " hasta " + elHasta + "."; Despus de ejecutar este cdigo la variable queHacer contiene "Contar desde 1 hasta 10." El dato numrico ha sido convertido en una cadena. var ahoraQue= 0; ahoraQue+= 1 + "10"; // En este caso, como "10" es una cadena, // el operador "+=" la concatena..

Despus de ejecutar el cdigo, la variable ahoraQue contiene "0110". Para obtener este resultado se han seguido los siguientes pasos:

1. Comprobar los tipos de 1 y "10". "10" es una cadena, 1 es un nmero, por tanto, el nmero se convertir en una cadena. 2. Dado que los valores de ambos lados del operador + son cadenas, se realiza una concatenacin de ellas. El resultado es "110" 3. Comprueba los tipos de ambos lados del operador +=. ahoraQue contiene un nmero y "110" es una cadena, as que se convierte el nmero en una cadena. 4. Como ahora hay cadenas a ambos lados del operador +=, se realiza una concatenacin de cadenas. El resultado es "0110". 5. Este resultado se almacena en ahoraQue.

var entonces = 0; entonces+= 1 + parseInt("10");

// En este caso, "+=" realiza una suma.

Despus de ejecutar este cdigo, la variable entonces contiene el entero 11.

Instituto Superior Tecnolgico Norbert Wiener

89

Manual del Alumno

Semana 13 :
Tipos de Datos

Tipos de datos y operadores.

Qu son los tipos de datos de JScript?


Microsoft JScript tiene seis tipos de datos. Los tipos principales son: numricos, cadenas, objetos y Boolean. Los otros dos son null y no definido .

Tipo de dato Cadena


Las cadenas estn delimitadas por comillas simples o dobles. (Utilice comillas simples para delimitar cadenas que utilicen comillas dobles.) Una cadena tambin es un objeto en JScript, pero es un caso especial, con propiedades especiales. A continuacin hay ejemplos de cadenas: "La vaca salt sobre la luna." '"Es imposible!" grit el hombre.' "42" Una cadena puede contener cero o ms caracteres unicode. Cuando no contiene ninguno, se denomina cadena de longitud cero ("").

Tipo de dato numrico


JScript permite utilizar nmeros enteros y en coma flotante. Los enteros pueden ser positivos, 0 o negativos; un nmero en coma flotante puede contener un punto decimal, , una "e" (mayscula o minscula), que se utiliza para representar "diez a la potencia de" en notacin cientfica, o ambos. Estos nmeros siguen el estndar IEEE 754 para la representacin numrica. Por ltimo, algunos valores numricos son especiales: NaN, o no un nmero Infinito positivo Infinito negativo Positivo 0 Negativo 0

Los enteros se pueden representar en base 10 (decimal), base 8 (octal), y base 16 (hexadecimal). Los enteros octales se especifican anteponiendo un "0" y pueden contener dgitos del 0 al 7. Si un nmero est precedido por un "0" pero contiene los dgitos "8" o "9", es un nmero decimal. Si un nmero que de otro modo sera un octal contiene la letra "e" (o "E") se genera un error. Los enteros hexadecimales ("hex") se especifican anteponiendo "0x" (la "X" puede ser mayscula o minscula) y pueden contener los dgitos del 0 al 9 y las letras de la A a la F (maysculas o minsculas). La letra "e" es un dgito permisible en la notacin hexadecimal y no indica la existencia de un nmero exponencial. Las letras de la A a la F se utilizan para representar, como dgitos simples, los nmeros que van del 10 al 15 en base 10. Es decir, 0xF equivale a 15 y 0x10 equivale a 16.

Instituto Superior Tecnolgico 90 Norbert Wiener Manual del Alumno Los nmeros octales y hexadecimales pueden ser negativos, pero no fracciones. Un nmero que comience con un nico "0" y contenga un punto decimal es un nmero decimal en coma flotante, si un nmero que comienza con "0x" o "00" contiene un punto decimal, cualquier cosa que aparezca a la derecha de dicho punto ser ignorado. Algunos ejemplos de nmeros:

.0001, 0.0001, 1e-4, 1.0e-4 // Cuatro nmeros en coma flotante, todos ellos equivalentes. 3.45e2 // Un nmero en coma flotante, equivalente a 345. 42 // Un nmero entero. 0377 // Un entero octal, equivalente a 255. 00.0001 // Como los nmeros octales no pueden tener decimales, ste equivale a 0. 0378 // Un entero, equivalente a 378. 0Xff // Un entero hexadecimal, equivalente a 255. 0x37CF // Un entero hexadecimal, equivalente a 14287. 0x3e7 // Un entero hexadecimal, equivalente a 999. 0x3.45e2 // Como los nmeros hexadecimales no pueden tener partes decimales, ste equivale a 3.

Tipo Boolean
Los posibles valores de tipo Boolean sontrue y false. Son valores especiales, y no se pueden utilizar como 1 y 0. Nota En una comparacin, cualquier expresin que se evale como 0 se tomar como false, y cualquier expresin que se evale como un nmero distinto de cero se tomar como true. As, la siguiente expresin se evala como true: (false == 0)

Tipo de dato no definido


Un valor no definido es simplemente un valor asignado a una variable despus de crearla, pero antes de que se le haya asignado un valor.

Tipo de dato Null


Un valor null es uno que no tiene valor y no significa nada.

Instituto Superior Tecnolgico Norbert Wiener

91

Manual del Alumno


\b \f feed) \n \r (Carrage \t \" indica un retroceso (backspace) indica un avance de pagina (Form Indica nuva linea (New Line) Indica un retorno de carro return) Indica un tabulador (Tab) se puede incluir comillas. Ej: "Jos \"Chemo\" del Solar"

Tambien pueden usar los siguientes caracteres

Operadores de Java Script


JScript tiene un amplio conjunto de operadores, incluidos aritmticos, lgicos, de bits y de asignacin. Tambin existen algunos operadores variados.
Clculo Descripcin Negacin unaria Incremento Smbolo Lgicos Descripcin NOT lgico Smbolo ! De bits Descripcin NOT de bits Smbolo ~ Asignacin Descripcin Asignacin Smbolo = Varios Descripcin delete Smbolo delete

++

Menor que

<

Desplazamiento de bits hacia la izquierda Desplazamiento hacia la derecha Desplazamiento a la derecha sin signo AND de bits

<<

Asignacin compuesta

OP=

typeof

typeof

Decremento

--

Mayor que

>

>>

void

void

Multiplicacin

Menor que o igual a

<=

>>>

Divisin

Mayor que o igual a Igualdad

>=

&

Mdulo aritmtico Adicin Sustraccin

==

XOR de bits

+ -

Desigualdad AND lgico OR lgico Condicional (trinario) Coma Identidad No identidad

!= && || ?:

OR de bits

, === !==

Precedencia de operadores
En JScript los operadores se evalan en un orden particular. Este orden se conoce como la precedencia de operadores. La siguiente tabla muestra una lista de los operadores en orden de precedencia de mayor a menor. Los operadores de la misma fila se evalan de izquierda a derecha.

Instituto Superior Tecnolgico Norbert Wiener Operador . [] () ++ -- - ~ ! typeof new void delete */% +-+ << >> >>> < <= > >= == != === !== & ^ | && || ?: = OP= , Descripcin

92

Manual del Alumno

Acceso a campos, indexacin de matrices y llamadas a funciones Operadores unarios, tipos de datos devueltos, creacin de objetos, valores no definidos Multiplicacin, divisin, divisin mdulo Adicin, sustraccin, concatenacin de cadenas Desplazamiento de bits Menor que, menor que o igual a, mayor que, mayor que o igual a Igualdad, desigualdad, identidad, no identidad AND de bits XOR de bits OR de bits AND lgico OR lgico Condicional Asignacin, asignacin con operacin Evaluacin mltiple

Los parntesis se usan para modificar el orden de evaluacin. La expresin encerrada entre parntesis se evala por completo antes de usar su valor en el resto de la instruccin. Un operador con mayor precedencia se evala antes que uno con menor precedencia. Por ejemplo:

z = 78 * (96 + 3 + 45) En esta expresin hay cinco operadores: =, *, (), + y +. Segn las normas de precedencia, se evalan en el siguiente orden: (), *, +, +, =. 1. Lo primero es la evaluacin de la expresin que est encerrada entre parntesis: Hay dos operadores de adicin y tienen la misma precedencia: Se suma 96 y 3 y al total resultante se suma 45, dando como resultado un valor igual a 144. 2. Lo siguiente es la multiplicacin: Se multiplican 78 y 144, dando como resultado un valor igual a 11232. 3. Por ltimo se realiza la asignacin: Se asigna 11232 a z.

Instituto Superior Tecnolgico Norbert Wiener

93

Manual del Alumno

Arreglos y Cadenas
Indexacin de matrices
Las matrices en JScript son sparse. Es decir, si tiene una matriz con tres elementos, numerados 0, 1 y 2, puede crear un elemento 50 sin preocuparse por los elementos que van del 3 al 49. Si la matriz tiene una variable automtica de longitud (vea objetos intrnsecos para obtener una explicacin sobre el control automtico de la longitud de una matriz), la variable de longitud tendra el valor 51, en lugar de 4. Se pueden crear matrices en las que no existan espacios vacos en el nmero de elementos, pero no es necesario. De hecho, en JScript, no es necesario que sus matrices tengan subndices numricos. En JScript, los objetos y las matrices son esencialmente idnticos. La diferencia real no se encuentra en los datos, si no en el mtodo utilizado para hacer referencia a los miembros de una matriz o a las propiedades y mtodos de un objeto.

Referencias a matrices
Existen dos mtodos principales para hacer referencia a los miembros de una matriz. Normalmente se hace referencia a las matrices utilizando corchetes. Los parntesis encierran un valor numrico o una expresin que se evala como un nmero entero no negativo. El siguiente ejemplo asume que la variable numEntr est definida y que se le ha asignado un valor en alguna parte de la secuencia de comandos. laLista = libretaDirecciones[numEntr]; laPrimeraLinea = laLista [1];

Este mtodo de referencia equivale al mtodo utilizado para hacer referencia a objetos, aunque en estos ltimos debe aparecer despus del punto el nombre de una propiedad existente. Si esa propiedad no existe, el cdigo generar un error.

El segundo mtodo para hacer referencia en una matriz es crear un objeto o matriz que contenga las propiedades numeradas y generar los nmeros mediante un bucle. El siguiente ejemplo genera dos matrices, una para el nombre y otra para la direccin, a partir de la lista de libroDirecciones. Cada una de ellas contiene cuatro propiedades. Por ejemplo, una instancia de elNombre creada a partir de las propiedades que van desde [Name1] a [Name4] en laLista, podra contener "G." "Edward" "Heatherington" "IV", o "George" "" "Sand" "".

laLista = libretaDirecciones[numEntr]; for (i = 1; i < 4; i++) { elNombre [i] = laLista["Nombre" + i]; laDireccion[i] = laLista["Direccion" + i]; }

Instituto Superior Tecnolgico Norbert Wiener

94

Manual del Alumno

Aunque esta instancia en concreto, es corta y se podra haber escrito fcilmente en la notacin con punto (es decir, haciendo referencia a laLista, elNombre, y laDireccion como objeto en lugar de hacerlo como matrices), esto no siempre es posible. Es posible que algunas veces una determinada propiedad no exista hasta el momento de la ejecucin, o que no exista forma de saber con antelacin cul ser. Por ejemplo, si la matriz libretaDirecciones estuviera organizada por el apellido en lugar de estarlo por una lista numrica, el usuario probablemente podra introducir los nombres, mientras se ejecuta la secuencia de comandos, para buscar a las personas. El siguiente ejemplo asume la existencia de las definiciones de funcin correctas en alguna parte de la secuencia de comandos. laLista = libretaDirecciones[getName()]; laListaIndiv= laLista [obtenerPrimerNombre ()]; Se trata de una referencia asociativa a la matriz, es decir, la referencia se realiza mediante cadenas totalmente arbitrarias. Los objetos en JScript son, en realidad, matrices asociativas. Aunque se puede utilizar (y se utiliza con frecuencia) el estilo de referencias con "puntos", no es necesario hacerlo.

Objetos Intrnsecos
Microsoft JScript ofrece nueve objetos intrnsecos (o "incorporados"). Estos objetos son Array, Boolean, Date, Function, Global, Math, Number, Objecty String. Cada uno de los objetos intrnsecos tienen mtodos y propiedades asociados, que se describen en detalle en la referencia del lenguaje. Algunos objetos tambin se describen aqu.

Objeto Array
En JScript, los objetos se controlan como matrices y las matrices se controlan como objetos. Se puede hacer referencia a las subsecuencias de comandos de una matriz, que son totalmente equivalentes a las propiedades de un objeto, por nmero (o por nombre, si les asigna nombres). Para crear una nueva matriz, utilice el operador new y el constructor Array(), como en el siguiente ejemplo. var losMeses = new Array(12) losMeses[0] = "Ene"; losMeses[1] = "Feb"; losMeses[2] = "Mar"; losMeses[3] = "Abr"; losMeses[4] = "May"; losMeses[5] = "Jun"; losMeses[6] = "Jul"; losMeses[7] = "Ago"; losMeses[8] = "Sep"; losMeses[9] = "Oct"; losMeses[10] = "Nov"; losMeses[11] = "Dic"; } {

Al crear una matriz utilizando la palabra clave Array, JScript incluye en la matriz una propiedad length de slo escritura, que graba el nmero de entradas de una matriz. Si no especifica un nmero, la longitud se establece a 0 y la matriz no tiene entradas. Si especifica un nmero, la longitud se establece a ese nmero. Si

Instituto Superior Tecnolgico 95 Norbert Wiener Manual del Alumno especifica ms de un parmetro, los parmetros se utilizan como entradas de la matriz y el nmero de parmetros se asigna a la propiedad length, como en el siguiente ejemplo, que es equivalente al ejemplo anterior. var losMeses = new Array("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"); JScript cambia automticamente el valor de length si agrega elementos a una matriz que cre con la palabra clave Array.

Objeto String
En JScript, las cadenas son objetos. Esto significa que cada vez que declare una variable de cadena o utilice un literal de cadena, lo que est haciendo realmente es crear un nuevo objeto de cadena. El objeto String tiene algunos mtodos incorporados, que puede utilizar con sus cadenas. Uno de esos mtodos es el mtodo substring, que devuelve parte de la cadena. Este mtodo recibe dos nmeros como argumentos. unaCadena = "0123456789"; var unaPorcion = unaCadena.substring(4, 7); // Establece unaPorcion a "456". var otraPorcion = unaCadena.substring(7, 4); // Establece otraPorcion a "456". // Si se utiliza el ejemplo de creacin de Array anterior: primeraLetra = losMeses[5].substring(0,1); // Establece la variable primeraLetra a "J". Otra propiedad del objeto String es la propiedad length. Esta propiedad contiene el nmero de caracteres que hay en la cadena, que es igual a 0 en una cadena vaca. Esto es un valor numrico y se puede utilizar directamente en clculos. var Longitud = "Hola mundo".length a 10. // Establece la variable Longitud

Objeto Math
El objeto Math tiene una cantidad de propiedades y mtodos, todos ellos predefinidos. Las propiedades son nmeros especficos. Uno de estos valores es pi (aproximadamente 3,14159...). Es la propiedad Math.PI, mostrada en el siguiente ejemplo. // Se declara una variable radio y se le asigna un valor numrico. var areaCirculo = Math.PI * radio * radio; // Observe que Math y PI estn en maysculas. Uno de los mtodos incorporados del objeto Math es el mtodo de exponenciacin o pow, que eleva un nmero a una potencia especificada. El siguiente ejemplo usa pi y exponenciacin. // Esta frmula calcula el volumen de una esfera con un radio especificado. volumen = (4/3)*(Math.PI*Math.pow(radio,3));

Instituto Superior Tecnolgico Norbert Wiener

96

Manual del Alumno

Objeto Date
Utilice el objeto Date para capturar la fecha de hoy y para calcular diferencias entre fechas. Este objeto tiene varios mtodos y propiedades, todos ellos predefinidos. En general, el objeto Date proporciona el da de la semana; el mes, da y ao; y la hora en horas, minutos y segundos. Esta informacin est basada en el nmero de milisegundos transcurridos desde el 1 de enero de 1970, 00:00:00.000 GMT. GMT son las iniciales de "Greenwich Mean Time"; el trmino preferido es UTC u "Horario Universal Coordinado", que hace referencia a seales emitidas por el horario estndar mundial. Nota Para JScript, la hora comienza en la medianoche del 1 de enero de 1970; no puede solicitar a JScript que cree un objeto Date que represente una hora anterior a esa. Si necesita trabajar con horas anteriores, debe escribir su propio cdigo para hacerlo, una tarea formidable.

Para crear un nuevo objeto Date se utiliza el operador new. El siguiente ejemplo calcula, para el ao actual, el nmero de das transcurridos y el nmero de das que faltan.

/* Este ejemplo utiliza la matriz de nombres de meses previamente definida. La primera instruccin asigna la fecha de hoy, en formato "Da Mes Fecha 00:00:00 Ao" , a la variable estoEsHoy. */ var estoEsHoy = new Date(); var hoy = new Date(); // Captura la fecha de hoy. // Extrae el ao, mes y da. var esteAno = hoy.getYear() + 1900; var esteMes = losMeses[hoy.getMonth()]; var esteDia = esteMes + " " + hoy.getDate() + "," + (parseInt(hoy.getYear()) + 1900); // Determina el nmero de das transcurrido desde el inicio. hoy = Math.round(Date.parse(esteDia)/8.64e7); // Hace lo mismo con el principio del ao. var primerDia = "1 de enero de " + esteAno; primerDia = Math.floor(Date.parse(primerDia)/8.64e7); // Lo vuelve a hacer para el final del ao, en caso de que sea un ao bisiesto. var ultimoDia = "31 de diciembre de " + esteAno; ultimoDia = Math.floor(Date.parse(ultimoDia)/8.64e7); // Calcula el nmero de das del ao. var diasEnAno = (ultimoDia - primerDia) + 1; // Determina cuntos das han transcurrido y cuntos faltan. var diasTranscurridos= esteDia - primerDia; var diasFaltan = diasEnAno - diasTranscurridos; // Establece comentarios para la mayor parte del ao. var comentario1 = diasTranscurridos+ " das han transcurrido en el ao."; var comentario2 = "Eso significa que faltan " + diasFaltan+ " dias para terminar el ao " + esteAno + "."; // Cubre los casos especiales: inicio y final de ao y un solo da. if (diasTranscurridos == 0) { comentario1 = "Es uno de enero, " + esteAno + "."; } if (diasTranscurridos == 1) { comentario1 = "Slo ha transcurrido un da."; } if(diasTranscurridos == diasEnAno) { comentario1 = esteAno + " acaba de terminar."; } if (diasFaltan == 0) { comentario2 = "Los mejores deseos en el nuevo ao."; } if (diasFaltan == 1) { comentario2 = "Slo queda un da para terminar el ao " + esteAno + "."; }

Instituto Superior Tecnolgico Norbert Wiener


if (diasFaltan == diasEnAno) { comentario2 = "Feliz ao nuevo.";

97

Manual del Alumno

Objeto Number
Adems de las propiedades numricas especiales (por ejemplo PI) que estn disponibles en el objeto Math, muchas otras propiedades estn disponibles en Microsoft JScript a travs del objeto Number. Propiedad MAX_VALUE MIN_VALUE Descripcin El nmero ms grande posible, alrededor de 1,79E+308; puede ser positivo o negativo. (El valor vara ligeramente entre un sistema y otro.) El nmero ms pequeo posible, alrededor de 2.22E-308; puede ser positivo o negativo. (El valor vara ligeramente entre un sistema y otro.) Valor no numrico especial, "no es un nmero". Cualquier valor positivo mayor que Number.MAX_VALUE se convierte automticamente a este valor; representado como "Inf".

NaN POSITIVE_INFINITY

NEGATIVE_INFINITY Cualquier valor negativo mayor que -Number.MAX_VALUE se convierte automticamente a este valor; representado como "Inf". Number.NaN es una propiedad especial que se define como "no es un nmero". Por ejemplo, una divisin por cero devuelve NaN. Si intenta analizar una cadena que no se puede analizar como un nmero, tambin devuelve Number.NaN. Si compara NaN con cualquier otro nmero o consigo mismo obtiene como resultado que no son iguales. Para verificar que un resultado es igual a NaN, no compare el resultado con Number.NaN; utilice la funcin isNaN().

Instituto Superior Tecnolgico Norbert Wiener

98

Manual del Alumno

Semana 14 :

Estructuras de control.

Control del Flujo del Programa


Por qu controlar el flujo de la ejecucin?
Muy frecuentemente, es necesaria una secuencia de comandos para funciones diferentes bajo diferentes condiciones. Por ejemplo, podra escribir una secuencia de comandos que comprobara la hora cada hora y que cambiara algn parmetro durante el transcurso del da. Podra escribir una secuencia de comandos que acepta algn tipo de entrada y acta de una u otra forma segn la entrada proporcionada. O podra escribir una secuencia de comandos que repita una accin especificada. Es posible comprobar muchos tipos de condiciones. Todas las comprobaciones condicionales en Microsoft JScript son de tipo Boolean, por lo que el resultado de cualquier comprobacin es true o false. Puede comprobar valores numricos, de tipo Boolean o cadenas indistintamente. JScript proporciona estructuras de control para un amplio intervalo de posibilidades. Las estructuras de control ms sencillas son las instrucciones condicionales.

Usar instrucciones condicionales


JScript admite las instrucciones condicionales if e if...else. En las instrucciones if se comprueba una condicin y si la condicin cumple la comprobacin, se ejecuta algn cdigo de JScript que haya escrito. (En la instruccin if...else, se ejecuta un cdigo distinto si la condicin no cumple la comprobacin.) La forma ms sencilla de una instruccin if se puede escribir completamente en una sola lnea, pero se usan mucho ms las instrucciones if e if...else de mltiples lneas. Los siguientes ejemplos demuestran distintas sintaxis que puede usar con las instrucciones if e if...else. El primer ejemplo muestra el tipo de comprobacin Boolean ms sencillo. Si (y slo si) el elemento encerrado entre parntesis da como resultado true, se ejecuta la instruccin o el bloque de instrucciones que sigue a la instruccin if.

// La funcin smash() se define en cualquier otra parte del cdigo. if (newShip) smash(champagneBottle,bow); // Comprobacin de tipo Boolean para saber si newShip es true. // En este ejemplo, la comprobacin no se cumple a menos que ambas condiciones sean verdaderas. if (rind.color == "amarillo oscuro" && rind.texture == "arrugas grandes y pequeas") { laRespuesta = ("Es un meln? <br> "); } // En este ejemplo, la comprobacin se cumple si cualquiera de las condiciones es verdadera. var laReaccion = ""; if ((PesoEnLibras > 15) || (PesoEnLibras > 45))

Instituto Superior Tecnolgico Norbert Wiener { laReaccion = ("Qu lindo gatito! <br>"); } else laReaccion = ("Es un gato enorme! <br>");

99

Manual del Alumno

Operador condicional
JScript tambin admite una forma condicional implcita. Utiliza un signo de interrogacin despus de la condicin que va a comprobar (en lugar de la palabra if antes de la condicin) y especifica dos alternativas, una para usarla si la condicin se cumple y otra para usarla si no se cumple. Las alternativas estn separadas por dos puntos. var horas = ""; // Cdigo que especifica que la variable horas tiene el contenido de // laHora o laHora - 12. horas += (laHora >= 12) ? " p.m." : " a.m.";

Sugerencia Si tiene que comprobar varias condiciones juntas y sabe que alguna tiene ms posibilidades de cumplirse, o de no cumplirse, que las dems, dependiendo de si las comprobaciones estn conectadas OR (||) o con AND (&&), puede sacrificar la velocidad de ejecucin de su secuencia de comandos colocando esa condicin primero en la instruccin condicional. Por ejemplo, si tres condiciones deben ser verdaderas (usando operadores &&) y la segunda comprobacin no se cumple, no se comprueba la tercera condicin. De forma similar, si de varias condiciones, slo una debe ser verdadera (usando operadores ||), la comprobacin se detiene cuando cualquier condicin cumple la comprobacin. Esto es particularmente efectivo si las condiciones que desea comprobar implican la ejecucin de llamadas a funciones o de otro cdigo. Un ejemplo de los efectos secundarios de cortocircuito, es que en el siguiente ejemplo no se ejecutar ejecutarsegundo si ejecutarprimero() devuelve 0 o false.

if ((ejecutarprimero() == 0) || (ejecutarsegundo() == 0)) // algn cdigo

Usar repeticiones o bucles


Existen varias formas de ejecutar una instruccin o un bloque de instrucciones repetidas veces. En general, la ejecucin repetitiva se llama ejecucin en bucle. Normalmente se controla mediante la comprobacin de alguna variable cuyo valor cambia cada vez que se ejecuta el bucle. Microsoft JScript es compatible con muchos tipos de bucles: for, for...in, while, do...while y switch.

Usar bucles for


La instruccin for especifica una variable de contador, una condicin de comprobacin y una accin que actualiza el contador. Justo antes de cada ejecucin del bucle (esto se llama una iteracin del bucle), se comprueba la condicin. Despus de ejecutar el bucle, la variable de contador se actualiza antes de comenzar la siguiente iteracin.

Instituto Superior Tecnolgico 100 Norbert Wiener Manual del Alumno Si nunca se cumple la condicin del bucle, ste nunca se ejecuta. Si la condicin del bucle se cumple siempre, el bucle se convierte en un proceso infinito. Aunque es posible que lo primero sea necesario en algunos casos, lo segundo, raramente lo es. Por lo que debe tener cuidado al escribir las condiciones de sus bucles.

/* La expresin de actualizacin ("icount++" en los siguientes ejemplos) se ejecuta al final del bucle, despus de que el bloque de instrucciones que forman el cuerpo del bucle se ejecuta y antes de comprobar la condicin. */ var limite = 11; // Establece un lmite de 11 en el bucle. var suma = new Array(limite); // Crea una matriz llamada suma con 11 miembros, desde 0 hasta 10. var laSuma = 0; suma[0] = 0; for(var icount = 1; icount < limite; icount++) { // En este caso, cuenta desde 1 hasta 10. laSuma += icount; suma[icount] = laSuma; } var nuevaSuma = 0; for(var icount = 1; icount > limite; icount++) { // Esto nunca se ejecuta. nuevaSuma += icount; } var suma = 0; for(var icount = 1; icount > 0; icount++) { // Esto es un bucle infinito. suma += icount; }

Usar bucles for...in


JScript proporciona un tipo de bucle especial para examinar una a una todas las propiedades de un objeto. El contador del bucle en un bucle for...in itera por todos los ndices de la matriz. El contador es una cadena, no un nmero. for (j in pastaVerde) // pastaVerde es un objeto con varias propiedades { // Varias instrucciones de cdigo JScript. }

Usar bucles while


El bucle while es muy parecido a un bucle for. La diferencia es que un bucle while no tiene incorporada una variable de contador o una expresin de actualizacin. Si ya tiene alguna condicin que cambia y que se refleja en el valor asignado a una variable y desea usarla para controlar la ejecucin repetitiva de una instruccin o un bloque de instrucciones, utilice un bucle while.
var losMomentos = ""; var laCuenta = 42; // Inicia la variable de contador. while (laCuenta >= 1) { if (laCuenta > 1) { losMomentos = "Slo quedan " + laCuenta + " momentos."; } else { losMomentos = "Slo queda un momento.";

Instituto Superior Tecnolgico Norbert Wiener


} laCuenta--; // Actualiza la variable de contador. } losMomentos = "Termin";

101

Manual del Alumno

Nota Debido a que los bucles while no tienen variables de contador explcitas incorporadas, todava son ms vulnerables a crear bucles infinitos que otros tipos de bucles. Adems, en parte porque no es necesariamente fcil de descubrir dnde y cundo se actualiza la condicin del bucle, slo es muy fcil escribir un bucle while en el que la condicin nunca se actualice. Debe tener mucha precaucin al disear bucles while.

Usar instrucciones break y continue


Microsoft JScript proporciona una instruccin para detener la ejecucin de un bucle. La instruccin break se puede usar para detener la ejecucin si se cumple alguna condicin (que se supone una condicin especial). La instruccin continue se puede usar para pasar inmediatamente a la siguiente iteracin, saltando el resto del bloque de cdigo pero actualizando la variable de contador como sucede si el bucle es un bucle for o for...in.
var var var var for { elComentario = ""; elResto = 0; laSalida = 3; comprobar = 27; (kcuenta = 1; kcuenta <= 10; kcuenta++)

elResto = comprobar % kcuenta; if (elResto == laSalida) { break; // Sale del bucle al encontrar el primer resto igual a salida. } elComentario = comprobar + " dividido por " + kcuenta + " deja un resto igual a " + elResto; } for (kcuenta = 1; kcuenta <= 10; kcuenta++) { elResto = comprobar % kcuenta; if (elResto != laSalida) { continue; // Selecciona slo los restos iguales a la salida, ignorando todos los dems. } // Cdigo de JScript que usa los restos seleccionados. } var losMomentos = ""; var laCuenta = 42; // Se inicia el contador. while (laCuenta >= 1) { // if (laCuenta < 10) { // Advertencia // Este uso de continue crea un bucle infinito. // continue; // } if (laCuenta > 1) { losMomentos = "Slo quedan " + laCuenta + " momentos."; } else { losMomentos = "Slo queda un momento."; } laCuenta--; // Se actualiza el contador. } laCuenta = "Termin";

Instituto Superior Tecnolgico Norbert Wiener

102

Manual del Alumno

Instituto Superior Tecnolgico Norbert Wiener

103

Manual del Alumno

Semana 15 :
Objeto window

Ventanas y modelo de objetos.

Es el objeto principal. Define la ventana sobre la que estamos trabajando y tiene como descendientes los objetos referentes a la barra de tareas, el documento o la secuencia de direcciones de la ltima sesin. Ahora veremos su mtodos y propiedades ms usadas

open
[Variable=][window.]open("URL","Nombre","Propiedades");

El mtodo open sirve para crear (y abrir) una nueva ventana. Si queremos tener acceso a ella desde la ventana donde la creamos deberemos asignarle una variable, si no simplemente invocamos el mtodo: el navegador automticamente sabr que pertenece al objeto window. El parmetro URL contendr la direccin de la ventana que estamos abriendo: si est en blanco, la ventana se abrir con una pgina en blanco. El Nombre ser el que queramos que se utilize como parmetro de un TARGET y las Propiedades son una lista separada por comas de algunos de los siguientes elementos: toolbar[=yes|no] location[=yes|no] directories[=yes|no] status[=yes|no] menubar[=yes|no] scrollbars[=yes|no] resizable[=yes|no] width=pixels height=pixels

Debemos tener cuidado con las propiedades que modifiquemos, es posible que algunas combinaciones de los mismos no funcionen en todos los navegadores. El Explorer 4, por ejemplo, da error ante la combinacin toolbar=no, directories=no, menubar=no.

close
Variable.close();

Instituto Superior Tecnolgico Norbert Wiener Cierra la ventana Variable.

104

Manual del Alumno

A no ser que hayamos acabado de abrirla nosotros pedir al usuario una ventana para que decida l si quiere o no cerrarla.

alert
Variable.alert("Mensaje"); Muestra una ventana de dilogo en la ventana especificado.

Variable con el mensaje

status
Define la cadena de caracteres que saldr en la barra de estado en un momento dado.

defaultStatus
Define la cadena de caracteres que saldr por defecto en la barra de estado. Cuando no la especificamos, defaultStatus ser igual al ltimo valor que tom status.

Objeto document
Es un objeto derivado de window que identifica a un documento HTML.

write
document.write("Cadena");

Escribe en un documento HTML, en el lugar del mismo donde hayamos situado el script que contiene al m:todo, la cadena dada. El mtodo writeln hace lo mismo, pero incluyendo al final un retorno de carro.

lastModified
Contiene la fecha y hora en que se modific el documento por ltima vez y se suele usar en conjuncin con write para aadir al final del documento estas caractersticas.

bgColor
Modifica el color de fondo del documento. El color deber estar en el formato usado en HTML. Es decir, puede ser red o FF0000.

Instituto Superior Tecnolgico Norbert Wiener

105

Manual del Alumno

Objeto history
Este objeto se deriva de document y contiene todas las direcciones que se han visitado en la sesin actual. Tiene estos tres mtodos: o o o document.history.back(): Volver a la pgina anterior. document.history.forward(): Ir a la pgina siguiente. document.history.go(donde): Ir a donde se indique, siendo donde un nmero tal que go(1)=forward() y go(-1)=back().

Objeto form
Este objeto derivado de document se refiere a un formulario. Puede ser til para verificarlos antes de enviarlos.

submit
Nombre.submit() Enva el formulario llamando Nombre.

text
Contiene el texto contenido en un campo de edicin de un formulario.

Objeto date
Este es un objeto de propsito general que permite trabajar con fechas y horas

Objeto math
Este otro objeto de propsito general incluye las diversas funciones matemticas ms comunes, como abs o sin o el valor PI.

Objeto navigator
A travs de este objeto podremos averiguar varias caractersticas del navegador que usamos. Por ejemplo: o o o o navigator.appName: Nombre del navegador. navigator.appVer: Nmero principal de versin. navigator.language: Idioma del mismo. navigator.platform: Plataforma donde esta ejecutndose.

No podemos sobreescribir estos atributos, pero s leerlos.

Instituto Superior Tecnolgico Norbert Wiener

106

Manual del Alumno

Objeto screen
Con este objeto podremos averiguar la configuracin de la pantalla. Al igual que en el anterior, todos sus atributos son de slo lectura. o o o screen.height: Altura.. screen.width: Anchura. screen.pixelDepth: Nmero de bits por pixel.

Eventos
Un evento, como su mismo nombre indica, es algo que ocurre. Para que una rutina nuestra se ejecute slo cuando suceda algo extrao deberemos llamarla desde un controlador de eventos. Estos controladores se asocian a un elemento HTML y se incluyen as: <A HREF="http://home.netscape.com" onMouseOver="MiFuncion()">

Lista de Eventos
Aqu se expone una pequea gua de eventos definidos en JavaScript : Evento onLoad Descripcin Terminar de cargarse una pgina Elementos que lo admiten <BODY...> <FRAMESET...> <LAYER...> <BODY...><FRAMESET...> onUnLoad Salir de una pgina (descargarla) <LAYER...> onMouseOver Pasar el ratn por encima <A HREF..> <AREA...> <LAYER...> <A HREF..> <AREA...> <LAYER...> <FORM...> <INPUT TYPE="button, checkbox, link, radio"...> <INPUT TYPE="text"...> <TEXTAREA...> <LAYER...> <INPUT TYPE="text"...> <TEXTAREA...> <INPUT TYPE="text"...> <TEXTAREA...> <LAYER...> <INPUT TYPE="text"...> <TEXTAREA...>

onMouseOut Que el ratn deje de estar encima onSubmit onClick onBlur onChange onFocus onSelect Enviar un formulario Pulsar un elemento Perder el cursor Cambiar de contenido o perder el cursor Conseguir el cursor Seleccionar texto

Instituto Superior Tecnolgico Norbert Wiener

107

Manual del Alumno

Un ejemplo
Como ejemplo, vamos a hacer que una ventana aparezca automticamente en cuanto pasemos un cursor por encima de un elemento <A> (e impidiendo, de paso, que quien est viendo la pgina pueda hacer uso del mismo).
<HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- Se usan los comentarios para esconder el cdigo a navegadores sin JavaScript function Alarma() { alert("No me pises, que llevo chanclas"); return true; } // --> </SCRIPT> </HEAD> <BODY> <A HREF="eventos.html" onMouseOver="Alarma()"> Pasa por aqu encima </A> </BODY> </HTML>

Objeto event
Este objeto permite la identificacin de un evento con el atributo type y su localizacion con x e y, entre otras cosas. As, por ejemplo, podramos hacer:
<A HREF="http://home.netscape.com" onMouseOut='alert("Hubo un evento "+event.type+" en el enlace.")'> Pasa por aqu encima y cuando te vayas saldr la ventanita </A>

Su importancia radica en el hecho de que se puede usar para capturar toda clase de eventos por medio de la funcin captureEvents(e). El argumento de esta funcin es una propiedad del objeto event que indica el tipo de eventos que desees capturas de este modo:
captureEvents(event.CLICK | event.MOUSEOVER | event.BLUR)

que permitira la captura de todos los eventos onLoad, onMouseOver y onBlur. El nico uso que le he encontrado a estas posibilidades est en la creacin de objetos nuevos, que de este modo tendran un control de eventos propio.

Instituto Superior Tecnolgico Norbert Wiener

108

Manual del Alumno

Semana 16 :
DHTML

HTML Dinmico.

DHTML no es precisamente un lenguaje de programacin. Ms bien se trata de una nueva capacidad de la que disponen los navegadores modernos, por la cual se puede tener un mayor control sobre la pgina que antes. Cualquier pgina que responde a las actividades del usuario y realiza efectos y funcionalidades se puede englobar dentro del DHTML, pero en este caso nos referimos ms a efectos en el navegador por los cuales se pueden mostrar y ocultar elementos de la pgina, se puede modificar su posicin, dimensiones, color, etc. DHTML nos da ms control sobre la pgina, gracias a que los navegadores modernos incluyen una nueva estructura para visualizar en pginas web denominada capa. Las capas se pueden ocultar, mostrar, desplazar, etc. Para realizar las acciones sobre la pgina, como modificar la apariencia de una capa, seguimos necesitando un lenguaje de programacin del lado del cliente como Javascript o VBScript. Dentro del concepto de DHTML se engloban tambin las Hojas de Estilo en Cascada o CSS (Cascade Style Sheets), que veremos a continuacin.

Qu es CSS
CSS, es una tecnologa que nos permite crear pginas web de una manera ms exacta. Gracias a las CSS somos mucho ms dueos de los resultados finales de la pgina, pudiendo hacer muchas cosas que no se poda hacer utilizando solamente HTML, como incluir mrgenes, tipos de letra, fondos, colores... CSS son las siglas de Cascading Style Sheets, en espaol Hojas de estilo en Cascada. En este reportaje vamos a ver algunos de los efectos que se pueden crear con las CSS sin necesidad de conocer la tecnologa entera.

Para empezar
Las Hojas de Estilo en Cascada se escriben dentro del cdigo HTML de la pgina web, solo en casos avanzados se pueden escribir en un archivo a parte y enlazar la pgina con ese archivo. En un principio vamos a utilizar la manera ms directa de aplicar estilos a los elementos de la pgina, mas adelante veremos la declaracin en archivos externos. Para ello, y esto es la primera leccin de este artculo, vamos a conocer un nuevo atributo que se puede utilizar en casi todas las etiquetas HTML: style. Ejemplo:
<p style="color:green;font-weight:bold">El prrafo saldr con color verde y en negrita</p>

Dentro del atributo style se deben indicar los atributos de estilos CSS separados por punto y coma (;). Durante este artculo vamos a conocer muchos atributos de CSS, los dos primeros que hemos visto aqu son:

Instituto Superior Tecnolgico Norbert Wiener

109

Manual del Alumno

Color: indica el color del contenido la etiqueta donde estemos utilizndolo, generalmente indica el color del texto. Font-weight: indica el grosor del texto. Bold sirve para poner en negrita.

Color en los enlaces


Con HTML definimos el color de los enlaces en la etiqueta <body>, con lo atributos link, vlink y alink. Esto nos permite cambiar el color de los enlaces para todo el documento, pero Y si queremos cambiar el color de un enlace en concreto, para que tenga otro color que el definido en la etiqueta <body>? Para hacer esto utilizaremos el atributo style dentro del enlace:
<a href="mienlace.html" style="color:red">

As saldr el enlace en color rojo, independientemente de lo definido para todo el documento.

Espaciado entre lneas


Con CSS podemos definir el espacio que hay entre cada lnea del documento, utilizando el atributo line-height. Por ejemplo, podemos definir que para todo un prrafo el espacio entre cada una de sus lneas sea 25 pixels:
<p style="line-height: 25px;"> Un prrafo normal en el que cada una de las lneas est separada 25 pixels de la otra. Hay que poner suficiente texto como para que se vean 2 lneas, as saldrn separadas </p>

Espaciado entre caracteres


Se puede definir tambin el espacio entre cada carcter. Esto se hace con el atributo de CSS letter-spacing. Veamos un ejemplo:
<p style="letter-spacing:12cm"> Este prrafo tiene las letras espaciadas por 1 centmetro. </p>

Este atributo, al igual que ocurre con muchos otros de CSS, no est soportado por todos los navegadores. En concreto Netscape, en su versin 4 todava no lo incluye.

Enlaces sin subrayado


Uno de los efectos ms significativos y fciles de realizar con CSS es eliminar el subrayado de los enlaces de una pgina web. Existe un atributo que sirve para definir la decoracin de un texto, si est subrayado, tachado, o si no tiene ninguna de estas "decoraciones". Es el atributo text-decoration, en este caso indicaremos en un enlace que no queremos decoracin:
<a href="mipagina.html" style="text-decoration:none">

Incluir estilos para todo un sitio web


Una de las caractersticas ms potentes de la programacin con hojas de estilo

Instituto Superior Tecnolgico 110 Norbert Wiener Manual del Alumno consiste en definir los estilos de todo un sitio web. Esto se consigue creando un archivo donde tan slo colocamos las declaraciones de estilos de la pgina y enlazando todas las pginas del sitio con ese archivo. De este modo, todas las pginas comparten una misma declaracin de estilos y, por tanto, si la cambiamos, cambiarn todas las pginas. Veamos ahora todo el proceso para incluir estilos con un fichero externo. 1- Creamos el fichero con la declaracin de estilos Es un fichero de texto normal, que puede tener cualquier extensin, aunque le podemos asignar la extensin .css para aclararnos qu tipo de archivo es. El texto que debemos incluir debe ser escrito exclusivamente en sintaxis CSS, es un poco distinta que la sintaxis que utilizamos dentro del atributo style. Sera errneo incluir cdigo HTML en este archivo: etiquetas y dems. Podemos ver un ejemplo a continuacin.
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; } BODY { background-color : #006600; font-family : arial; color : White; }

2- Enlazamos la pgina web con la hoja de estilos Para ello vamos a colocar la etiqueta <LINK> con los atributos rel="STYLESHEET" indicando que el enlace es con una hoja de estilo. type="text/css" porque el archivo es de texto, en sintaxis CSS. href="estilos.css" indica el nombre del fichero fuente de los estilos. Veamos una pgina web entera que enlaza con la declaracin de estilos anterior:
<html> <head> <link rel="STYLESHEET" type="text/css" href="estilos.css"> <title>Pgina que lee estilos</title> </head> <body> <h1>Pgina que lee estilos</h1> <p> Esta pgina tiene en la cabecera la etiqueta necesaria para enlazar con la hoja de estilos. Es muy fcil. </p> </body> </html>

Las CSS tienen mucho ms jugo Las Hojas de Estilo en Cascada son un estndar muy amplio, con unas especificaciones y posibilidades muy grandes. En este artculo hemos visto unos cuantos efectos interesantes que realizar aunque no tengamos ningn conocimiento previo. Sin embargo, lo mejor para trabajar con esta tecnologa es conocerla bien, gracias a ello, los resultados sern mucho ms sorprendentes.

Instituto Superior Tecnolgico Norbert Wiener

111

Manual del Alumno

Semana 17 :
ANIMACIONES

JavaScript : Animacin.

La animacin en JavaScript puede ser de texto, imgenes o ambas cosas interactuando. En todos los casos para conseguirla se trabaja del mismo modo. Lo primero que tendremos que hacer es preparar las etiquetas del texto o de la imagen dandoles un nombre (con los mismos requisitos que las variables) por medio del atributo name en caso de las imgenes e id en caso de texto. De esta manera podremos hacer referencia al elemento deseado desde la funcin encargada de ejecutar la animacin. A continuacin, aadiremos el evento con la llamada a la funcin (si es necesario, en muchas ocasiones se llama a la funcin por medio del mtodo setTimeout que veremos en un momento). El ltimo cambio que afecta a las etiquetas del texto o de la imagen afecta a los estilos. Por tanto tendremos que aadir obligatoriamente el atributo style con todos aquellos estilos que intervengan en la animacin. De entre todos los estilos que existen, podemos destacar los que hay en la siguiente tabla.

ESTILOS
SINTAXIS DESCRIPCIN Posibilita el style="Position:absolute;top:pos;left:pos" cambio de posicin. style="color:nombre_color" Posibilita el cambio de color. Posibilita mostrar y ocultar.

style="visibility:hidden o visible"

Recordar que si trabajamos con varios estilos todos se incluyen dentro de un atributo style. Una vez construida y modificada la o las etiquetas, las variaciones que sufran sus etilos o cualquier otro de sus atributos se realizarn en la funcin que tengamos preparada para ello. Para todos los cambios que realicemos la sintaxis a seguir es:

SINTAXIS:
nombre_etiqueta.style.estilo=valor; nombre_etiqueta.atributo=valor;

Instituto Superior Tecnolgico 112 Norbert Wiener Manual del Alumno Si nuestra animacin avanza segn un intervalo de tiempo, debemos utilizar el mtodo setTimeout() para establecer el intervalo de tiempo y la llamada a la funcin. Este mtodo se puede utilizar en cualquier parte del cdigo, pero normalmente se encuentra al principio del cdigo y dentro de la funcin donde se realiza cada uno de los pasos de nuestra animacin. La sintaxis del mtodo es (recordar respetar maysculas y minsculas):

SINTAXIS:
setTimeout("nombre_funcin()",intervalo milisegundos);

EJEMPLOS
EJEMPLO 1: Texto con movimiento en horizontal.
<html> <head> <script> var horizontal=12; setTimeout("mueve()",500); function mueve() { horizontal+=10; TEXTO1.style.left=horizontal; if(horizontal>=200) horizontal=12; setTimeout("mueve()",500); } </script> </head> <body> <p id="TEXTO1" style="position:absolute; top:16; left:12"> TEXTO </p> </body> </html>

EJEMPLO 2: Texto que aparece y desaparece.


<html> <head> <script> var estado=true; setTimeout("ver()",500); function ver() { estado=!estado; if(estado==true) TEXTO1.style.visibility="visible"; else TEXTO1.style.visibility="hidden"; setTimeout("ver()",500); }

Instituto Superior Tecnolgico Norbert Wiener


</script> </head> <body> <p id="TEXTO1" style="visibility:visible">TEXTO</p> </body> </html>

113

Manual del Alumno

EJEMPLO 3: Imagen que cambia cuando entra y sale el ratn.


<html> <head> <script> function pasa(valor) { if(valor==1) img.src="ten1.gif" else img.src="ten2.gif" } </script> </head> <body> <img name="img" src="ten2.gif" onMouseOver=pasa(1); onMouseOut=pasa(2);> </body> </html>

EJEMPLO 4: Imgenes que van cambiando solas.


<html> <head> <script> var estado=true; setTimeout("cambio()",500); function cambio() { estado=!estado; if(estado==true) img.src="tenista1.gif" else img.src="tenista2.gif" setTimeout("cambio()",500); } </script> </head> <body> <img name="img" src="tenista1.gif"> </body> </html>

EJEMPLO 5: Cambiamos la imagen segn situemos el ratn en un texto o en otro.

Instituto Superior Tecnolgico Norbert Wiener


<html> <head> <script> function imag(valor) { if(valor==1) img.src="tenista1.gif" else img.src="tenista2.gif" } </script> </head>

114

Manual del Alumno

<body>
<table border="1" width="15%"> <tr> <td width="100%"><p onMouseOver=imag(1);>IMAGEN 1</td> </tr> <tr> <td width="100%"><p onMouseOver=imag(2);>IMAGEN 2</td> </tr> </table> <br> <img name="img" src="tenista1.gif"> </body> </html>

EJEMPLO 6: Cambiar la imagen por medio de un control. En este caso una lista (select). Es igual que en el caso anterior. Lo nico que cambia es el evento que gestiona la llamada a la funcin.
<html> <head> <script> function cambio(valor) { if(valor=="imagen1") img.src="tenista1.gif" else img.src="tenista2.gif" } </script> </head> <body> <select size="3" name="lista" onChange=cambio(value);> <option value="imagen1">Imagen 1</option> <option value="imagen2">Imagen 2</option> </select> <br> <img name="img" src="tenista1.gif"> </body> </html>

EJEMPLO 7: Una imagen movindose en vertical automticamente.


<html> <head> <script> var vertical=35; var ida=true; setTimeout("mover()",200); function mover() { if(vertical<=200 && ida==true) vertical+=10;

Instituto Superior Tecnolgico Norbert Wiener


else { vertical-=10; ida=false; if(vertical<=35) ida=true; } img.style.top=vertical; setTimeout("mover()",200); } </script> </head> <body> <img name="img" src="pic.gif" style="position:absolute; left:12; top:35"> </body> </html>

115

Manual del Alumno

Instituto Superior Tecnolgico Norbert Wiener

116

Manual del Alumno

Semana 18 :
Cookies

Aplicacin Web.

Parece ms que necesario definir algo que lleva el absurdo nombre de galletita o cookie. Una galleta es un elemento de una lista que se guarda en el fichero cookies.txt en el ordenador del visitante. Cada elemento de esa lista tiene dos campos obligatorios: el nombre y su valor; y uno opcional: la fecha de caducidad. Este ltimo campo sirve para establecer la fecha en la que se borrar la galleta. Tiene este formato: nombre=valor;[expires=caducidad;] Slo el servidor que ha enviado al usuario una determinada cookie puede consultarla. Cada galleta tiene un tamao mximo de 4 Kb y puede haber un mximo de 300 cookies en el disco duro. Cada servidor podr almacenar como mucho 20 galletas en el fichero cookies.txt (en el caso de usar Netscape) o en el directorio cookies (si utilizamos Explorer) del usuario. Si no especificamos la fecha de caducidad la galleta se borrar del disco duro del usuario en cuanto ste cierre el navegador.

Funciones bsicas
Para poder hacer algo con cookies deberemos programar dos funciones: una que se encargue de mandar una galleta al usuario y otra que consulte su contenido.

function mandarGalleta(nombre, valor, caducidad) { document.cookie = nombre + "=" + escape(valor) + ((caducidad == null) ? "" : ("; expires=" + caducidad.toGMTString())) }

Con esta funcin mandamos una galleta. Vemos que el valor es codificado por medio de la funcin escape y que la caducidad (en caso de decidir ponerla) debe ser convertida a formato GMT. Esto se hace mediante el metodo toGMTString() del objeto Date.

function consultarGalleta(nombre) { var buscamos = nombre + "="; if (document.cookie.length > 0) { i = document.cookie.indexOf(buscamos); if (i != -1) { i += buscamos.length; j = document.cookie.indexOf(";", i); if (j == -1) j = document.cookie.length; return unescape(document.cookie.substring(i,j)); }

Instituto Superior Tecnolgico Norbert Wiener } }

117

Manual del Alumno

Declaramos la variable buscamos que contiene el nombre de la galleta que queremos buscar ms el igual que se escribe justo despus de cada nombre, para que as no encontremos por error un valor o una subcadena de otro nombre que sea igual al nombre de la galleta que buscamos. Una vez encontrada extraemos la subcadena que hay entre el igual que separa el nombre y el valor y el punto y coma con que termina dicho valor.

Un ejemplo
Vamos a ver un ejemplo. Utilizaremos una galleta llamada VisitasAlCursoDeJavaScript para guardar el nmero de veces que has visitado este curso:
<HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- Se usan los comentarios para esconder el cdigo a navegadores sin JavaScript function Contador() { var fecha=new Date (99, 12, 31); // La fecha de caducidad es 31 de diciembre del 1999 if (!(num=consultarGalleta("VisitasAlCursoDeJavaScript"))) num = 0; num++; mandarGalleta("VisitasAlCursoDeJavaScript", num, fecha); if (num==1) document.write("esta es la primera vez que lees este captulo."); else { document.write("has visitado este curso "+num+" veces."); } } // --> </SCRIPT> </HEAD> <BODY> Por lo que veo, <SCRIPT LANGUAGE="JavaScript"> <!-Contador(); // --> </SCRIPT> </BODY> </HTML>

La funcin consulta el valor de la galleta incrementandolo y, si no existe, lo pone a


uno. Luego escribe en el documento el nmero de veces que has visitado el curso

Semana 19 : Semana 20 :

(Examen Final).

(Examen Sustitutorio).

Instituto Superior Tecnolgico Norbert Wiener

118

Manual del Alumno

También podría gustarte