Sie sind auf Seite 1von 206

Qué es JavaScript?

JavaScript, al igual que Flash, Visual Basic Script, es una de las múltiples
maneras que han surgido para extender las capacidades del lenguaje HTML
(lenguaje para el diseño de páginas de Internet). Al ser la más sencilla, es por
el momento la más extendida.
JavaScript no es un lenguaje de programación propiamente dicho como C,
C++ 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
cálculo. Hasta hace poco no se podía desarrollar programas con JavaScript
que se ejecutaran fuera de un Navegador, aunque en este momento
comienza a expandirse a otras áreas como la programación en el servidor
con Node.js

JavaScript es un lenguaje interpretado que se embebe en una página 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".

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
document.write('Hola Mundo');
</script>

</body>
</html>

El programa en JavaScript debe ir encerrado entre las marcar 'script':


<script>

</script>

En versiones anteriores a HTML5 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 página debemos llamar al comando 'write'


del objeto document. La información a imprimirse debe ir entre comillas y
encerrada entre paréntesis. Todo lo que indicamos entre comillas aparecerá
tal cual dentro de la página HTML.
Es decir, si pedimos al navegador que ejecute esta página mostrará el texto
'Hola Mundo'.

Cada vez que escribimos una instrucción finalizamos con el carácter 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 atención cada vez que escribamos en


minúsculas o mayúsculas para no cometer errores sintácticos. Ya veremos
que los nombres de funciones llevan letras en mayúsculas.

Ejemploe
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
document.write('Hola Mundo');
</script>

</body>
</html>

1. Realizar un programa que muestre su nombre y su edad en una


página HTML.
Emplear el comando write del objeto document para imprimir.
Tener en cuenta que si queremos que cada dato quede en una fila
distinta de la página debemos insertar la etiqueta HTML <br> (salto
de linea en HTML), es decir debemos disponer:
document.write('<br>')
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

</script>

</body>
</html>

Variables.

Una variable es un depósito donde hay un valor. Consta de un nombre y


