Manual JavaScript - I Parte
Manual JavaScript - I Parte
Introduccin a JavaScript
MANUAL I. ESTRUCTURAS
CONDICIONALES Y DE CONTROL
1
Qu es JavaScript?
JavaScript, al igual que Flash, Visual Basic Script, es una de las mltiples maneras que han surgido
para extender las capacidades del lenguaje HTML (lenguaje para el diseo de pginas de Internet).
JavaScript es un lenguaje interpretado que se embebe en una pgina web HTML. Un lenguaje
interpretado significa que a las instrucciones las analiza y procesa el navegador en el momento
que deben ser ejecutadas.
Nuestro primer programa ser el famoso "Hola Mundo", es decir un programa que muestre en el
documento HTML el mensaje "Hola Mundo".
<html>
<head>
</head>
<body>
<script type="text/javascript">
document.write('Hola Mundo');
</script>
</body>
</html>
<script type="text/javascript">
</script>
Para imprimir caracteres sobre la pgina debemos llamar al comando 'write' del objeto
document. La informacin a imprimirse debe ir entre comillas y encerrada entre parntesis.
Todo lo que indicamos entre comillas aparecer tal cual dentro de la pgina HTML.
Es decir, si pedimos al navegador que ejecute esta pgina mostrar el texto 'Hola Mundo'.
Cada vez que escribimos una instruccin finalizamos con el carcter punto y coma.
2
Nos acostumbraremos a prestar atencin cada vez que escribamos en minsculas o
maysculas para no cometer errores sintcticos. Ya veremos que los nombres de funciones
llevan letras en maysculas.
Variables.
Una variable es un depsito donde hay un valor. Consta de un nombre y pertenece a un tipo
(numrico, cadena de caracteres, etc.)
Tipos de variable:
Las variables son nombres que ponemos a los lugares donde almacenamos la informacin.
En JavaScript, deben comenzar por una letra o un subrayado (_), pudiendo haber adems
dgitos entre los dems caracteres. Una variable no puede tener el mismo nombre de una
palabra clave del lenguaje.
3
Impresin de variables en una pgina HTML.
Para mostrar el contenido de una variable en una pgina utilizamos el objeto document y
llamamos a la funcin write.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var nombre='Juan';
var edad=10;
var altura=1.92;
var casado=false;
document.write(nombre);
document.write('<br>');
document.write(edad);
document.write('<br>');
document.write(altura);
document.write('<br>');
document.write(casado);
</script>
</body>
</html>
Cuando imprimimos una variable, no la debemos disponer entre simples comillas (en caso
de hacer esto, aparecer el nombre de la variable y no su contenido)
Los valores de las variables que almacenan nombres (es decir, son cadenas de caracteres)
deben ir encerradas entre comillas simples o dobles. Los valores de las variables enteras (en
este ejemplo la variable edad) y reales no deben ir encerradas entre comillas. Cada
instruccin finaliza con un punto y coma.
Las variables de tipo boolean pueden almacenar solo dos valores: true o false.
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.
4
Para mostrar el contenido de una variable en una pgina debemos utilizar la funcin 'write'
que pertenece al objeto document. Recordemos que el lenguaje JavaScript es sensible a
maysculas y minsculas y no ser lo mismo si escribimos:
Document.Write(nombre);
Esto porque no existe el objeto 'Document' sino el objeto 'document' (con d minscula), lo
mismo no existe la funcin 'Write' sino 'write', este es un error muy comn cuando
comenzamos a programar en JavaScript.
La funcin prompt tiene dos parmetros: uno es el mensaje y el otro el valor inicial a
mostrar.
5
El problema anterior, donde se ingresa el nombre de una persona y su edad se trata de una
estructura secuencial.
Ejemplo de otro algoritmo con estructura secuencial: Realizar la carga de dos nmeros por
teclado e imprimir su suma y su producto:
<html>
<head>
<script type="text/javascript">
var valor1;
var valor2;
valor1=prompt('Ingrese primer nmero:','');
valor2=prompt('Ingrese segundo nmero','');
var suma=parseInt(valor1)+parseInt(valor2);
var producto=parseInt(valor1)*parseInt(valor2);
document.write('La suma es ');
document.write(suma);
document.write('<br>');
document.write('El producto es ');
document.write(producto);
</script>
</head>
<body>
</body>
</html>
Lo primero que debemos tener en cuenta es que si queremos que el operador + sume los
contenidos de los valores numricos ingresados por teclado, debemos llamar a la funcin
parseInt y pasar como parmetro las variables valor1 y valor2 sucesivamente.
Con esto logramos que el operador ms, sume las variables como enteros y no como
cadenas de caracteres. Si por ejemplo sumamos 1 + 1 sin utilizar la funcin parseInt el
resultado ser 11 en lugar de 2, ya que el operador + concatena las dos cadenas.
Este problema es secuencial ya que ingresamos dos valores por teclado, luego hacemos dos
operaciones y por ltimo mostramos los resultados.
6
Para ir al trabajo, elijo el camino A o el camino B ?
Al cursar una carrera, elijo el turno maana, tarde o noche ?
Ejemplo: Realizar la carga de una nota de un alumno. Mostrar un mensaje que aprob si
tiene una nota mayor o igual a 4:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var nombre;
var nota;
nombre=prompt('Ingrese nombre:','');
nota=prompt('Ingrese su nota:','');
if (nota>=4)
{
document.write(nombre+' esta aprobado con un '+nota);
}
</script>
</body>
</html>
Siempre debemos tener en cuenta que en la condicin del if deben intervenir una variable
un operador relacional y otra variable o valor fijo.
Con esto hacemos ms corto la cantidad de lneas de nuestro programa, recordemos que
venamos hacindolo de la siguiente forma:
document.write(nombre);
7
document.write(' esta aprobado con un ');
document.write(nota);
Ejemplo: Realizar un programa que lea dos nmeros distintos y muestre el mayor de ellos:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var num1,num2;
num1=prompt('Ingrese el primer nmero:','');
num2=prompt('Ingrese el segundo nmero:','');
num1=parseInt(num1);
num2=parseInt(num2);
if (num1>num2)
{
document.write('el mayor es '+num1);
}
else
{
document.write('el mayor es '+num2);
}
</script>
</body>
</html>
La funcin prompt retorna un string por lo que debemos convertirlo a entero cuando
queremos saber cual de los dos valores es mayor numricamente. En el lenguaje JavaScript
una variable puede ir cambiando el tipo de dato que almacena a lo largo de la ejecucin del
programa.
8
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.
Ejemplo: Confeccionar un programa que pida por teclado tres notas de un alumno, calcule
el promedio e imprima alguno de estos mensajes:
Solucin:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var nota1,nota2,nota3;
nota1=prompt('Ingrese 1ra. nota:','');
nota2=prompt('Ingrese 2da. nota:','');
nota3=prompt('Ingrese 3ra. nota:','');
//Convertimos los 3 string en enteros
nota1=parseInt(nota1);
nota2=parseInt(nota2);
nota3=parseInt(nota3);
var pro;
pro=(nota1+nota2+nota3)/3;
if (pro>=7)
{
document.write('promocionado');
}
else
{
if (pro>=4)
{
document.write('regular');
}
9
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 transforma a variables enteras y se obtiene el promedio sumando los
tres valores y dividiendo por 3 dicho resultado.
Los comentarios en JavaScript los hacemos disponiendo dos barras previas al comentario
(los comentario en tiempo de ejecucin no son tenidos en cuenta y tienen por objetivos de
documentar el programa para futuras modificaciones):
//Convertimos los 3 string en enteros
Cuando vinculamos dos o ms condiciones con el operador "&&" las dos condiciones
deben ser verdaderas para que el resultado de la condicin compuesta de Verdadero y
contine por la rama del verdadero de la estructura condicional.
10
Veamos un ejemplo: Confeccionar un programa que lea por teclado tres nmeros distintos
y nos muestre el mayor de ellos.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var num1,num2,num3;
num1=prompt('Ingrese primer nmero:','');
num2=prompt('Ingrese segundo nmero:','');
num3=prompt('Ingrese tercer nmero:','');
num1=parseInt(num1);
num2=parseInt(num2);
num3=parseInt(num3);
if (num1>num2 && num1>num3)
{
document.write('el mayor es el '+num1);
}
else
{
if (num2>num3)
{
document.write('el mayor es el '+num2);
}
else
{
document.write('el mayor es el '+num3);
}
}
</script>
</body>
</html>
En caso de ser Falsa la condicin de la rama del falso, analizamos el contenido de num2 y
num3 para ver cual tiene un valor mayor.
11
Operadores lgicos || (o) en las estructuras
condicionales.
Traducido se lo lee como "O". Si la condicin 1 es Verdadera o la condicin 2 es Verdadera,
luego ejecutar la rama del Verdadero.
Cuando vinculamos dos o ms condiciones con el operador "O", con que una de las dos
condiciones sea Verdadera alcanza para que el resultado de la condicin compuesta sea
Verdadero.
Ejemplo: Se carga una fecha (da, mes y ao) por teclado. Mostrar un mensaje si corresponde
al primer trimestre del ao (enero, febrero o marzo).
Cargar por teclado el valor numrico del da, mes y ao por separado.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var dia,mes,ao;
dia=prompt('Ingrese da:','');
mes=prompt('Ingrese mes:','');
ao=prompt('Ingrese ao:','');
dia=parseInt(dia);
mes=parseInt(mes);
ao=parseInt(ao);
if (mes==1 || mes==2 || mes==3)
{
document.write('corresponde al primer trimestre del ao.');
}
</script>
</body>
</html>
La carga de una fecha se hace por partes, ingresamos las variables dia, mes y ao.
Estructuras switch.
La instruccin switch es una alternativa para remplazar los if/else if.
12
<html>
<head>
</head>
<body>
<script type="text/javascript">
var valor;
valor=prompt('Ingrese un valor comprendido entre 1 y 5:','');
//Convertimos a entero
valor=parseInt(valor);
switch (valor) {
case 1: document.write('uno');
break;
case 2: document.write('dos');
break;
case 3: document.write('tres');
break;
case 4: document.write('cuatro');
break;
case 5: document.write('cinco');
break;
default:document.write('debe ingresar un valor comprendido entre 1 y
5.');
}
</script>
</body>
</html>
Debemos tener en cuenta que la variable que analizamos debe ir despus de la instruccin
switch entre parntesis. Cada valor que se analiza debe ir luego de la palabra clave 'case' y
seguido a los dos puntos, las instrucciones a ejecutar, en caso de verificar dicho valor la
variable que analiza el switch.
Es importante disponer la palabra clave 'break' al finalizar cada caso. La instrucciones que
hay despus de la palabra clave 'default' se ejecutan en caso que la variable no se verifique
en algn case. De todos modos el default es opcional en esta instruccin.
Plantearemos un segundo problema para ver que podemos utilizar variables de tipo cadena
con la instruccin switch.
Ingresar por teclado el nombre de un color (rojo, verde o azul), luego pintar el fondo de la
ventana con dicho color:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var col;
col=prompt('Ingrese el color con que se quiere pintar el fondo de la
ventana (rojo, verde, azul)' ,'');
switch (col) {
case 'rojo': document.bgColor='#ff0000';
13
break;
case 'verde': document.bgColor='#00ff00';
break;
case 'azul': document.bgColor='#0000ff';
break;
}
</script>
</body>
</html>
Para cambiar el color de fondo de la ventana debemos asignarle a la propiedad bgColor del
objeto document el color a asignar (el color est formado por tres valores hexadecimales
que representan la cantidad de rojo, verde y azul), en este caso al valor de rojo le asignamos
ff (255 en decimal) es decir el valor mximo posible, luego 00 para verde y azul (podemos
utilizar algn software de graficacin para que nos genere los tres valores).
En caso que la condicin sea Falsa contina con la instruccin siguiente al bloque de llaves.
14
Importante: Si la condicin siempre retorna verdadero estamos en presencia de un ciclo
repetitivo infinito. Dicha situacin es un error de programacin, nunca finalizar el
programa.
Ejemplo: Realizar un programa que imprima en pantalla los nmeros del 1 al 100.
Sin conocer las estructuras repetitivas podemos resolver el problema empleando una
estructura secuencial. Inicializamos una variable con el valor 1, luego imprimimos la
variable, incrementamos nuevamente la variable y as sucesivamente. Pero esta solucin es
muy larga.
Para que se impriman los nmeros, uno en cada lnea, agregamos la marca HTML de <br>.
15
Al finalizar el bloque de instrucciones que contiene la estructura repetitiva, se verifica
nuevamente la condicin de la estructura repetitiva y se repite el proceso explicado
anteriormente.
No existe una RECETA para definir una condicin de una estructura repetitiva, sino que se
logra con una prctica continua, solucionando problemas.
Una vez planteado el programa debemos verificar si el mismo es una solucin vlida al
problema (en este caso se deben imprimir los nmeros del 1 al 100 en la pgina), para ello
podemos hacer un seguimiento del flujo del diagrama y los valores que toman las variables
a lo largo de la ejecucin:
100
16
Importante: Podemos observar que el bloque repetitivo puede no ejecutarse si la condicin
retorna falso la primera vez.
La variable x debe estar inicializada con algn valor antes que se ejecute la operacin x = x
+ 1.
Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una
vez se ejecutar el bloque repetitivo.
La condicin de la estructura est abajo del bloque a repetir, a diferencia del while que est
en la parte superior.
Finaliza la ejecucin del bloque repetitivo cuando la condicin retorna falso, es decir igual
que el while.
Problema: Escribir un programa que solicite la carga de un nmero entre 0 y 999, y nos
muestre un mensaje de cuntos dgitos tiene el mismo. Finalizar el programa cuando se
cargue el valor 0.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var valor;
do {
valor=prompt('Ingrese un valor entre 0 y 999:','');
valor=parseInt(valor);
document.write('El valor '+valor+' tiene ');
if (valor<10)
17
{
document.write('Tiene 1 digitos');
}
else
{
if (valor<100)
{
document.write('Tiene 2 digitos');
}
else
{
document.write('Tiene 3 digitos');
}
}
document.write('<br>');
} while(valor!=0);
</script>
</body>
</html>
En este problema por lo menos se carga un valor. Si se carga un valor menor a 10 se trata
de un nmero de una cifra, si es mayor a 10 pero menor a 100 se trata de un valor de dos
dgitos, en caso contrario se trata de un valor de tres dgitos. Este bloque se repite mientras
se ingresa en la variable 'valor' un nmero distinto a 0.
Por ltimo, hay que decir que la ejecucin de la sentencia break dentro de cualquier parte
del bucle provoca la salida inmediata del mismo.
Sintaxis:
for (<Inicializacin> ; <Condicin> ; <Incremento o Decremento>)
{
<Instrucciones>
}
18
Esta estructura repetitiva tiene tres argumentos: variable de inicializacin, condicin y
variable de incremento o decremento.
Funcionamiento:
<script type="text/javascript">
var f;
for(f=1;f<=10;f++)
{
document.write(f+" ");
}
</script>
</body>
</html>
Importante: Tener en cuenta que no lleva punto y coma al final de los tres argumentos del
for. El disponer un punto y coma provoca un error lgico y no sintctico, por lo que el
navegador no avisar.
19