Vous êtes sur la page 1sur 102

JavaScript, al igual que Flash, Visual Basic Script, es una de las mltiples maneras que

han surgido para extender las capacidades del lenguaje HTML (lenguaje para el diseo de
pginas de Internet). Al ser la ms sencilla, es por el momento la ms extendida.
JavaScript no es un lenguaje de programacin propiamente dicho como C, C++, Delphi,
etc. Es un lenguaje script u orientado a documento, como pueden ser los lenguajes de
macros que tienen muchos procesadores de texto y planillas de clculo. No se puede
desarrollar un programa con JavaScript que se ejecute fuera de un Navegador, aunque en
este momento comienza a expandirse a otras reas como la programacin en el servidor
con Node.js
JavaScript es un lenguaje interpretado que se embebe en una pgina web HTML. Un
lenguaje interpretado significa que a las instrucciones las analiza y procesa el navegador
en el momento que deben ser ejecutadas.

Nuestro primer programa ser el famoso "Hola Mundo", es decir un programa que
muestre en el documento HTML el mensaje "Hola Mundo".
<html>
<head>
</head>
<body>
<script type="text/javascript">
document.write('Hola Mundo');
</script>

</body>

</html>

El programa en JavaScript debe ir encerrado entre la marca script e inicializada la


propiedad type con la cadena text/javascript:

<script type="text/javascript">

</script>

Para imprimir caracteres sobre la pgina debemos llamar al comando 'write' del objeto
document. La informacin a imprimirse debe ir entre comillas y encerrada entre
parntesis. Todo lo que indicamos entre comillas aparecer tal cual dentro de la pgina
HTML.
Es decir, si pedimos al navegador que ejecute esta pgina mostrar el texto 'Hola Mundo'.
Cada vez que escribimos una instruccin finalizamos con el carcter punto y coma.

ES IMPORTANTISIMO TENER EN CUENTA QUE JavaScript es SENSIBLE A


MAYUSCULAS Y MINUSCULAS. NO ES LO MISMO ESCRIBIR:
document.write que DOCUMENT.WRITE (la primera forma es la correcta, la segunda
forma provoca un error de sintaxis).
Nos acostumbraremos a prestar atencin cada vez que escribamos en minsculas o
maysculas para no cometer errores sintcticos. Ya veremos que los nombres de
funciones llevan letras en maysculas.

Variables.

Una variable es un depsito donde hay un valor. Consta de un nombre y


pertenece a un tipo (nmerico, cadena de caracteres, etc.)
Tipos de variable:
Una variable puede almacenar:
Valores Enteros (100, 260, etc.)
Valores Reales (1.24, 2.90, 5.01, etc.)
Cadenas de caracteres ('Juan', 'Compras', 'Listado', etc.)
Valores lgicos (true,false)
Existen otros tipos de variables que veremos ms adelante.

Las variables son nombres que ponemos a los lugares donde almacenamos
la informacin. En JavaScript, deben comenzar por una letra o un
subrayado (_), pudiendo haber adems dgitos entre los dems caracteres.
Una variable no puede tener el mismo nombre de una palabra clave del
lenguaje.
Una variable se define anteponindole la palabra clave var:
var dia;
se pueden declarar varias variables en una misma lnea:
var dia, mes, anio;
a una variable se la puede definir e inmediatamente inicializarla con un
valor:
var edad=20;
o en su defecto en dos pasos:
var edad;
edad=20;

Eleccin del nombre de una variable:


Debemos elegir nombres de variables representativos. En el ejemplo
anterior los nombres dia, mes, anio son lo suficientemente claros para
darnos una idea acabada sobre su contenido, una mala eleccin de
nombres hubiera sido llamarlas a,b y c. Podemos darle otros buenos
nombres. Otros no son tan representativos, por ejemplo d, m, a.
Posiblemente cuando estemos resolviendo un problema dicho nombre nos
recuerde que almacenamos el dia, pero pasado un tiempo lo olvidaramos.

Impresin de variables en una pgina HTML.


Para mostrar el contenido de una variable en una pgina utilizamos el objeto
document y llamamos a la funcin write.
En el siguiente ejemplo definimos una serie de variables y las mostramos en
la pgina:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var nombre='Juan';
var edad=10;
var altura=1.92;
var casado=false;
document.write(nombre);
document.write('<br>');
document.write(edad);
document.write('<br>');
document.write(altura);
document.write('<br>');
document.write(casado);
</script>
</body>
</html>
Cuando imprimimos una variable, no la debemos disponer entre simples
comillas (en caso de hacer esto, aparecer el nombre de la variable y no su
contenido)
Los valores de las variables que almacenan nombres (es decir, son cadenas
de caracteres) deben ir encerradas entre comillas simples o dobles. Los
valores de las variables enteras (en este ejemplo la variable edad) y reales
no deben ir encerradas entre comillas. Cada instruccin finaliza con un
punto y coma.
Las variables de tipo boolean pueden almacenar solo dos valores: true o
false.
El resultado al visualizar la pgina debe ser 4 lneas similares a stas:

Juan
10
1.92
false

Es decir que se muestran los contenidos de las 4 variables. Una variable es


de un tipo determinado cuando le asignamos un valor:
var edad=10;
Es de tipo entera ya que le asignamos un valor entero.
var nombre='juan';
Es de tipo cadena.
Para mostrar el contenido de una variable en una pgina debemos utilizar la
funcin 'write' que pertenece al objeto document. Recordemos que el
lenguaje JavaScript es sensible a maysculas y minsculas y no ser lo
mismo si tipeamos:
Document.Write(nombre);
Esto porque no existe el objeto 'Document' sino el objeto 'document' (con d
minscula), lo mismo no existe la funcin 'Write' sino 'write', este es un error
muy comn cuando comenzamos a programar en JavaScript

Entrada de datos por teclado.

Para la entrada de datos por teclado tenemos la funcin prompt. Cada vez
que necesitamos ingresar un dato con esta funcin, aparece una ventana
donde cargamos el valor. Hay otras formas ms sofisticadas para la entrada
de datos en una pgina HTML, pero para el aprendizaje de los conceptos
bsicos de JavaScript nos resultar ms prctica esta funcin.
Para ver su funcionamiento analicemos este ejemplo:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var nombre;
var edad;
nombre=prompt('Ingrese su nombre:','');
edad=prompt('Ingrese su edad:','');
document.write('Hola ');
document.write(nombre);
document.write(' asi que tienes ');
document.write(edad);
document.write(' aos');
</script>
</body>
</html>
La sintaxis de la funcin prompt es:
<variable que recibe el dato>=prompt(<mensaje a mostrar en la
ventana>,<valor
inicial a mostrar en la ventana>);
La funcin prompt tiene dos parmetros: uno es el mensaje y el otro el valor
inicial a mostrar.
Estructuras secuenciales de programacin.

Cuando en un problema slo participan operaciones, entradas y salidas se


la denomina estructura secuencial.
El problema anterior, donde se ingresa el nombre de una persona y su edad
se trata de una estructura secuencial.
Ejemplo de otro algoritmo con estructura secuencial: Realizar la carga de
dos nmeros por teclado e imprimir su suma y su producto:
<html>
<head>
<script type="text/javascript">
var valor1;
var valor2;
valor1=prompt('Ingrese primer nmero:','');
valor2=prompt('Ingrese segundo nmero','');
var suma=parseInt(valor1)+parseInt(valor2);
var
producto=parseInt(valor1)*parseInt(valor2);
document.write('La suma es ');
document.write(suma);
document.write('<br>');
document.write('El producto es ');
document.write(producto);
</script>
</head>
<body>
</body>
</html>
Lo primero que debemos tener en cuenta es que si queremos que el
operador + sume los contenidos de los valores numricos ingresados por
teclado, debemos llamar a la funcin parseInt y pasar como parmetro las
variables valor1 y valor2 sucesivamente. Con esto logramos que el operador
ms, sume las variables como enteros y no como cadenas de caracteres. Si
por ejemplo sumamos 1 + 1 sin utilizar la funcin parseInt el resultado ser
11 en lugar de 2, ya que el operador + concatena las dos cadenas.
En JavaScript, como no podemos indicarle de qu tipo es la variable,
requiere mucho ms cuidado cuando operamos con sus contenidos.
Este problema es secuencial ya que ingresamos dos valores por teclado,
luego hacemos dos operaciones y por ltimo mostramos los resultados.

Estructuras condicionales simples.

No todos los problemas pueden resolverse empleando estructuras


secuenciales. Cuando hay que tomar una decisin aparecen las estructuras
condicionales.
En nuestra vida diaria se nos presentan situaciones donde debemos decidir.
Elijo la carrera A o la carrera B ?
Me pongo este pantaln ?
Entro al sitio A o al sitio B ?
Para ir al trabajo, elijo el camino A o el camino B ?
Al cursar una carrera, elijo el turno maana, tarde o noche ?

Por supuesto que en un problema se combinan estructuras secuenciales y