pertenece a un tipo (númerico, 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 lógicos (true,false)
Existen otros tipos de variables que veremos más adelante.

Las variables son nombres que ponemos a los lugares donde almacenamos
la información. En JavaScript, deben comenzar por una letra o un subrayado
(_), pudiendo haber además dígitos entre los demás caracteres. Una variable
no puede tener el mismo nombre de una palabra clave del lenguaje.

Una variable se define anteponiéndole la palabra clave var:


var dia;

se pueden declarar varias variables en una misma línea:


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;

Elección 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 elección 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 olvidaríamos.

Impresión de variables en una página HTML.

Para mostrar el contenido de una variable en una página utilizamos el objeto


document y llamamos a la función write.
En el siguiente ejemplo definimos una serie de variables y las mostramos en
la página:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 instrucción finaliza con un punto
y coma.
Las variables de tipo boolean pueden almacenar solo dos valores: true o
false.

El resultado al visualizar la página debe ser 4 líneas 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 página debemos utilizar la


función 'write' que pertenece al objeto document.

Recordemos que el lenguaje JavaScript es sensible a mayúsculas y


minúsculas y no será lo mismo si tipeamos:
Document.Write(nombre);

Esto porque no existe el objeto 'Document' sino el objeto 'document' (con d


minúscula), lo mismo no existe la función 'Write' sino 'write', este es un error
muy común cuando comenzamos a programar en JavaScript

Si queremos probar esta página en forma local en nuestra computadora


debemos utilizar un editor de texto yo recomiendo Visual Studio Code, luego
puede desarrollar un tutorial de este editor en VS Code Ya

Escribimos la página web en el editor de texto:


Y luego lo podemos abrir:
Por el momento si no quiere instalar un editor de texto puede hacer las
pruebas en este mismo sitio.

Problemas
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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>
1. Confeccionar una programa en JavaScript que defina e inicialice una
variable de tipo cadena de caracteres donde almacenemos el
nombre de un empleado y otra variable de tipo entera donde
almacenar el sueldo. Imprimir cada variable en una línea distinta en
pantalla.
Solución
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

</script>

</body>
</html>

Estructuras secuenciales de programación.

Cuando en un problema sólo 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


números por teclado e imprimir su suma y su producto:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
var usuario;
var mail;
usuario=prompt('Ingrese el nombre de usuario:','');
mail=prompt('Ingrese el mail:','');
document.write('Nombre de usuario ingresado:');
document.write(usuario);
document.write('<br>');
document.write('Mail ingresado:');
document.write(mail);
</script>

</body>
</html>

Lo primero que debemos tener en cuenta es que si queremos que el operador


+ sume los contenidos de los valores numéricos ingresados por teclado,
debemos llamar a la función parseInt y pasar como parámetro las variables
valor1 y valor2 sucesivamente.
Con esto logramos que el operador más, sume las variables como enteros y
no como cadenas de caracteres. Si por ejemplo sumamos 1 + 1 sin utilizar la
función 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 más 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.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var usuario;
var mail;
usuario=prompt('Ingrese el nombre de usuario:','');
mail=prompt('Ingrese el mail:','');
document.write('Nombre de usuario ingresado:');
document.write(usuario);
document.write('<br>');
document.write('Mail ingresado:');
document.write(mail);
</script>

</body>
</html>

Estructuras secuenciales de
programación.
 Problemas
 Codificar problema
 Ejecución problema
Es de fundamental importancia realizar los programas. Viendo sólo
los problemas resueltos en este curso de estudio no alcanza para
convertirse en un programador de aplicaciones.

PROBLEMAS
1. Realizar la carga del lado de un cuadrado, mostrar por pantalla el
perímetro del mismo (El perímetro de un cuadrado se calcula
multiplicando el valor del lado por cuatro)
2. Escribir un programa en el cual se ingresen cuatro números, calcular
e informar la suma de los dos primeros y el producto del tercero y
el cuarto.
3. Realizar un programa que lea cuatro valores numéricos e informar
su suma y producto.
4. Se debe desarrollar un programa que pida el ingreso del precio de
un artículo y la cantidad que lleva el cliente. Mostrar lo que debe
abonar el comprador (Ingresar por teclado un precio sin decimales,
es decir un entero: 2, 7, 90 etc.)
Solución
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

</script>

</body>
</html>

Estructuras condicionales simples.

No todos los problemas pueden resolverse empleando estructuras


secuenciales. Cuando hay que tomar una decisión 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 pantalón ?
¿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 mañana, tarde o noche ?

Por supuesto que en un problema se combinan estructuras secuenciales y


condicionales.
Cuando se presenta la elección tenemos la opción 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:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var nombre;
var nota;
nombre=prompt('Ingrese nombre:','');
nota=parseInt(prompt('Ingrese su nota:',''));
if (nota>=4)
{
document.write(nombre+' esta aprobado con un '+nota);
}
</script>

</body>
</html>

Aparece la instrucción if en el lenguaje JavaScript. La condición debe ir entre


paréntesis. Si la condición 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 condición del if deben intervenir


una variable un operador relacional y otra variable o valor fijo.

Como queremos que en la variable 'nota' se guarde como entero lo


convertimos llamando a parseInt:
nota=parseInt(prompt('Ingrese su nota:',''));
Otra cosa que hemos incorporado es el operador + para cadenas de
caracteres:
document.write(nombre+' esta aprobado con un '+nota);

Con esto hacemos más corto la cantidad de líneas de nuestro programa,


recordemos que veníamos haciéndolo de la siguiente forma:
document.write(nombre);
document.write(' esta aprobado con un ');
document.write(nota);
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var nombre;
var nota;
nombre=prompt('Ingrese nombre:','');
nota=parseInt(prompt('Ingrese su nota:',''));
if (nota>=4)
{
document.write(nombre+' esta aprobado con un '+nota);
}
</script>

</body>
</html>

Estructuras condicionales simples.


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS
1. Se ingresan tres notas de un alumno, si el promedio es mayor o
igual a siete mostrar el mensaje 'Promocionado'. Tener en cuenta
que para obtener el promedio debemos operar
suma=nota1+nota2+nota3; y luego hacer promedio=suma/3;
Cuando cargamos una nota y queremos convertir inmediatamente
el valor ingresado a entero podemos hacer:
nota1=prompt('Ingrese primer nota:','');
nota1=parseInt(nota1);
2. Solicitar que se ingrese dos veces una clave. Mostrar un mensaje si
son iguales (tener en cuenta que para ver si dos variables tienen el
mismo valor almacenado debemos utilizar el operador ==)
Solución
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

</script>

</body>
</html>

Estructuras condicionales compuestas.

Cuando se presenta la elección tenemos la opción de realizar una actividad


u otra. Es decir tenemos actividades por el verdadero y por el falso de la
condición. Lo más 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 solicite dos números distintos y muestre


el mayor de ellos:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var num1,num2;
num1=prompt('Ingrese el primer número:','');
num2=prompt('Ingrese el segundo número:','');
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 función prompt retorna un string por lo que debemos convertirlo a entero


cuando queremos saber cual de los dos valores es mayor numéricamente.
En el lenguaje JavaScript una variable puede ir cambiando el tipo de dato que
almacena a lo largo de la ejecución del programa.

Más adelante veremos qué sucede cuando preguntamos cuál 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 codificación:
if (<condición>)
{
<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 condición del if es verdadera se ejecuta el bloque que aparece después


de la condición, en caso que la condición resulte falsa se ejecuta la instrucción
o bloque de instrucciones que indicamos después del else.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var num1,num2;
num1=prompt('Ingrese el primer número:','');
num2=prompt('Ingrese el segundo número:','');
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>
PROBLEMAS

1. Realizar un programa que lea por teclado dos números, si el


primero es mayor al segundo informar su suma y diferencia, en
caso contrario informar el producto y la división del primero
respecto al segundo.
2. Se ingresan tres notas de un alumno, si el promedio es mayor o
igual a 4 mostrar un mensaje 'regular', sino 'reprobado'.
3. Se ingresa por teclado un número positivo de uno o dos dígitos
(1..99) mostrar un mensaje indicando si el número tiene uno o dos
dígitos (recordar de convertir a entero con parseInt para preguntar
posteriormente por una variable entera). Tener en cuenta qué
condición debe cumplirse para tener dos dígitos un número entero.
Solución
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".

Solución:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 condición nos de falso, por la rama del falso aparece otra
estructura condicional, porque todavía 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 ejecución 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 líneas de comentarios tenemos como


alternativa:
/*
linea de comentario 1.
linea de comentario 2.
etc.
*/

Es decir encerramos el bloque con los caracteres /* */

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Estructuras condicionales anidadas.


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Se cargan por teclado tres números distintos. Mostrar por pantalla


el mayor de ellos.
2. Se ingresa por teclado un valor entero, mostrar una leyenda que
indique si el número es positivo, cero o negativo.
3. Confeccionar un programa que permita cargar un número entero
positivo de hasta tres cifras y muestre un mensaje indicando si
tiene 1, 2, o 3 cifras.
4. De un postulante a un empleo, que realizó un test de capacitación,
se obtuvo la siguiente información: nombre del postulante,
cantidad total de preguntas que se le realizaron y cantidad de
preguntas que contestó correctamente. Se pide confeccionar un
programa que lea los datos del postulante e informe el nivel del
mismo según el porcentaje de respuestas correctas que ha
obtenido, y sabiendo que:
Nivel superior: Porcentaje>=90%.
Nivel medio: Porcentaje>=75% y <90%.
Nivel regular: Porcentaje>=50% y <75%.
Fuera de nivel: Porcentaje<50%.
Solución
Operadores lógicos && (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 más condiciones con el operador "&&" las dos
condiciones deben ser verdaderas para que el resultado de la condición
compuesta de Verdadero y continúe por la rama del verdadero de la
estructura condicional.

Recordemos que la condición debe ir entre paréntesis en forma obligatoria.

La utilización de operadores lógicos permiten en muchos casos, plantear


algoritmos más cortos y comprensibles.

Veamos un ejemplo: Confeccionar un programa que lea por teclado tres


números distintos y nos muestre el mayor de ellos.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var num1,num2,num3;
num1=prompt('Ingrese primer número:','');
num2=prompt('Ingrese segundo número:','');
num3=prompt('Ingrese tercer número:','');
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 falsa, la CONDICION COMPUESTA
da Falsa y continúa por la rama del falso.
Es decir que se mostrará el contenido de num1 si y sólo si num1>num2 y
num1>num3.
En caso de ser Falsa la condición analizamos el contenido de num2 y num3
para ver cual tiene un valor mayor.

En esta segunda estructura condicional, al haber una condición simple, no


se requieren operadores lógicos.

Operadores logicos
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var num1,num2,num3;
num1=prompt('Ingrese primer número:','');
num2=prompt('Ingrese segundo número:','');
num3=prompt('Ingrese tercer número:','');
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>

Operadores lógicos && (y) en las


estructuras condicionales.
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Realizar un programa que pida cargar una fecha cualquiera, luego


verificar si dicha fecha corresponde a Navidad (se debe cargar por
separado el dia, el mes y el año)
2. Se ingresan tres valores por teclado, si todos son iguales se
imprime la suma del primero con el segundo y a este resultado se
lo multiplica por el tercero (tener en cuenta que puede haber tres
condiciones simples)
3. Se ingresan por teclado tres números, si todos los valores
ingresados son menores a 10, imprimir en la página la leyenda '
Todos los números son menores a diez'.
4. Escribir un programa que pida ingresar la coordenada de un punto
en el plano, es decir dos valores enteros x e y.
Posteriormente imprimir en pantalla en qué cuadrante se ubica
dicho punto. (1º Cuadrante si x > 0 Y y > 0 , 2º Cuadrante: x < 0
Y y > 0, etc.)
5. De un operario se conoce su sueldo y los años de antigüedad. Se
pide confeccionar un programa que lea los datos de entrada e
informe
a) Si el sueldo es inferior a 500 y su antigüedad es igual o superior
a 10 años, otorgarle un aumento del 20 %, mostrar el sueldo a
pagar.
b) Si el sueldo es inferior a 500 pero su antigüedad es menor a 10
años, otorgarle un aumento de 5 %.
c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la
página sin cambios.
Solución

Traducido se lo lee como "O". Si la condición 1 es Verdadera o la condición


2 es Verdadera, luego ejecutar la rama del Verdadero.

Cuando vinculamos dos o más condiciones con el operador "O", con que
una de las dos condiciones sea Verdadera alcanza para que el resultado de
la condición compuesta sea Verdadero.

Ejemplo: Se carga una fecha (día, mes y año) por teclado. Mostrar un
mensaje si corresponde al primer trimestre del año (enero, febrero o marzo).

Cargar por teclado el valor numérico del día, mes y año por separado.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var dia,mes,año;
dia=prompt('Ingrese día:','');
mes=prompt('Ingrese mes:','');
año=prompt('Ingrese año:','');
dia=parseInt(dia);
mes=parseInt(mes);
año=parseInt(año);
if (mes==1 || mes==2 || mes==3)
{
document.write('corresponde al primer trimestre del año.');
}
</script>

</body>
</html>

La carga de una fecha se hace por partes, ingresamos las variables dia,
mes y año.

Si alguna de las condiciones simples del if da verdadero luego se muestra el


mensaje:
if (mes==1 || mes==2 || mes==3)
{
document.write('corresponde al primer trimestre del año.');
}
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var dia,mes,año;
dia=prompt('Ingrese día:','');
mes=prompt('Ingrese mes:','');
año=prompt('Ingrese año:','');
dia=parseInt(dia);
mes=parseInt(mes);
año=parseInt(año);
if (mes==1 || mes==2 || mes==3)
{
document.write('corresponde al primer trimestre del año.');
}
</script>

</body>

</html> Operadores lógicos || (o) en las


estructuras condicionales.
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Se ingresan por teclado tres números, si al menos uno de los


valores ingresados es menores a 10, imprimir en la página la
leyenda 'Alguno de los números es menor a diez'.
Solución
Estructuras switch.

La instrucción switch es una alternativa para remplazar en algunas


situaciones los if/else if.
De todos modos se puede aplicar en ciertas situaciones donde la condición
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.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 después


de la instrucción switch entre paréntesis. 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 después de la palabra clave 'default' se ejecutan en
caso que la variable no se verifique en algún case. De todos modos el
default es opcional en esta instrucción.

Plantearemos un segundo problema para ver que podemos utilizar variables


de tipo cadena con la instrucción switch.
Ingresar por teclado el nombre de un color (rojo, verde o azul), luego
mostraremos un mensaje indicando el color ingresado:
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var col;
col=prompt('Ingrese alguno de estos tres colores (rojo, verde,
azul)' ,'');
switch (col) {
case 'rojo': document.write('se ingresó rojo');
break;
case 'verde': document.write('se ingresó verde');
break;
case 'azul': document.write('se ingresó azul');
break;
}
</script>

</body>
</html>

Cuando verificamos cadenas debemos encerrarlas entre comillas el valor a


analizar:
case 'rojo': document.write('se ingresó rojo');
break;
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Estructuras switch.
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Solicitar el ingreso alguna de estas palabras (casa, mesa, perro,


gato) luego mostrar la palabra traducida en inglés. Es decir, si se
ingresa 'casa' debemos mostrar el texto 'house' en la página.

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 instrucción o un conjunto de


instrucciones varias veces.
Una ejecución repetitiva de sentencias se caracteriza por:

- La o las sentencias que se repiten.


- El test o prueba de condición antes de cada repetición, que motivará que
se repitan o no las sentencias.

Funcionamiento del while: En primer lugar se verifica la condición, si la


misma resulta verdadera se ejecutan las operaciones que indicamos entre
las llaves que le siguen al while.
En caso que la condición sea Falsa continúa con la instrucción siguiente al
bloque de llaves.

El bloque se repite MIENTRAS la condición sea Verdadera.

Importante: Si la condición siempre retorna verdadero estamos en


presencia de un ciclo repetitivo infinito. Dicha situación es un error de
programación, nunca finalizará el programa.

Ejemplo: Realizar un programa que imprima en pantalla los números 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 solución es muy larga.

La mejor forma de resolver este problema es emplear una estructura


repetitiva:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var x;
x=1;
while (x<=100)
{
document.write(x);
document.write('<br>');
x=x+1;
}
</script>

</body>
</html>

Para que se impriman los números, uno en cada línea, agregamos la


etiqueta HTML de <br>.

Es muy importante analizar este programa:


La primera operación inicializa la variable x en 1, seguidamente comienza la
estructura repetitiva while y disponemos la siguiente condición ( x <= 100),
se lee MIENTRAS la variable x sea menor o igual a 100.
Es importante decir que NO debe haber un punto y coma al final del while, si
hacemos esto estamos en presencia de un error lógico.
Al ejecutarse la condición, retorna VERDADERO, porque el contenido de x
(1) es menor o igual a 100.
Al ser la condición verdadera se ejecuta el bloque de instrucciones que
contiene la estructura while. El bloque de instrucciones contiene dos salidas
al documento y una operación.

Se imprime el contenido de x y seguidamente se incrementa la variable x en


uno.

La operación x = x + 1 se lee como "en la variable x se guarda el contenido


de x más 1". Es decir, si x contiene 1 luego de ejecutarse esta operación se
almacenará en x un 2.

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


se verifica nuevamente la condición de la estructura repetitiva y se repite el
proceso explicado anteriormente.

Mientras la condición retorne verdadero, se ejecuta el bloque de


instrucciones; al retornar falso la verificación de la condición, se sale de la
estructura repetitiva y continúa el algoritmo, en este caso, finaliza el
programa.
Lo más difícil es la definición de la condición de la estructura while y qué
bloque de instrucciones se va a repetir. Observar que si, por ejemplo,
disponemos la condición x >=100 ( si x es mayor o igual a 100) no provoca
ningún error sintáctico pero estamos en presencia de un error lógico porque
al evaluarse por primera vez la condición retorna falso y no se ejecuta el
bloque de instrucciones que queríamos repetir 100 veces.

No existe una RECETA para definir una condición de una estructura


repetitiva, sino que se logra con una práctica continua, solucionando
problemas.

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


solución válida al problema (en este caso se deben imprimir los números del
1 al 100 en la página), para ello podemos hacer un seguimiento del flujo y
los valores que toman las variables a lo largo de la ejecución:
x
1
2
3
4
.
.
100
101 Cuando x vale 101 la condición de la estructura
repetitiva retorna falso, en este caso finaliza la
estructura repetitiva.

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 ejecución del programa.

El contador x nos indica en cada momento la cantidad de valores impresos


en la página.

Importante: Podemos observar que el bloque repetitivo puede no ejecutarse


si la condición retorna falso la primera vez.

La variable x debe estar inicializada con algún valor antes que se ejecute la
operación x = x + 1.

Probemos algunas modificaciones de este programa y veamos qué cambios


se deberían hacer para:

1 - Imprimir los números del 1 al 500.


2 - Imprimir los números del 50 al 100.
3 - Imprimir los números del -50 al 0.
4 - Imprimir los números del 2 al 100 pero de 2 en 2 (2,4,6,8 ....100).

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var x;
x=1;
while (x<=100)
{
document.write(x);
document.write('<br>');
x=x+1;
}
</script>

</body>
</html>

Estructura repetitiva (while)


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Realizar un programa que imprima 25 términos de la serie 11 - 22


- 33 - 44, etc. (No se ingresan valores por teclado).
2. Mostrar los múltiplos de 8 hasta el valor 500. Debe aparecer en
pantalla 8 -16 -24, etc.
Solución
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.
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

También aparece el concepto de ACUMULADOR (un acumulador es un tipo


especial de variable que se incrementa o decrementa con valores variables
durante la ejecución 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 se realiza dándole 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 números que toma la


variable valor dependerá de qué cifras cargue el operador durante la
ejecución del programa.

Hay que tener en cuenta que cuando en la variable valor se carga el primer
número (en éste 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.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Concepto de acumulador.
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

Ha llegado la parte fundamental, que es el momento donde uno


desarrolla individualmente un algoritmo para la resolución de
problemas.
El tiempo a dedicar a esta sección EJERCICIOS PROPUESTOS debe
ser mucho mayor que el empleado al ver EJERCICIOS RESUELTOS.
La experiencia dice que debemos dedicar el 80 % del tiempo a la
resolución individual de problemas y el otro 20 % al análisis y
codificación de problemas ya resueltos por otras personas.
Es de vital importancia para llegar a ser un buen PROGRAMADOR
poder resolver problemas en forma individual.

1. Escribir un programa que lea 10 notas de alumnos y nos informe


cuántos tienen notas mayores o iguales a 7 y cuántos menores.
2. Se ingresan un conjunto de 5 alturas de personas por teclado.
Mostrar la altura promedio de las personas.
3. En una empresa trabajan 5 empleados cuyos sueldos oscilan entre
$100 y $500, realizar un programa que lea los sueldos que cobra
cada empleado e informe cuántos empleados cobran entre $100 y
$300 y cuántos cobran más de $300. Además el programa deberá
informar el importe que gasta la empresa en sueldos al personal.
4. Realizar un programa que imprima 20 términos de la serie 5 - 10 -
15 - 20, etc. (No se ingresan valores por teclado)
5. Mostrar los múltiplos de 10 hasta el valor 1500.
Debe aparecer en pantalla 10 - 20 -30 etc.
6. Realizar un programa que permita cargar dos listas de 3 valores
cada una. Informar con un mensaje cual de las dos listas tiene un
valor acumulado mayor (mensajes 'Lista 1 mayor', 'Lista 2 mayor',
'Listas iguales')
Tener en cuenta que puede haber dos o más estructuras
repetitivas en un algoritmo.
7. Desarrollar un programa que permita cargar 5 números enteros y
luego nos informe cuántos valores fueron pares y cuántos impares.
Emplear el operador "%" en la condición de la estructura
condicional.
8. if (valor%2==0)
El operador "%" retorna el resto de la división valor / 2. Por
ejemplo: 12 % 2, retorna 0; 13 % 2, retorna 1, porque el resto de
dividir 13 en 2 es 1.
Solución

Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var x=0;
var cant1=0;
var cant2=0;
while (x<10)
{
var nota;
nota=prompt('Ingrese nota','');
if (nota>=7)
{
cant1=cant1+1;
}
else
{
cant2=cant2+1;
}
x=x+1;
}
document.write('Cantidad de alumnos con notas mayores o iguales a 7:'+cant1);
document.write('<br>');
document.write('Cantidad de alumnos con notas menores a 7:'+cant2);
</script>

</body>
</html>

Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
var x=0;
var suma=0;
while (x<5)
{
var altura;
altura=prompt('Ingrese la altura en centímetros(Ej. 175)','');
altura=parseInt(altura);
suma=suma+altura;
x=x+1;
}
var promedio=suma/5;
document.write('La altura promedio de las cinco personas es:'+promedio);
</script>

</body>
</html>

Problema 3.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var cont1=0;
var cont2=0;
var total=0;
var sueldo;
var x=0;
while (x<5)
{
sueldo=prompt('Ingrese el sueldo','');
sueldo=parseInt(sueldo);
if (sueldo<=300)
{
cont1=cont1+1;
}
else
{
cont2=cont2+1;
}
total=total+sueldo;
x=x+1;
}
document.write('Cantidad de empleados que cobran 300 o menos:'+cont1);
document.write('<br>');
document.write('Cantidad de empleados que cobran más de 300:'+cont2);
document.write('<br>');
document.write('Gastos en sueldos en la empresa:'+total);
</script>

</body>
</html>

Problema 4.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var serie=5;
var x=0;
while (x<20)
{
document.write(serie+' ');
x=x+1;
serie=serie+5;
}
</script>

</body>
</html>

Problema 5.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
document.write('Múltiplos de 10 hasta el 1500<br>');
var multiplo=10;
while (multiplo<=1500)
{
document.write(multiplo+' ');
multiplo=multiplo+10;
}
</script>
</body>
</html>

Problema 6.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var total1=0;
var x=0;
var nro;
while(x<3)
{
nro=prompt('Ingrese valor de la primer lista:','');
nro=parseInt(nro);
total1=total1+nro;
x=x+1;
}
var total2=0;
x=0;
while(x<3)
{
nro=prompt('Ingrese valor de la segunda lista:','');
nro=parseInt(nro);
total2=total2+nro;
x=x+1;
}
if (total1>total1)
{
document.write('Tiene mayor valor la lista1');
}
else
{
if (total1<total2)
{
document.write('Tiene mayor valor la lista2');
}
else
{
document.write('Tienen el mismo valor acumulado las dos listas');
}
}
</script>

</body>
</html>
Problema 7.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var cantpares=0;
var cantimpares=0;
var x=0;
var valor;
while (x<5)
{
valor=prompt('Ingrese un valor','');
valor=parseInt(valor);
if (valor%2==0)
{
cantpares=cantpares+1;
}
else
{
cantimpares=cantimpares+1;
}
x=x+1;
}
document.write('Cantidad de valores pares ingresados:'+cantpares);
document.write('<br>');
document.write('Cantidad de valores impares ingresados:'+cantimpares);
</script>

</body>
</html>

Listado completo de tutoriales


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 condición de la estructura está abajo del bloque a repetir, a diferencia del
while que está en la parte superior.

Finaliza la ejecución del bloque repetitivo cuando la condición retorna falso,


es decir igual que el while.

Problema: Escribir un programa que solicite la carga de un número entre 0 y


999, y nos muestre un mensaje de cuántos dígitos tiene el mismo. Finalizar
el programa cuando se cargue el valor 0.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 número de una cifra, si es mayor a 10 pero menor
a 100 se trata de un valor de dos dígitos, en caso contrario se trata de un
valor de tres dígitos. Este bloque se repite mientras se ingresa en la variable
'valor' un número distinto a 0.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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> Estructura repetitiva


(do/while)
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Realizar un programa que acumule (sume) valores ingresados por


teclado hasta ingresa el 9999 (no sumar dicho valor, solamente
indica que ha finalizado la carga). Imprimir el valor acumulado e
informar si dicho valor es cero, mayor a cero o menor a cero.
2. En un banco se procesan datos de las cuentas corrientes de sus
clientes. De cada cuenta corriente se conoce: número de cuenta,
nombre del cliente y saldo actual. El ingreso de datos debe
finalizar al ingresar un valor negativo en el número de cuenta.
Se pide confeccionar un programa que lea los datos de las cuentas
corrientes e informe:
a) De cada cuenta: número de cuenta, nombre del cliente y estado
de la cuenta según su saldo, sabiendo que:
3. Estado de la cuenta 'Acreedor' si el saldo es >0.
4. 'Deudor' si el saldo es <0.
5. 'Nulo' si el saldo es =0.
b) La suma total de los saldos acreedores.
6. Se realizó un censo provincial y se desea procesar la información
obtenida en dicho censo. De cada una de las personas censadas se
tiene la siguiente información: número de documento, edad y sexo
('femenino' o 'masculino')
Se pide confeccionar un programa que lea los datos de cada
persona censada (para finalizar ingresar el valor cero en el número
de documento) e informar:
7.
8. a) Cantidad total de personas censadas.
9. b) Cantidad de varones.
10. c) Cantidad de mujeres.
11. d) Cantidad de varones cuya edad varía entre 16 y 65 años.
Problema 1.
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var valor;
var suma=0;
do {
valor=prompt('Ingrese un valor (9999 para finalizar)','');
valor=parseInt(valor);
if (valor!=9999)
{
suma=suma+valor;
}
} while(valor!=9999);
document.write('Valor acumulado total:'+suma);
document.write('<br>');
if (suma>0)
{
document.write('El valor acumulado es mayor a cero');
}
else
{
if (suma==0)
{
document.write('El valor acumulado es cero');
}
else
{
document.write('El valor acumulado es menor a cero');
}
}
</script>

</body>
</html>

Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
var nrocuenta;
var nombre;
var saldo=0;
var saldoacre=0;
do {
nrocuenta=prompt('Ingrese nro de cuenta:','');
nrocuenta=parseInt(nrocuenta);
if (nrocuenta>=0)
{
nombre=prompt('Nombre del cliente:');
saldo=prompt('Saldo actual:','');
saldo=parseInt(saldo);
if (saldo>0)
{
saldoacre=saldoacre+saldo;
document.write(nombre+' tiene saldo acreedor<br>');
}
else
{
if (saldo<0)
{
document.write(nombre+' tiene saldo deudor<br>');
}
else
{
document.write(nombre+' tiene saldo nulo<br>');
}
}

}
}while(nrocuenta>0);
document.write('Suma total de saldos acreedores:'+saldoacre);
</script>

</body>
</html>

Problema 3.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var documento;
var edad;
var totalpersonas=0;
var cantvarones=0;
var cantmujeres=0;
var cantvaronesgrandes=0;
do {
documento=prompt('Ingrese nro de documento:','');
documento=parseInt(documento);
if (documento>0)
{
edad=prompt('Ingrese la edad:','');
edad=parseInt(edad);
sexo=prompt('Ingrese el sexo (masculino/femenino):','');
if (sexo=='masculino')
{
cantvarones=cantvarones+1;
if (edad>=16 && edad<=65)
{
cantvaronesgrandes=cantvaronesgrandes+1;
}
}
if (sexo=='femenino')
{
cantmujeres=cantmujeres+1;
}
totalpersonas=totalpersonas+1;
}
}while(documento!=0);
document.write('Total de personas censadas: '+totalpersonas+'<br>');
document.write('Cantidad de varones: '+cantvarones+'<br>');
document.write('Cantidad de mujeres: '+cantmujeres+'<br>');
document.write('Cantidad de varones entre 16 y 65 años: '+cantvaronesgrandes+'<br>');
</script>

</body>
</html>

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 más 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 números, 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 ejecución de la sentencia break dentro de
cualquier parte del bucle provoca la salida inmediata del mismo.
Sintaxis:
for (<Inicialización> ; <Condición> ; <Incremento o Decremento>)
{
<Instrucciones>
}

Esta estructura repetitiva tiene tres argumentos: variable de inicialización,


condición y variable de incremento o decremento.
Funcionamiento:
1 - Primero se ejecuta por única vez el primer argumento
<Inicialización>.
Por lo general se inicializa una variable.
2 - El segundo paso es evaluar la (Condición), en caso de ser
verdadera se ejecuta
el bloque, en caso contrario continúa el programa.
3 - El tercer paso es la ejecución de las instrucciones.
4 - El cuarto paso es ejecutar el tercer argumento (Incremento o
Decremento).
5 - 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 números del 1 al 10.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

</body>
</html>

Inicialmente f se la inicializa con 1. Como la condición 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 éste otro
operador matemático 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 lógico y no sintáctico, por lo


que el navegador no avisará.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

</body>
</html>

Estructura repetitiva (for)


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS
1. Confeccionar un programa que lea 3 pares de datos, cada par de
datos corresponde a la medida de la base y la altura de un
triángulo. El programa deberá informar:
a) De cada triángulo la medida de su base, su altura y su
superficie.
b) La cantidad de triángulos cuya superficie es mayor a 12.
2. Desarrollar un programa que solicite la carga de 10 números e
imprima la suma de lo últimos 5 valores ingresados.

3. Desarrollar un programa que muestre la tabla de multiplicar del 5


(del 5 al 50).
4. Confeccionar un programa que permita ingresar un valor del 1 al
10 y nos muestre la tabla de multiplicar del mismo (los primeros
12 términos)
Ejemplo: Si ingreso 3 deberá aparecer en pantalla los valores 3, 6,
9, hasta el 36.
5. Realizar un programa que lea los lados de 4 triángulos, e informar:
a) De cada uno de ellos, qué tipo de triángulo es: equilátero (tres
lados iguales), isósceles (dos lados iguales), o escaleno (ningún
lado igual)
b) Cantidad de triángulos de cada tipo.
c) Tipo de triángulo del que hay menor cantidad.
6. Escribir un programa que pida ingresar coordenadas (x,y) que
representan puntos en el plano. Informar cuántos puntos se han
ingresado en el primer, segundo, tercer y cuarto cuadrante. Al
comenzar el programa se pide que se ingrese la cantidad de
puntos a procesar.
7. Se realiza la carga de 10 valores enteros por teclado. Se desea
conocer:
a) La cantidad de valores negativos ingresados.
b) La cantidad de valores positivos ingresados.
c) La cantidad de múltiplos de 15.
d) El valor acumulado de los números ingresados que son pares.
8. Se cuenta con la siguiente información:
Las edades de 5 estudiantes del turno mañana.
Las edades de 6 estudiantes del turno tarde.
Las edades de 11 estudiantes del turno noche.
Las edades de cada estudiante deben ingresarse por teclado.
a) Obtener el promedio de las edades de cada turno (tres
promedios).
b) Imprimir dichos promedios (promedio de cada turno).
c) Mostrar por pantalla un mensaje que indique cual de los tres
turnos tiene un promedio de edades mayor.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var f;
var base;
var altura;
var superficie;
var conta1=0;
for(f=1;f<=3;f++)
{
base=prompt('Ingrese la base:','');
base=parseInt(base);
altura=prompt('Ingrese la altura:','');
altura=parseInt(altura);
superficie=base*altura/2;
if (superficie>12)
{
conta1++;
}
document.write('Triángulo nro:'+f+'<br>');
document.write('Base:'+base+'<br>');
document.write('Altura:'+altura+'<br>');
document.write('Superficie:'+superficie+'<br>');
}
document.write('Cantidad de triángulos con superficie mayor a 12:'+conta1);
</script>

</body>
</html>

Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
//Desarrollar un programa que solicite la carga de 10 números e imprima la suma de lo
//últimos 5 valores ingresados.
var suma=0;
var f;
var valor;
for(f=1;f<=10;f++)
{
valor=prompt('Ingrese un nro:','');
valor=parseInt(valor);
if (f>5)
{
suma=suma+valor;
}
}
document.write('La suma de los últimos cinco valores ingresados es:'+suma);
</script>

</body>
</html>

Problema 3.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
//Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50).
var tabla=5;
var f=1;
for(f=1;f<=10;f++)
{
document.write(tabla+'-');
tabla=tabla+5;
}
</script>

</body>
</html>

Problema 4.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
/*Confeccionar un programa que permita ingresar un valor del 1 al 10 y
nos muestre la tabla de multiplicar del mismo (los primeros 12 términos)
Ejemplo: Si ingreso 3 deberá aparecer en pantalla los valores 3, 6, 9, hasta el 36.*/
var tabla;
var f;
var conta;
tabla=prompt('Ingrese un valor del 1 al 10:','');
tabla=parseInt(tabla);
conta=tabla;
for(f=1;f<=12;f++)
{
document.write(conta+ ' ');
conta=conta+tabla;
}
</script>

</body>
</html>

Problema 5.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
/* Realizar un programa que lea los lados de 4 triángulos, e informar:
a) De cada uno de ellos, qué tipo de triángulo es:
equilátero (tres lados iguales), isósceles (dos lados iguales), o escaleno (ningún lado igual)
b) Cantidad de triángulos de cada tipo.
c) Tipo de triángulo del que hay menor cantidad. */

var cant1=0;
var cant2=0;
var cant3=0;
var lado1;
var lado2;
var lado3;
var f;
for(f=1;f<=4;f++)
{
lado1=prompt('Ingrese primer lado:','');
lado1=parseInt(lado1);
lado2=prompt('Ingrese segundo lado:','');
lado2=parseInt(lado2);
lado3=prompt('Ingrese tercer lado:','');
lado3=parseInt(lado3);
if (lado1==lado2 && lado1==lado3)
{
document.write('Triángulo equilatero.<br>');
cant1++;
}
else
{
if (lado1==lado2 || lado1==lado3 || lado2==lado3)
{
document.write('Triángulo isósceles.<br>');
cant2++;
}
else
{
document.write('Triángulo escaleno.<br>');
cant3++;
}
}
}
document.write('<br>');
document.write('Cantidad de triángulos equiláteros:'+cant1+'<br>');
document.write('Cantidad de triángulos isósceles:'+cant2+'<br>');
document.write('Cantidad de triángulos escalenos:'+cant3+'<br>');
if (cant1<cant2 && cant1<cant3)
{
document.write('Se ingresaron menos triángulos equiláteros');
}
else
{
if (cant2<cant3)
{
document.write('Se ingresaron menos triángulos isósceles');
}
else
{
document.write('Se ingresaron menos triángulos escalenos');
}
}
</script>

</body>
</html>

Problema 6.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
/*Escribir un programa que pida ingresar coordenadas (x,y) que representan puntos en el plano.
Informar cuántos puntos se han ingresado en el primer, segundo, tercer y cuarto cuadrante.
Al comenzar el programa se pide que se ingrese la cantidad de puntos a procesar.*/

var cuad1=0;
var cuad2=0;
var cuad3=0;
var cuad4=0;
var x;
var y;
var f;
var cant;
cant=prompt('Cuantos puntos procesará:','');
cant=parseInt(cant);
for(f=1;f<=cant;f++)
{
x=prompt('Ingrese coordenada x:','');
x=parseInt(x);
y=prompt('Ingrese coordenada y:','');
y=parseInt(y);
if (x>0 && y>0)
{
cuad1++;
}
else
{
if (x<0 && y>0)
{
cuad2++;
}
else
{
if (x<0 && y<0)
{
cuad3++;
}
else
{
if (x>0 && y<0)
{
cuad4++;
}
}
}
}
}
document.write('Cantidad de puntos ingresados en el primer cuadrante:'+cuad1+'<br>');
document.write('Cantidad de puntos ingresados en el segundo cuadrante:'+cuad2+'<br>');
document.write('Cantidad de puntos ingresados en el tercer cuadrante:'+cuad3+'<br>');
document.write('Cantidad de puntos ingresados en el cuarto cuadrante:'+cuad4+'<br>');
</script>
</body>
</html>

Problema 7.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
/*Se realiza la carga de 10 valores enteros por teclado. Se desea conocer:
a) La cantidad de valores negativos ingresados.
b) La cantidad de valores positivos ingresados.
c) La cantidad de múltiplos de 15.
d) El valor acumulado de los números ingresados que son pares.*/

var cantnegativos=0;
var cantpositivos=0;
var mult15=0;
var sumapares=0;
var f;
var valor;
for(f=1;f<=10;f++)
{
valor=prompt('Ingrese un valor:','');
valor=parseInt(valor);
if (valor<0)
{
cantnegativos++;
}
else
{
if (valor>0)
{
cantpositivos++;
}
}
if (valor%15==0 && valor!=0)
{
mult15++;
}
if (valor%2==0)
{
sumapares=sumapares+valor;
}
}
document.write('Cantidad de valores negativos:'+cantnegativos+'<br>');
document.write('Cantidad de valores positivos:'+cantpositivos+'<br>');
document.write('Cantidad de múltiplos de 15:'+mult15+'<br>');
document.write('Suma de los valores pares ingresados:'+sumapares+'<br>');
</script>

</body>
</html>

Problema 8.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
/*Se cuenta con la siguiente información:
Las edades de 5 estudiantes del turno mañana.
Las edades de 6 estudiantes del turno tarde.
Las edades de 11 estudiantes del turno noche.
Las edades de cada estudiante deben ingresarse por teclado.
a) Obtener el promedio de las edades de cada turno (tres promedios)
b) Imprimir dichos promedios (promedio de cada turno).
c) Mostrar por pantalla un mensaje que indique cual de los
tres turnos tiene un promedio de edades mayor. */

var suma1=0;
var edad;
var f;
for(f=1;f<=5;f++)
{
edad=prompt('Edad de estudiante del turno mañana:','');
edad=parseInt(edad);
suma1=suma1+edad;
}
var suma2=0;
for(f=1;f<=6;f++)
{
edad=prompt('Edad de estudiante del turno tarde:','');
edad=parseInt(edad);
suma2=suma2+edad;
}
var suma3=0;
for(f=1;f<=11;f++)
{
edad=prompt('Edad de estudiante del turno noche:','');
edad=parseInt(edad);
suma3=suma3+edad;
}
var promedio1=suma1/5;
var promedio2=suma2/6;
var promedio3=suma3/11;
document.write('Promedio de edades de alumnos del turno mañana:'+promedio1+'<br>');
document.write('Promedio de edades de alumnos del turno tarde:'+promedio2+'<br>');
document.write('Promedio de edades de alumnos del turno noche:'+promedio3+'<br>');
if (promedio1>promedio2 && promedio1>promedio3)
{
document.write('El turno mañana tiene un promedio mayor de edades');
}
else
{
if (promedio2>promedio3)
{
document.write('El turno tarde tiene un promedio mayor de edades');
}
else
{
document.write('El turno noche tiene un promedio mayor de edades');
}
}
</script>

</body>
</html>

Funciones

En programación es muy frecuente que un determinado procedimiento de


cálculo 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 más potente con que se cuenta para facilitar, reducir y dividir
el trabajo en programación, 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 también 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
función, aunque resulte que sólo 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
pequeños algoritmos.
Una función 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 parámetros.


Con el nombre llamamos a la función, es decir, hacemos referencia a la
misma.
Los parámetros son valores que se envían y son indispensables para la
resolución del mismo.
La función realizará alguna operación con los parámetros que le enviamos.
Podemos cargar una variable, consultarla, modificarla, imprimirla, etc.

Incluso los programas más sencillos tienen la necesidad de fragmentarse.


Las funciones son los únicos tipos de subprogramas que acepta JavaScript.
Tienen la siguiente estructura:
function <nombre de función>(argumento1, argumento2, ..., argumento n)
{
<código de la función>
}

Debemos buscar un nombre de función que nos indique cuál es su objetivo


(Si la función recibe un string y lo centra, tal vez deberíamos llamarla
centrarTitulo). Veremos que una función puede variar bastante en su
estructura, puede tener o no parámetros, retornar un valor, etc.