condicionales.
Cuando se presenta la eleccin tenemos la opcin de realizar una actividad
o no realizarla.
En una estructura CONDICIONAL SIMPLE por el camino del verdadero hay
actividades y por el camino del falso no hay actividades. Por el camino del
verdadero pueden existir varias operaciones, entradas y salidas, inclusive
ya veremos que puede haber otras estructuras condicionales.
Ejemplo: Realizar la carga de una nota de un alumno. Mostrar un mensaje
que aprob si tiene una nota mayor o igual a 4:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var nombre;
var nota;
nombre=prompt('Ingrese nombre:','');
nota=prompt('Ingrese su nota:','');
if (nota>=4)
{
document.write(nombre+' esta aprobado con
un '+nota);
}
</script>
</body>
</html>
Aparece la instruccin if en el lenguaje JavaScript. La condicin debe ir
entre parntesis. Si la condicin se verifica verdadera se ejecuta todas las
instrucciones que se encuentran encerradas entre las llaves de apertura y
cerrado seguidas al if.
Para disponer condiciones en un if podemos utilizar alguno de los siguientes
operadores relacionales:
> mayor
>= mayor o igual
< menor
<= menor o igual
!= distinto
== igual
Siempre debemos tener en cuenta que en la condicin del if deben
intervenir una variable un operador relacional y otra variable o valor fijo.
Otra cosa que hemos incorporado es el operador + para cadenas de
caracteres:
document.write(nombre+' esta aprobado con un '+nota);
Con esto hacemos ms corto la cantidad de lneas de nuestro programa,
recordemos que venamos hacindolo de la siguiente forma:
document.write(nombre);
document.write(' esta aprobado con un ');
document.write(nota);

Estructuras condicionales compuestas.


Cuando se presenta la eleccin tenemos la opcin de realizar una actividad
u otra. Es decir tenemos actividades por el verdadero y por el falso de la
condicin. Lo ms importante que hay que tener en cuenta es que se
realizan las actividades de la rama del verdadero o las del falso, NUNCA se
realizan las actividades de las dos ramas.
En una estructura condicional compuesta tenemos entradas, salidas,
operaciones, tanto por la rama del verdadero como por la rama del falso.

Ejemplo: Realizar un programa que lea dos nmeros distintos y muestre el


mayor de ellos:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var num1,num2;
num1=prompt('Ingrese el primer nmero:','');
num2=prompt('Ingrese el segundo nmero:','');
num1=parseInt(num1);
num2=parseInt(num2);
if (num1>num2)
{
document.write('el mayor es '+num1);
}
else
{
document.write('el mayor es '+num2);
}
</script>
</body>
</html>
La funcin prompt retorna un string por lo que debemos convertirlo a entero
cuando queremos saber cual de los dos valores es mayor numricamente.
En el lenguaje JavaScript una variable puede ir cambiando el tipo de dato
que almacena a lo largo de la ejecucin del programa.
Ms adelante veremos qu sucede cuando preguntamos cul de dos string
es mayor.
Estamos en presencia de una ESTRUCTURA CONDICIONAL
COMPUESTA ya que tenemos actividades por la rama del verdadero y del
falso.
La estructura condicional compuesta tiene la siguiente codificacin:
if (<condicin>)
{
<Instruccion(es)>
}
else
{
<Instruccion(es)>
}
Es igual que la estructura condicional simple salvo que aparece la palabra
clave ?else? y posteriormente un bloque { } con una o varias instrucciones.
Si la condicin del if es verdadera se ejecuta el bloque que aparece
despus de la condicin, en caso que la condicin resulte falsa se ejecuta la
instruccin o bloque de instrucciones que indicamos despus del else.

Estructuras condicionales anidadas.

Decimos que una estructura condicional es anidada cuando por la rama del
verdadero o el falso de una estructura condicional hay otra estructura
condicional.
Ejemplo: Confeccionar un programa que pida por teclado tres notas de un
alumno, calcule el promedio e imprima alguno de estos mensajes:
Si el promedio es >=7 mostrar "Promocionado".
Si el promedio es >=4 y <7 mostrar "Regular".
Si el promedio es <4 mostrar "Reprobado".
Solucin:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var nota1,nota2,nota3;
nota1=prompt('Ingrese 1ra. nota:','');
nota2=prompt('Ingrese 2da. nota:','');
nota3=prompt('Ingrese 3ra. nota:','');
//Convertimos los 3 string en enteros
nota1=parseInt(nota1);
nota2=parseInt(nota2);
nota3=parseInt(nota3);
var pro;
pro=(nota1+nota2+nota3)/3;
if (pro>=7)
{
document.write('promocionado');
}
else
{
if (pro>=4)
{
document.write('regular');
}
else
{
document.write('reprobado');
}
}
</script>
</body>
</html>
Analicemos el siguiente programa. Se ingresan tres string por teclado que
representan las notas de un alumno, se transformas a variables enteras y se
obtiene el promedio sumando los tres valores y dividiendo por 3 dicho
resultado.
Primeramente preguntamos si el promedio es superior o igual a 7, en caso
afirmativo por la rama del verdadero de la estructura condicional mostramos
un mensaje que indique 'Promocionado' (con comillas indicamos un texto
que debe imprimirse en pantalla).
En caso que la condicin nos de falso, por la rama del falso aparece otra
estructura condicional, porque todava debemos averiguar si el promedio del
alumno es superior o igual a cuatro o inferior a cuatro.

Los comentarios en JavaScript los hacemos disponiendo dos barras previas


al comentario (los comentario en tiempo de ejecucin no son tenidos en
cuenta y tienen por objetivos de documentar el programa para futuras
modificaciones):
//Convertimos los 3 string en enteros
Si queremos disponer varias lneas de comentarios tenemos como
alternativa:
/*
linea de comentario 1.
linea de comentario 2.
etc.
*/
Es decir encerramos el bloque con los caracteres /* */
Operadores lgicos && (y) en las estructuras condicionales.

El operador &&, traducido se lo lee como "Y". Se emplea cuando en una


estructura condicional se disponen dos condiciones.
Cuando vinculamos dos o ms condiciones con el operador "&&" las dos
condiciones deben ser verdaderas para que el resultado de la condicin
compuesta de Verdadero y contine por la rama del verdadero de la
estructura condicional.
Recordemos que la condicin debe ir entre parntesis en forma obligatoria.
La utilizacin de operadores lgicos permiten en muchos casos, plantear
algoritmos ms cortos y comprensibles.
Veamos un ejemplo: Confeccionar un programa que lea por teclado tres
nmeros distintos y nos muestre el mayor de ellos.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var num1,num2,num3;
num1=prompt('Ingrese primer nmero:','');
num2=prompt('Ingrese segundo nmero:','');
num3=prompt('Ingrese tercer nmero:','');
num1=parseInt(num1);
num2=parseInt(num2);
num3=parseInt(num3);
if (num1>num2 && num1>num3)
{
document.write('el mayor es el '+num1);
}
else
{
if (num2>num3)
{
document.write('el mayor es el '+num2);
}
else
{
document.write('el mayor es el '+num3);
}
}
</script>
</body>
</html>
Podemos leerla de la siguiente forma:
Si el contenido de la variable num1 es mayor al contenido de la variable
num2 Y si el contenido de la variable num1 es mayor al contenido de la
variable num3 entonces la CONDICION COMPUESTA resulta Verdadera.
Si una de las condiciones simples da falso, la CONDICION COMPUESTA
da Falso y contina por la rama del falso.
Es decir que se mostrar el contenido de num1 si y slo si num1>num2 y
num1>num3.
En caso de ser Falsa la condicin de la rama del falso, analizamos el
contenido de num2 y num3 para ver cual tiene un valor mayor.
En esta segunda estructura condicional, al haber una condicin simple, no
se requieren operadores lgicos.

Operadores lgicos && (y) en las estructuras condicionales.

El operador &&, traducido se lo lee como "Y". Se emplea cuando en una


estructura condicional se disponen dos condiciones.
Cuando vinculamos dos o ms condiciones con el operador "&&" las dos
condiciones deben ser verdaderas para que el resultado de la condicin
compuesta de Verdadero y contine por la rama del verdadero de la
estructura condicional.
Recordemos que la condicin debe ir entre parntesis en forma obligatoria.
La utilizacin de operadores lgicos permiten en muchos casos, plantear
algoritmos ms cortos y comprensibles.
Veamos un ejemplo: Confeccionar un programa que lea por teclado tres
nmeros distintos y nos muestre el mayor de ellos.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var num1,num2,num3;
num1=prompt('Ingrese primer nmero:','');
num2=prompt('Ingrese segundo nmero:','');
num3=prompt('Ingrese tercer nmero:','');
num1=parseInt(num1);
num2=parseInt(num2);
num3=parseInt(num3);
if (num1>num2 && num1>num3)
{
document.write('el mayor es el '+num1);
}
else
{
if (num2>num3)
{
document.write('el mayor es el '+num2);
}
else
{
document.write('el mayor es el '+num3);
}
}
</script>
</body>
</html>

Podemos leerla de la siguiente forma:


Si el contenido de la variable num1 es mayor al contenido de la variable
num2 Y si el contenido de la variable num1 es mayor al contenido de la
variable num3 entonces la CONDICION COMPUESTA resulta Verdadera.
Si una de las condiciones simples da falso, la CONDICION COMPUESTA
da Falso y contina por la rama del falso.
Es decir que se mostrar el contenido de num1 si y slo si num1>num2 y
num1>num3.
En caso de ser Falsa la condicin de la rama del falso, analizamos el
contenido de num2 y num3 para ver cual tiene un valor mayor.
En esta segunda estructura condicional, al haber una condicin simple, no
se requieren operadores lgicos.
Estructuras switch.

La instruccin switch es una alternativa para remplazar los if/else if.


De todos modos se puede aplicar en ciertas situaciones donde la condicin
se verifica si es igual a cierto valor. No podemos preguntar por mayor o
menor.
Con un ejemplo sencillo veremos cual es su sintaxis. Confeccionar un
programa que solicite que ingrese un valor entre 1 y 5. Luego mostrar en
castellano el valor ingresado. Mostrar un mensaje de error en caso de haber
ingresado un valor que no se encuentre en dicho rango.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var valor;
valor=prompt('Ingrese un valor comprendido
entre 1 y 5:','');
//Convertimos a entero
valor=parseInt(valor);
switch (valor) {
case 1: document.write('uno');
break;
case 2: document.write('dos');
break;
case 3: document.write('tres');
break;
case 4: document.write('cuatro');
break;
case 5: document.write('cinco');
break;
default:document.write('debe ingresar un
valor comprendido entre 1 y 5.');
}
</script>
</body>
</html>
Debemos tener en cuenta que la variable que analizamos debe ir despus
de la instruccin switch entre parntesis. Cada valor que se analiza debe ir
luego de la palabra clave 'case' y seguido a los dos puntos, las instrucciones
a ejecutar, en caso de verificar dicho valor la variable que analiza el switch.
Es importante disponer la palabra clave 'break' al finalizar cada caso. La
instrucciones que hay despus de la palabra clave 'default' se ejecutan en
caso que la variable no se verifique en algn case. De todos modos el
default es opcional en esta instruccin.

Plantearemos un segundo problema para ver que podemos utilizar variables


de tipo cadena con la instruccin switch.
Ingresar por teclado el nombre de un color (rojo, verde o azul), luego pintar
el fondo de la ventana con dicho color:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var col;
col=prompt('Ingrese el color con que se
quiere pintar el fondo de la ventana (rojo,
verde, azul)' ,'');
switch (col) {
case 'rojo': document.bgColor='#ff0000';
break;
case 'verde': document.bgColor='#00ff00';
break;
case 'azul': document.bgColor='#0000ff';
break;
}
</script>
</body>
</html>
Cuando verificamos cadenas debemos encerrarlas entre comillas el valor a
analizar:
case 'rojo': document.bgColor='#ff0000';
break;
Para cambiar el color de fondo de la ventana debemos asignarle a la
propiedad bgColor del objeto document el color a asignar (el color est
formado por tres valores hexadecimales que representan la cantidad de
rojo, verde y azul), en este caso al valor de rojo le asignamos ff (255 en
decimal) es decir el valor mximo posible, luego 00 para verde y azul
(podemos utilizar algn software de graficacin para que nos genere los tres
valores).
Estructura repetitiva (while)

Hasta ahora hemos empleado estructuras SECUENCIALES y


CONDICIONALES. Existe otro tipo de estructuras tan importantes como las
anteriores que son las estructuras REPETITIVAS.
Una estructura repetitiva permite ejecutar una instruccin o un conjunto de
instrucciones varias veces.

Una ejecucin repetitiva de sentencias se caracteriza por:


- La o las sentencias que se repiten.
- El test o prueba de condicin antes de cada repeticin, que motivar que
se repitan o no las sentencias.

Funcionamiento del while: En primer lugar se verifica la condicin, si la


misma resulta verdadera se ejecutan las operaciones que indicamos entre
las llaves que le siguen al while.
En caso que la condicin sea Falsa contina con la instruccin siguiente al
bloque de llaves.
El bloque se repite MIENTRAS la condicin sea Verdadera.

Importante: Si la condicin siempre retorna verdadero estamos en presencia


de un ciclo repetitivo infinito. Dicha situacin es un error de programacin,
nunca finalizar el programa.

Ejemplo: Realizar un programa que imprima en pantalla los nmeros del 1 al


100.

Sin conocer las estructuras repetitivas podemos resolver el problema


empleando una estructura secuencial. Inicializamos una variable con el
valor 1, luego imprimimos la variable, incrementamos nuevamente la
variable y as sucesivamente. Pero esta solucin es muy larga.
La mejor forma de resolver este problema es emplear una estructura
repetitiva:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var x;
x=1;
while (x<=100)
{
document.write(x);
document.write('<br>');
x=x+1;
}
</script>
</body>
</html>
Para que se impriman los nmeros, uno en cada lnea, agregamos la marca
HTML de <br>.
Es muy importante analizar este programa:
La primera operacin inicializa la variable x en 1, seguidamente comienza la
estructura repetitiva while y disponemos la siguiente condicin ( x <= 100),
se lee MIENTRAS la variable x sea menor o igual a 100.
Al ejecutarse la condicin, retorna VERDADERO, porque el contenido de x
(1) es menor o igual a 100.
Al ser la condicin verdadera se ejecuta el bloque de instrucciones que
contiene la estructura while. El bloque de instrucciones contiene dos salidas
al documento y una operacin. Se imprime el contenido de x y
seguidamente se incrementa la variable x en uno.

La operacin x = x + 1 se lee como "en la variable x se guarda el contenido


de x ms 1". Es decir, si x contiene 1 luego de ejecutarse esta operacin se
almacenar en x un 2.

Al finalizar el bloque de instrucciones que contiene la estructura repetitiva,


se verifica nuevamente la condicin de la estructura repetitiva y se repite el
proceso explicado anteriormente.
Mientras la condicin retorne verdadero, se ejecuta el bloque de
instrucciones; al retornar falso la verificacin de la condicin, se sale de la
estructura repetitiva y contina el algoritmo, en este caso, finaliza el
programa.

Lo ms difcil es la definicin de la condicin de la estructura while y qu


bloque de instrucciones se va a repetir. Observar que si, por ejemplo,
disponemos la condicin x >=100 ( si x es mayor o igual a 100) no provoca
ningn error sintctico pero estamos en presencia de un error lgico porque
al evaluarse por primera vez la condicin retorna falso y no se ejecuta el
bloque de instrucciones que queramos repetir 100 veces.

No existe una RECETA para definir una condicin de una estructura


repetitiva, sino que se logra con una prctica continua, solucionando
problemas.

Una vez planteado el programa debemos verificar si el mismo es una


solucin vlida al problema (en este caso se deben imprimir los nmeros del
1 al 100 en la pgina), para ello podemos hacer un seguimiento del flujo del
diagrama y los valores que toman las variables a lo largo de la ejecucin:
x
1
2
3
4
.
.
100
101 Cuando x vale 101 la condicin de la estructura
repetitiva retorna falso, en este caso finaliza el
diagrama.
La variable x recibe el nombre de CONTADOR. Un contador es un tipo
especial de variable que se incrementa o decrementa con valores
constantes durante la ejecucin del programa. El contador x nos indica en
cada momento la cantidad de valores impresos en la pgina.
Importante: Podemos observar que el bloque repetitivo puede no ejecutarse
si la condicin retorna falso la primera vez.
La variable x debe estar inicializada con algn valor antes que se ejecute la
operacin x = x + 1.
Probemos algunas modificaciones de este programa y veamos qu cambios
se deberan hacer para:
1 - Imprimir los nmeros del 1 al 500.
2 - Imprimir los nmeros del 50 al 100.
3 - Imprimir los nmeros del -50 al 0.
4 - Imprimir los nmeros del 2 al 100 pero de 2 en 2 (2,4,6,8 ....100).
Concepto de acumulador.

Explicaremos el concepto de un acumulador con un ejemplo.


Problema: Desarrollar un programa que permita la carga de 5 valores por
teclado y nos muestre posteriormente la suma.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var x=1;
var suma=0;
var valor;
while (x<=5)
{
valor=prompt('Ingrese valor:','');
valor=parseInt(valor);
suma=suma+valor;
x=x+1;
}
document.write("La suma de los valores es
"+suma+"<br>");
</script>
</body>
</html>
En este problema, a semejanza de los anteriores, llevamos un CONTADOR
llamado x que nos sirve para contar las vueltas que debe repetir el while.
Tambin aparece el concepto de ACUMULADOR (un acumulador es un tipo
especial de variable que se incrementa o decrementa con valores variables
durante la ejecucin del programa).
Hemos dado el nombre de suma a nuestro acumulador. Cada ciclo que se
repita la estructura repetitiva, la variable suma se incrementa con el
contenido ingresado en la variable valor.

La prueba del diagrama se realiza dndole valores a las variables:


valor suma x
0 0
(Antes de entrar a la estructura repetitiva estos son los valores).
5 5 1
16 21 2
7 28 3
10 38 4
2 40 5
Este es un seguimiento del programa planteado. Los nmeros que toma la
variable valor depender de qu cifras cargue el operador durante la
ejecucin del programa.
Hay que tener en cuenta que cuando en la variable valor se carga el primer
valor (en este ejemplo es el valor 5), al cargarse el segundo valor (16), el
valor anterior 5 se pierde, por ello la necesidad de ir almacenando en la
variable suma el valor acumulado de los valores ingresados.
Estructura repetitiva (do/while)

La sentencia do/while es otra estructura repetitiva, la cual ejecuta al menos


una vez su bloque repetitivo, a diferencia del while que puede no ejecutar el
bloque.
Esta estructura repetitiva se utiliza cuando conocemos de antemano que por
lo menos una vez se ejecutar el bloque repetitivo.
La condicin de la estructura est abajo del bloque a repetir, a diferencia del
while que est en la parte superior.
Finaliza la ejecucin del bloque repetitivo cuando la condicin retorna falso,
es decir igual que el while.

Problema: Escribir un programa que solicite la carga de un nmero entre 0 y


999, y nos muestre un mensaje de cuntos dgitos tiene el mismo. Finalizar
el programa cuando se cargue el valor 0.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var valor;
do {
valor=prompt('Ingrese un valor entre 0 y
999:','');
valor=parseInt(valor);
document.write('El valor '+valor+' tiene
');
if (valor<10)
{
document.write('Tiene 1 digitos');
}
else
{
if (valor<100)
{
document.write('Tiene 2 digitos');
}
else
{
document.write('Tiene 3 digitos');
}
}
document.write('<br>');
} while(valor!=0);
</script>
</body>
</html>
En este problema por lo menos se carga un valor. Si se carga un valor
menor a 10 se trata de un nmero de una cifra, si es mayor a 10 pero menor
a 100 se trata de un valor de dos dgitos, en caso contrario se trata de un
valor de tres dgitos. Este bloque se repite mientras se ingresa en la variable
'valor' un nmero distinto a 0.
Estructura repetitiva (for)

Cualquier problema que requiera una estructura repetitiva se puede resolver


empleando la estructura while. Pero hay otra estructura repetitiva cuyo
planteo es ms sencillo en ciertas situaciones.
Esta estructura se emplea en aquellas situaciones en las cuales
CONOCEMOS la cantidad de veces que queremos que se ejecute el bloque
de instrucciones. Ejemplo: cargar 10 nmeros, ingresar 5 notas de alumnos,
etc. Conocemos de antemano la cantidad de veces que queremos que el
bloque se repita.

Por ltimo, hay que decir que la ejecucin de la sentencia break dentro de
cualquier parte del bucle provoca la salida inmediata del mismo.
Sintaxis:
for (<Inicializacin> ; <Condicin> ; <Incremento o Decremento>)
{
<Instrucciones>
}
Esta estructura repetitiva tiene tres argumentos: variable de inicializacin,
condicin y variable de incremento o decremento.
Funcionamiento:
- Primero se ejecuta por nica vez el primer argumento .
Por lo general se inicializa una variable.
- El segundo paso es evaluar la (Condicin), en caso de ser
verdadera se ejecuta el bloque,
en caso contrario contina el programa.
- El tercer paso es la ejecucin de las instrucciones.
- El cuarto paso es ejecutar el tercer argumento (Incremento o
Decremento).
- Luego se repiten sucesivamente del Segundo al Cuarto Paso.
Este tipo de estructura repetitiva se utiliza generalmente cuando sabemos la
cantidad de veces que deseamos que se repita el bloque.

Ejemplo: Mostrar por pantalla los nmeros del 1 al 10.


<html>
<head>
</head>
<body>

<script type="text/javascript">
var f;
for(f=1;f<=10;f++)
{
document.write(f+" ");
}
</script>

</body>
</html>
Inicialmente f se la inicializa con 1. Como la condicin se verifica como
verdadera se ejecuta el bloque del for (en este caso mostramos el contenido
de la variable f y un espacio en blanco). Luego de ejecutar el bloque pasa al
tercer argumento del for (en este caso con el operador ++ se incrementa en
uno el contenido de la variable f, existe otro operador -- que decrementa en
uno una variable), hubiera sido lo mismo poner f=f+1 pero este otro
operador matemtico nos simplifica las cosas.

Importante: Tener en cuenta que no lleva punto y coma al final de los tres
argumentos del for. El disponer un punto y coma provoca un error lgico y
no sintctico, por lo que el navegador no avisar.
Funciones

En programacin es muy frecuente que un determinado procedimiento de


clculo definido por un grupo de sentencias tenga que repetirse varias
veces, ya sea en un mismo programa o en otros programas, lo cual implica
que se tenga que escribir tantos grupos de aquellas sentencias como veces
aparezca dicho proceso.
La herramienta ms potente con que se cuenta para facilitar, reducir y dividir
el trabajo en programacin, es escribir aquellos grupos de sentencias una
sola y nica vez bajo la forma de una FUNCION.
Un programa es una cosa compleja de realizar y por lo tanto es importante
que est bien ESTRUCTURADO y tambin que sea inteligible para las
personas. Si un grupo de sentencias realiza una tarea bien definida,
entonces puede estar justificado el aislar estas sentencias formando una
funcin, aunque resulte que slo se le llame o use una vez.
Hasta ahora hemos visto como resolver un problema planteando un nico
algoritmo.
Con funciones podemos segmentar un programa en varias partes.
Frente a un problema, planteamos un algoritmo, ste puede constar de
pequeos algoritmos.
Una funcin es un conjunto de instrucciones que resuelven una parte del
problema y que puede ser utilizado (llamado) desde diferentes partes de un
programa.
Consta de un nombre y parmetros. Con el nombre llamamos a la funcin,
es decir, hacemos referencia a la misma. Los parmetros son valores que
se envan y son indispensables para la resolucin del mismo. La funcin
realizar alguna operacin con los parmetros que le enviamos. Podemos
cargar una variable, consultarla, modificarla, imprimirla, etc.

Incluso los programas ms sencillos tienen la necesidad de fragmentarse.


Las funciones son los nicos tipos de subprogramas que acepta JavaScript.
Tienen la siguiente estructura:
function <nombre de funcin>(argumento1, argumento2, ..., argumento n)
{
<cdigo de la funcin>
}
Debemos buscar un nombre de funcin que nos indique cul es su objetivo
(Si la funcin recibe un string y lo centra, tal vez deberamos llamarla
centrarTitulo). Veremos que una funcin puede variar bastante en su
estructura, puede tener o no parmetros, retornar un valor, etc.

Ejemplo: Mostrar un mensaje que se repita 3 veces en la pgina con el


siguiente texto:
'Cuidado'
'Ingrese su documento correctamente'

'Cuidado'
'Ingrese su documento correctamente'

'Cuidado'
'Ingrese su documento correctamente'
La solucin sin emplear funciones es:
<html>
<head>
</head>
<body>

<script type="text/javascript">
document.write("Cuidado<br>");
document.write("Ingrese su documento
correctamente<br>");
document.write("Cuidado<br>");
document.write("Ingrese su documento
correctamente<br>");
document.write("Cuidado<br>");
document.write("Ingrese su documento
correctamente<br>");
</script>

</body>
</html>
Empleando una funcin:
<html>
<head>
</head>
<body>

<script type="text/javascript">
function mostrarMensaje()
{
document.write("Cuidado<br>");
document.write("Ingrese su documento
correctamente<br>");
}

mostrarMensaje();
mostrarMensaje();
mostrarMensaje();
</script>

</body>
</html>
Recordemos que JavaScript es sensible a maysculas y minsculas. Si
fijamos como nombre a la funcin mostrarTitulo (es decir la segunda palabra
con mayscula) debemos respetar este nombre cuando la llamemos a dicha
funcin.
Es importante notar que para que una funcin se ejecute debemos llamarla
desde fuera por su nombre (en este ejemplo: mostrarMensaje()).
Cada vez que se llama una funcin se ejecutan todas las lneas contenidas
en la misma.
Si no se llama a la funcin, las instrucciones de la misma nunca se
ejecutarn.
A una funcin la podemos llamar tantas veces como necesitemos.
Las funciones nos ahorran escribir cdigo que se repite con frecuencia y
permite que nuestro programa sea ms entendible.
Funciones con parmetros.

Explicaremos con un ejemplo, una funcin que tiene datos de entrada.


Ejemplo: Confeccionar una funcin que reciba dos nmeros y muestre en la
pgina los valores comprendidos entre ellos de uno en uno. Cargar por
teclado esos dos valores.
<html>
<head>
</head>
<body>
<script type="text/javascript">

function mostrarComprendidos(x1,x2)
{
var inicio;
for(inicio=x1;inicio<=x2;inicio++)
{
document.write(inicio+' ');
}
}
var valor1,valor2;
valor1=prompt('Ingrese valor inferior:','');
valor1=parseInt(valor1);
valor2=prompt('Ingrese valor superior:','');
valor2=parseInt(valor2);
mostrarComprendidos(valor1,valor2);

</script>
</body>
</html>
El programa de JavaScript empieza a ejecutarse donde definimos las
variables valor1 y valor2 y no donde se define la funcin. Luego de cargar
los dos valores por teclado se llama a la funcin mostrarComprendidos y le
enviamos las variables valor1 y valor2. Los parmetros x1 y x2 reciben los
contenidos de las variables valor1 y valor2.
Es importante notar que a la funcin la podemos llamar la cantidad de veces
que la necesitemos.
Los nombres de los parmetros, en este caso se llaman x1 y x2, no
necesariamente se deben llamar igual que las variables que le pasamos
cuando la llamamos a la funcin, en este caso le pasamos los valores valor1
y valor2.

ARRAYS JAVASCRIPT (ARREGLOS).

Al igual que en la mayor parte de los lenguajes de programacin, en JavaScript podemos trabajar con arrays
(tambin llamados arreglos, vectores o matrices). Los arrays son de gran importancia ya que permiten organizar
series de datos que comparten el mismo nombre pero se diferencian por un ndice.

DECLARACIN E INICIALIZACIN DE ARRAYS

La declaracin de un array se hace de misma forma que se declara cualquier variable: var nombreDelArray;

El array adquiere condicin de tal cuando la variable se inicializa con forma de array, bien como array con un
contenido inicial o bien como array vaco:

var pais;

pais = ['Mexico', 'Espaa', 'Argentina', 'Chile', 'Colombia', 'Venezuela', 'Per', 'Costa Rica'];

O podemos hacerlo todo en una sola lnea:

var pais = ['Mexico', 'Espaa', 'Argentina', 'Chile', 'Colombia', 'Venezuela', 'Per', 'Costa Rica'];
En este ejemplo decimos que hemos declarado un array de 8 elementos. Cada elemento tiene un ndice,
comenzando los ndices por el nmero 0. Por tanto los 8 elementos del array anterior son: pais[0], pais[1],
pais[2], pais[3], pais[4], pais[5], pais[6] y pais[7].

Tambin podemos inicializar un array vaco de dos formas distintas:

var fruta = [];

var fruta = new Array();

Ambas expresiones tienen el mismo efecto: crean un array vaco. En este caso se entiende que se aadirn
contenidos a posteriori. Por ejemplo fruta[3] = 'manzana';

ARRAYS CON ELEMENTOS SIN DEFINIR

Podemos dar valor a un elemento de un array sin que los anteriores elementos estn definidos como hemos
hecho en el ejemplo, declarando el elemento de ndice 3 sin haber definido los ndices 0, 1 y 2. Los elementos
no definidos toman valor undefined. En este ejemplo fruta[0] no ha sido definido por lo que si intentamos
invocarlo su valor es undefined.

Para que JavaScript comprenda que una variable es un array hay que indicrselo explcitamente. Es vlido: var
pais = []; pais[0] = 'Mexico';

Sin embargo no es vlido: var pais; pais[0] = 'Mexico'; Por qu? Porque en este cdigo no hemos declarado
explcitamente que pais sea un array. Si no lo hemos declarado, no podemos empezar a usar ndices asociados
a la variable como si se tratara de un array. Si lo hacemos se entiende como un error en el cdigo, lo que dar
lugar a que JavaScript no se ejecute.

Un array puede inicializarse dejando ciertos ndices sin un contenido definido. Para ello, se deja un espacio
separado por comas como en este ejemplo:

var ciudad = ["Buenos Aires", , "Madrid"];

Esta declaracin supone que el array tiene 3 elementos. Ciudad[0] que tiene valor Buenos Aires, ciudad[1] que
tiene valor undefined, y ciudad [2] que tiene valor Madrid.

var capital = [ , 'Mexico D.F.', , 'Santiago'];

Esta declaracin supone que el array capital tiene 4 elementos que son ciudad[0] con valor undefined, ciudad[1]
con valor Mxico D.F., ciudad[2] con valor undefined y ciuedad[3] con valor Santiago.

Una coma final no genera un nuevo elemento. Por ejemplo:

var capital = [ , 'Mexico D.F.', , 'Santiago', ];

En este caso la coma final es ignorada y el array sigue teniendo 4 elementos. Si queremos definir el array con
un quinto elemento vaco se recomienda hacerlo as:

var capital = [ , 'Mexico D.F.', , 'Santiago', undefined];

Tambin sera posible hacerlo dejando una coma final libre pero esto es menos recomendable y en algunos
navegadores puede dar lugar a errores:

var capital = [ , 'Mexico D.F.', , 'Santiago', ,];


ACCESO A NDICES NO EXISTENTES

En otros lenguajes de programacin, intentar acceder a un ndice de array inexistente devuelve un error, pero
en JavaScript no es as. Si escribimos pais[40] cuando slo hemos definido hasta el ndice 7, el resultado es que
pais[40] devuelve undefined. A diferencia de en otros lenguajes, los arrays en JavaScript no tienen un nmero
fijo de elementos, sino que el nmero de elementos del array se ajusta dinmicamente segn las necesidades.

USO DE LOS ARRAYS

Los arrays son de gran utilidad para automatizar los clculos y procesos, por lo que siempre algo pueda
expresarse con un nombre seguido de un ndice, ser preferible usar un array a usar variables independientes.

Los arrays por defecto siempre empiezan por el ndice 0, pero en determinadas ocasiones algunos
programadores prescinden de ese ndice. Por ejemplo var mes = []; mes[0] = undefined; mes[1] = 'enero';
mes[2]='febrero'; mes[3]='marzo'; mes[4] = 'abril'; mes[5]='mayo'; mes[6] = 'junio'; mes[7]='julio';
mes[8]='agosto'; mes[9]='septiembre'; mes[10]='octubre'; mes[11]='noviembre'; mes[12]='diciembre';

Hemos definido mes[0] como undefined. Por qu? Porque en general es preferible dejar constancia de que si
mes[0] tiene valor undefined es porque el programador ha decidido que sea as, de esta manera no hay duda
respecto a que pueda ser un error o un olvido.

Tambin sera posible definir doce variables como mes1, mes2, mes3, mes4, mes5, mes6, mes7, mes8, mes9,
mes10, mes11, mes12. Sin embargo esto es algo que desde el punto de vista de la programacin es en general
indeseable, ya que estas doce variables funcionan como variables que no tienen relacin entre s. Por tanto
cuando tengamos que recorrer los meses no podremos hacerlo de forma automatizada usando ndices, ya que
aqu no existen ndices (aunque el nombre de la variable lleve un nmero eso no significa que ese nmero sea
un ndice).

TIPADO DE LOS ARRAYS

En otros lenguajes de programacin un array contiene un tipo de datos y se dice que el array es de ese tipo.
Por ejemplo un array puede ser un array de enteros, o un array de cadenas de texto. Pero no pueden existir
arrays que contengan indistintamente elementos de distinto tipo. Esto s es posible en JavaScript, y por ello se
dice que los arrays en JavaScript no tienen tipo. Por ejemplo se admite algo como esto: var datos = ['Fro', 33,
false, 'nube', -11.22, true, 3.33, 'variado'];

En este array el elemento de ndice cero es de tipo texto, el de ndice 1 es un valor numrico, el elemento de
ndice tres es un valor booleano, etc.

Normalmente los arrays contendrn elementos de un tipo, por ejemplo valores numricos, pero en ocasiones
nos interesar que contengan elementos de distintos tipos.

JavaScript admite que los elementos de un array sean elementos de naturaleza compleja (objetos), o incluso
que un elemento de un array sea otro array.

PROPIEDAD LENGTH DE LOS ARRAYS

La propiedad length de un array indica el nmero mximo de elementos en el array de acuerdo con el ndice
mximo existente (independientemente de que los elementos del array tengan contenido o no). Por ejemplo si
definimos var oficina = []; oficina[25] = 'Oficial Jos Vargas Corononado; la propiedad oficina.length devuelve
26, nmero de elementos para el array (de 1 a 25 ms el correspondiente al 0).
MS SOBRE LOS ARRAYS

Los arrays son elementos de gran importancia dentro de JavaScript y an queda mucho que estudiar sobre ellos.
De momento el conocimiento adquirido nos sirve para seguir avanzando, pero ms adelante volveremos a
explicar ms cosas relacionadas con los arrays.

EJEMPLO

Escribe el siguiente cdigo y gurdalo en un archivo de extensin html (puedes cambiar la ruta de la imagen si
lo deseas):

<html> <head> <title>Curso JavaScript aprenderaprogramar.com</title> <meta charset="utf-8">


<script type="text/javascript">
function mostrarMensaje1() {
var mes; mes =[]; mes[0] = undefined; mes[1] = 'enero'; mes[2]='febrero'; mes[3]='marzo'; mes[4] =
'abril'; mes[5]='mayo';
mes[6] = 'junio'; mes[7]='julio'; mes[8]='agosto'; mes[9]='septiembre'; mes[10]='octubre';
mes[11]='noviembre'; mes[12]='diciembre';
var pais = ['Mexico', 'Espaa', 'Argentina', 'Chile', 'Colombia', 'Venezuela', 'Per', 'Costa Rica'];
var msg, msg2; msg = 'El pas de ndice 2 es: ' + pais[2] + '\n\n';
var datos = ['Fro', 33, false, 'nube', -11.22, true, 3.33, 'variado'];
msg = msg + 'En el indice 1 de datos tenemos: ' + datos[1] + ' (numrico), p.ej. multiplica por 2: ' +
(datos[1]*2) + '\n\n';
msg = msg + 'En el indice 2 de datos tenemos: ' + datos[2] + ' y es booleano\n\n';
msg = msg + 'En el ndice 3 de datos tenemos: ' + datos[3] + ' y es un texto \n\n';
msg = msg + 'En el ndice 40 de datos tenemos: ' + datos[40] + '\n\n';
var fruta = [];
msg = msg + 'En el ndice 0 de fruta tenemos: ' + fruta[0] + ' y en el ndice 30 '+ fruta[30] + '\n\n';
fruta[1] = 'pera'; fruta[2] = undefined; fruta[30] = 'manzana';
msg = msg + 'En el ndice 0 de fruta tenemos: ' + fruta[0] + ' y en el ndice 30 '+ fruta[30] + '\n\n';
alert (msg);
msg2 = 'Mostramos el array pas: ' + pais + '\n\n';
msg2 = msg2 + 'Mostramos el array fruta: ' + fruta + '\n\n';
msg2 = msg2 + 'Mostramos el array datos: ' + datos + '\n\n';
msg2 = msg2 + 'Mostramos el array mes: ' + mes + '\n\n';
msg2 = msg2 + 'Intentamos sumar o concatenar arrays: ' + (pais + fruta) +'\n\n';
msg2 = msg2 + 'Valor length en el array pais es: ' + (pais.length) + ' y en el array fruta es ' +
fruta.length +'\n\n';
alert (msg2);
var ejemplo = new Array(); alert('Contenido de ejemplo: '+ ejemplo); ejemplo [0]= 1; ejemplo [2]=
44;
alert('Contenido de ejemplo: '+ ejemplo);
}
</script>
</head>
<body> <div> <p>Aqu un prrafo de texto situado antes de la imagen, dentro de un div
contenedor</p>
<img onclick="mostrarMensaje1()" src="http://i.imgur.com/afC0L.jpg" alt="Notepad++"
title="Notepad++, un til editor de texto">
<p onclick ="alert('Alerta JavaScript')" style="color: #D2691E;">Aqu otro prrafo de texto.
JavaScript es un lenguaje utilizado para dotar de efectos dinmicos a las pginas web. </p> </div>
</body> </html>

Visualiza el resultado y comprueba que la pgina web se muestra con normalidad y que JavaScript se ejecuta
con normalidad cuando haces click sobre la imagen.

El resultado esperado esque se muestre lo siguiente (comprubalo):

El pas de ndice 2 es: Argentina


En el indice 1 de datos tenemos: 33 (numrico), p.ej. multiplica por 2: 66
En el indice 2 de datos tenemos: false y es booleano
En el ndice 3 de datos tenemos: nube y es un texto
En el ndice 40 de datos tenemos: undefined
En el ndice 0 de fruta tenemos: undefined y en el ndice 30 undefined
En el ndice 0 de fruta tenemos: undefined y en el ndice 30 manzana
Mostramos el array pas: Mexico,Espaa,Argentina,Chile,Colombia,Venezuela,Per,Costa Rica
Mostramos el array fruta: ,pera,,,,,,,,,,,,,,,,,,,,,,,,,,,,,manzana
Mostramos el array datos: Fro,33,false,nube,-11.22,true,3.33,variado
Mostramos el array mes:
,enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre
Intentamos sumar o concatenar arrays: Mexico,Espaa,Argentina,Chile,Colombia,Venezuela,Per,Costa
Rica,pera,,,,,,,,,,,,,,,,,,,,,,,,,,,,,manzana
Valor length en el array pais es: 8 y en el array fruta es 31
Contenido de ejemplo:
Contenido de ejemplo: 1,,44

Fjate en las siguientes cuestiones: un array en JavaScript puede contener elementos de distintos tipos. El
contenido de un elemento no definido es undefined. Un array puede tener elementos intermedios no definidos.
Cuando tratamos de mostrar por pantalla un array, se produce una conversin automtica a texto. Esto no
significa que el array se un texto ni un tipo String, sino simplemente que el intrprete hace una conversin
automtica para tratar de ofrecer un resultado. En el caso de elementos no definidos, al mostrarse el array se
muestran espacios separados por comas.

Funciones que retornan un valor.

Son comunes los casos donde una funcin, luego de hacer un proceso,
retorne un valor.
Ejemplo 1: Confeccionar una funcin que reciba un valor entero
comprendido entre 1 y 5. Luego retornar en castellano el valor recibido.
<html>
<head>
</head>
<body>
<script type="text/javascript">

function convertirCastellano(x)
{
if (x==1)
return "uno";
else
if (x==2)
return "dos";
else
if (x==3)
return "tres";
else
if (x==4)
return "cuatro";
else
if (x==5)
return "cinco";
else
return "valor incorrecto";
}

var valor;
valor=prompt("Ingrese un valor entre 1 y
5","");
valor=parseInt(valor);
var r;
r=convertirCastellano(valor);
document.write(r);

</script>
</body>
</html>
Podemos ver que el valor retornado por una funcin lo indicamos por medio
de la palabra clave return. Cuando se llama a la funcin, debemos asignar
el nombre de la funcin a una variable, ya que la misma retorna un valor.
Una funcin puede tener varios parmetros, pero slo puede retornar un
nico valor.
La estructura condicional if de este ejemplo puede ser remplazada por la
instruccin switch, la funcin queda codificada de la siguiente manera:
function convertirCastellano(x)
{
switch (x)
{
case 1:return "uno";
case 2:return "dos";
case 3:return "tres";
case 4:return "cuatro";
case 5:return "cinco";
default:return "valor incorrecto";
}
}
Esta es una forma ms elegante que una serie de if anidados. La instruccin
switch analiza el contenido de la variable x con respecto al valor de cada
caso. En la situacin de ser igual, ejecuta el bloque seguido de los 2 puntos
hasta que encuentra la instruccin return o break.

Ejemplo 2: Confeccionar una funcin que reciba una fecha con el formato de
da, mes y ao y retorne un string con un formato similar a: "Hoy es 10 de
junio de 2013".
<html>
<head>
</head>
<body>
<script type="text/javascript">

function formatearFecha(dia,mes,ao)
{
var s='Hoy es '+dia+' de ';
switch (mes) {
case 1:s=s+'enero ';
break;
case 2:s=s+'febrero ';
break;
case 3:s=s+'marzo ';
break;
case 4:s=s+'abril ';
break;
case 5:s=s+'mayo ';
break;
case 6:s=s+'junio ';
break;
case 7:s=s+'julio ';
break;
case 8:s=s+'agosto ';
break;
case 9:s=s+'septiembre ';
break;
case 10:s=s+'octubre ';
break;
case 11:s=s+'noviembre ';
break;
case 12:s=s+'diciembre ';
break;
} //fin del switch
s=s+'de '+ao;
return s;
}

document.write(formatearFecha(11,6,2013));

</script>
</body>
</html>

Analicemos un poco la funcin formatearFecha. Llegan tres parmetros con


el da, mes y ao. Definimos e inicializamos una variable con:
var s='Hoy es '+dia+' de ';
Luego le concatenamos o sumamos el mes:
s=s+'enero ';
Esto, si el parmetro mes tiene un uno. Observemos como acumulamos lo
que tiene 's' ms el string 'enero '. En caso de hacer s='enero ' perderamos
el valor previo que tena la variable s.
Por ltimo concatenamos el ao:
s=s+'de '+ao;
Cuando se llama a la funcin directamente, al valor devuelto se lo enviamos
a la funcin write del objeto document. Esto ltimo lo podemos hacer en dos
pasos:
var fec= formatearFecha(11,6,2013);
document.write(fec);
Guardamos en la variable 'fec' el string devuelto por la funcin.

Programacin orientada a objetos.

Un objeto es una estructura que contiene tanto las variables (llamadas


propiedades) como las funciones que manipulan dichas variables (llamadas
mtodos). A partir de esta estructura se ha creado un nuevo modelo de
programacin (la programacin orientada a objetos) que atribuye a los
mismos propiedades como herencia o polimorfismo. Como veremos,
JavaScript simplifica en algo este modelo y hace una programacin hbrida
entre la programacin estructurada y la programacin orientada a objetos.
El modelo de la programacin orientada a objetos normal y corriente separa
los mismos en dos: clases e instancias (objetos). Las primeras son entes
ms abstractos que definen un conjunto determinado de objetos. Las
segundas son miembros de una clase, poseyendo las mismas propiedades
que la clase a la cual pertenecen.

Propiedades y mtodos.
Para acceder a los mtodos y propiedades de un objeto debemos utilizar la
siguiente sintaxis:
objeto.propiedad
objeto.metodo(parametros)

Conceptos Bsicos.
Objetos
Son todas las cosas con identidad propia. Se relacionan entre si. Poseen
caractersticas (atributos) y tienen responsabilidades (funciones, mtodos)
que deben cumplir. Son ejemplares (instancias) de una clase y conocen a la
clase a la cual pertenecen.

Atributos o propiedades
Son las caractersticas, cualidades distintivas de cada objeto. Deben ser
mnimos para poder realizar todas las operaciones que requiere la
aplicacin.

Ejemplos de objetos del mundo real:


- Casa:
atributos: tamao, precio, cantidad de habitaciones, etc.;
responsabilidades: comodidad, seguridad, etc.
- Mesa:
atributos: altura, largo, ancho, etc.;
responsabilidades: contener elementos.
- Ventana:
atributos: tamao, color, etc.;
responsabilidades: abrirse, cerrarse, etc.
Ejemplos de objetos del mundo de la programacin:
- Ventana:
atributos: tamao, color, etc.;
responsabilidades: mostrar ttulo,achicarse
etc.
Responsabilidades o Mtodos.
Son las responsabilidades que debe cumplir la clase. El objetivo de un
mtodo es ejecutar las actividades que tiene encomendada la clase.
Es un algoritmo (conjunto de operaciones) que se ejecuta en respuesta a un
mensaje; respuestas a mensajes para satisfacer peticiones.
Un mtodo consiste en el nombre de la operacin y sus argumentos. El
nombre del mtodo identifica una operacin que se ejecuta.
Un mtodo est determinado por la clase del objeto receptor, todos los
objetos de una clase usan el mismo mtodo en respuesta a mensajes
similares.
La interpretacin de un mensaje (seleccin del mtodo ejecutado) depende
del receptor y puede variar con distintos receptores, es decir, puede variar
de una clase a otra.

Clases
Una clase es un molde para objetos que poseen las mismas caractersticas
(que pueden recibir los mismos mensajes y responden de la misma
manera).
Una clase es una representacin de una idea o concepto. Unidad que
encapsula cdigos y datos para los mtodos (operaciones).
Todos los ejemplares de una clase se comportan de forma similar (invocan
el mismo mtodo) en respuesta a mensajes similares.
La clase a la cual pertenece un objeto determina el comportamiento del
objeto.
Una clase tiene encomendadas actividades que ejecutan los mtodos.
Las clases estn definidas por:
- Atributos (Propiedades),
- Comportamiento (operaciones o mtodos) y
- Relaciones con otros objetos.
Una aplicacin es un conjunto de objetos de determinadas clases.

Clase Date

JavaScript dispone de varias clases predefinidas para acceder a muchas de


las funciones normales de cualquier lenguaje, como puede ser el manejo de
vectores o el de fechas.

Esta clase nos permitir manejar fechas y horas. Se invoca as:


fecha = new Date();//creacin de un objeto de la clase Date
fecha = new Date(ao, mes, dia);
fecha = new Date(ao, mes, dia, hora, minuto, segundo);
Si no utilizamos parmetros, el objeto fecha contendr la fecha y hora
actuales, obtenidas del reloj de nuestra computadora. En caso contrario hay
que tener en cuenta que los meses comienzan por cero. As, por ejemplo:
navidad06 = new Date(2006, 11, 25)
El objeto Date dispone, entre otros, de los siguientes mtodos:
getYear()
setYear(ao)
Obtiene y coloca, respectivamente, el ao de la fecha.
ste se devuelve como nmero de 4 dgitos excepto en el
caso en que est entre 1900 y 1999, en cuyo caso
devolver las dos ltimas cifras.
getFullYear()
setFullYear(ao)
Realizan la misma funcin que los anteriores, pero sin
tanta complicacin, ya que siempre devuelven nmeros
con todos sus dgitos.
getMonth()
setMonth(mes)
getDate()
setDate(dia)
getHours()
setHours(horas)
getMinutes()
setMinutes(minutos)
getSeconds()
setSeconds(segundos)
Obtienen y colocan, respectivamente, el mes, da, hora,
minuto y segundo de la fecha.
getDay()
Devuelve el da de la semana de la fecha en forma de
nmero que va del 0 (domingo) al 6 (sbado)
Ejemplo: Mostrar en una pgina la fecha y la hora actual.
<HTML>
<HEAD>

<SCRIPT type="text/javascript">
function mostrarFechaHora()
{
var fecha
fecha=new Date();
document.write('Hoy es ');
document.write(fecha.getDate()+'/');
document.write((fecha.getMonth()+1)+'/');
document.write(fecha.getFullYear());
document.write('<br>');
document.write('Es la hora ');
document.write(fecha.getHours()+':');
document.write(fecha.getMinutes()+':');
document.write(fecha.getSeconds());
}

//Llamada a la funcin
mostrarFechaHora();
</SCRIPT>

</HEAD>
<BODY>

</BODY>

</HTML>

En este problema hemos creado un objeto de la clase Date. Luego


llamamos una serie de mtodos que nos retornan datos sobre la fecha y
hora actual del equipo de computacin donde se est ejecutando el
navegador.
Es bueno notar que para llamar a los mtodos disponemos:
<nombre de objeto>.<nombre de mtodo>(parmetros)

Clase Array

Un vector es una estructura de datos que permite almacenar un


CONJUNTO de datos.
Con un nico nombre se define un vector y por medio de un subndice
hacemos referencia a cada elemento del mismo (componente).

Ejemplo 1: Crear un vector para almacenar los cinco sueldos de operarios y


luego mostrar el total de gastos en sueldos (cada actividad en una funcin).
<html>
<head>
</head>
<body>
<script type="text/javascript">
function cargar(sueldos)
{
var f;
for(f=0;f<sueldos.length;f++)
{
var v;
v=prompt('Ingrese sueldo:','');
sueldos[f]=parseInt(v);
}
}

function calcularGastos(sueldos)
{
var total=0;
var f;
for(f=0;f<sueldos.length;f++)
{
total=total+sueldos[f];
}
document.write('Listado de sueldos<br>');
for(f=0;f<sueldos.length;f++)
{
document.write(sueldos[f]+'<br>');
}
document.write('Total de gastos en
sueldos:'+total);
}

var sueldos;
sueldos=new Array(5);
cargar(sueldos);
calcularGastos(sueldos);
</script>
</body>
</html>
Recordemos que el programa comienza a ejecutarse a partir de las lneas
que se encuentran fuera de la funciones:
var sueldos;
sueldos=new Array(5);
cargar(sueldos);
calcularGastos(sueldos);
Lo primero, definimos una variable y posteriormente creamos un objeto de
la clase Array, indicndole que queremos almacenar 5 valores.
Llamamos a la funcin cargar envindole el vector. En la funcin, a travs
de un ciclo for recorremos las distintas componentes del vector y
almacenamos valores enteros que ingresamos por teclado.
Para conocer el tamao del vector accedemos a la propiedad length de la
clase Array.
En la segunda funcin sumamos todas las componentes del vector,
imprimimos en la pgina los valores y el total de gastos.

Ejemplo 2: Crear un vector con elementos de tipo string. Almacenar los


meses de ao. En otra funcin solicitar el ingreso de un nmero entre 1 y
12. Mostrar a qu mes corresponde y cuntos das tiene dicho mes.
<html>
<head>
</head>
<body>

<script type="text/javascript">
function mostrarFecha(meses,dias)
{
var num;
num=prompt('Ingrese nmero de mes:','');
num=parseInt(num);
document.write('Corresponde al
mes:'+meses[num-1]);
document.write('<br>');
document.write('Tiene '+dias[num-1]+'
das');
}
var meses;
meses=new Array(12);
meses[0]='Enero';
meses[1]='Febrero';
meses[2]='Marzo';
meses[3]='Abril';
meses[4]='Mayo';
meses[5]='Junio';
meses[6]='Julio';
meses[7]='Agosto';
meses[8]='Septiembre';
meses[9]='Octubre';
meses[10]='Noviembre';
meses[11]='Diciembre';

var dias;
dias=new Array(12);
dias[0]=31;
dias[1]=28;
dias[2]=31;
dias[3]=30;
dias[4]=31;
dias[5]=30;
dias[6]=31;
dias[7]=31;
dias[8]=30;
dias[9]=31;
dias[10]=30;
dias[11]=31;
mostrarFecha(meses,dias);
</script>

</body>
</html>
En este problema definimos dos vectores, uno para almacenar los meses y
otro los das. Decimos que se trata de vectores paralelos porque en la
componente cero del vector meses almacenamos el string 'Enero' y en el
vector dias, la cantidad de das del mes de enero.
Es importante notar que cuando imprimimos, disponemos como subndice el
valor ingresado menos 1, esto debido a que normalmente el operador de
nuestro programa carga un valor comprendido entre 1 y 12. Recordar que
los vectores comienzan a numerarse a partir de la componente cero.
document.write('Corresponde al mes:'+meses[num-1]);

Clase Math

Esta clase es un contenedor que tiene diversas constantes (como Math.E y


Math.PI) y los siguientes mtodos matemticos:
Resultado
Expresin de
Mtodo Descripcin del
ejemplo
ejemplo
abs Valor absoluto Math.abs(-2) 2
sin, cos, Funciones trigonomtricas, reciben el
Math.cos(Math.PI) -1
tan argumento en radianes
asin, acos,
Funciones trigonomtricas inversas Math.asin(1) 1.57
atan
exp, log Exponenciacin y logaritmo, base E Math.log(Math.E) 1
Devuelve el entero ms pequeo mayor o igual
ceil Math.ceil(-2.7) -2
al argumento
Devuelve el entero ms grande menor o igual al
floor Math.floor(-2.7) -3
argumento
Devuelve el entero ms cercano o igual al
round Math.round(-2.7) -3
argumento
Devuelve el menor (o mayor) de sus dos
min, max Math.min(2,4) 2
argumentos
Exponenciacin, siendo el primer argumento la
pow Math.pow(2,3) 8
base y el segundo el exponente
sqrt Raz cuadrada Math.sqrt(25) 5
Genera un valor aleatorio comprendido entre 0
random Math.random() Ej. 0.7345
y 1.

Ejemplo: Confeccionar un programa que permita cargar un valor


comprendido entre 1 y 10. Luego generar un valor aleatorio entre 1 y 10,
mostrar un mensaje con el nmero sorteado e indicar si gan o perdi:
<html>
<head>
</head>
<body>

<script type="text/javascript">
var selec=prompt('Ingrese un valor entre 1 y
10','');
selec=parseInt(selec);
var num=parseInt(Math.random()*10)+1;
if (num==selec)
document.write('Gan el nmero que se
sorte es el '+ num);
else
document.write('Lo siento se sorte el
valor '+num+' y usted eligi el '+selec);
</script>

</body>
</html>

Para generar un valor aleatorio comprendido entre 1 y 10 debemos plantear


lo siguiente:
var num=parseInt(Math.random()*10)+1;
Al multiplicar Math.random() por 10, nos genera un valor aleatorio
comprendido entre un valor mayor a 0 y menor a 10, luego, con la funcin
parseInt, obtenemos slo la parte entera. Finalmente sumamos uno.
El valor que carg el operador se encuentra en:
var selec=prompt('Ingrese un valor entre 1 y 10','');
Con un simple if validamos si coinciden los valores (el generado y el
ingresado por teclado)

Clase String

Un string consiste en uno o ms caracteres encerrados entre simple o doble


comillas.
Concatenacin de cadenas (+)
JavaScript permite concatenar cadenas utilizando el operador +.
El siguiente fragmento de cdigo concatena tres cadenas para producir su
salida:
var final='La entrada tiene ' + contador + ' caracteres.';
Dos de las cadenas concatenadas son cadenas literales. La del medio es un
entero que automticamente se convierte a cadena y luego se concatena
con las otras.

Propiedad length
Retorna la cantidad de caracteres de un objeto String.
var nom='Juan';
document.write(nom.length); //Resultado 4
Mtodos
charAt(pos)
Retorna el carcter del ndice especificado. Comienzan a numerarse de la
posicin cero.
var nombre='juan';
var caracterPrimero=nombre.charAt(0);
substring (posinicial, posfinal)
Retorna un String extrada de otro, desde el carcter 'posinicial' hasta el
'posfinal'-1:
cadena3=cadena1.substring(2,5);
En este ejemplo, "cadena3" contendr los caracteres 2, 3, 4 sin incluir el 5
de cadena1 (Cuidado que comienza en cero).
indexOf (subCadena)
Devuelve la posicin de la subcadena dentro de la cadena, o -1 en caso de
no estar.
Tener en cuenta que puede retornar 0 si la subcadena coincide desde el
primer carcter.
var nombre='Rodriguez Pablo';
var pos=nombre.indexOf('Pablo');
if (pos!=-1)
document.write ('Est el nombre Pablo en la variable nombre');
toUpperCase()
Convierte todos los caracteres del String que invoca el mtodo a
maysculas:
cadena1=cadena1.toUpperCase();
Luego de esto, cadena1 tiene todos los caracteres convertidos a
maysculas.
toLowerCase()
Convierte todos los caracteres del String que invoca el mtodo a
minsculas:
cadena1=cadena1.toLowerCase();
Luego de esto, cadena1 tiene todos los caracteres convertidos a
minsculas.
Ejemplo: Cargar un string por teclado y luego llamar a los distintos mtodos
de la clase String y la propiedad length.
<html>
<head>
</head>
<body>

<script type="text/javascript">
var cadena=prompt('Ingrese una cadena:','');
document.write('La cadena ingresada
es:'+cadena);
document.write('<br>');
document.write('La cantidad de caracteres
son:'+cadena.length);
document.write('<br>');
document.write('El primer carcter
es:'+cadena.charAt(0));
document.write('<br>');
document.write('Los primeros 3 caracteres
son:'+cadena.substring(0,3));
document.write('<br>');
if (cadena.indexOf('hola')!=-1)
document.write('Se ingres la subcadena
hola');
else
document.write('No se ingres la subcadena
hola');
document.write('<br>');
document.write('La cadena convertida a
maysculas es:'+cadena.toUpperCase());
document.write('<br>');
document.write('La cadena convertida a
minsculas es:'+cadena.toLowerCase());
document.write('<br>');
</script>

</body>
</html>

Formularios y Eventos.

El uso de Javascript en los formularios HTML se hace fundamentalmente


con el objetivo de validar los datos ingresados. Se hace esta actividad en el
cliente (navegador) para desligar de esta actividad al servidor que recibir
los datos ingresados por el usuario.
Esta posibilidad de hacer pequeos programas que se ejecutan en el
navegador, evitan intercambios innecesarios entre el cliente y el servidor
(navegador y sitio web).
Suponemos que conoce las marcas para la creacin de formularios en una
pgina web:
form <form> ... </form>
text <input type="text">
password <input type="password">
textarea <textarea> ... </textarea>
button <input type="button">
submit <input type="submit">
reset <input type="reset">
checkbox <input type="checkbox">
radio <input type="radio">
select <select> ... </select>
hidden <input type="hidden">
El navegador crea un objeto por cada control visual que aparece dentro de
la pgina. Nosotros podemos acceder posteriormente desde JavaScript a
dichos objetos.
El objeto principal es el FORM que contendr todos los otros objetos: TEXT
(editor de lneas), TEXTAREA (editor de varias lneas), etc.
Nuestra actividad en JavaScript es procesar los eventos que generan estos
controles (un evento es una accin que se dispara, por ejemplo si se
presiona un botn).
Vamos a hacer un problema muy sencillo empleando el lenguaje Javascript;
dispondremos un botn y cada vez que se presione, mostraremos un
contador:
<html>
<head>
</head>
<body>

<script type="text/javascript">
var contador=0;
function incrementar()
{
contador++;
alert('El contador ahora vale :' + contador);
}
</script>

<form>
<input type="button" onClick="incrementar()"
value="incrementar">
</form>
</body>
</html>
A los eventos de los objetos HTML se les asocia una funcin, dicha funcin
se ejecuta cuando se dispara el evento respectivo. En este caso cada vez
que presionamos el botn, se llama a la funcin incrementar, en la misma
incrementamos la variable contador en uno. Hay que tener en cuenta que a
la variable contador la definimos fuera de la funcin para que no se inicialice
cada vez que se dispara el evento.
La funcin alert crea una ventana que puede mostrar un mensaje.

Controles FORM, BUTTON y TEXT.

Hasta ahora hemos visto como crear un formulario con controles de tipo
BUTTON. Agregamos un control de tipo TEXT (permite al operador cargar
caracteres por teclado).
Ahora veremos la importancia de definir un id a todo control de un
formulario.
Con un ejemplo veremos estos controles: Confeccionar un formulario que
permita ingresar el nombre y edad de una persona:
<html>
<head></head>
<body>

<script type="text/javascript">
function mostrar()
{
var
nom=document.getElementById('nombre').value;
var ed=document.getElementById('edad').value;
alert('Ingres el nombre:' + nom);
alert('Y la edad:' + ed);
}
</script>

<form>
Ingrese su nombre:
<input type="text" id="nombre"><br>
Ingrese su edad:
<input type="text" id="edad"><br>
<input type="button" value="Confirmar"
onClick="mostrar()">
</form>

</body>
</html>
En este problema tenemos cuatro controles: 1 FORM, 1 BUTTON, 2 TEXT.
El evento que se dispara al presionar el botn se llama mostrar.
La funcin 'mostrar' accede a los contenidos de los dos controles de tipo
TEXT:
var nom=document.getElementById('nombre').value;
var ed=document.getElementById('edad').value;
Para hacer ms clara la funcin guardamos en dos variables auxiliares los
contenidos de los controles de tipo TEXT.
La propiedad "id" es un identificar nico para cualquier marca HTML que
luego nos permite desde Javascript acceder a dicho elemento.
El mtodo getElementById nos retorna una referencia del objeto HTML que
le pasamos como parmetro. a partir de este objeto accedemos a la
propiedad value que almacena el valor ingresado por el operador en el
control TEXT.
Luego de extraer los valores ingresados por el operador los mostramos
utilizando la funcin alert:
var nom=document.getElementById('nombre').value;
var ed=document.getElementById('edad').value;
alert('Ingres el nombre:' + nom);
alert('Y la edad:' + ed);
Control PASSWORD

Esta marca es una variante de la de tipo "TEXT". La diferencia fundamental


es que cuando se carga un texto en el campo de edicin slo muestra
asteriscos en pantalla, es decir, es fundamental para el ingreso de claves y
para que otros usuarios no vean los caracteres que tipeamos.

La mayora de las veces este dato se procesa en el servidor. Pero podemos


en el cliente (es decir en el navegador) verificar si ha ingresado una
cantidad correcta de caracteres, por ejemplo.

Ejemplo: Codificar una pgina que permita ingresar una password y luego
muestre una ventana de alerta si tiene menos de 5 caracteres.
<html>
<head>
</head>
<body>

<script type="text/javascript">
function verificar()
{
var
clave=document.getElementById('clave').value;
if (clave.length<5)
{
alert('La clave no puede tener menos de 5
caracteres!!!');
}
else
{
alert('Largo de clave correcta');
}
}
</script>

<form>
Ingrese una clave:
<input type="password" id="clave">
<br>
<input type="button" value="Confirmar"
onClick="verificar()">
</form>
</body>
</html>
En este problema debemos observar que cuando ingresamos caracteres
dentro del campo de edicin slo vemos asteriscos, pero realmente en
memoria se almacenan los caracteres tipeados. Si queremos mostrar los
caracteres ingresados debemos acceder mediante el mtodo
getElementById a la marca HTML clave:
var clave=document.getElementById('clave').value;
Normalmente, a este valor no lo mostraremos dentro de la pgina, sino se
perdera el objetivo de este control (ocultar los caracteres tipeados).
Si necesitamos saber la cantidad de caracteres que tiene un string
accedemos a la propiedad length que retorna la cantidad de caracteres.
if (clave.length<5)

Control SELECT

Este otro objeto visual que podemos disponer en un FORM permite realizar
la seleccin de un string de una lista y tener asociado al mismo un valor no
visible. El objetivo fundamental en JavaScript es determinar qu elemento
est seleccionado y qu valor tiene asociado. Esto lo hacemos cuando
ocurre el evento onChange.

Para determinar la posicin del ndice seleccionado en la lista:


document.getElementById('select1').selectedIndex;
Considerando que el objeto SELECT se llama select1 accedemos a la
propiedad selectedIndex (almacena la posicin del string seleccionado de la
lista, numerando a partir de cero).
Para determinar el string seleccionado:
document.getElementById('select1').options[document.getElementById('selec
t1').selectedIndex].text;
Es decir que el objeto select1 tiene otra propiedad llamada options, a la que
accedemos por medio de un subndice, al string de una determinada
posicin.

Hay problemas en los que solamente necesitaremos el string almacenado


en el objeto SELECT y no el valor asociado (no es obligatorio asociar un
valor a cada string).
Y por ltimo con esta expresin accedemos al valor asociado al string:
document.getElementById('select1').options[document.getElementById('selec
t1').selectedIndex].value;
Un ejemplo completo que muestra el empleo de un control SELECT es:
<html>
<head>
</head>
<body>

<script type="text/javascript">
function cambiarColor()
{
var
seleccion=document.getElementById('select1');

document.getElementById('text1').value=seleccio
n.selectedIndex;

document.getElementById('text2').value=seleccio
n.options[seleccion.selectedIndex].text;

document.getElementById('text3').value=seleccio
n.options[seleccion.selectedIndex].value;
}
</script>

<form>
<select id="select1"
onChange="cambiarColor()">
<option value="0xff0000">Rojo</option>
<option value="0x00ff00">Verde</option>
<option value="0x0000ff">Azul</option>
</select>
<br>
Nmero de ndice seleccionado del objeto
SELECT:<input type="text" id="text1"><br>
Texto seleccionado:<input type="text"
id="text2"><br>
Valor asociado:<input type="text"
id="text3"><br>
</form>
</body>
</html>
Se debe analizar en profundidad este problema para comprender
primeramente la creacin del objeto SELECT en HTML, y cmo acceder
luego a sus valores desde Javascript.
Es importante para el objeto SELECT definir qu funcin llamar cuando
ocurra un cambio: onChange="cambiarColor()".
Por cada opcin del objeto SELECT tenemos una lnea:

Donde Rojo es el string que se visualiza en el objeto SELECT y value es el


valor asociado a dicho string.

Analizando la funcin cambiarColor() podemos ver cmo obtenemos los


valores fundamentales del objeto SELECT.

Control CHECKBOX

El control CHECKBOX es el cuadradito que puede tener dos estados


(seleccionado o no seleccionado).
Para conocer su funcionamiento y ver como podemos acceder a su estado
desde Javascript haremos un pequea pgina.
Ejemplo: Confeccionar una pgina que muestre 4 lenguajes de
programacin que el usuario puede seleccionar si los conoce. Luego
mostrar un mensaje indicando la cantidad de lenguajes que ha seleccionado
el operador.
<html>
<head>
</head>
<body>

<script type="text/javascript">
function contarSeleccionados()
{
var cant=0;
if
(document.getElementById('checkbox1').checked)
{
cant++;
}
if
(document.getElementById('checkbox2').checked)
{
cant++;
}
if
(document.getElementById('checkbox3').checked)
{
cant++;
}
if
(document.getElementById('checkbox4').checked)
{
cant++;
}
alert('Conoce ' + cant + ' lenguajes');
}
</script>

<form>
<input type="checkbox"
id="checkbox1">JavaScript
<br>
<input type="checkbox" id="checkbox2">PHP
<br>
<input type="checkbox" id="checkbox3">JSP
<br>
<input type="checkbox" id="checkbox4">VB.Net
<br>
<input type="button" value="Mostrar"
onClick="contarSeleccionados()">
</form>
</body>
</html>
Cuando se presiona el botn se llama a la funcin Javascript
contarSeleccionados(). En la misma verificamos uno a uno cada control
checkbox accediendo a la propiedad checked del elemento que almacena
true o false segn est o no seleccionado el control:
Disponemos un 'if' para cada checkbox:
if (document.getElementById('checkbox1').checked)
{
cant++;
}
Como la propiedad checked almacena un true o false podemos utilizar dicho
valor directamente como valor de la condicin en lugar de codificar:
if (document.getElementById('checkbox1').checked==true)
{
cant++;
}
Al contador 'cant' lo definimos e inicializamos en cero previo a los cuatro if.
Mostramos finalmente el resultado final.

Control RADIO

Los objetos RADIO tienen sentido cuando disponemos varios elementos.


Slo uno puede estar seleccionado del conjunto.
Ejemplo: Mostrar cuatro objetos de tipo RADIO que permitan seleccionar los
estudios que tiene un usuario:
<html>
<head>
</head>
<body>

<script type="text/javascript">
function mostrarSeleccionado()
{
if
(document.getElementById('radio1').checked)
{
alert('no tienes estudios');
}
if
(document.getElementById('radio2').checked)
{
alert('tienes estudios primarios');
}
if
(document.getElementById('radio3').checked)
{
alert('tienes estudios secundarios');
}
if
(document.getElementById('radio4').checked)
{
alert('tienes estudios universitarios');
}
}
</script>

<form>
<input type="radio" id="radio1"
name="estudios">Sin estudios
<br>
<input type="radio" id="radio2"
name="estudios">Primarios
<br>
<input type="radio" id="radio3"
name="estudios">Secundarios
<br>
<input type="radio" id="radio4"
name="estudios">Universitarios
<br>
<input type="button" value="Mostrar"
onClick="mostrarSeleccionado()">
</form>
</body>
</html>
Es importante notar que todos los objetos de tipo RADIO tienen definida la
propiedad name con el mismo valor (esto permite especificar que queremos
que los radios estn relacionados entre si)
Luego podemos acceder a cada elemento mediante el mtodo
getElementById para consultar la propiedad checked:
if (document.getElementById('radio1').checked)
{
alert('no tienes estudios');
}
Igual que el checkbox, la propiedad checked retorna true o false, segn est
o no seleccionado el control radio.

Control TEXTAREA

Este control es similar al control TEXT, salvo que permite el ingreso de


muchas lneas de texto.
La marca TEXTAREA en HTML tiene dos propiedades: rows y cols que nos
permiten indicar la cantidad de filas y columnas a mostrar en pantalla.
Ejemplo: Solicitar la carga del mail y el curriculum de una persona. Mostrar
un mensaje si el curriculum supera los 2000 caracteres.
<html>
<head>
</head>
<body>

<script type="text/javascript">
function controlarCaracteres()
{
if
(document.getElementById('curriculum').value.le
ngth>2000)
{
alert('curriculum muy largo');
}
else
{
alert('datos correctos');
}
}
</script>

<form>
<textarea id="curriculum" rows="10" cols="50"
></textarea>
<br>
<input type="button" value="Mostrar"
onClick="controlarCaracteres()">
</form>
</body>
</html>
Para saber el largo de la cadena cargada:
if (document.getElementById('curriculum').value.length>2000)
accedemos a la propiedad length.

Eventos onFocus y onBlur

El evento onFocus se dispara cuando el objeto toma foco y el evento onBlur


cuando el objeto pierde el foco.
Ejemplo: Implementar un formulario que solicite la carga del nombre y la
edad de una persona. Cuando el control tome foco borrar el contenido
actual, al abandonar el mismo, mostrar un mensaje de alerta si el mismo
est vaco. Mostrar en las propiedades value de los controles text los
mensajes "nombre" y "mail" respectivamente.

<html>
<head></head>
<body>
<script type="text/javascript">
function vaciar(control)
{
control.value='';
}
function verificarEntrada(control)
{
if (control.value=='')
alert('Debe ingresar datos');
}
</script>

<form>
<input type="text" id="nombre"
onFocus="vaciar(this)"
onBlur="verificarEntrada(this)"
value="nombre"><br>
<input type="text" id="edad"
onFocus="vaciar(this)"
onBlur="verificarEntrada(this)" value="mail">
<br>
<input type="button" value="Confirmar">
</form>

</body>
</html>
A cada control de tipo TEXT le inicializamos los eventos onFocus y onBlur.
Tambin cargamos las propiedad value para mostrar un texto dentro del
control. Le indicamos, para el evento onFocus la funcin vaciar, pasando
como parmetro la palabra clave this que significa la direccin del objeto
que emiti el evento. En la funcin propiamente dicha, accedemos a la
propiedad value y borramos su contenido. Esto nos permite definir una
nica funcin para vaciar los dos controles.
De forma similar, para el evento onBlur llamamos a la funcin
verificarEntrada donde analizamos si se ha ingresado algn valor dentro del
control, en caso de tener un string vaco procedemos a mostrar una ventana
de alerta.

Eventos onMouseOver y onMouseOut

El evento onMouseOver se ejecuta cuando pasamos la flecha del mouse


sobre un elemento HTML y el evento onMouseOut cuando la flecha
abandona el mismo.

Para probar estos eventos implementaremos una pgina que cambie el


color de fondo del documento.
Implementaremos una funcin que cambie el color con un valor que llegue
como parmetro. Cuando retiramos la flecha del mouse volvemos a pintar
de blanco el fondo del documento:

<html>
<head></head>
<body>

<script type="text/javascript">
function pintar(col)
{
document.bgColor=col;
}
</script>

<a href="pagina1.html"
onMouseOver="pintar('#ff0000')"
onMouseOut="pintar('#ffffff')">Rojo</a>
-
<a href="pagina1.html"
onMouseOver="pintar('#00ff00')"
onMouseOut="pintar('#ffffff')">Verde</a>
-
<a href="pagina1.html"
onMouseOver="pintar('#0000ff')"
onMouseOut="pintar('#ffffff')">Azul</a>
</body>
</html>
Las llamadas a las funciones las hacemos inicializando las propiedades
onMouseOver y onMouseOut:
<a href="pagina1.html" onMouseOver="pintar('#ff0000')"
onMouseOut="pintar('#ffffff')">Rojo</a>
La funcin 'pintar' recibe el color e inicializa la propiedad bgColor del objeto
document.
function pintar(col)
{
document.bgColor=col;
}
Otro problema que podemos probar es pinta de color el interior de una
casilla de una tabla y regresar a su color original cuando salimos de la
misma:

<html>
<head></head>
<body>
<script type="text/javascript">
function pintar(objeto,col)
{
objeto.bgColor=col;
}
</script>

<table border="1">
<tr>
<td onMouseOver="pintar(this,'#ff0000')"
onMouseOut="pintar(this,'#ffffff')">rojo</td>
<td onMouseOver="pintar(this,'#00ff00')"
onMouseOut="pintar(this,'#ffffff')">verde</td>
<td onMouseOver="pintar(this,'#0000ff')"
onMouseOut="pintar(this,'#ffffff')">azul</td>
</tr>
</table>
</body>
</html>
La lgica es bastante parecida a la del primer problema, pero en ste, le
pasamos como parmetro a la funcin, la referencia a la casilla que
queremos que se coloree (this):
<td onMouseOver="pintar(this,'#ff0000')"
onMouseOut="pintar(this,'#ffffff')">rojo</td>

Evento onLoad

El evento onLoad se ejecuta cuando cargamos una pgina en el navegador.


Uno de los usos ms frecuentes es para fijar el foco en algn control de un
formulario, para que el operador no tenga que activar con el mouse dicho
control.
Este evento est asociado a la marca body.
La pgina completa es:

<html>
<head></head>
<body onLoad="activarPrimerControl()">

<script type="text/javascript">
function activarPrimerControl()
{
document.getElementById('nombre').focus();
}
</script>

<form>
Ingrese su nombre:
<input type="text" id="nombre"><br>
Ingrese su edad:
<input type="text" id="edad"><br>
<input type="button" value="Confirmar">
</form>
</body>
</html>
En la marca body inicializamos el evento onLoad con la llamada a la funcin
activarPrimerControl:
<body onLoad="activarPrimerControl()">
La funcin da el foco al control text donde se cargar el nombre:
function activarPrimerControl()
{
document.getElementById('nombre').focus();
}

El objeto window.
Al objeto window lo hemos estado usando constantemente. Representa la
ventana del navegador.
window es un objeto global y tiene los siguienes mtodos:
alert: Muestra un dilogo de alerta con un mensaje
(a esta responsabilidad la hemos utilizado desde los primeros
temas)
prompt: Muestra un dilogo para la entrada de un valor de tipo string
(utilizado desde el primer momento)
confirm: Muestra un dilogo de confirmacin con los botones Confirmar y
Cancelar.
open y close: abre o cierra una ventana del navegador.
Podemos especificar el tamao de la ventana, su contenido, etc.
[Variable=][window.]open(URL, nombre, propiedades)
Permite crear (y abrir) una nueva ventana. Si queremos tener
acceso a ella
desde la ventana donde la creamos, deberemos asignarle una
variable,
sino simplemente invocamos el mtodo: el navegador automticamente
sabr
que pertenece al objeto window.
El parmetro URL es una cadena que contendr la direccin de la
ventana
que estamos abriendo: si est en blanco, la ventana se abrir con
una pgina
en blanco.
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
Es bueno hacer notar que a todas estas funciones las podemos llamar
anteponindole el nombre del objeto window, seguida del mtodo o en
forma resumida indicando solamente el nombre del mtodo (como lo hemos
estado haciendo), esto es posible ya que el objeto window es el objeto de
mximo nivel.
Ej:
valor=window.prompt("Ingrese valor","");
o
valor=prompt("Ingrese valor","");
Para reducir la cantidad de caracteres que se tipean normalmente
encontraremos los programas tipeados de la segunda forma.
El siguiente programa muestra varios de los mtodos disponibles del objeto
window:

<html>
<head></head>
<body>

<script type="text/javascript">

function abrir()
{
var ventana=open();
ventana.document.write("Estoy escribiendo
en la nueva ventana<br>");
ventana.document.write("Segunda linea");
}

function abrirParametros()
{
var
ventana=open('','','status=yes,width=400,height
=250,menubar=yes');
ventana.document.write("Esto es lo primero
que aparece<br>");
}

function mostrarAlerta()
{
alert("Esta ventana de alerta ya la
utilizamos en otros problemas.");
}

function confirmar()
{
var respuesta=confirm("Presione alguno de
los dos botones");
if (respuesta==true)
alert("presion aceptar");
else
alert("presion cancelar");
}

function cargarCadena()
{
var cad=prompt("cargue una cadena:","");
alert("Usted ingreso "+cad);
}
</script>

Este programa permite analizar la llamada a


distintas responsabilidades del objeto
window.<br>
<form>
<br>
<input type="button" value="open()"
onClick="abrir()">
<br>
<input type="button" value="open con
parmetros" onClick="abrirParametros()" >
<br>
<input type="button" value="alert"
onClick="mostrarAlerta()">
<br>
<input type="button" value="confirm"
onClick="confirmar()">
<br>
<input type="button" value="prompt"
onClick="cargarCadena()">
</form>
</body>
</html>
Propiedad location del objeto window
El objeto location colabora directamente con el objeto window:

Cuando le asignamos una nueva direccin a la propiedad location del objeto


window, el navegador redirecciona a dicha pgina.
Implementaremos un pequeo ejemplo para ver la utilidad de esta
propiedad: Supongamos que tenemos un hipervnculo que al ser presionado
entre al peridico La Nacin, pero primero muestre una ventana de
confirmacin, si queremos ingresar al peridico. En caso que el visitante
presione el botn afirmativo, redireccionamos al sitio de La Nacin, en caso
contrario mostramos un mensaje:

<html>
<head>
</head>
<body>

<script type="text/javascript">
function verificarEntrada()
{
if (window.confirm('Desea salir del sitio e
ingresar al peridico La Nacin?'))
{

window.location='http://www.lanacion.com.ar';
}
else
{
window.alert('No hay problema');
}
}
</script>

<a
href="javascript:verificarEntrada()">Ingresar a
La Nacin</a>
</body>
</html>

Lo primero que tenemos que indicar es que para llamar a una funcin de
javascript desde un hipervnculo debemos anteceder la palabra javascript
seguida de dos puntos y por ltimo, el nombre de la funcin:
<a href="javascript:verificarEntrada()">Ingresar a La Nacin</a>
La funcin verificarEntrada() muestra la ventana con los botones confirmar y
cancelar (recordar que el mtodo confirm del objeto window hace esto en
forma automtica).
Si se presiona el botn confirmar, la funcin confirm retorna true y por lo
tanto se ejecuta el verdadero del if:
if (window.confirm('Desea salir del sitio e ingresar al peridico La
Nacin?'))
{
window.location='http://www.lanacion.com.ar';
}
else
{
window.alert('No hay problema');
}
Propiedad history del objeto window

El objeto history colabora directamente con el objeto window:

El objeto history almacena todas las pginas que visitamos. Luego, con una
serie de funciones, podemos extraer de la memoria de la computadora las
pginas ya visitadas, sin tener que pedirlas nuevamente al servidor.
Cuenta con las siguientes funciones:
window.history.back(); //Retrocede a la pgina anterior
window.history.forward(); //Avanza a la pgina siguiente almacenada en
la
cache de la mquina.
window.history.go(); //Avanza o retrocede en la lista de pginas
visitadas.
Llamar a la funcin back, tiene el mismo comportamiento que presionar el
botn "Atrs" del navegador.
El siguiente ejemplo nos permite cargar una segunda pgina y luego
retroceder a la primera pgina sin tener que solicitarla nuevamente al
servidor:
<html>
<head>
<title>Problema</title>

<script type="text/javascript">
function avanzar()
{
window.history.go(1);
}
</script>

</head>
<body>
<a href="pagina2.html">Ir a la pgina 2</a>
<br>
<br>
<a href="javascript:avanzar()">Extraer del
cache la segunda pgina</a>
</body>
</html>
En esta primera pgina, la primera vez, debemos cargar la segunda pgina
seleccionando el hipervnculo pagina2.
La segunda pgina:
<html>
<head>
<title>Problema</title>

<script type="text/javascript">
function retornar()
{
window.history.go(-1);
}
</script>

</head>
<body>
<a href="javascript:retornar()">Retornar</a>
</body>
</html>
En la segunda pgina, mediante el mtodo go y pasndole un valor
negativo, retrocedemos a la primera pgina sin tener la necesidad de
recargarla.
Podemos mejorar el ejemplo accediendo al atributo length (almacena la
cantidad de pginas de la lista) del objeto history:
if (window.history.length>0)
{
window.history.go(1);
}
else
{
alert('no hay otra pgina en la cache hacia adelante');
}

Propiedad screen del objeto window

El objeto screen colabora directamente con el objeto window:

El objeto screen ofrece informacin acerca del monitor donde se est


ejecutando el navegador.
La propiedades principales del objeto screen son:
availHeight : El alto de la pantalla en pixeles disponible para el
navegador.
availWidth : El ancho de la pantalla en pixeles disponible para el
navegador.
colorDepth : Representa el nmero de bits usados para representar los
colores.
height : El alto de la pantalla en pixeles.
width : El ancho de la pantalla en pixeles.
El siguiente programa muestra el valor almacenado en las cinco
propiedades que tiene el objeto screen:

<html>
<head>
<title>Problema</title>
</head>
<body>

<script type="text/javascript">
document.write('Valores de las propiedades
del objeto screen:<br>');
document.write('availHeight :' +
screen.availHeight + '<br>');
document.write('availWidth :' +
screen.availWidth + '<br>');
document.write('height :' + screen.height +
'<br>');
document.write('width :' + screen.width +
'<br>');
document.write('colorDepth :' +
screen.colorDepth);
</script>

</body>
</html>
No olvidar que el objeto screen es una propiedad del objeto window, por lo
que haber dispuesto la sintaxis: window.screen.width etc. es la forma ms
completa, pero ms tediosa de escribir (recordar que el objeto window es el
principal y lo podemos obviar cuando accedemos a sus propiedades o
mtodos)

Propiedad navigator del objeto window


Contiene informacin sobre el navegador web. La implementacin de este
objeto vara entre navegadores (IExplorer, FireFox, Opera, etc.)
Las propiedades comunes a estos navegadores son:
appName : almacena el nombre oficial del navegador.
appVersion : almacena la versin del navegador.
cookieEnabled : almacena si las cookies estn activas en el navegador.
platform : almacena la plataforma donde el navegador se est ejecutando.
plugins : almacena un array de los plugin cargados en el navegador.
Este pequeo programa muestra los valores de las propiedades antes
anunciadas:

<html>
<head>
<title>Problema</title>
</head>
<body>

<script type="text/javascript">
document.write('Valores de las propiedades
del objeto navigator:<br>');
document.write('appName :' +
navigator.appName + '<br>');
document.write('appVersion :' +
navigator.appVersion + '<br>');
document.write('cookieEnabled :' +
navigator.cookieEnabled + '<br>');
document.write('plugins :' +
navigator.plugins.length + '<br>');
</script>

</body>
</html>

Archivo JavaScript externo (*.js)


El lenguaje JavaScript permite agrupar funciones y disponerlas en un
archivo separado a la pgina HTML.
Esto trae muchos beneficios:
- Reutilizacin de funciones en muchos archivos. No tenemos que copiar y
pegar sucesivamente las funciones en las pginas en las que necesitamos.
- Facilita el mantenimiento de las funciones al encontrarse en archivos
separados.
- Nos obliga a ser ms ordenados.

La mecnica para implementar estos archivos externos en JavaScript es:


1 - Crear un archivo con extensin *.js y tipear las funciones en la misma:
function retornarFecha()
{
var fecha
fecha=new Date();
var
cadena=fecha.getDate()+'/'+(fecha.getMonth()+1)+'/'+fecha.getYear();
return cadena;
}

function retornarHora()
{
var fecha
fecha=new Date();
var
cadena=fecha.getHours()+':'+fecha.getMinutes()+':'+fecha.getSeconds();
return cadena;
}
2 - Creamos un archivo html que utilizar las funciones contenidas en el
archivo *.js:
<html>
<head>
<title>Problema</title>
<script type="text/javascript" src="funciones.js"></script>
</head>
<body>

<script type="text/javascript">
document.write('La fecha de hoy es:'+retornarFecha());
document.write('<br>');
document.write('La hora es:'+retornarHora());
</script>

</body>
</html>
Es decir debemos disponer el siguiente cdigo para importar el archivo *.js:
<script type="text/javascript" src="funciones.js"></script>
Mediante la propiedad src indicamos el nombre del archivo a importar.
Luego, podemos llamar dentro de la pgina HTML, a las funciones que
contiene el archivo externo *.js; en nuestro ejemplo llamamos a las
funciones retornarFecha() y retornarHora().
Como podemos ver, el archivo html queda mucho ms limpio.

Si quiere probar en su equipo este ejemplo puede descargar el editor de


texto NotePad++.

Tipear los dos archivos y los almacenamos en una carpeta del disco duro:
funciones.js

y la pgina html (pagina1.html):


Procedemos a abrir desde el navegador el archivo: pagina1.html y veremos
como se llaman las funciones contenidas en el archivo js:
Programacin orientada a objetos en JavaScript.

El lenguaje JavaScript no es un lenguaje orientado a objetos completo, pero


permite definir clases con sus atributos y responsabilidades. Finalmente nos
permite definir objetos de estas clases.
Pero el otro pilar de la programacin orientada a objetos, es decir la
herencia, no est implementada en el lenguaje.
Veremos la sintaxis para la declaracin de una clase y la posterior definicin
de objetos de la misma.

Desarrollaremos una clase que represente un cliente de un banco.


La clase cliente tiene como atributos:
nombre
saldo
y las responsabilidades o mtodos de la clase son:
Constructor (inicializamos los atributos del objeto)
depositar
extraer
Luego debemos implementar los siguientes mtodos (normalmente el
constructor se utiliza el caracter mayscula):
function Cliente(nombre,saldo)
{
this.nombre=nombre;
this.saldo=saldo;
this.depositar=depositar;
this.extraer=extraer;
}

function depositar(dinero)
{
this.saldo=this.saldo+dinero;
}

function extraer(dinero)
{
this.saldo=this.saldo-dinero;
}
El nombre de la clase coincide con el nombre de la funcin principal que
implementamos (tambin llamado constructor de la clase):
function cliente(nombre,saldo)
{
this.nombre=nombre;
this.saldo=saldo;
this.depositar=depositar;
this.extraer=extraer;
}
A esta funcin llegan como parmetro los valores con que queremos
inicializar los atributos. Con la palabra clave 'this' diferenciamos los atributos
de los parmetros (los atributos deben llevar la palabra clave this)
this.nombre=nombre;
this.saldo=saldo;
Tambin en el constructor inicializamos la referencia a todos los mtodos
que contendr la clase (esto es muy importante y necesario para entender
porque las otras dos funciones pertenecen a esta clase):
this.depositar=depositar;
this.extraer=extraer;
Por ltimo, implementamos todos los mtodos de la clase:
function depositar(dinero)
{
this.saldo=this.saldo+dinero;
}

function extraer(dinero)
{
this.saldo=this.saldo-dinero;
}
De nuevo recordemos que diferenciamos los atributos de la clase por la
palabra clave this.
Ahora veamos el archivo HTML completo donde adems definiremos un
objeto de la clase planteada:
<html>
<head>
<title>Problema</title>

<script type="text/javascript">
function Cliente(nombre,saldo)
{
this.nombre=nombre;
this.saldo=saldo;
this.depositar=depositar;
this.extraer=extraer;
}

function depositar(dinero)
{
this.saldo=this.saldo+dinero;
}

function extraer(dinero)
{
this.saldo=this.saldo-dinero;
}

</script>

</head>
<body>

<script type="text/javascript">
var cliente1;
cliente1=new Cliente('diego',1200);
document.write('Nombre del cliente:'+cliente1.nombre+'<br>');
document.write('Saldo actual:'+cliente1.saldo+'<br>');
cliente1.depositar(120);
document.write('Saldo luego de depositar $120----
>'+cliente1.saldo+'<br>');
cliente1.extraer(1000);
document.write('Saldo luego de extraer $1000----
>'+cliente1.saldo+'<br>');
</script>

</body>
</html>

Hemos dividido la declaracin de la clase en un bloque Javascript distinto a


donde definimos un objeto de la misma, esto no es obligatorio, pero
podemos ver que queda ms claro.

Para definir un objeto de la clase Cliente tenemos:


var cliente1;
cliente1=new Cliente('diego',1200);

Luego las llamadas a mtodos le antecedemos el nombre del objeto


llamado cliente1:
document.write('Nombre del cliente:'+cliente1.nombre+'<br>');
document.write('Saldo actual:'+cliente1.saldo+'<br>');
cliente1.depositar(120);
document.write('Saldo luego de depositar $120----
>'+cliente1.saldo+'<br>');
cliente1.extraer(1000);
document.write('Saldo luego de extraer $1000----
>'+cliente1.saldo+'<br>');
Podemos decir que la ventaja que podemos obtener con el planteo de
clases es hacer nuestros programas mucho ms organizados, entendibles y
fundamentalmente, poder reutilizar clases en distintos proyectos.

Definicin de varias clases.

En JavaScript podemos definir varias clases en un mismo programa.


Vamos a desarrollar un programa que contenga dos clases. Plantearemos
una clase Numeroquiniela que representa una persona que elige un nmero
de quiniela y adems registra su nombre, la clase tiene por objetivo la carga
por el teclado del nmero deseado.
Por otra parte crearemos una clase Bolillero que sortee un valor aleatorio
entre 1 y 10 (que representa el valor extrado del bolillero).
La codificacin de las dos clases es:

<html>
<head>
<title>Problema</title>
<script type="text/javascript">

//clase Numeroquiniela
***********************************************
*
function Numeroquiniela(nombre)
{
this.nombre=nombre;
this.cargarnumero=cargarnumero;
this.verificarsigano=verificarsigano;
}

function cargarnumero()
{
this.numero=prompt("Que nmero de quiniela
quiere?","");
}

function verificarsigano(num)
{
if (this.numero==num)
return true;
else
return false;
}

//clase Bolillero
***********************************************
*
function Bolillero()
{
this.numero=-1;
this.sortear=sortear;
}

function sortear()
{
this.numero=parseInt(Math.random()*10)+1;
}

</script>
</head>
<body>

<script type="text/javascript">
var numeroquiniela1;
numeroquiniela1=new Numeroquiniela("juan");
numeroquiniela1.cargarnumero();
var numeroquiniela2;
numeroquiniela2=new Numeroquiniela("ana");
numeroquiniela2.cargarnumero();
var bolillero;
bolillero=new Bolillero();
bolillero.sortear();
document.write('Numero sorteado:' +
bolillero.numero + '<br>');
document.write(numeroquiniela1.nombre + '
eligi ' + numeroquiniela1.numero +'<br>');
document.write(numeroquiniela2.nombre + '
eligi ' + numeroquiniela2.numero +'<br>');
if
(numeroquiniela1.verificarsigano(bolillero.nume
ro))
{
document.write(numeroquiniela1.nombre + ' a
ganado <br>');
}
if
(numeroquiniela2.verificarsigano(bolillero.nume
ro))
{
document.write(numeroquiniela2.nombre + ' a
ganado <br>');
}
</script>
</body>
</html>
Al constructor de la clase Numeroquiniela llega como parmetro el nombre
de la persona que la compra (podamos cargarlo por teclado al nombre
tambin).
Al nmero que selecciona lo cargamos por teclado. La clase
Numeroquiniela adems tiene otra responsabilidad, que es avisarnos si a
ganado segn el nmero sorteado.
Por otro lado en la pgina html definimos dos objetos de la clase
Numeroquiniela y uno de la clase Bolillero:

Vectores con componentes de tipo objeto.

Podemos crear vectores con componente de tipo objeto.


Con un ejemplo veremos la sintaxis para trabajar con los mismos.
Desarrollaremos una clase que represente un hipervnculo y luego
definiremos un vector con componentes de tipo hipervinculo.
La clase hipervnculo es:

<script type="text/javascript">
function Hipervinculo(direccion,titulo)
{
this.direccion=direccion;
this.titulo=titulo;

this.retornarhipervinculo=retornarhipervinculo;
}

function retornarhipervinculo()
{
var cadena;
cadena='<a href=' + this.direccion + '>' +
this.titulo + '</a>';
return cadena;
}
</script>

Luego el bloque donde se usa la clase Hipervnculo es:

<script type="text/javascript">
var vector=new Array(3);
vector[0]=new
Hipervinculo('http://www.google.com','google');
vector[1]=new
Hipervinculo('http://www.msn.com','msn');
vector[2]=new
Hipervinculo('http://www.yahoo.com','yahoo');
for(var f=0;f<vector.length;f++)
{

document.write(vector[f].retornarhipervinculo()
);
document.write('<br>');
}
</script>
Creamos un objeto de la clase Array y luego guardamos en cada
componente un objeto de la clase hipervnculo (pasndole como parmetros
al constructor, la direccin del sitio y el texto a mostrar en la pgina. Luego
recorremos con un 'for' las componentes del vector e imprimimos en la
pgina cada hipervnculo.

Creacin de objetos literales

Veremos ahora otra forma muy utilizada en Javascript para definir objetos.
Esta forma se la llama Objetos literales

Esta metodologa consiste en definir una lista de propiedades y sus valores.


Veamos con un ejemplo esta tcnica:

<html>
<head>
</head>
<body>

<script type="text/javascript">

var cliente1= {
nombre: 'Juan',
deposito: 0,
imprimir: function ()
{
document.write(this.nombre+'<br>');
document.write(this.deposito+'<br>');
},
depositar: function(monto) {
this.deposito=this.deposito+monto;
},
extraer: function(monto) {
this.deposito=this.deposito-monto;
}
};

cliente1.imprimir();
cliente1.depositar(1000);
document.write('Estado luego de depositar
1000 pesos</br>');
cliente1.imprimir();
cliente1.extraer(200);
document.write('Estado luego de extraer 200
pesos</br>');
cliente1.imprimir();

</script>

</body>
</html>

En este ejemplo hemos creado un objeto literal llamado cliente1, la sintaxis


mnima para crear un objeto vaco sera:
var cliente1= {};

Es decir creamos una variable llamada cliente1 y le asignamos un bloque


encerrado entre llaves vaco. Es importante notar el punto y coma al final de
la llave de cerrado (como ocurre cuando asignamos un valor a una variable)

Veamos ahora si decimos que el objeto cliente1 define la propiedad nombre,


luego nuestro objeto quedar definido con la sintaxis:
var cliente1= {
nombre: 'Juan'
};

Decimos que la propiedad nombre almacena el string 'Juan', del lado


izquierdo indicamos el nombre de la propiedad y del lado derecho de los
dos puntos indicamos el valor de la propiedad del objeto (el valor puede ser
de cualquier tipo, en este caso es de tipo string pero podra ser de tipo
number, boolean, object, Array etc.)

Ahora si agregamos una segunda propiedad a nuestro objeto cliente1


llamada deposito (que representa la cantidad de dinero que tiene
depositado el cliente1) la sintaxis queda:
var cliente1= {
nombre: 'Juan',
deposito: 0
};

Como podemos observar separamos por coma cada inicializacin de


propiedad del objeto (menos para la ltima propiedad donde aparece la "}".

Las funciones del objeto tambin definimos una sintaxis similar a la


declaracin de sus propiedades:
var cliente1= {
nombre: 'Juan',
deposito: 0,
imprimir: function ()
{
document.write(this.nombre+'<br>');
document.write(this.deposito+'<br>');
},
depositar: function(monto) {
this.deposito=this.deposito+monto;
},
extraer: function(monto) {
this.deposito=this.deposito-monto;
}
};

Del lado izquierdo de los dos puntos indicamos el nombre de la funcin y del
lado derecho utilizamos la palabra clave function junto con los parmetros.

En la funcin podemos acceder a las propiedades del objeto antecediendo


la palabra clave this.

Ahora solo nos falta hacer la llamada a las funciones del objeto cliente1:
cliente1.imprimir();
cliente1.depositar(1000);
document.write('Estado luego de depositar 1000 pesos</br>');
cliente1.imprimir();
cliente1.extraer(200);
document.write('Estado luego de extraer 200 pesos</br>');
cliente1.imprimir();

Array: Diferentes formas de crearlos

Como hemos visto un array o arreglo es una estructura de datos que


permite almacenar elementos y luego acceder a los mismos por medio de
subndices.

Recordemos que Javascript administra los array mediante un objeto


especializado llamado Array.

Un array puede almacenar en sus componentes elementos de datos


distintos y su tamao puede crecer a lo largo de la ejecucin del programa.

Tenemos muchas formas de inicializar un array en Javascript segn nuestra


situacin particular, veamos con ejemplos diferentes formas:

Creacin de un array sin elementos:


var vector1=new Array();

Otra sintaxis para crear un array sin elementos:


var vector2=[];

Creacin de un array indicando la cantidad de componentes iniciales que


podr almacenar:
var vector3=new Array(5);

Creacin e inicializacin llamando al constructor Array y pasando como


parmetros los valores a almacenar en las componentes:
var vector4=new Array(1,70,'juan');

Creacin e inicializacin de un array utilizando los corchetes:


var vector5=[1,70,'juan'];
Para probar las distintas formas de creacin de array implementaremos un
programa que cree 5 Array, cargue algunos elementos y muestre la primer
componente de cada uno de ellos:

<html>
<head>
</head>
<body>

<script type="text/javascript">

var vector1=new Array();


vector1[0]=1;

var vector2=[];
vector2[0]=1;

var vector3=new Array(5);


vector3[0]=1;

var vector4=new Array(1,70,'juan');


var vector5=[1,70,'juan'];

document.write(vector1[0]+'<br>');
document.write(vector2[0]+'<br>');
document.write(vector3[0]+'<br>');
document.write(vector4[0]+'<br>');
document.write(vector5[0]+'<br>');

</script>

</body>
</html>

Array: densos
Todos los vectores donde almacenamos en forma contigua todos sus
elementos son llamados array densos.

Almacenar elementos siguiendo esta premisa tiene como ventaja poder


acceder a sus elementos mediante una estructura repetitiva disponiendo el
contador del for como subndice.

Una propiedad de suma utilidad trabajando los vectores sin dejar subndices
sin utilizar es la propiedad length. La propiedad length almacena la cantidad
de componentes que tiene el vector.

Problema

Crear un vector vaco. Mediante una estructura repetitiva solicitar la carga


de elementos por teclado hasta que se ingrese el cero. No almacenar dicho
valor en el vector. Luego sumar todas las componentes del vector, mostrar
dicha suma y el tamao del vector.

<html>
<head>
</head>
<body>

<script type="text/javascript">

var vec=[];
var valor;
var indice=0;
do {
valor=prompt('Ingrese un valor entero (0
para finalizar)','');
valor=parseInt(valor);
if (valor!=0)
{
vec[indice]=valor;
indice++;
}
} while (valor!=0);
var f;
var suma=0;
for(f=0;f<vec.length;f++)
{
suma=suma+vec[f];
}
document.write('Se ingresaron '+vec.length+'
valores<br>');
document.write('La suma de los valores
ingresados es:'+suma);

</script>

</body>
</html>

Definimos un vector vaco:


var vec=[];

Creamos una estructura repetitiva do/while que se ejecutar hasta que


ingresemos en la variable valor el cero:
do {
valor=prompt('Ingrese un valor entero (0 para finalizar)','');
valor=parseInt(valor);
if (valor!=0)
{
vec[indice]=valor;
indice++;
}
} while (valor!=0);

Cada vez que se ingresa un valor distinto a cero se lo asignamos a una


componente del vector y para que ocupen posiciones consecutivas
definimos un contador llamado indice que se inicializa en cero previo a la
estructura repetitiva:
if (valor!=0)
{
vec[indice]=valor;
indice++;
}
Cuando salimos del do/while mostramos el atributo length del vector y
sumamos sus componentes para mostrar dicho acumulador.

Array: no densos o dispersos

Hasta ahora siempre que inicializamos los array no dejamos espacios sin
utilizar. Javascript permite crear array e inicializar componentes no
contiguas.

Por ejemplo podemos crear un vector e inicializar las componentes con


subndice 5 y 10:
var vec=[];
vec[5]=100;
vec[10]=200;

Este tipo de array se los llama array dispersos ya que no tenemos todas las
componentes contiguas ocupadas. Veamos con un ejemplo que pasa con la
propiedad length y cuando accedemos a componentes que no existen en el
vector:

<html>
<head>
</head>
<body>

<script type="text/javascript">

var vec=[];
vec[5]=100;
vec[10]=200;
document.write('Atributo
length:'+vec.length+'<br>');
var f;
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}
</script>

</body>
</html>

Si ejecutamos este programa la salida en la pgina ser:


Atributo length:11
undefined
undefined
undefined
undefined
undefined
100
undefined
undefined
undefined
undefined
200

Como podemos ver el atributo length almacena teniendo en cuenta la


posicin ms grande asignada (en nuestro ejemplo vec[10])

Por otro lado cuando accedemos a componentes no inicializadas


obtenemos el valor "undefined".

Es bueno tener en cuenta que las componentes no inicializadas no reservan


espacio en memoria, luego si asignamos como subndice el dni de una
persona:
dni[20438470]=100;

no significa que se reservan ms de veinte millones de componentes para


los otros elementos del vector. La reserva de espacio sucede a medida que
ocupamos espacios del vector.

Problema

Ingresar por teclado un nro de cliente y el monto a depositar. Almacenar en


un vector, utilizar como subndice el nro de cliente y almacenar el monto
depositado. Sumar todos los depsitos recorriendo el vector e identificando
las componentes cargadas (es decir las que tienen un valor distinto a null).
Imprimir la suma total depositada y la cantidad de clientes que depositaron.

<html>
<head>
</head>
<body>

<script type="text/javascript">
var depositos=[];
var nro,monto;
do {
nro=prompt('Ingrese nro de cliente','');
nro=parseInt(nro);
if (nro!=0)
{
monto=prompt('Ingrese monto a
depositar','');
monto=parseInt(monto);
depositos[nro]=monto;
}
} while (nro!=0);
var suma=0;
var canti=0;
for(var f=0;f<depositos.length;f++)
{
if (depositos[f]!==undefined)
{
suma=suma+depositos[f];
canti++;
}
}
document.write('Cantidad de
depsitos:'+canti+'<br>');
document.write('Total depositado por todos
los clientes:'+suma);
</script>

</body>
</html>
Como vemos el do/while finaliza cuando ingresamos un 0, cuando
ingresamos en la variable nro un valor distinto a cero procedemos a
almacenar en el vector en la posicin indicada por nro el valor cargado en
monto:
do {
nro=prompt('Ingrese nro de cliente','');
nro=parseInt(nro);
if (nro!=0)
{
monto=prompt('Ingrese monto a depositar','');
monto=parseInt(monto);
depositos[nro]=monto;
}
} while (nro!=0);

Cuando sale del do/while mediante un ciclo for analizamos cada una de las
componentes posibles del vector verificando si el valor es distinto a
undefined (es importante notar que debemos utilizar el operador relacionar
!== en lugar de != ya que no funcionara cuando una componente almacene
null):
for(var f=0;f<depositos.length;f++)
{
if (depositos[f]!==undefined)
{
suma=suma+depositos[f];
canti++;
}
}

Array: mtodos push y pop

Como los Array en Javascript son objetos, los mismos tienen una serie de
mtodos que nos facilitan trabajar con ellos.

Para insertar elementos en un vector hemos visto que con solo asignar un
valor al vector en un determinado ndice el dato queda almacenado y
eventualmente el atributo length modificado:
var vec=[];
vec[0]=10;
vec[1]=20;
document.write(vec.length); //imprime 2
Esta sintaxis tenemos que tener cuidado como variamos el subndice para
no dejar componentes vacas si queremos implementar un array denso.

Una variante para resolver este mismo problema es utilizar el mtodo push
del objeto Array. Este mtodo aade el valor al final del vector:
var vec=[];
vec.push(10);
vec.push(20);
document.write(vec.length); //imprime 2

Automticamente cuando llamamos al mtodo push el valor que le pasamos


en el parmetro se almacena en el vector y se incrementa el atributo length.

Podemos inclusive llamar al mtodo push pasando ms de 1 parmetro:


var vec=[];
vec.push(10,20);
document.write(vec.length); //imprime 2

El mtodo inverso llamado pop extrae el ltimo elemento del Array y


decrementa en uno el atributo length:
var vec=[];
vec.push(10,20,30,40);
document.write(vec.length+'<br>'); //imprime 4
vec.pop();
document.write(vec.length+'<br>'); //imprime 3
document.write(vec.pop()+'<br>'); //imprime un 30
document.write(vec.length+'<br>'); //imprime 2

El mtodo pop() adems de eliminar el ltimo elemento del vector retorna el


valor almacenado en dicha componente.

Si llamamos al mtodo pop y el vector est vaco retorna el valor undefined.

Problema

Realizar la carga de sueldos por teclado hasta que se ingrese el cero.


Almacenar todos los valores ingresados en un vector empleando el mtodo
push. Mostrar la suma de sueldos ingresados.

<html>
<head>
</head>
<body>
<script type="text/javascript">

var sueldos=[];
var monto;
do {
monto=prompt('Ingrese el sueldo (0 para
finalizar):','');
monto=parseInt(monto);
if (monto!=0)
{
sueldos.push(monto);
}
} while (monto!=0);
var suma=0;
for(var f=0;f<sueldos.length;f++)
{
suma=suma+sueldos[f];
}
document.write('El total en sueldos ingresado
es:'+suma);

</script>

</body>
</html>

De esta forma no llevamos un contador para indicar la posicin donde se


debe almacenar la componente en el vector:
sueldos.push(monto);

Array: mtodos unshift y shift


As como el mtodo push inserta un elemento al final del vector el mtodo
unshift inserta un elemento al principio el vector y desplaza el resto una
posicin.

El mtodo shift extrae el primer elemento del vector y desplaza hacia


delante el resto de elementos del vector.

Problema

Ingresar valores por teclado. Los valores menores a 100 ingresarlos al


principio del vector y los mayores o iguales a 100 ingresarlos al final. Se
finaliza la carga de datos al ingresar el cero. Cuando sale del do/while
extraer el ltimo valor ingresado que es el cero del vector. Imprimir el vector
en la pgina

<html>
<head>
</head>
<body>

<script type="text/javascript">

var vec=[];
var f;
var valor;
do {
valor=prompt('Ingresar un valor (0 para
finalizar):','');
valor=parseInt(valor);
if (valor<100)
{
vec.unshift(valor);
}
else
{
vec.push(valor);
}
} while (valor!=0);
vec.shift();
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}

</script>

</body>
</html>

Si el valor es menor a 100 procedemos a llamar al mtodo unshift que lo


inserta al principio del vector en caso contrario se inserta al final mediante el
mtodo push:
if (valor<100)
{
vec.unshift(valor);
}
else
{
vec.push(valor);
}

Fuera del do/while procedemos a extraer el primer elemento del vector que
es el cero:
vec.shift();

Finalmente procedemos a imprimir en forma completa el vector:


for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}

Array: instruccin delete

Javascript tiene una instruccin que permite eliminar un elemento de un


vector llamada delete.

Al comando delete le pasamos el nombre del vector y la posicin que


queremos borrar:
delete vec[3];

Con el comando anterior estamos eliminando la componente de la posicin


3 del vector. Cuando se elimina una componente no se modifica la
propiedad length y el vector se convierte en no denso. Si luego tratamos de
acceder a dicha posicin el resultado es el valor undefined.

Problema

Crear un vector de 10 elementos y almacenar valores aleatorios en el


mismo. Luego borrar los elementos de las posiciones pares e imprimir el
vector antes y despus de borrar las componentes, inclusive tratar de
acceder a las componentes que acabamos de borrar.

<html>
<head>
</head>
<body>

<script type="text/javascript">

var vec=[];
var f;
for(f=0;f<10;f++)
{
var valor=parseInt(Math.random()*1000);
vec.push(valor);
}
document.write('Vector antes de borrar<br>');
for(f=0;f<10;f++)
{
document.write(vec[f]+'<br>');
}
for(f=0;f<10;f=f+2)
{
delete vec[f];
}
document.write('Vector luego de borrar las
posiciones pares<br>');
for(f=0;f<10;f++)
{
document.write(vec[f]+'<br>');
}

</script>

</body>
</html>

Creamos y cargamos el vector con 10 enteros aleatorios:


var vec=[];
var f;
for(f=0;f<10;f++)
{
var valor=parseInt(Math.random()*1000);
vec.push(valor);
}

Procedemos a borrar los elementos de las posiciones pares del vector


utilizando el comando Javascript delete (veamos que dentro del for
incrementamos f en 2 en cada vuelta del ciclo):
for(f=0;f<10;f=f+2)
{
delete vec[f];
}

Por ltimo procedemos a mostrar el vector donde podemos comprobar que


al tratar de acceder a componentes que se han eliminado el resultado es el
valor undefined, el resultado completo de la ejecucin del programa es:
Vector antes de borrar
931
354
246
876
802
980
957
307
998
640
Vector luego de borrar las posiciones pares
undefined
354
undefined
876
undefined
980
undefined
307
undefined
640

Array: mtodos sort y reverse

Otro mtodo muy til de la clase Array es sort. La sintaxis ms sencilla y por
defecto es para ordenar una lista de string:

<html>
<head>
</head>
<body>

<script type="text/javascript">

var
nombres=['marcos','ana','luis','jorge','carlos'
];
var f;
document.write('Vector antes de
ordenarlo<br>');
for(f=0;f<nombres.length;f++)
{
document.write(nombres[f]+'<br>');
}
nombres.sort();
document.write('Vector despus de
ordenarlo<br>');
for(f=0;f<nombres.length;f++)
{
document.write(nombres[f]+'<br>');
}
</script>

</body>
</html>

Como vemos creamos un vector con una lista de string:


var nombres=['marcos','ana','luis','jorge','carlos'];

Luego con llamar simplemente al mtodo sort el mismo se encarga de


intercambiar las componentes de tal forma que el menor alfabticamente se
encuentra al principio y as sucesivamente:
nombres.sort();

Para ordenar una lista de enteros se complica el algoritmo ya que debemos


pasar al mtodo sort una funcin annima indicando como implementar la
comparacin entre elementos:

<html>
<head>
</head>
<body>

<script type="text/javascript">

var vec=[100,5,60,3,90];
var f;
document.write('Vector antes de
ordenarlo<br>');
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}
vec.sort(function(v1,v2) {
if (v1>v2)
return 1;
else
return 0;
});
document.write('Vector despus de
ordenarlo<br>');
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}

</script>

</body>
</html>

Como vemos al mtodo sort hemos pasado una funcin que retorna un 1 o
0:
vec.sort(function(v1,v2) {
if (v1>v2)
return 1;
else
return 0;
});

Los parmetros v1 y v2 son los elementos que se comparan. Si v1 es mayor


a v2 significa que queremos intercambiarlos para que el mayor se desplace
hacia el final del vector. Esta funcin debe retornar un valor mayor a cero si
queremos que se intercambien los elementos y cero si queremos dejar los
dos elementos del vector sin ser intercambiados.

El siguiente mtodo a analizar en este concepto es reverse(), como


podemos intuir este mtodo invierte el orden de los elementos del vector.
Nos puede ser de utilidad si tenemos ordenado un vector en orden
ascendente y lo queremos en forma descendente.

Problema

Crear un vector con 10 elementos enteros con valores aleatorios.


Ordenarlos de menor a mayor. Luego invertir el vector para verlo de mayor
a menor.

<html>
<head>
</head>
<body>

<script type="text/javascript">

var vec=new Array(10);


var f;
for(f=0;f<vec.length;f++)
{
vec[f]=parseInt(Math.random()*1000);
}
vec.sort(function(v1,v2) {
if (v1>v2)
return 1;
else
return 0;
});
document.write('Vector ordenado en forma
ascendente<br>');
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}
vec.reverse();
document.write('Vector ordenado en forma
descendente<br>');
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}

</script>

</body>
</html>
El resultado de ejecutar el programa es:

Vector ordenado en forma ascendente


32
131
329
364
488
515
860
864
919
919
Vector ordenado en forma descendente
919
919
864
860
515
488
364
329
131
32

Como vemos luego de imprimirlo en forma ordenada procedemos a llamar


al mtodo reverse() que invierte los elementos del vector (es decir el ltimo
pasa a ser primero, el anteltimo pasa a ser segundo y as sucesivamente)

Vous aimerez peut-être aussi