Ejemplo: Mostrar un mensaje que se repita 3 veces en la página con el


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

'Cuidado'
'Ingrese su documento correctamente'

'Cuidado'
'Ingrese su documento correctamente'

La solución sin emplear funciones es:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 función:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 mayúsculas y minúsculas. Si


fijamos como nombre a la función mostrarMensaje (es decir la segunda
palabra con mayúscula) debemos respetar este nombre cuando la llamemos
a dicha función.

Es importante notar que para que una función se ejecute debemos llamarla
desde fuera por su nombre (en este ejemplo: mostrarMensaje()).

Cada vez que se llama una función se ejecutan todas las líneas contenidas
en la misma.
Si no se llama a la función, las instrucciones de la misma nunca se
ejecutarán.

A una función la podemos llamar tantas veces como necesitemos.


Las funciones nos ahorran escribir código que se repite con frecuencia y
permite que nuestro programa sea más entendible.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

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

</body>
</html>
Funciones con parámetros.

Explicaremos con un ejemplo, una función que tiene datos de entrada.

Ejemplo: Confeccionar una función que reciba dos números y muestre en la


página los valores comprendidos entre ellos de uno en uno. Cargar por
teclado esos dos valores.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 función.
Luego de cargar los dos valores por teclado se llama a la función
mostrarComprendidos y le enviamos las variables valor1 y valor2. Los
parámetros x1 y x2 reciben los contenidos de las variables valor1 y valor2.

Es importante notar que a la función la podemos llamar la cantidad de veces


que la necesitemos.
Los nombres de los parámetros, 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 función, en este caso le pasamos los valores valor1
y valor2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Funciones con parámetros.


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Elaborar una función a la cual le enviemos tres enteros y muestre


el menor.
2. Confeccionar una función a la cual le envíe tres enteros y los
muestre ordenados de menor a mayor.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
//Elaborar una función a la cual le enviemos tres enteros y muestre el menor.
function mostrarMenor(x1,x2,x3)
{
if (x1<x2 && x1<x3)
{
document.write('El menor de los tres valores es :'+x1);
}
else
{
if (x2<x3)
{
document.write('El menor de los tres valores es :'+x2);
}
else
{
document.write('El menor de los tres valores es :'+x3);
}
}
}

var valor1,valor2,valor3;
valor1=prompt('Ingrese primer valor:','');
valor1=parseInt(valor1);
valor2=prompt('Ingrese segundo valor:','');
valor2=parseInt(valor2);
valor3=prompt('Ingrese tercer valor:','');
valor3=parseInt(valor3);
document.write('Los tres valores ingresados son '+valor1+' '+valor2+' '+valor3+'<br>');
mostrarMenor(valor1,valor2,valor3);
</script>

</body>
</html>
Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
//Confeccionar una función a la cual le envíe tres enteros y
//los muestre ordenados de menor a mayor.

function mostrarOrdenados(x1,x2,x3)
{
if (x1<x2 && x1<x3)
{
document.write(x1+' ');
if (x2<x3)
{
document.write(x2+' '+x3);
}
else
{
document.write(x3+' '+x2);
}
}
else
{
if (x2<x3)
{
document.write(x2+' ');
if (x1<x3)
{
document.write(x1+' '+x3);
}
else
{
document.write(x3+' '+x1);
}
}
else
{
document.write(x3+' ');
if (x1<x2)
{
document.write(x1+' '+x2);
}
else
{
document.write(x2+' '+x1);
}
}
}
}

var valor1,valor2,valor3;
valor1=prompt('Ingrese primer valor:','');
valor1=parseInt(valor1);
valor2=prompt('Ingrese segundo valor:','');
valor2=parseInt(valor2);
valor3=prompt('Ingrese tercer valor:','');
valor3=parseInt(valor3);
document.write('Los tres valores ingresados son '+valor1+' '+valor2+' '+valor3+'<br>');
document.write('Los valores ordenados de menor a mayor son: ');
mostrarOrdenados(valor1,valor2,valor3);
</script>

</body>
</html>

Funciones que retornan un valor.

Son comunes los casos donde una función, luego de hacer un proceso,
retorne un valor.

Ejemplo 1: Confeccionar una función que reciba un valor entero


comprendido entre 1 y 5. Luego retornar en castellano el valor recibido.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 función lo indicamos por medio
de la palabra clave return. Cuando se llama a la función, debemos asignar
el nombre de la función a una variable, ya que la misma retorna un valor.

Una función puede tener varios parámetros, pero sólo puede retornar un
único valor.

La estructura condicional if de este ejemplo puede ser remplazada por la


instrucción switch, la función 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 más elegante que una serie de if anidados. La instrucción
switch analiza el contenido de la variable x con respecto al valor de cada
caso. En la situación de ser igual, ejecuta el bloque seguido de los 2 puntos
hasta que encuentra la instrucción return o break.

Ejemplo 2: Confeccionar una función que reciba una fecha con el formato de
día, mes y año y retorne un string con un formato similar a: "Hoy es 10 de
junio de 2018".

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

function formatearFecha(dia,mes,año)
{
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 '+año;
return s;
}

document.write(formatearFecha(11,6,2018));
</script>

</body>
</html>

Analicemos un poco la función formatearFecha. Llegan tres parámetros con


el día, mes y año.
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 parámetro mes tiene un uno. Observemos como acumulamos lo
que tiene 's' más el string 'enero '. En caso de hacer s='enero ' perderíamos
el valor previo que tenía la variable s.

Por último concatenamos el año:


s=s+'de '+año;

Cuando se llama a la función directamente, al valor devuelto se lo enviamos


a la función write del objeto document. Esto último lo podemos hacer en dos
pasos:
var fec= formatearFecha(11,6,2018);
document.write(fec);

Guardamos en la variable 'fec' el string devuelto por la función.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

function formatearFecha(dia,mes,año)
{
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 '+año;
return s;
}

document.write(formatearFecha(11,6,2018));
</script>

</body>
</html>

Funciones que retornan un valor.


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Confeccionar una función a la cual le envíe tres enteros y retorne


el mayor de ellos.
2. Elaborar una función a la cual le envíe el valor del lado de un
cuadrado y me retorne su perímetro.
3. Desarrollar una función que retorne la cantidad de dígitos que
tiene una variable entera positiva de hasta 5 dígitos.
4. Elaborar una función que reciba tres enteros y retorne el
promedio.
5. Confeccionar una función que solicite la carga de 5 valores por
teclado y retorne su suma.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
//Confeccionar una función a la cual le envíe tres enteros
//y retorne el mayor de ellos.

function retornarMayor(x1,x2,x3)
{
if (x1>x2 && x1>x3)
{
return x1;
}
else
{
if (x2>x3)
{
return x2;
}
else
{
return x3;
}
}
}

var valor1,valor2,valor3;
valor1=prompt('Ingrese primer valor:','');
valor1=parseInt(valor1);
valor2=prompt('Ingrese segundo valor:','');
valor2=parseInt(valor2);
valor3=prompt('Ingrese tercer valor:','');
valor3=parseInt(valor3);
document.write('Los tres valores ingresados son '+valor1+' '+valor2+' '+valor3+'<br>');
var may;
may=retornarMayor(valor1,valor2,valor3);
document.write('El mayor de los tres es :'+may);
</script>

</body>
</html>

Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
//Elaborar una función a la cual le envíe el valor del lado de un cuadrado
//y me retorne su perímetro.

function retornarPerimetro(lado)
{
var perimetro;
perimetro=lado*4;
return perimetro;
}

var lado;
lado=prompt('Ingrese la medida del lado de un cuadrado:','');
lado=parseInt(lado);
document.write('El perímetro del cuadrado es:'+retornarPerimetro(lado));
</script>

</body>
</html>

Problema 3.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
//Desarrollar una función que retorne la cantidad de dígitos
//que tiene una variable entera positiva de hasta 5 dígitos.

function cantidadDigitos(x)
{
if (x<10)
{
return 1;
}
else
{
if (x<100)
{
return 2;
}
else
{
if (x<1000)
{
return 3;
}
else
{
if (x<10000)
{
return 4;
}
else
{
if (x<100000)
{
return 5;
}
}
}
}
}
}

var valor;
valor=prompt('Ingrese un valor positivo de hasta 5 dígitos:','');
valor=parseInt(valor);
document.write('La cantidad de dígitos del valor ingresado es:'+cantidadDigitos(valor));
</script>

</body>
</html>

Problema 4.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
//Elaborar una función que reciba tres enteros y retorne el promedio.

function promediar(x1,x2,x3)
{
var promedio=(x1+x2+x3)/3;
return promedio;
}

var valor1,valor2,valor3;
valor1=prompt('Ingrese primer valor:','');
valor1=parseInt(valor1);
valor2=prompt('Ingrese segundo valor:','');
valor2=parseInt(valor2);
valor3=prompt('Ingrese tercer valor:','');
valor3=parseInt(valor3);
document.write('Los tres valores ingresados son '+valor1+' '+valor2+' '+valor3+'<br>');
var pro;
pro=promediar(valor1,valor2,valor3);
document.write('El promedio es :'+pro);
</script>

</body>
</html>

Problema 5.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
//Confeccionar una función que solicite la carga de 5 valores por teclado
//y retorne su suma.

function cargar5Valores()
{
var suma=0;
var valor;
var f;
for(f=1;f<=5;f++)
{
valor=prompt('Ingrese valor:','');
valor=parseInt(valor);
suma=suma+valor;
}
return suma;
}

var s=cargar5Valores();
document.write('La suma de los 5 valores es: '+ s);
</script>

</body>
</html>

Programación orientada a objetos.

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


propiedades) como las funciones que manipulan dichas variables (llamadas
métodos). A partir de esta estructura se ha creado un nuevo modelo de
programación (la programación orientada a objetos) que atribuye a los
mismos propiedades como herencia o polimorfismo. Como veremos,
JavaScript simplifica en algo este modelo y hace una programación híbrida
entre la programación estructurada y la programación orientada a objetos.

El modelo de la programación orientada a objetos normal y corriente separa


los mismos en dos: clases e instancias (objetos). Las primeras son entes
más 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 métodos.

Para acceder a los métodos y propiedades de un objeto debemos utilizar la


siguiente sintaxis:

objeto.propiedad
objeto.metodo(parametros)

Conceptos Básicos.

Objetos: Son todas las cosas con identidad propia. Se relacionan entre si.
Poseen características (atributos) y tienen responsabilidades (funciones,
métodos) que deben cumplir.
Son ejemplares (instancias) de una clase y conocen a la clase a la cual
pertenecen.

Atributos o propiedades: Son las características, cualidades distintivas de


cada objeto. Deben ser mínimos para poder realizar todas las operaciones
que requiere la aplicación.

Ejemplos de objetos del mundo real:


- Casa:
atributos: tamaño, precio, cantidad de habitaciones, etc.;
responsabilidades: comodidad, seguridad, etc.
- Mesa:
atributos: altura, largo, ancho, etc.;
responsabilidades: contener elementos.
- Ventana:
atributos: tamaño, color, etc.;
responsabilidades: abrirse, cerrarse, etc.

Ejemplos de objetos del mundo de la programación:


- Ventana:
atributos: tamaño, color, etc.;
responsabilidades: mostrar título,achicarse
etc.
Responsabilidades o Métodos.

Son las responsabilidades que debe cumplir la clase.

El objetivo de un método 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 método consiste en el nombre de la operación y sus argumentos. El
nombre del método identifica una operación que se ejecuta.
Un método está determinado por la clase del objeto receptor, todos los
objetos de una clase usan el mismo método en respuesta a mensajes
similares.

La interpretación de un mensaje (selección del método 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 características
(que pueden recibir los mismos mensajes y responden de la misma
manera).

Una clase es una representación de una idea o concepto. Unidad que


encapsula códigos y datos para los métodos (operaciones).
Todos los ejemplares de una clase se comportan de forma similar (invocan
el mismo método) 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 métodos.

Las clases están definidas por:


- Atributos (Propiedades),
- Comportamiento (operaciones o métodos) y
- Relaciones con otros objetos.

Una aplicación es un conjunto de objetos de determinadas clases.


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();//creación de un objeto de la clase Date
fecha = new Date(año, mes, dia);
fecha = new Date(año, mes, dia, hora, minuto, segundo);

Si no utilizamos parámetros, el objeto fecha contendrá la fecha y hora


actual, recuperadas 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(2018, 11, 25)

El objeto Date dispone, entre otros, de los siguientes métodos:


getYear()
setYear(año)
Obtiene y coloca, respectivamente, el año de la fecha.
Éste se devuelve como número de 4 dígitos excepto en el
caso en que esté entre 1900 y 1999, en cuyo caso
devolverá las dos últimas cifras.
getFullYear()
setFullYear(año)
Realizan la misma función que los anteriores, pero sin
tanta complicación, ya que siempre devuelven números
con todos sus dígitos.
getMonth()
setMonth(mes)
getDate()
setDate(dia)
getHours()
setHours(horas)
getMinutes()
setMinutes(minutos)
getSeconds()
setSeconds(segundos)
Obtienen y colocan, respectivamente, el mes, día, hora,
minuto y segundo de la fecha.
getDay()
Devuelve el día de la semana de la fecha en forma de
número que va del 0 (domingo) al 6 (sábado)

Ejemplo: Mostrar en una página la fecha y la hora actual.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 función
mostrarFechaHora();
</script>

</body>
</html>

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


llamamos una serie de métodos que nos retornan datos sobre la fecha y
hora actual del equipo de computación donde se está ejecutando el
navegador.

Es bueno notar que para llamar a los métodos disponemos:


<nombre de objeto>.<nombre de método>(parámetros)
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 función
mostrarFechaHora();
</script>

</body>
</html>

Clase Date
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar un programa que muestre en que cuatrimestre del


año nos encontramos. Para esto obtener el mes.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var fecha
fecha=new Date();
var mes=fecha.getMonth();
if (mes<4)
{
document.write('Nos encontramos en el primer cuatrimestre del año');
}
else
{
if (mes<8)
{
document.write('Nos encontramos en el segundo cuatrimestre del año');
}
else
{
document.write('Nos encontramos en el tercer cuatrimestre del año');
}
}
</script>

</body>
</html>

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 subíndice
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 función)

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 líneas
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, indicándole que queremos almacenar 5 valores.

Llamamos a la función cargar enviándole el vector. En la función, a través


de un ciclo for recorremos las distintas componentes del vector y
almacenamos valores enteros que ingresamos por teclado.

Para conocer el tamaño del vector accedemos a la propiedad length de la


clase Array.

En la segunda función sumamos todas las componentes del vector,


imprimimos en la página los valores y el total de gastos.

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


meses del año. En una función solicitar el ingreso de un número entre 1 y
12. Mostrar a qué mes corresponde y cuántos días tiene dicho mes.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function mostrarFecha(meses,dias)
{
var num;
num=prompt('Ingrese número de mes:','');
num=parseInt(num);
document.write('Corresponde al mes:'+meses[num-1]);
document.write('<br>');
document.write('Tiene '+dias[num-1]+' días');
}

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 días. 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 días del mes de enero.

Es importante notar que cuando imprimimos, disponemos como subíndice 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]);
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Clase Array
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Desarrollar un programa que permita ingresar un vector de 8


elementos, e informe:
El valor acumulado de todos los elementos del vector.
El valor acumulado de los elementos del vector que sean mayores
a 36.
Cantidad de valores mayores a 50.
2. Realizar un programa que pida la carga de dos vectores
numéricos. Obtener la suma de los dos vectores, dicho resultado
guardarlo en un tercer vector del mismo tamaño. Sumar
componente a componente.
El tamaño del vector es a elección.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function cargar(vec)
{
var f;
for(f=0;f<vec.length;f++)
{
var valor;
valor=prompt('Ingrese componente:','');
vec[f]=parseInt(valor);
}
}

function sumar(vec)
{
var f;
var suma=0;
for(f=0;f<vec.length;f++)
{
suma=suma+vec[f];
}
document.write('Valor acumulado de las componentes:'+suma+'<br>');
}

function sumarMayor36(vec)
{
var f;
var suma=0;
for(f=0;f<vec.length;f++)
{
if (vec[f]>36)
{
suma=suma+vec[f];
}
}
document.write('Valor acumulado de las componentes mayores a 36:'+suma+'<br>');
}

function cantidadMayores50(vec)
{
var f;
var cant=0;
for(f=0;f<vec.length;f++)
{
if (vec[f]>50)
{
cant=cant+1;
}
}
document.write('Cantidad de componentes mayores a 50:'+cant+'<br>');
}

var vec;
vec=new Array(8);
cargar(vec);
sumar(vec);
sumarMayor36(vec);
cantidadMayores50(vec);
</script>
</body>
</html>

Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function cargarVectores(vec1,vec2)
{
var f;
for(f=0;f<vec1.length;f++)
{
var valor;
valor=prompt('Ingrese componente del primer vector:','');
vec1[f]=parseInt(valor);
}
for(f=0;f<vec2.length;f++)
{
var valor;
valor=prompt('Ingrese componente del segundo vector:','');
vec2[f]=parseInt(valor);
}
}

function sumarVectores(vec1,vec2,vecsuma)
{
var f;
for(f=0;f<vecsuma.length;f++)
{
vecsuma[f]=vec1[f]+vec2[f];
}
}

function imprimirVector(vecsuma)
{
var f;
for(f=0;f<vecsuma.length;f++)
{
document.write(vecsuma[f]+' ');
}
}

var vec1;
vec1=new Array(5);
var vec2;
vec2=new Array(5);
var vecsuma;
vecsuma=new Array(5);
cargarVectores(vec1,vec2);
sumarVectores(vec1,vec2,vecsuma);
imprimirVector(vecsuma);
</script>

</body>
</html>

Clase Math

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


Math.PI) y un conjunto de métodos matemáticos:

Método Descripción Expresión de Resultado


ejemplo
Método Descripción Expresión de Resultado
ejemplo
abs Valor absoluto Math.abs(-2) 2
sin, cos, Funciones trigonométricas, reciben el Math.cos(Math.PI) -1
tan argumento en radianes
asin, acos, Funciones trigonométricas inversas Math.asin(1) 1.57
atan
exp, log Exponenciación y logaritmo, base E Math.log(Math.E) 1
ceil Devuelve el entero más pequeño mayor o Math.ceil(-2.7) -2
igual al argumento
floor Devuelve el entero más grande menor o Math.floor(-2.7) -3
igual al argumento
round Devuelve el entero más cercano o igual al Math.round(-2.7) -3
argumento
min, max Devuelve el menor (o mayor) de sus dos Math.min(2,4) 2
argumentos
pow Exponenciación, siendo el primer Math.pow(2,3) 8
argumento la base y el segundo el
exponente
sqrt Raíz cuadrada Math.sqrt(25) 5
random Genera un valor aleatorio comprendido Math.random() Math.random()
entre 0 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 número sorteado e indicar si ganó o perdió:
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 número 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 función
parseInt, obtenemos sólo 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)
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 número que se sorteó es el '+ num);
else
document.write('Lo siento se sorteó el valor '+num+' y usted eligió el '+selec);
</script>

</body>
</html>

Clase Math
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Confeccionar un programa que solicite el ingreso de un número y


nos muestre dicho valor elevado a la tercera potencia.
2. Ingresar por teclado un valor y luego mostrar la raiz cuadrada de
dicho valor;
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var valor;
valor=prompt('Ingrese un valor:','');
valor=parseInt(valor);
var resu;
resu=Math.pow(valor,3);
document.write('El valor '+valor+' elevado a la 3 es '+resu);
</script>

</body>
</html>

Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var valor;
valor=prompt('Ingrese un valor:','');
valor=parseInt(valor);
var resu;
resu=Math.sqrt(valor);
document.write('La raiz cuadrada de '+valor+' es '+resu);
</script>

</body>
</html>

Clase String

Un string consiste en uno o más caracteres encerrados entre simple o doble


comillas.

Concatenación de cadenas (+)


JavaScript permite concatenar cadenas utilizando el operador +.

El siguiente fragmento de código 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 automáticamente 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

Métodos
charAt(pos)

Retorna el carácter del índice especificado. Comienzan a numerarse de la


posición cero.
var nombre='juan';
var caracterPrimero=nombre.charAt(0);

substring (posinicial, posfinal)

Retorna un String extraída de otro, desde el carácter '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 posición 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 carácter.
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 método a
mayúsculas:
cadena1=cadena1.toUpperCase();

Luego de esto, cadena1 tiene todos los caracteres convertidos a


mayúsculas.
toLowerCase()
Convierte todos los caracteres del String que invoca el método a
minúsculas:
cadena1=cadena1.toLowerCase();

Luego de esto, cadena1 tiene todos los caracteres convertidos a


minúsculas.

Ejemplo: Cargar un string por teclado y luego llamar a los distintos métodos
de la clase String y la propiedad length.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 carácter 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 mayúsculas
es:'+cadena.toUpperCase());
document.write('<br>');
document.write('La cadena convertida a minúsculas
es:'+cadena.toLowerCase());
document.write('<br>');
</script>

</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 carácter 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 mayúsculas es:'+cadena.toUpperCase());
document.write('<br>');
document.write('La cadena convertida a minúsculas es:'+cadena.toLowerCase());
document.write('<br>');
</script>

</body>
</html>
Clase String
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Ingresar una serie de nombres por teclado hasta que se cargue la


palabra Fin, y mostrar cuántos nombres se ingresaron.
2. Igual al anterior, pero que termine la aplicación sin contemplar
mayúsculas ni minúsculas. Es decir que para salir se pueda teclear
fin, Fin o FIN.
3. Realizar la búsqueda de un string clave en un string fuente. Se
deberá ingresar una frase o texto (fuente) y luego la clave a
buscar. En caso de encontrarla, imprimir la posición, de lo
contrario una leyenda que indique que no está.
4. Ingresar una palabra o texto por teclado y determinar si es o no
una palabra palíndromo. (Palabra que se lee de igual manera de
adelante hacia atrás, que de atrás hacia delante)
5. Realizar un programa que permita cargar una dirección de mail e
implementar una función que verifique si el String tiene cargado el
carácter @.
6. Cargar un String por teclado e implementar las siguientes
funciones:
a) Imprimir la primera mitad de los caracteres de la cadena.
b) Imprimir el último carácter.
c) Imprimirlo en forma inversa.
d) Imprimir cada carácter del String separado con un guión.
e) Imprimir la cantidad de vocales almacenadas.
7. Codifique un programa que permita cargar una oración por
teclado, luego mostrar cada palabra ingresada en una línea
distinta.
8. Por ejemplo si cargo:
9. La mañana está fría.
10. Debe aparecer:
11. La
12. mañana
13. está
14. fría.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var nombre;
var cant=0;
do {
nombre=prompt('Ingrese un nombre (Terminar ingresando Fin):','');
cant++;
} while (nombre!='Fin');
//para descontar la palabra Fin
cant--;
document.write('Se ingresaron '+cant+' palabras');
</script>

</body>
</html>

Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var nombre;
var cant=0;
do {
nombre=prompt('Ingrese un nombre (Terminar ingresando Fin):','');
cant++;
nombre=nombre.toUpperCase();
} while (nombre!='FIN');
//para descontar la palabra Fin
cant--;
document.write('Se ingresaron '+cant+' palabras');
</script>

</body>
</html>

Problema 3.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var frase;
frase=prompt('Ingrese una oración:','');
document.write(frase+'<br><br>');
var palabra;
palabra=prompt('Ingrese una palabra:','');
if (frase.indexOf(palabra)!=-1)
{
document.write('La frase ingresada contiene la palabra: '+palabra);
}
else
{
document.write('La frase ingresada no contiene la palabra: '+palabra);
}
</script>

</body>
</html>

Problema 4.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var texto;
texto=prompt('Ingrese una palabra o frase:','');
var cant=0;
var f;
for(f=0;f<texto.length;f++)
{
if (texto.charAt(f)==texto.charAt(texto.length-1-f))
{
cant++;
}
}
if (cant==texto.length)
{
document.write(texto+' se lee igual en ambas direcciones');
}
else
{
document.write(texto+' no se lee igual en ambas direcciones');
}
</script>

</body>
</html>

Problema 5.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function verificarArroba(mail)
{
var cant=0;
var f;
for(f=0;f<mail.length;f++)
{
if (mail.charAt(f)=='@')
{
cant++;
}
}
if (cant!=0)
{
document.write('El mail '+mail+' tiene el caracter @');
}
else
{
document.write('El mail '+mail+' no tiene el caracter @');
}
}

var mail;
mail=prompt('Ingrese un mail:','');
verificarArroba(mail);
</script>

</body>
</html>

Problema 6.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function mitad(frase)
{
document.write('Mitad inicial de la frase:');
var f;
for(f=0;f<frase.length/2;f++)
{
document.write(frase.charAt(f));
}
document.write('<br><br>');
}

function ultimoCaracter(frase)
{
document.write('Ultimo carácter:');
document.write(frase.charAt(frase.length-1));
document.write('<br><br>');
}

function imprimirInverso(frase)
{
document.write('En forma inversa:');
var f;
for(f=0;f<frase.length;f++)
{
document.write(frase.charAt(frase.length-f-1));
}
document.write('<br><br>');
}

function imprimirConGuion(frase)
{
document.write('Separados por guión:');
var f;
for(f=0;f<frase.length;f++)
{
document.write(frase.charAt(f)+'-');
}
document.write('<br><br>');
}

function cantidadVocales(frase)
{
var f;
var cant=0;
for(f=0;f<frase.length;f++)
{
if (frase.charAt(f)=='a' ||
frase.charAt(f)=='e' ||
frase.charAt(f)=='i' ||
frase.charAt(f)=='o' ||
frase.charAt(f)=='u' ||
frase.charAt(f)=='A' ||
frase.charAt(f)=='E' ||
frase.charAt(f)=='I' ||
frase.charAt(f)=='O' ||
frase.charAt(f)=='U')
{
cant++;
}
}
document.write('Cantidad de vocales:'+cant);
}

var frase;
frase=prompt('Ingrese una palabra o frase:','');
document.write(frase);
document.write('<br><br>');
mitad(frase);
ultimoCaracter(frase);
imprimirInverso(frase);
imprimirConGuion(frase);
cantidadVocales(frase);
</script>

</body>
</html>

Problema 7.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var frase;
frase=prompt('Ingrese una frase:','');
var f;
for(f=0;f<frase.length;f++)
{
if (frase.charAt(f)==' ')
{
document.write('<br>');
}
else
{
document.write(frase.charAt(f));
}
}
</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 pequeños programas que se ejecutan en el


navegador, evitan intercambios innecesarios entre el cliente y el servidor
(navegador y sitio web).

Suponemos que conoce las etiquetas HTML para la creación de formularios


en una página 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 página. Nosotros podemos acceder posteriormente desde JavaScript a
dichos objetos.

El objeto principal es el FORM que contendrá todos los otros objetos: TEXT
(editor de líneas), TEXTAREA (editor de varias líneas), etc.

Nuestra actividad en JavaScript es procesar los eventos que generan estos


controles (un evento es una acción que se dispara, por ejemplo si se
presiona un botón).

Vamos a hacer un problema muy sencillo empleando el lenguaje Javascript;


dispondremos un botón y cada vez que se presione, mostraremos un
contador:
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 función, dicha función
se ejecuta cuando se dispara el evento respectivo. En este caso cada vez
que presionamos el botón, se llama a la función 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 función para que no se inicialice
cada vez que se dispara el evento.

La función alert crea una ventana que puede mostrar un mensaje.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

<form>
<input type="button" onClick="incrementar()" value="incrementar">
</form>
</body>
</html>

Formularios y Eventos.
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Crear un formulario con tres botones con las leyendas "1", "2" y
"3". Mostrar un mensaje indicando qué botón se presionó.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function presion1()
{
alert('Se presionó el botón 1');
}

function presion2()
{
alert('Se presionó el botón 2');
}
function presion3()
{
alert('Se presionó el botón 3');
}
</script>

<form>
<input type="button" onClick="presion1()" value="Boton 1">
<input type="button" onClick="presion2()" value="Boton 2">
<input type="button" onClick="presion3()" value="Boton 3">
</form>
</body>
</html>

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

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:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 botón se llama mostrar.

La función '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 más clara la función guardamos en dos variables auxiliares los
contenidos de los controles de tipo TEXT.

La propiedad "id" es un identificador único para cualquier elemento HTML


que luego nos permite desde Javascript acceder a dicho elemento.

El método getElementById nos retorna una referencia del objeto HTML que
le pasamos como parámetro, 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 función alert:
var nom=document.getElementById('nombre').value;
var ed=document.getElementById('edad').value;
alert('Ingresó el nombre:' + nom);
alert('Y la edad:' + ed);
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Controles FORM, BUTTON y TEXT.


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Crear un programa que permita cargar un entero en un text y al


presionar un botón nos muestre dicho valor elevado al cubo
(emplear la función alert).
2. Cargar dos números en objetos de tipo text y al presionar un
botón, mostrar el mayor.
3. Cargar un nombre y un apellido en sendos text. Al presionar un
botón, concatenarlos y mostrarlos en un tercer text (Tener en
cuenta que podemos modificar la propiedad value de un objeto
TEXT cuando ocurre un evento)
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function calcularCubo()
{
var v=document.getElementById('num').value;
v=parseInt(v);
var cubo=v*v*v;
alert(cubo);
}
</script>

<form>
Ingrese un valor:
<input type="text" id="num">
<br>
<input type="button" value="Calcular cubo" onClick="calcularCubo()">
</form>
</body>
</html>

Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function mostrarMayor()
{
var num1=document.getElementById('num1').value;
var num2=document.getElementById('num2').value;
num1=parseInt(num1);
num2=parseInt(num2);
if (num1>num2)
{
alert('El manor es '+num1);
}
else
{
alert('El manor es '+num2);
}
}
</script>

<form>
Ingrese primer valor:
<input type="text" id="num1">
<br>
Ingrese segundo valor:
<input type="text" id="num2">
<br>
<input type="button" value="mostrar mayor" onClick="mostrarMayor()">
</form>
</body>
</html>

Problema 3.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function concatenar()
{
var nom=document.getElementById('nombre').value;
var ape=document.getElementById('apellido').value;
document.getElementById('resultado').value=nom+ape;
}
</script>

<form>
Ingrese nombre:
<input type="text" id="nombre">
<br>
Ingrese apellido:
<input type="text" id="apellido">
<br>
<input type="button" value="Concatenar datos ingresados" onClick="concatenar()">
<br>
<input type="text" id="resultado">
</form>
</body>
</html>

Control PASSWORD

Este control HTML es una variante de la de tipo "TEXT". La diferencia


fundamental es que cuando se carga un texto en el campo de edición sólo
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 mayoría 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 página que permita ingresar una password y luego
muestre una ventana de alerta si tiene menos de 5 caracteres.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 edición sólo vemos asteriscos, pero realmente en
memoria se almacenan los caracteres tipeados. Si queremos mostrar los
caracteres ingresados debemos acceder mediante el método
getElementById a la marca HTML clave:
var clave=document.getElementById('clave').value;

Normalmente, a este valor no lo mostraremos dentro de la página, sino se


perdería 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)
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Control PASSWORD
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Disponer dos campos de texto tipo password. Cuando se presione


un botón mostrar si las dos claves ingresadas son iguales o no (es
muy común solicitar al operador el ingreso de dos veces de su
clave para validar si las escribió correctamente, esto se hace
cuando se crea una password para el ingreso a un sitio o para el
cambio de una existente).
Tener en cuenta que podemos emplear el operador == para ver si
dos string son iguales.
Problema 1.

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

<script type="text/javascript">
function verificar()
{
var clave1=document.getElementById('clave1').value;
var clave2=document.getElementById('clave2').value;
if (clave1==clave2)
{
alert('Las dos claves ingresadas son iguales');
}
else
{
alert('Las dos claves ingresadas son distintas');
}
}
</script>

<form>
Ingrese clave:
<input type="password" id="clave1">
<br>
Repita la clave:
<input type="password" id="clave2">
<br>
<input type="button" value="Verificar clave" onClick="verificar()">
</form>

</body>
</html>

Control SELECT

Este otro objeto visual que podemos disponer en un FORM permite realizar
la selección 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 posición 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 posición 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 subíndice, al string de una determinada
posición.

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 expresión 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:


<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function cambiarColor()
{
var seleccion=document.getElementById('select1');

document.getElementById('text1').value=seleccion.selectedInd
ex;

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

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

<form>
<select id="select1" onChange="cambiarColor()">
<option value="ff0000">Rojo</option>
<option value="00ff00">Verde</option>
<option value="0000ff">Azul</option>
</select>
<br>
Número 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 creación del objeto SELECT en HTML, y cómo acceder
luego a sus valores desde Javascript.

Es importante para el objeto SELECT definir qué función llamar cuando


ocurra un cambio: onChange="cambiarColor()".

Por cada opción del objeto SELECT tenemos una línea:


<option value="ff0000">Rojo</option>

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


valor asociado a dicho string.

Analizando la función cambiarColor() podemos ver cómo obtenemos los


valores fundamentales del objeto SELECT.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function cambiarColor()
{
var seleccion=document.getElementById('select1');
document.getElementById('text1').value=seleccion.selectedIndex;
document.getElementById('text2').value=seleccion.options[seleccion.selectedIndex].text;

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

<form>
<select id="select1" onChange="cambiarColor()">
<option value="ff0000">Rojo</option>
<option value="00ff00">Verde</option>
<option value="0000ff">Azul</option>
</select>
<br>
Número 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>

Control SELECT
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMAS

1. Confeccionar una página que muestre un objeto SELECT con


distintos tipos de pizzas (Jamón y Queso, Muzzarella, Morrones).
Al seleccionar una, mostrar en un objeto de tipo TEXT el precio de
la misma.
2. Generar un presupuesto de un equipo de computación a partir de
tres objetos de tipo SELECT que nos permiten seleccionar:
Procesador (Intel I3 - $400, Intel I5 $600, Intel I7 $800).
Monitor (Samsung 20' - $250, Samsung 22' - $350, Samsung 26' -
$550)
Disco Duro(500 Gb - $300, 1 Tb - $440, 3 Tb - $500)
Para cada característica indicamos string a mostrar (Ej. Intel I3) y
el valor asociado a dicho string (Ej. 400).
Al presionar un botón "Calcular" mostrar el presupuesto en un
objeto de tipo TEXT.
3. Confeccionar una página que permita seleccionar una pizza y la
cantidad de unidades. Luego al presionar un botón calcular el
importe a pagar.
Utilizar un objeto de la clase SELECT para la selección de la pizza,
pudiendo ser:
Queso: $ 4.
Jamón y queso: $ 6.
Especial: $ 10.
A la cantidad de pizzas cargarla en un objeto de la clase TEXT y en
otro objeto de la clase TEXT mostrar el importe total a abonar.
4. Confeccionar una página que permita tomar un examen múltiple
choice. Se debe mostrar una pregunta y seguidamente un objeto
SELECT con las respuestas posibles. Al presionar un botón mostrar
la cantidad de respuestas correctas e incorrectas (Disponer 4
preguntas y sus respectivos controles SELECT)
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function mostrarSeleccionPizza()
{
document.getElementById('mensaje').value =

document.getElementById('pizza').options[document.getElementById('pizza').selectedIndex].value;
}
</script>

<form>
Pizzas:
<select id="pizza" onChange="mostrarSeleccionPizza()">
<option value="180">Jamon y Queso</option>
<option value="150">Muzzarella</option>
<option value="170">Morrones</option>
</select>
<br>
<input type="text" id="mensaje">
</form>
</body>
</html>

Problema 2.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function calcularPresupuesto()
{
var ele1=document.getElementById('procesador')
var precio1=ele1.options[ele1.selectedIndex].value;
var ele2=document.getElementById('monitor')
var precio2=ele2.options[ele2.selectedIndex].value;
var ele3=document.getElementById('discoduro')
var precio3=ele3.options[ele3.selectedIndex].value;
precio1=parseInt(precio1);
precio2=parseInt(precio2);
precio3=parseInt(precio3);
var suma=precio1+precio2+precio3;
document.getElementById('resultado').value=suma;
}
</script>

<form>
Procesador:
<select id="procesador">
<option value="400">Intel I3</option>
<option value="600">Intel I5</option>
<option value="800">Intel I7</option>
</select>
<br>
Procesador:
<select id="monitor">
<option value="250">Monitor Samsung 20'</option>
<option value="350">Monitor Samsung 22'</option>
<option value="550">Monitor Samsung 26'</option>
</select>
<br>
Disco duro:
<select id="discoduro">
<option value="300">Disco Duro 500 Gb</option>
<option value="440">Disco Duro 1 Tb</option>
<option value="500">Disco Duro 3 Tb</option>
</select>
<br>
<input type="button" value="Calcular Presupuesto" onClick="calcularPresupuesto()">
<br>
<input type="text" id="resultado">
</form>
</body>
</html>

Problema 3.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
function calcularPresupuesto()
{
var precio=document.getElementById('pizza').value;
precio=parseInt(precio);
var cantidad=document.getElementById('cantidad').value;
cantidad=parseInt(cantidad);
var total=precio*cantidad;
document.getElementById('resultado').value=total;
}
</script>

<form>
Seleccione la pizza:
<select id="pizza">
<option value="4">Queso</option>
<option value="6">Jamon y Queso</option>
<option value="10">Especial</option>
</select>
<br>
Cantidad de pizzas:
<input type="text" id="cantidad">
<br>
<input type="button" value="Calcular costo" onClick="calcularPresupuesto()">
<br>
<input type="text" id="resultado">
</form>
</body>
</html>

Problema 4.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function verificar()
{
var correctas=0;
var ele1=document.getElementById('pregunta1');
var ele2=document.getElementById('pregunta2');
var ele3=document.getElementById('pregunta3');
var ele4=document.getElementById('pregunta4');
if (ele1.options[ele1.selectedIndex].value==3)
{
correctas++;
}
if (ele2.options[ele2.selectedIndex].value==1)
{
correctas++;
}
if (ele3.options[ele3.selectedIndex].value==2)
{
correctas++;
}
if (ele4.options[ele4.selectedIndex].value==2)
{
correctas++;
}
alert('Cantidad de respuestas correctas:'+correctas);
}
</script>

<form>
Como se dice rojo en ingles:<br>
<select id="pregunta1">
<option value="1">blue</option>
<option value="2">green</option>
<option value="3">red</option>
</select>
<br>
Como se dice ventana en ingles:<br>
<select id="pregunta2">
<option value="1">window</option>
<option value="2">door</option>
<option value="3">bedroom</option>
</select>
<br>
Como se dice gato en ingles:<br>
<select id="pregunta3">
<option value="1">dog</option>
<option value="2">cat</option>
<option value="3">lion</option>
</select>
<br>
Como se dice hombre en ingles:<br>
<select id="pregunta4">
<option value="1">women</option>
<option value="2">man</option>
<option value="3">child</option>
</select>
<br>
<input type="button" value="Controlar" onClick="verificar()">
</form>
</body>
</html>

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 pequeña página.

Ejemplo: Confeccionar una página que muestre 4 lenguajes de


programación que el usuario puede seleccionar si los conoce. Luego
mostrar un mensaje indicando la cantidad de lenguajes que ha seleccionado
el operador.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 botón se llama a la función Javascript


contarSeleccionados(). En la misma verificamos uno a uno cada control
checkbox accediendo a la propiedad checked del elemento que almacena
true o false según 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 condición 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 luego el resultado final.
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Control CHECKBOX
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar una página que muestre tres checkbox que permitan


seleccionar los deportes que practica el usuario (Fútbol, Básket,
Tenis) Mostrar al presionar un botón los deportes que eligió.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function verificar()
{
var deportes='';
if (document.getElementById("checkbox1").checked)
{
deportes=deportes+'Fútbol ';
}
if (document.getElementById("checkbox2").checked)
{
deportes=deportes+'Básquet ';
}
if (document.getElementById("checkbox3").checked)
{
deportes=deportes+'Tenis';
}
alert('Los deportes seleccionados son:'+deportes);
}
</script>

<form>
Seleccione los deportes que practica:<br>
<input type="checkbox" id="checkbox1">Fútbol<br>
<input type="checkbox" id="checkbox2">Básquet<br>
<input type="checkbox" id="checkbox3">Tenis<br>
<input type="button" value="Controlar" onClick="verificar()">
</form>
</body>
</html>
Control RADIO

Los objetos RADIO tienen sentido cuando disponemos varios elementos.


Sólo uno puede estar seleccionado del conjunto.

Ejemplo: Mostrar cuatro objetos de tipo RADIO que permitan seleccionar los
estudios que tiene un usuario:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 estén relacionados entre si)

Luego podemos acceder a cada elemento mediante el método


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, según esté
o no seleccionado el control radio.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
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>

Control RADIO
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA
1. Confeccionar una página que muestre dos objetos de la clase
RADIO solicitando que seleccione si es mayor de 18 años o no. Al
presionar un botón mostrar un alert indicando si puede ingresar al
sitio o no.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function verificar()
{
if (document.getElementById('radio1').checked)
{
alert('Eres mayor de edad y por lo tanto puede ingresar');
}
if (document.getElementById('radio2').checked)
{
alert('No eres mayor de edad y por lo tanto no puede ingresar');
}
}
</script>

<form>
¿Es mayor de edad?
<br>
<input type="radio" id="radio1" name="edad">si<br>
<input type="radio" id="radio2" name="edad">no<br>
<input type="button" value="Verificar" onClick="verificar()">
</form>
</body>
</html>

Control TEXTAREA

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


muchas líneas de texto.

La etiqueta 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.
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function controlarCaracteres()
{
if (document.getElementById('curriculum').value.length>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.


<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function controlarCaracteres()
{
if (document.getElementById('curriculum').value.length>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>

Control TEXTAREA
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar una página de visitas a un sitio, solicitar ingresar el


nombre de una persona, su mail y los comentarios (TEXTAREA).
Mostrar luego llamando a la función alert los datos ingresados.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function verificar()
{
var nombre=document.getElementById('nombre').value;
var mail=document.getElementById('mail').value;
var comentarios=document.getElementById('comentarios').value;
alert(nombre+'\n'+mail+'\n'+comentarios);
}
</script>

<form>
Ingrese nombre:
<input type="text" id="nombre"><br>
Ingrese mail:
<input type="text" id="mail"><br>
Comentarios:<br>
<textarea id="comentarios" rows="20" cols="100"></textarea><br>
<input type="button" value="confirmar" onClick="verificar()">
</form>
</body>
</html>

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á vacío. Mostrar en las propiedades value de los controles text los
mensajes "nombre" y "mail" respectivamente.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
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.


También cargamos las propiedad value para mostrar un texto dentro del
control. Le indicamos, para el evento onFocus la función vaciar, pasando
como parámetro la palabra clave this que significa la dirección del objeto
que emitió el evento. En la función propiamente dicha, accedemos a la
propiedad value y borramos su contenido. Esto nos permite definir una
única función para vaciar los dos controles.

De forma similar, para el evento onBlur llamamos a la función


verificarEntrada donde analizamos si se ha ingresado algún valor dentro del
control, en caso de tener un string vacío procedemos a mostrar una ventana
de alerta.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Eventos onFocus y onBlur


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Solicitar que se ingrese el nombre y la clave de un usuario.


Mostrar una ventana de alerta si en la clave se ingresan menos de
7 caracteres o más de 20.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function verificar(control)
{
if (control.value.length<7 || control.value.length>20)
{
alert('cantidad de caracteres no valido en la clave(deben ser entre 7-20 caracteres)');
}
}
</script>

<form>
Ingrese nombre de usuario:
<input type="text" id="usuario"><br>
Ingrese clave:
<input type="password" id="clave" onBlur="verificar(this)"><br>
<input type="button" value="confirmar">
</form>
</body>
</html>

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 página que cambie el


color de un cuadrado de 200px de ancho y 200px de alto.

Implementaremos una función que cambie el color con un valor que llegue
como parámetro. Cuando retiramos la flecha del mouse volvemos a pintar
de negro el fondo de cuadrado:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function pintar(col)
{

document.getElementById('cuadrado1').style.backgroundColor
=col;
}
</script>

<a href="#" onMouseOver="pintar('#f00')"


onMouseOut="pintar('#000')">Rojo</a> -
<a href="#" onMouseOver="pintar('#0f0')"
onMouseOut="pintar('#000')">Verde</a> -
<a href="#" onMouseOver="pintar('#00f')"
onMouseOut="pintar('#000')">Azul</a>
<div id="cuadrado1"
style="background:#000;width:200px;height:200px"></div>

</body>
</html>

Las llamadas a las funciones las hacemos inicializando las propiedades


onMouseOver y onMouseOut:
<a href="#" onMouseOver="pintar('#f00')"
onMouseOut="pintar('#000')">Rojo</a> -
<a href="#" onMouseOver="pintar('#0f0')"
onMouseOut="pintar('#000')">Verde</a> -
<a href="#" onMouseOver="pintar('#00f')"
onMouseOut="pintar('#000')">Azul</a>

Definimos un elemento 'div' de color negro de 200 píxeles de ancho y alto:


<div id="cuadrado1"
style="background:#000;width:200px;height:200px"></div>

La función 'pintar' recibe el color y accedemos a la propiedad 'style' y de


esta a backgroundColor:
function pintar(col)
{
document.getElementById('cuadrado1').style.backgroundColor=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:
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function pintar(objeto,col)
{
objeto.style.backgroundColor=col;
}
</script>

<table border="1">
<tr>
<td onMouseOver="pintar(this,'#f00')"
onMouseOut="pintar(this,'#fff')">rojo</td>
<td onMouseOver="pintar(this,'#0f0')"
onMouseOut="pintar(this,'#fff')">verde</td>
<td onMouseOver="pintar(this,'#00f')"
onMouseOut="pintar(this,'#fff')">azul</td>
</tr>
</table>

</body>
</html>

La lógica es bastante parecida a la del primer problema, pero en éste le


pasamos como parámetro a la función la referencia a la casilla que
queremos que se coloree (this):
<td onMouseOver="pintar(this,'#f00')"
onMouseOut="pintar(this,'#fff')">rojo</td>
<td onMouseOver="pintar(this,'#0f0')"
onMouseOut="pintar(this,'#fff')">verde</td>
<td onMouseOver="pintar(this,'#00f')"
onMouseOut="pintar(this,'#fff')">azul</td>

Eventos onMouseOver y onMouseOut


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Modificar el segundo problema resuelto (las casillas de la tabla que


cambian el color cuando ingresamos con el mouse) para permitir
llamar mediante hipervínculos a distintos programas que
administran web-mail (gmail, hotmail y yahoo)

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function pintar(col)
{
document.getElementById('cuadrado1').style.backgroundColor=col;
}
</script>

<a href="#" onMouseOver="pintar('#f00')" onMouseOut="pintar('#000')">Rojo</a> -


<a href="#" onMouseOver="pintar('#0f0')" onMouseOut="pintar('#000')">Verde</a> -
<a href="#" onMouseOver="pintar('#00f')" onMouseOut="pintar('#000')">Azul</a>
<div id="cuadrado1" style="background:#000;width:200px;height:200px"></div>

</body>
</html>
Listado completo de tutoriales
Evento onLoad

El evento onLoad se ejecuta cuando cargamos una página en el navegador.


Uno de los usos más frecuentes es para fijar el foco en algún control de un
formulario, para que el operador no tenga que activar con el mouse dicho
control.

Este evento está asociado a la etiqueta body.

La página completa es:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body onLoad="activarPrimerControl()">

<script>
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 función


activarPrimerControl:
<body onLoad="activarPrimerControl()">

La función da el foco al control text donde se cargará el nombre:


function activarPrimerControl()
{
document.getElementById('nombre').focus();
}
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body onLoad="activarPrimerControl()">

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

Evento onLoad
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar una página que muestre un mensaje con la función


alert inmediatamente después que se cargue.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body onLoad="mostrarMensaje()">

<script>
function mostrarMensaje()
{
alert('La página está cargada');
}
</script>

<h1>Bienvenidos</h1>
</body>
</html>

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 métodos:
alert: Muestra un diálogo de alerta con un mensaje
(a esta responsabilidad la hemos utilizado desde los primeros
temas)
prompt: Muestra un diálogo para la entrada de un valor de tipo string
(utilizado desde el primer momento)
confirm: Muestra un diálogo de confirmación con los botones Confirmar y
Cancelar.
open y close: abre o cierra una ventana del navegador.
Podemos especificar el tamaño 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 método: el navegador automáticamente
sabrá
que pertenece al objeto window.
El parámetro URL es una cadena que contendrá la dirección de la
ventana
que estamos abriendo: si está en blanco, la ventana se abrirá con
una página
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
anteponiéndole el nombre del objeto window, seguida del método o en
forma resumida indicando solamente el nombre del método (como lo hemos
estado haciendo), esto es posible ya que el objeto window es el objeto de
máximo 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 métodos disponibles del objeto


window:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

<p>Este programa permite analizar la llamada a


distintas responsabilidades del objeto window.</p>
<form>
<br>
<input type="button" value="open()" onClick="abrir()">
<br>
<input type="button" value="open con parámetros"
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>

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

<p>Este programa permite analizar la llamada a distintas responsabilidades del objeto


window.</p>
<form>
<br>
<input type="button" value="open()" onClick="abrir()">
<br>
<input type="button" value="open con parámetros" 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>

El objeto window.
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar una página que permita abrir otra ventana cuando se


presiona un botón. Dicha ventana debe tener como ancho 600
pixeles y alto 300 pixeles.
Problema 1.
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function abrirVentana()
{
var ventana=open('','','width=600,height=300');
}
</script>

<form>
<input type="button" value="abrir ventana" onClick="abrirVentana()">
</form>
</body>
</html>

Propiedad location del objeto window

El objeto location colabora directamente con el objeto window:


Cuando le asignamos una nueva dirección a la propiedad
location del objeto window, el navegador redirecciona a dicha
página.

Implementaremos un pequeño ejemplo para ver la utilidad de


esta propiedad: Supongamos que tenemos un botón que al ser
presionado ingrese al periódico La Nación, pero primero
muestre una ventana de confirmación, si queremos ingresar al
periódico. En caso que el visitante presione el botón afirmativo,
redireccionamos al sitio de La Nación, en caso contrario
mostramos un mensaje:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function verificarEntrada()
{
if (window.confirm('Desea salir del sitio e ingresar
al periódico La Nación?'))
{
window.location='http://www.lanacion.com.ar';
}
else
{
window.alert('No hay problema');
}
}
</script>

<button onClick="verificarEntrada()">Ingresar a La
Nación</button>
</body>
</html>

Disponemos un control HTML de tipo button y capturamos el


evento onClick:
<button onClick="verificarEntrada()">Ingresar a La Nación</button>

La función verificarEntrada() muestra la ventana con los


botones confirmar y cancelar (recordar que el método confirm
del objeto window hace esto en forma automática).

Si se presiona el botón confirmar, la función confirm retorna true


y por lo tanto se ejecuta el verdadero del if:
if (window.confirm('Desea salir del sitio e ingresar al periódico La
Nación?'))
{
window.location='http://www.lanacion.com.ar';
}
else
{
window.alert('No hay problema');
}
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function verificarEntrada()
{
if (window.confirm('Desea salir del sitio e ingresar al periódico La Nación?'))
{
window.location='http://www.lanacion.com.ar';
}
else
{
window.alert('No hay problema');
}
}
</script>

<button onClick="verificarEntrada()">Ingresar a La Nación</button>


</body>
</html>

Propiedad location del objeto window


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar una página que tenga un botón. Cuando se presione


dicho botón generar un valor aleatorio entre 0 y 2. Si se genera el
0 llamar al webmail de Outlook, si se genera un 1 llamar a gmail
en caso de generarse un 2 llamar a yahoo.
Para generar un valor aleatorio utilizar la función random del
objeto Math.
2.
3. var num;
4. num=Math.random()*3; //se guarda en num un valor comprendido entre
0.00001 y 2.99999
5. num=parseInt(num); //guardamos solo la parte entera de la variable num
6. if (num==0)
7. window.location='http://www.outlook.com';
8. .....
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function redireccionar()
{
var num;
num=Math.random()*3;
num=parseInt(num);
if (num==0)
{
window.location='http://www.outlook.com';
}
if (num==1)
{
window.location='http://www.yahoo.com';
}
if (num==2)
{
window.location='http://www.gmail.com';
}
}
</script>

<button onClick="redireccionar()">Redireccionar a un servidor de mail</button>


</body>
</html>

Listado completo de tutoriales


Propiedad history del objeto window

El objeto history colabora directamente con el objeto window:


El objeto history almacena todas las páginas que visitamos. Luego, con una
serie de funciones, podemos extraer de la memoria de la computadora las
páginas ya visitadas, sin tener que pedirlas nuevamente al servidor.

Cuenta con las siguientes funciones:


window.history.back(); //Retrocede a la página anterior
window.history.forward(); //Avanza a la página siguiente almacenada en
la
cache de la máquina.
window.history.go(); //Avanza o retrocede en la lista de páginas
visitadas.

Llamar a la función back, tiene el mismo comportamiento que presionar el


botón "Atrás" del navegador.

El siguiente ejemplo nos permite cargar una segunda página y luego


retroceder a la primera página sin tener que solicitarla nuevamente al
servidor:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function avanzar()
{
window.history.go(1);
}
</script>

</head>
<body>
<a href="pagina2.html">Ir a la página 2</a>
<br>
<br>
<a href="javascript:avanzar()">Extraer del cache la segunda
página</a>
</body>
</html>

En esta primera página, la primera vez, debemos cargar la segunda página


seleccionando el hipervínculo pagina2.

La segunda página:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function retornar()
{
window.history.go(-1);
}
</script>

<a href="javascript:retornar()">Retornar</a>
</body>
</html>

En la segunda página, mediante el método go y pasándole un valor


negativo, retrocedemos a la primera página sin tener la necesidad de
recargarla.

Podemos mejorar el ejemplo accediendo al atributo length (almacena la


cantidad de páginas de la lista) del objeto history:
if (window.history.length>0)
{
window.history.go(1);
}
else
{
alert('no hay otra página en la cache hacia adelante');
}
Propiedad screen del objeto window

El objeto screen colabora directamente con el objeto window:

El objeto screen ofrece información 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 número 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:
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 más
completa, pero más tediosa de escribir (recordar que el objeto window es el
principal y lo podemos obviar cuando accedemos a sus propiedades o
métodos)

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Propiedad screen del objeto window


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar un programa que al presionar un botón aparezca una


ventana que ocupe todo el ancho del monitor y la mitad de su
altura.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function abrirVentana()
{
var ventana=open('','','width='+ screen.availWidth
+',height='+screen.availHeight/2);
}
</script>

<form>
<input type="button" value="abrir ventana" onClick="abrirVentana()">
</form>
</body>
</html>

Propiedad navigator del objeto window

Contiene información sobre el navegador web. La implementación de este


objeto varía entre navegadores (Chrome, Edge, IExplorer, FireFox, Opera,
etc.)
Las propiedades comunes a estos navegadores son:
appName : almacena el nombre oficial del navegador.
appVersion : almacena la versión del navegador.
cookieEnabled : almacena si las cookies están 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 pequeño programa muestra los valores de las propiedades antes


anunciadas:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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>
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
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>

Propiedad navigator del objeto window


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Una vez que se cargue la página mostrar un alert indicando si el


navegador tiene activas las cookies.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body onLoad="verificar()">

<script>
function verificar()
{
if (navigator.cookieEnabled==true)
{
alert('Acceso a cookies activadas');
}
else
{
alert('No se encuentran activadas las cookies en este navegador');
}
}
</script>

<h1>Bienvenidos</h1>
</body>
</html>

Archivo JavaScript externo (*.js)


El lenguaje JavaScript permite agrupar funciones y disponerlas en un
archivo separado a la página HTML.

Esto trae muchos beneficios:

 Reutilización de funciones de uso común. No tenemos que copiar y


pegar sucesivamente las funciones en las páginas en las que
necesitamos.
 Facilita el mantenimiento de las funciones al encontrarse en archivos
separados.
 Nos obliga a ser más ordenados.

La mecánica para implementar estos archivos externos en JavaScript es:

1 - Crear un archivo con extensión *.js y tipear las funciones en la misma:

funciones.js

function retornarFecha()
{
var fecha
fecha=new Date();
var
cadena=fecha.getDate()+'/'+(fecha.getMonth()+1)+'/'+fecha.get
Year();
return cadena;
}

function retornarHora()
{
var fecha
fecha=new Date();
var
cadena=fecha.getHours()+':'+fecha.getMinutes()+':'+fecha.getS
econds();
return cadena;
}
2 - Creamos un archivo html que utilizará las funciones contenidas en el
archivo funciones.js:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script src="funciones.js"></script>
<script>
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 código para importar el archivo


funciones.js:
<script src="funciones.js"></script>

Mediante la propiedad 'src' indicamos el nombre del archivo a importar.

Luego, podemos llamar dentro de la página HTML, a las funciones que


contiene el archivo externo funciones.js; en nuestro ejemplo llamamos a las
funciones retornarFecha() y retornarHora().

Como podemos ver, el archivo html queda mucho más limpio.

Es importante notar que primero se importa el archivo 'funciones.js' y recién


podemos llamar a las funciones contenidas.

Si quiere probar en su equipo este ejemplo debe generar los dos archivos
'funciones.js' y 'pagina1.html', luego llamar desde el navegador la página
HTML.
Programación 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.
Luego nos permite definir objetos de estas clases.

Pero el otro pilar de la programación orientada a objetos, es decir la


herencia, recién se incorporó en las últimas versiones (lo veremos más
adelante)

Veremos la sintaxis para la declaración de una clase y la posterior definición


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 métodos de la clase son:


Constructor (inicializamos los atributos del objeto)
depositar
extraer

Luego debemos implementar los siguientes métodos (normalmente el


constructor se utiliza el caracter mayúscula):

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 función principal que


implementamos (también llamado constructor de la clase):
function Cliente(nombre,saldo)
{
this.nombre=nombre;
this.saldo=saldo;
this.depositar=depositar;
this.extraer=extraer;
}

A ésta función llegan como parámetro los valores con que queremos
inicializar los atributos. Con la palabra clave 'this' diferenciamos los atributos
de los parámetros (los atributos deben llevar la palabra clave this)
this.nombre=nombre;
this.saldo=saldo;

También en el constructor inicializamos la referencia a todos los métodos


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 métodos 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 además definiremos un


objeto de la clase planteada:
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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;
}

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>

Para definir un objeto de la clase Cliente tenemos:


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

Luego las llamadas a métodos 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 más organizados, entendibles y
fundamentalmente poder reutilizar clases en distintos proyectos.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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;
}

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>

Programación orientada a objetos en


JavaScript.
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar una clase llamada suma, que contenga dos atributos


(valor1, valor2) y tres métodos: cargarvalor1, cargarvalor2 y
retornarresultado. Implementar la clase suma.
La definición de un objeto de la clase que deben plantear es:
2. var s=new suma();
3. s.primerValor(10);
4. s.segundoValor(20);
5. document.write('La suma de los dos valores es:'+s.retornarResultado());
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function Suma(valor1,valor2)
{
this.valor1=valor1;
this.valor2=valor2;
this.primerValor=primerValor;
this.segundoValor=segundoValor;
this.retornarResultado=retornarResultado;
}

function primerValor(valor1)
{
this.valor1=valor1;
}

function segundoValor(valor2)
{
this.valor2=valor2;
}

function retornarResultado()
{
return this.valor1+this.valor2;
}

var suma1;
suma1=new Suma(5,10);
document.write('La suma de 5 y 10 es:'+suma1.retornarResultado()+'<br>');
suma1.primerValor(70);
suma1.segundoValor(30);
document.write('La suma de 70 y 30 es:'+suma1.retornarResultado()+'<br>');
</script>

</body>
</html>

Definición 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 número
de quiniela y además registra su nombre, la clase tiene por objetivo la carga
por el teclado del número deseado.

Por otra parte crearemos una clase Bolillero que sortee un valor aleatorio
entre 1 y 10 (que representa el valor extraído del bolillero)
La codificación de las dos clases es:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

//clase Numeroquiniela *********************************


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

function cargarnumero()
{
this.numero=prompt("Que número 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;
}

// bloque principal
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.numero))
{
document.write(numeroquiniela1.nombre + ' ha ganado
<br>');
}
if (numeroquiniela2.verificarsigano(bolillero.numero))
{
document.write(numeroquiniela2.nombre + ' ha ganado
<br>');
}
</script>
</body>
</html>

Al constructor de la clase Numeroquiniela llega como parámetro el nombre


de la persona que la compra (podíamos cargarlo por teclado al nombre
también)

Al número que selecciona lo cargamos por teclado. La clase


Numeroquiniela además tiene otra responsabilidad, que es avisarnos si a
ganado según el número sorteado.

Por otro lado en la página html definimos dos objetos de la clase


Numeroquiniela y uno de la clase Bolillero.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

//clase Numeroquiniela *********************************


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

function cargarnumero()
{
this.numero=prompt("Que número 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;
}

// bloque principal
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.numero))
{
document.write(numeroquiniela1.nombre + ' ha ganado <br>');
}
if (numeroquiniela2.verificarsigano(bolillero.numero))
{
document.write(numeroquiniela2.nombre + ' ha ganado <br>');
}
</script>

</body>
</html>
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 hipervínculo y luego
definiremos un vector con componentes de tipo hipervinculo.

La clase hipervínculo y donde definimos objetos de dicha clase:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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;
}

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>

</body>
</html>

Creamos un objeto de la clase Array y luego guardamos en cada


componente un objeto de la clase hipervínculo (pasándole como parámetros
al constructor, la dirección del sitio y el texto a mostrar en la página) Luego
recorremos con un 'for' las componentes del vector e imprimimos en la
página cada hipervínculo.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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;
}

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>

</body>
</html>

Vectores con componentes de tipo


objeto.
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar una clase persona que permita almacenar el nombre


y la edad. Luego definir un vector de 4 componentes de tipo
persona. Imprimir el nombre de la persona de mayor edad; decir
también si hay más de una persona con la edad mayor.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
function Persona(nombre,edad)
{
this.nombre=nombre;
this.edad=edad;
this.imprimirNombre=imprimirNombre;
}

function imprimirNombre()
{
document.write(this.nombre+' que tiene una edad '+this.edad+'<br>' );
}

var vector=new Array(4);


vector[0]=new Persona('juan',44);
vector[1]=new Persona('ana',22);
vector[2]=new Persona('pedro',44);
vector[3]=new Persona('marcos',18);
var posmayor=0;
for(var f=1;f<vector.length;f++)
{
if (vector[f].edad>vector[posmayor].edad)
{
posmayor=f;
}
}
document.write('Personas con mayor edad:<br>');
for(var f=0;f<vector.length;f++)
{
if (vector[f].edad==vector[posmayor].edad)
{
vector[f].imprimirNombre();
}
}
</script>

</body>
</html>

Creación de objetos literales

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

Esta metodología consiste en definir una lista de propiedades y sus valores.


Veamos con un ejemplo esta técnica:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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


mínima para crear un objeto vacío sería:
var cliente1 = {};

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


encerrado entre llaves vacío. 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 podría 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 inicialización de


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

Las funciones del objeto también definimos una sintaxis similar a la


declaración 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 función y del
lado derecho utilizamos la palabra clave function junto con los parámetros.

En la función 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();
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Creación de objetos literales


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA
1. Crear un objeto que represente los datos de un participante de un
juego. Definir las propiedades
2. nombre
3. puntos
y las funciones:
imprimir (mostrar el nombre de jugador y los puntos actuales)
aumentarpuntos (permite incrementar la cantidad de puntos actuales del
jugador)
verificarsigano (mostrar un mensaje si los puntos superan a 1000)
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var jugador1 = {
nombre: 'ana',
puntos: 0,
imprimir: function() {
document.write('Nombre:'+this.nombre+'<br>');
document.write('Puntos:'+this.puntos+'<br>');
},
aumentarpuntos: function(cant) {
this.puntos=this.puntos+cant;
},
verificarsigano: function() {
if (this.puntos>1000)
{
document.write('Gano<br>');
}
}
};

jugador1.imprimir();
jugador1.aumentarpuntos(500);
jugador1.verificarsigano();
jugador1.aumentarpuntos(501);
jugador1.verificarsigano();
jugador1.imprimir();
</script>

</body>
</html>

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
subíndices.

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 tamaño puede crecer a lo largo de la ejecución del programa.

Tenemos muchas formas de inicializar un array en Javascript según nuestra


situación particular, veamos con ejemplos diferentes formas:

Creación de un array sin elementos:


var vector1=new Array();

Otra sintaxis para crear un array sin elementos:


var vector2=[];

Creación de un array indicando la cantidad de componentes iniciales que


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

Creación e inicialización llamando al constructor Array y pasando como


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

Creación e inicialización de un array utilizando los corchetes:


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

Para probar las distintas formas de creación de array implementaremos un


programa que cree 5 Array, cargue algunos elementos y muestre la primer
componente de cada uno de ellos:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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>
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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: Diferentes formas de crearlos


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Confeccionar un programa que defina dos array, en uno almacenar


los días de la semana y en otro los nombres de los meses. Emplear
dos sintaxis diferentes para crear e inicializar sus componentes.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var meses=new
Array('enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','dic
iembre');
var dias=['lunes','martes','miercoles','jueves','viernes','sábado','domingo'];
var f;
for(f=0;f<meses.length;f++)
{
document.write(meses[f]+'<br>');
}
document.write('<br>');
for(f=0;f<dias.length;f++)
{
document.write(dias[f]+'<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 subíndice.

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

Problema

Crear un vector vacío. 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 tamaño del vector.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

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 vacío:


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.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>

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>

Array: densos
 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Crear un vector con 10 valores aleatorios comprendidos entre 1 y


500. Luego crear otros dos vectores y copiar los elementos
menores a 250 en el segundo vector y los mayores o iguales a 250
en el tercer vector. Imprimir los tamaños del segundo y tercer
vector. Imprimir los tres vectores.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var vec1=[];
var f;
for(f=0;f<10;f++)
{
vec1[f]=parseInt(1+(Math.random()*500));
}
var vec2=[];
var vec3=[];
var indice1=0;
var indice2=0;
for(f=0;f<vec1.length;f++)
{
if(vec1[f]<250)
{
vec2[indice1]=vec1[f];
indice1++;
}
else
{
vec3[indice2]=vec1[f];
indice2++;
}
}
document.write('Tamaño del primer vector'+vec1.length+'<br>');
document.write('Tamaño del segundo vector'+vec2.length+'<br>');
document.write('Tamaño del tercer vector'+vec3.length+'<br>');
document.write('Elementos del primer vector.<br>');
for(f=0;f<vec1.length;f++)
{
document.write(vec1[f]+'-');
}
document.write('<br>');
document.write('Elementos del segundo vector.<br>');
for(f=0;f<vec2.length;f++)
{
document.write(vec2[f]+'-');
}
document.write('<br>');
document.write('Elementos del tercer vector.<br>');
for(f=0;f<vec3.length;f++)
{
document.write(vec3[f]+'-');
}
</script>

</body>
</html>

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


subíndice 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:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 página 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


posición más 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 subíndice el dni de una
persona:
dni[20438470]=100;

no significa que se reservan más 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 subíndice el nro de cliente y almacenar el monto
depositado. Sumar todos los depósitos 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.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 depósitos:'+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 posición 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 funcionaría cuando una componente almacene
null):
for(var f=0;f<depositos.length;f++)
{
if (depositos[f]!==undefined)
{
suma=suma+depositos[f];
canti++;
}
}
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 depósitos:'+canti+'<br>');
document.write('Total depositado por todos los clientes:'+suma);
</script>

</body>
</html>

Array: no densos o dispersos


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA
1. Crear un vector disperso que representen premios de una rifa. Las
posiciones indican los números que tienen premio. Almacenar en
dichas posiciones los premios. Genera 10 premios con los montos
1000,2000,3000 etc.
La cantidad de números de la rifa son 1000.
Generar valores aleatorios para los números con premio.
Imprimir Los números con premio y los montos de los mismos.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var carton=[];
var f;
var cant=0;
do {
var premio=parseInt(Math.random()*1000);
carton[premio]=1000*(cant+1);
cant++;
} while (cant!=11);
for(f=0;f<carton.length;f++)
{
if (carton[f]!==undefined)
{
document.write('Carton '+f+' tiene un premio de '+carton[f]+'<br>');
}
}
</script>

</body>
</html>

Array: métodos push y pop

Como los Array en Javascript son objetos, los mismos tienen una serie de
métodos 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 subíndice para
no dejar componentes vacías si queremos implementar un array denso.

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

Automáticamente cuando llamamos al método push el valor que le pasamos


en el parámetro se almacena en el vector y se incrementa el atributo length.

Podemos inclusive llamar al método push pasando más de 1 parámetro:


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

El método 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 método pop() además de eliminar el último elemento del vector retorna el


valor almacenado en dicha componente.

Si llamamos al método pop y el vector está vacío 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 método
push. Mostrar la suma de sueldos ingresados.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 posición donde se


debe almacenar la componente en el vector:
sueldos.push(monto);
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

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

Array: métodos push y pop


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Crear un vector con 5 valores aleatorios comprendidos entre 1 y


1000. Luego extraer los dos últimos elementos sumarlos y
mostrarlos. Imprimir también el tamaño final del vector.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
var vec=[];
var f;
for(f=0;f<5;f++)
{
var nro=1+(Math.random()*1000);
vec.push(parseInt(nro));
}
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}
var sumaultimos=vec.pop()+vec.pop();
document.write('La suma de las dos últimas componentes es:'+sumaultimos+'<br>');
document.write('Tamaño final del vector'+vec.length+'<br>');
document.write('Elementos restantes del vector<br>');
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}
</script>

</body>
</html>

Array: métodos unshift y shift

Así como el método push inserta un elemento al final del vector el método
unshift inserta un elemento al principio del vector y desplaza el resto una
posición.

El método 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 página

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 método unshift que lo


inserta al principio del vector en caso contrario se inserta al final mediante el
método 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>');
}
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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>
Array: instrucción delete

Javascript tiene una instrucción que permite eliminar un elemento de un


vector llamada delete.

Al comando delete le pasamos el nombre del vector y la posición que


queremos borrar:
delete vec[3];

Con el comando anterior estamos eliminando la componente de la posición


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 posición 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 después de borrar las componentes, inclusive tratar de
acceder a las componentes que acabamos de borrar.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 ejecución 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

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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>
Array: métodos sort y reverse

Otro método muy útil de la clase Array es sort. La sintaxis más sencilla y por
defecto es para ordenar una lista de string:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 después 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 método sort el mismo se encarga de


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

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


pasar al método sort una función anónima indicando como implementar la
comparación entre elementos:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 después de ordenarlo<br>');
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}
</script>

</body>
</html>

Como vemos al método sort hemos pasado una función que retorna un 1 o
0:
vec.sort(function(v1,v2) {
if (v1>v2)
return 1;
else
return 0;
});

Los parámetros 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 función 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 método a analizar en éste concepto es reverse(), como


podemos intuir este método 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.
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
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 método reverse() que invierte los elementos del vector (es decir el último
pasa a ser primero, el anteúltimo pasa a ser segundo y así sucesivamente)

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
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 después de ordenarlo<br>');
for(f=0;f<vec.length;f++)
{
document.write(vec[f]+'<br>');
}
</script>

</body>
</html>

Array: métodos sort y reverse


 Problemas
 Codificar problema
 Ejecución problema
PROBLEMA

1. Cargar los sueldos de un conjunto de empleados. Finalizar la carga


al ingresar cero. Mostrar por pantalla los sueldos ordenados de
mayor a menor.
Problema 1.

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>

<script>
var sueldos=[];
var valor;
do {
valor=prompt('Ingrese el sueldo (cero para finalizar)','');
valor=parseInt(valor);
if (valor!=0)
sueldos.push(valor);
} while (valor!=0);

sueldos.sort(function(x,y) {
if (x>y)
return 1;
else
return 0;
});

document.write('Sueldos ordenados de menor a mayor<br>');


var f;
for(f=0;f<sueldos.length;f++)
{
document.write(sueldos[f]+'<br>');
}
sueldos.reverse();
document.write('Sueldos ordenados de mayor a menor<br>');
for(f=0;f<sueldos.length;f++)
{
document.write(sueldos[f]+'<br>');
}
</script>

</body>
</html>

Das könnte Ihnen auch gefallen