Fermí Vilà
Fermí Vilà
Fermí Vilà
JavaScript
(Manual FV)
Visitar: Animes-Softwares.blogspot.com
Antes de empezar:
- Manual F.V.
Significa “manual práctico de informática”, pero realmente realmente PRÁCTICO.
- Todos los programas y ejercicios del manual han sido probados sin problema en el
Microsoft Internet Explorer 5.0
- Mi consejo, es que escribas de nuevo tal como te indico en el texto, cada uno de los
programas utilizando el Bloc de Notas del Windows. Sólo en el caso de que el
programa no te funcione y no descubras cuál es el error, cópialo a partir del Word en el
Bloc de Notas y grábalo con otro nombre; para poder compararlo con el tuyo y así
descubrir el error.
Piensa que se aprende más descubriendo los propios errores, que avanzar sin hacer
ningún error.
ÍNDICE
1. Introducción a la programación en JavaScript .....................................................................3
2. Estructuras de Programación...............................................................................................23
3. Funciones y Arrays...............................................................................................................51
7. JavaScript y la Web..............................................................................................................173
1.- Introducción
- De todos los servicios que ofrece INTERNET, no cabe duda de que el más popular es la
WWW (World Wide Web).
La WWW no es más que millones de páginas en formato electrónico, con los contenidos y
temáticas más diversas a las que podemos acceder gracias a un ordenador + modem +
browser (navegador).
- Una página WEB no es más que un fichero de texto (ASCII), escrito en formato HTML
(Hyper Text Markup Language = lenguaje etiquetado de hipertexto).
Los browsers (navegadores de Internet), son capaces de traducir estas etiquetas (tags) de
forma que presentan visualmente la página.
- Escribe:
<HTML>
<HEAD>
<TITLE>PROG000.HTM</TITLE>
</HEAD>
<BODY>
<P>Esto aparecerá en el navegador porque es un párrafo</P>
<P>Esto es otro párrafo</P>
<P>Observa lo que aparece en la línea de título</P>
<P>La línea de título es la frase que aparece en el marco
del navegador, línea superior</P>
<P>¿Está claro para qué sirven los tags P, /P?</P>
</BODY>
</HTML>
El navegador nos muestra la página HTML “visualmente”, para ver su código debes hacer:
JavaScript Fermí Vilà 4
Menú Ver
Código fuente
<HTML>
<HEAD>
<TITLE>PROG001.HTM</TITLE>
<SCRIPT LANGUAGE="JavaScript">
alert("¡Hola Mundo!");
</SCRIPT>
</HEAD>
<BODY>
<P>
Programa 1 en JavaScript
JavaScript Fermí Vilà 5
</P>
</BODY>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG002.HTM
var nom;
nom=prompt("Escribe tu nombre ","Paco");
alert("Mucho gusto "+ nom);
</SCRIPT>
</HTML>
Única línea del programa que no es necesario acabarla con punto y coma.
Todas las líneas que empiezan por // son comentarios para el programador, es decir no
forman parte del programa, dicho de otra forma: el navegador si encuentra una línea que
empieza por //, la salta.
En definitiva:
- La función prompt nos permite introducir "valores", dichos valores se han de guardar en
variables, que previamente hemos de declarar con la palabra reservada "var"
- La función "alert" muestra mensajes y/o valores de variables.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG003.HTM
/*Programa que sirve para calcular
el área de un rectángulo */
var base,altura;
base=prompt("Escribe la base del Rectángulo","");
altura=prompt("Escribe la altura del Rectángulo","");
alert("El área del Rectángulo es = "+(base*altura));
</SCRIPT>
</HTML>
- Ejecútalo varias veces. Sería conveniente utilizar números enteros y también decimales
(5.72, 0.531: observa que has de utilizar el punto decimal inglés).
- Si has ejecutado el programa una vez, para volverlo a ejecutar, no es necesario que
"cierres" el navegador, basta que hagas:
Menú Ver
Actualizar
o si quieres ir más rápido, pulsa la tecla [F5]
altura= prompt.....
• Por último necesitamos dos "alerts" que nos muestre el resultado del programa,
que es simplemente el producto base * altura
3.- Variables
- Declaración de variables
Una variable se puede declarar en JavaScript, de dos formas:
• Forma Explícita: var nombre Variable;
• Forma Implícita: var nombre Variable= valor;
En el último caso no es imprescindible escribir var, pero es conveniente, ya que de esta forma
localizamos rápidamente todas las variables del programa.
<HTML>
<SCRIPT LANGUAGE=''JavaScript''>
// PROG004.HTM
/* Programa que utiliza una variable explícita
y dos implícitas */
var Expli;
var pi=3.141592;
var radio=7;
Expli=pi*radio*radio;
alert("Área del Círculo = "+Expli);
</SCRIPT>
</HTML>
- Ejecútalo
Cuando declaramos una variable, ésta no pertenece a ningún tipo de dato en concreto, se dice
que es Undefined. Es al asignarle un valor cuando pasa a ser de uno u otro tipo, según el dato
que albergue.
// PROG005.HTM
var Pepe;
var PEPE="Hola que tal ";
var pepE=75.47;
var pEpe=" ¿Como estás?";
Pepe=PEPE+pEpe;
alert("PEPE="+PEPE);
alert("PEPE es "+typeof(PEPE));
alert("pepE="+pepE);
alert("pepE es "+typeof(pepE));
alert("pEpe="+pEpe);
alert("pEpe es "+typeof(pEpe));
alert("Pepe="+Pepe);
alert("Pepe es "+typeof(Pepe));
</SCRIPT>
</HTML>
// PROG006.HTM
var num;
alert("Hola que tal");
alert("Hola \nque tal");
alert("Hola\t"+"que"+"\n"+"tal");
alert("Hola\n que\n t\nal");
num=prompt("Escribe un número: ","");
alert("El \ndoble\n es: \n"+(num*2));
</SCRIPT>
</HTML>
Ejemplo:
2 3
FF32 en base 16 es 2 + 3*16 + 15*16 + 15*16 = 65330 en sistema decimal
Es decir: 0xFF32 (número en base 16, según notación de JavaScript) = FF3216 = 6533010
2 3 4
123458 = 5 + 4*8 + 3*8 + 2*8 + 1*8 = 534910
Es decir: 012345 (número en base 8, según notación de JavaScript) = 123458 = 534910
<HTML>
<SCRIPT LANGUAGE=''JavaScript''>
// PROG007.HTM
JavaScript Fermí Vilà 10
</SCRIPT>
</HTML>
En el programa anterior aparecen 3 “alerts”, uno para cada uno de los tres números. No hay
ningún problema para incluir los tres “alerts” en uno solo....
<HTML>
<SCRIPT LANGUAGE=''JavaScript''>
// PROG007b.HTM
</SCRIPT>
</HTML>
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// Prog007bb.htm
var x,y,z;
salida="";
var x1="Pepito Grillo", y1="Paquita González";
var num1=37, num2=3.752;
x=prompt("Escribe tu nombre:","");
y=prompt("Escribe tu primer apellido:","");
z=prompt("Escribe tu segundo apellido:","");
salida=salida+"Ahora un alert largo ";
JavaScript Fermí Vilà 11
salida=salida+x+y+z;
salida=salida+x1+" "+y1;
salida=salida+num1+" "+num2;
salida=salida+" ,ya me he cansado";
alert(salida);
</SCRIPT>
</HTML>
- Observa de qué forma acumulamos muchos datos en un solo “alert” (ésta será la forma de
proceder, cuando necesitemos una “salida” con muchos valores):
• definimos una variable “vacía”: var salida=””;
• acumulamos a la variable salida todo lo que queramos: salida=salida+ lo que
sea
• “lo que sea” puede ser una cadena (un texto) o una variable (sea numérica o de
texto).
salida=salida + x1 + “ “ + y1;
salida=salida + “ya me he cansado”;
• Para acabar, un solo “alert”: alert(salida);
Variables nulas
Cuando una variable no contiene ningún valor, su contenido es nulo
Ejemplo: miVariable = "Hola";
miVariable= null; // la vaciamos para que no ocupe memoria.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG008.HTM
var var1="Pepe";
var var2="Paquito";
var var3=5/0;
alert("Pepe es "+var1);
alert("Paquito + 2 es ="+(var2+2));
alert("5/0 es ="+var3);
</SCRIPT>
</HTML>
7.- Contadores
Uno de los instrumentos más utilizados en todo lenguaje de programación es el llamado
contador
Observa:
var x= 10;
x = x+1;
x = x-5;
Declaramos una variable "x", que es numérica y que inicialmente es 10.
La línea "x = x+1" es un contador, que hemos de leer: El nuevo valor de "x" es igual al
anterior valor de "x" más una unidad. Es decir, que en estos momentos nuestra variable "x"
es igual a 11.
La siguiente línea: "x = x-5" es otro contador que hemos de leer: el nuevo valor de "x" es
igual al anterior valor de "x" menos 5 unidades. Es decir, que el valor de la variable "x" es
ahora 11 - 5 = 6
- Haz un programa para comprobar lo que hemos dicho sobre los contadores, es decir:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG009.HTM
var x=10;
alert("El valor inicial de x es "+x);
x=x+1;
alert("Después de x=x+1, x="+x);
x=x-5;
alert("Después de x=x-5, x="+x);
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG010.HTM
var num1="30";
var num2="15";
alert("30+15= "+(num1+num2));
alert("30*15= "+(num1*num2));
</SCRIPT>
</HTML>
- Ejecútalo.
- ¿Qué sucede si introducimos dos números a través de la función prompt?. Vamos a verlo:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
//PROG011.HTM
var num1,num2;
num1=prompt("Escribe un número","");
num2=prompt("Escribe otro número","");
alert("La suma es ="+(num1+num2));
</SCRIPT>
</HTML>
parseFloat(cadena)
Toma la "cadena" y la transforma en un número en coma flotante, si es posible.
parseFloat ("123.456") = 123.456
parseFloat ("123ABC") = 123
JavaScript Fermí Vilà 14
parseInt(cadena, número)
Devuelve números enteros, el segundo argumento nos permite escoger la base de
numeración (entre 2 y 36)
parseInt ("ABC",16) = 2748 ABC16 = 274810
Si no especificamos el segundo argumento, por defecto es 10.
Si la cadena empieza por 0x y no existe el segundo argumento, se entiende que es 16.
Si la cadena empieza por 0 y no existe el segundo argumento, se entiende que es 8
toString(argumento)
Si argumento = número
Devuelve una cadena que contiene el número
Puede haber un argumento opcional:
(13).toString(16) =”d” siendo 1310 = d16
(13).toString(2) = “1101” siendo 1310 = 11012
<HTML>
<SCRIPT LANGUAGE="JavaScript">
//PROG012.HTM
var num1,num2;
num1=prompt("Escribe un número","");
num1=parseFloat(num1);
num2=prompt("Escribe otro número","");
num2=parseFloat(num2);
alert("La suma es ="+(num1+num2));
</SCRIPT>
</HTML>
A partir de este momento hemos de tener claro si los “prompts” corresponden a números
enteros, decimales o de texto:
<HTML>
JavaScript Fermí Vilà 15
<SCRIPT LANGUAGE="JavaScript">
// Prog012b.htm
var x,y;
x=parseInt(prompt("Escribe un entero ",""));
y=parseInt(prompt("Escribe otro entero ",""));
alert("La suma de "+ x +" + " + y +" es =" + (x+y) +"\n"+
"El producto de "+ x +" y "+ y +" = "+(x*y)+"\n"+
"El promedio de "+ x +" y "+ y +" es "+ (x+y)/2);
</SCRIPT>
</HTML>
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// Prog012bb.htm
var m,n,x;
m=prompt("Escribe un número en base 16","");
n=parseInt(m,16);
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// Prog012bbb.htm
var m7,n7;
var m4,n4;
var m6,n6;
m7=prompt("Escribe un número en base 7","");
n7=parseInt(m7,7);
m4=prompt("Escribe un número en base 4","");
n4=parseInt(m4,4);
m6=prompt("Escribe un número en base 6","");
n6=parseInt(m6,6);
</SCRIPT>
</HTML>
Veamos el problema inverso: dado un número en base 10, nos interesa convertirlo a base 7,
por ejemplo.
Matemáticamente:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// Prog012bbbb.htm
var m,n;
n=parseInt(prompt("Escribe un número entero en base 10",""));
m=(n).toString(7);
alert("El número "+n+" en base 10, es igual a "+m+" en base 7");
</SCRIPT>
</HTML>
JavaScript Fermí Vilà 17
Autoevaluación I
1) Haz un programa de nombre Eval1A.htm, que has de grabar en TuCarpeta que sirva para
restar dos números cualesquiera, sean enteros o reales. ¿Qué sucede si en lugar de restar
dos números, intentamos restar dos textos?.
Haz un programa de nombre Eval1Ab.htm, que demuestre el único caso en que podemos
restar dos cadenas de texto.
2) Haz un programa de nombre Eval1B.htm, que has de grabar en TuCarpeta, que sirva para
dividir dos números.
¿Qué sucede si en lugar de dividir dos números, intentamos dividir dos textos?
¿Qué sucede si el divisor es el número 0?
3) Haz un programa de nombre Eval1C.htm, que has de grabar en TuCarpeta, que funcione
de la siguiente forma:
- El programa nos pregunta nuestro nombre.
- El programa nos pregunta nuestra edad.
- El programa da como resultado nuestro nombre y a continuación los días que hemos vivido
hasta el momento (deberás multiplicar la edad por 365).
4) Haz un programa de nombre Eval1D.htm, que has de grabar en TuCarpeta, que funcione
de la siguiente forma:
- El programa nos pide un número.
- El programa nos muestra en una única pantalla (un único “alert”), el doble, el triple y
cuadrúple del número que habíamos introducido.
6) Haz un programa de nombre Eval1F.htm, que has de grabar en TuCarpeta, que sirva para
calcular la longitud de una circunferencia y el área del círculo correspondiente.
7) Haz un programa de nombre Eval1G.htm, que has de grabar en TuCarpeta, que sirva para
calcular un determinante de 2º orden.
8) Haz un programa de nombre Eval1H.htm, que has de grabar en TuCarpeta, igual que el
Eval1G, pero que presente los 4 elementos del determinante tabulados en 2 filas y 2
columnas.
JavaScript Fermí Vilà 19
9) Haz un programa de nombre Eval1I.htm, que has de grabar en TuCarpeta, que funcione
de la siguiente forma:
- El programa nos pide nuestro nombre.
- El programa nos pide nuestro primer apellido.
- El programa nos pide en qué población vivimos.
- El programa presenta una pantalla aproximadamente igual a la siguiente:
==================================
Hola nombre Apellido
Adiós habitante de Población
==================================
10) Haz un programa de nombre Eval1J.htm, que has de grabar en TuCarpeta, que funcione
de la siguiente forma:
- El programa nos pide un número.
- Utiliza tres contadores:
• Un contador: suma 5
• Otro contador: suma 21
• Otro contador: resta 4
- El programa nos presenta los 4 números de la siguiente forma:
• La primera línea: el número introducido.
• La segunda línea: los tres números tabulados, que han resultado de los tres
contadores.
De forma que si introducimos el nº 5 debería aparecer:
11) Haz un programa de nombre Eval1K.htm, que has de grabar en TuCarpeta, que funcione
de la siguiente forma:
- El programa nos pide un número entero.
- El programa nos da como resultado el mismo número pero en base 16
- Y por último nos lo escribe en base 5
Comprueba el programa para el número 52. Deberás calcular en primer lugar
matemáticamente el valor de 52 en base 16 y en base 5.
12) Haz un programa de nombre Eval1L.htm, que has de grabar en TuCarpeta, que funcione
de la siguiente forma:
- El programa nos pide un número en base ocho
- El programa nos lo escribe en base decimal.
- Y por último en base 2.
Comprueba el programa para el número 65618. Deberás resolver en primer lugar el problema
matemáticamente.
13) Haz un programa de nombre Eval1M.htm que has de grabar en TuCarpeta, que funcione
de la siguiente forma:
- El programa nos pide un número entero.
- El programa nos pide la base
- El programa nos escribe el número introducido en la "base" deseada.
JavaScript Fermí Vilà 20
Comprueba el programa para el número 100, en base 2, 3 y 11. Deberás resolver en primer
lugar el problema matemáticamente.
16) Escribe un fichero HTML (que no sea un programa JavaScript), que presente la frase: "Hola
que tal" y debajo tu nombre y apellidos.
24) ¿Cómo se llaman y cómo funcionan las dos formas de definir una variable en JavaScript?
28) ¿Qué es el carácter de escape? ¿Qué es un caráter de control?. Escribe dos caracteres de
control e indica para qué sirven.
</HTML>
Grábalo con el nombre Eval1N.htm en TuCarpeta.
30) Calcula el número 9AC1 que está en base 16 a base 10, matemáticamente
31) Calcula el número 7640 que está en base 8 a base 10, matemáticamente.
32) Utiliza programas ya hechos para comprobar los dos ejercicios anteriores.
36) Haz un programa de nombre Eval1o.htm, que sirva para calcular el producto escalar de
dos vectores del plano.
La “salida” ha de ser de la siguiente forma:
37) Haz un programa de nombre Evalip.htm, que sirva para calcular el coseno del ángulo que
forman dos vectores del plano, sabiendo que Math.sqrt(x) calcula la raíz cuadrada de “x”.
ilustración.
JavaScript Fermí Vilà 23
JavaScript Fermí Vilà 24
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG013.HTM
var num;
num=parseFloat(prompt("Escribe un número",""));
if(num==100)
{
alert("El número que has escrito es 100");
}
else
{
alert("El número que has escrito no es 100");
}
if(num>0)
{
alert("El número que has escrito es positivo");
}
else
{
alert("El número es negativo o 0");
}
</SCRIPT>
</HTML>
- Ejecútalo.
Significado:
Si se cumple la condición, se ejecutan las sentencias 1, 2 y 3 y si no se cumple se ejecutan las
sentencias 4, 5, 6. La opción “else” es opcional.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG014.HTM
var a,b;
a=parseFloat(prompt("Escribe el primer número",""));
b=parseFloat(prompt("Escribe el segundo número",""));
if(a==b) alert("Los dos números son iguales");
if(a != b) alert("Los dos números son distintos");
if(a>b)
{
alert("El primer número es mayor que el segundo");
}
else
{
alert("El primer número no es mayor que el segundo");
}
if((a>b) && (100>a))
{
alert("El primero es mayor que el segundo");
alert("Además los dos son menores de 100");
}
else
{
alert("El primero no es mayor que el segundo");
alert("O uno de los dos números es mayor o igual a 100");
}
</SCRIPT>
</HTML>
- Ejecuta el programa para los siguientes casos, observando detenidamente lo que aparece:
1) a=70, b=2
2) a=50, b=30
3) a=7, b=11
4) a=100, b=50
5) a=50, b=100
- Observa:
a==b “a” es igual a “b”
a != b “a” es diferente a “b”
(a>b) && (100>a)
“a” es mayor que “b” y además “100 es mayor que –a-“
El else correspondiente a la condición anterior, sería equivalente a no(a>b) ||
no(100>a), es decir la negación de la primera condición o la negación de la segunda (o las dos
negaciones a la vez).
JavaScript Fermí Vilà 26
Significado:
“Mientras” se cumpla la condición, se irán repitiendo las sentencias 1, 2 y 3.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG015.HTM
var x=0;
while(x<6)
{
alert("El valor de x es= "+x);
x=x+1;
}
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG016.HTM
var i=2;
var res="";
var j=7;
while (i<j)
{
res=res+" "+i+" "+j+"\n";
i++;
j--;
}
alert(res);
</SCRIPT>
</HTML>
Programa que repite un texto cualquiera, el número de veces que queramos, utilizando
un “while”
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG017.HTM
var nom;
var indice=1;
var num;
var respuesta=" ";
nom=prompt("Escribe tu nombre","");
num=prompt("Cuántas veces quieres que lo repita","");
num=parseInt(num,10); // era una cadena y ahora es un número
while (indice <= num)
{
respuesta=respuesta+nom+"\n";
indice++;
}
alert(respuesta);
</SCRIPT>
</HTML>
- Recuerda que en el “ParseInt” no es necesario escribir el 10, ya que por defecto (si no lo
escribimos), es base 10.
JavaScript Fermí Vilà 28
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG018.HTM
var num;
var sum=0;
var pro=1;
var respuesta="";
num=prompt("Escribe un número diferente de cero=","");
num=parseFloat(num);
while(num != 0)
{
sum=sum+num;
pro=pro*num;
respuesta=respuesta+num+"\tsuma parcial:"+sum+"\tproducto
parcial:"+pro+"\n";
num=prompt("Escribe otro número (para acabar introduce cero)","");
num=parseFloat(num);
}
alert(respuesta);
</SCRIPT>
</HTML>
Ejemplo:
for (i=1;i<=10;i++)
{
sentencia1;
sentencia2;
sentencia3;
}
En palabras significa:
JavaScript Fermí Vilà 29
Programa que repite un texto cualquiera en número de veces que queramos, utilizando
un “for”
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG019.HTM
var texto;
var num;
var salida="";
texto=prompt("Escribe un texto","");
num=prompt("Cuántas veces quieres que lo repita","");
num=parseInt(num,10);
for(i=1;i<=num;i++)
{
salida=salida+texto+"\n";
}
alert(salida);
</SCRIPT>
</HTML>
Programa que calcula todos los múltiplos de 11 menores de 3000 y por último nos da la
suma de todos ellos.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG020.HTM
var salida="";
var sum=0;
for(multi=11;multi<3000;multi=multi+11)
{
salida=salida+multi+" ";
sum=sum+multi;
}
alert(salida+"\nLa Suma de todos ellos es= "+sum);
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG021.HTM
var salida="";
var fact=1;
var num;
num=prompt("Cálculo del factorial del numero ","");
num=parseInt(num,10);
for(i=1;i<=num;i++) fact=fact*i;
alert("El factorial de "+num+" es "+fact);
</SCRIPT>
</HTML>
Observa que nuestro “for” no necesita llaves, porque contiene una única sentencia.
Programa que calcula los 10 primeros múltiplos del número que queramos, por último
nos da la suma de todos ellos.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG022.HTM
var salida="";
var num;
var mult;
var sum=0;
num=prompt("¿Múltiplos de qué número?","");
num=parseInt(num,10);
for(i=1;i<=10;i++)
{
mult=num*i;
salida=salida+mult+" ";
sum=sum+mult;
}
alert(salida+"\nSuma= "+sum);
</SCRIPT>
</HTML>
JavaScript Fermí Vilà 31
2
Tabla de valores de la función y=x -5x+10
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG023.HTM
var x1,x2,paso;
var salida="";
var y;
x1=prompt("Escribe el menor valor de x","");
x1=parseFloat(x1);
x2=prompt("Escribe el mayor valor de x","");
x2=parseFloat(x2);
paso=prompt("Escribe el incremento de x:","");
paso=parseFloat(paso);
for(i=x1;i<=x2;i=i+paso)
{
y=i*i-5*i+10;
salida=salida+i+" "+y+"\n";
}
alert(salida);
</SCRIPT>
</HTML>
- Al ejecutar el programa anterior, nos podemos encontrar con una serie de problemas, por
ejemplo si introducimos en el valor menor de “x” (x1), un valor que sea mayor que el
introducido en la variable x2, o también puede suceder que en la variable paso escribamos
un número negativo.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG024.HTM
var x1,x2,paso;
var salida="";
var y;
x1=prompt("Escribe el menor valor de x de la tabla","");
x1=parseFloat(x1);
x2=prompt("Escribe el mayor valor de x de la tabla","");
x2=parseFloat(x2);
JavaScript Fermí Vilà 32
if (x1>=x2)
{
alert("No tiene sentido lo que intentas hacer");
}
else
{
paso=prompt("Escribe el incremento de x","");
paso=parseFloat(paso);
if (paso<=0)
{
alert("No tine sentido lo que intentas hacer");
}
else
{
for (i=x1;i<=x2;i=i+paso)
{
y=i*i-5*i+10;
salida=salida+i+" "+y+"\n";
}
alert(salida);
}
}
</SCRIPT>
</HTML>
- Observa de qué forma salimos del programa si introducimos datos que no tienen sentido.
- Escribe:
JavaScript Fermí Vilà 33
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG025.HTM
var cat1,cat2,hipo;
cat1=prompt("Escribe el valor de un cateto","");
cat2=prompt("Escribe el valor del otro cateto","");
cat1=parseFloat(cat1);
cat2=parseFloat(cat2);
hipo=Math.sqrt(cat1*cat1+cat2*cat2);
alert("La hipotenusa del triángulo de catetos "+cat1+" y "+cat2+" es
"+hipo);
</SCRIPT>
</HTML>
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG026.HTM
var opcion="S";
var cat1,cat2,hipo;
while(opcion=="S" || opcion=="s")
{
cat1=prompt("Escribe el valor de un cateto","");
cat2=prompt("Escribe el valor del otro cateto","");
cat1=parseFloat(cat1);
cat2=parseFloat(cat2);
hipo=Math.sqrt(cat1*cat1+cat2*cat2);
alert("La hipotenusa del triángulo de catetos "+cat1+" y "+cat2+" es
"+hipo);
opcion=prompt("¿Quieres calcular otra hipotenusa? (S/N)","");
}
alert("Adiós muy buenas");
</SCRIPT>
</HTML>
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
JavaScript Fermí Vilà 34
// PROG027.HTM
var a,b,c;
var discri;
var x1,x2;
a=prompt("Escribe el coeficiente de la x^2","");
a=parseFloat(a);
b=prompt("Escribe el coeficiente de la x","");
b=parseFloat(b);
c=prompt("Escribe el término independiente","");
c=parseFloat(c);
discri=b*b-4*a*c;
if(discri<0) alert("Soluciones Imaginarias");
if(discri==0)
{
x1=-b/(2*a);
alert("Solución doble que es "+x1);
}
if(discri>0)
{
x1=(-b+Math.sqrt(discri))/(2*a);
x2=(-b-Math.sqrt(discri))/(2*a);
alert("Las soluciones son = "+x1+" y "+x2);
}
</SCRIPT>
</HTML>
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG028.HTM
var gra,rad;
var salida="";
for(gra=0;gra<=360;gra=gra+10)
{
rad=3.141592*gra/180;
salida=salida+gra+"\t\t"+Math.sin(rad)+"\n";
}
alert(salida);
</SCRIPT>
</HTML>
JavaScript Fermí Vilà 35
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG029.HTM
var num;
var opc,base;
num=prompt("Escribe un número positivo","");
num=parseFloat(num);
opc=prompt("1 Logaritmo Neperiano. 2 Logaritmo Decimal. 3 Logaritmo en base
a\nEscribe el número de la opción","");
opc=parseInt(opc,10);
if(opc==1)
{
alert("El logaritmo Neperiano de "+num+" es "+Math.log(num));
}
if(opc==2)
{
alert("El logaritmo Decimal de "+num+" es "+(Math.log(num)/Math.log(10)));
}
if(opc==3)
{
base=prompt("Introduce el valor de la base a","");
base=parseFloat(base);
alert("El Logaritmo en base "+base+" del número "+num+" es
"+(Math.log(num)/Math.log(base)));
}
</SCRIPT>
</HTML>
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG029a.HTM
var bas,exp,resul
bas=parseFloat(prompt("base de la potencia?",""));
exp=parseFloat(prompt("escribe el exponente",""));
resul=Math.pow(bas,exp)
alert(bas+" elevado a "+exp+" es igual a "+resul)
</SCRIPT>
JavaScript Fermí Vilà 36
</HTML>
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG029b.HTM
var ind,rad,resul
ind=parseFloat(prompt("índice de la raíz?",""));
rad=parseFloat(prompt("escribe el radicando",""));
resul=Math.pow(rad,1/ind)
alert("La raíz "+ind+" de "+rad+" es igual a "+resul)
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG029c.HTM
var cad;
var salida="";
for(i=1;i<=5;i=i+1)
{
cad="n= "+i+"\t\te= "+Math.pow(1+1/i,i)+"\n";
salida=salida+cad;
}
for(i=100;i<=50000000000;i=i*10)
{
cad="n= "+i+"\t\te= "+Math.pow(1+1/i,i)+"\n";
salida=salida+cad;
}
salida=salida+"Verdadero valor de e ="+Math.E
JavaScript Fermí Vilà 37
alert(salida);
</SCRIPT>
</HTML>
Números Aleatorios
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG029d.HTM
var a;
var x,y;
var salida="";
salida=salida+"5 números aleatorios entre 0 y 1\n";
for(i=1;i<=5;i++)
{
salida=salida+Math.random()+"\n";
}
salida=salida+"\n\n5 números aleatorios entre 3 y 7\n";
for(i=1;i<=5;i++)
{
salida=salida+(Math.round(7-3)*Math.random()+3)+"\n";
}
salida=salida+"\n\n5 números aleatorios entre 15 y 70\n";
for(i=1;i<=5;i++)
{
salida=salida+(Math.round(70-15)*Math.random()+15)+"\n";
}
alert(salida);
alert("Vamos a ver 5 números aleatorios entre los dos\nque tú quieras");
x=parseFloat(prompt("Escribe el número menor (puede ser decimal)",""));
y=parseFloat(prompt("Escribe el número mayor (puede ser decimal)",""));
salida="";
salida=salida +"5 números aleatorios entre "+x+" y "+y+"\n\n\n";
for(i=1;i<=5;i++)
{
a=Math.round(y-x)*Math.random()+x;
salida=salida+a+"\n";
}
alert(salida);
/* Si quieres números aleatorios enteros basta
cambiar los paréntesis de la siguiente forma:
Math.round((y-x)*Math.random()+x) */
salida="";
salida=salida+"150 números enteros aleatorios entre 2 y 17\n";
for(i=1;i<=150;i++)
{
salida=salida+Math.round((17-2)*Math.random()+2)+" - ";
}
JavaScript Fermí Vilà 38
alert(salida);
</SCRIPT>
</HTML>
Adivinanzas
Vamos a hacer un programa que nos pregunte un número entero del 1 al 10, y el usuario del
programa tiene 5 tentativas para adivinarlo.
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG029e.HTM
var x,num;
var i=0;
var control=0;
x=Math.round(9*Math.random()+1);
while(i<5)
{
i++;
num=parseInt(prompt("Escribe un entero entre 1 y 10, intento "+i,""));
if(num==x)
{
alert("Lo has acertado en "+i+" tentativas");
i=5;
control=1;
}
}
if(control==0)
{
alert("Lo siento pero se han acabado tus 'vidas', el número era "+x);
}
</SCRIPT>
</HTML>
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG029f.HTM
JavaScript Fermí Vilà 39
var x,y,z;
var nota=0;
for(i=1;i<=5;i++)
{
x=Math.round(9*Math.random()+1);
y=Math.round(9*Math.random()+1);
z=parseInt(prompt(x+" + "+y+" = ",""));
if(z==x+y)
{
alert("Muy bien");
nota=nota+1;
}
else
{
alert("Lo siento, pero "+x+" + "+y+" = "+(x+y));
}
}
alert("Tu nota es "+(2*nota));
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG030.HTM
var salida="";
for (x=5;x<15;x++)
{
if (x==8) break;
salida=salida+x+" \n";
}
salida=salida+"\n\n";
for (x=5;x<15;x++)
{
if (x==8) continue;
salida=salida+x+"\t";
}
alert(salida);
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG030a.HTM
var x,num;
var i=0;
x=Math.round(9*Math.random()+1);
while(i<5)
{
i++;
num=parseInt(prompt("Escribe un entero entre 1 y 10, intento "+i,""));
if(num==x)
{
alert("Lo has acertado en "+i+" tentativas");
break;
}
}
if(i==5)
{
alert("Lo siento pero se han acabado tus 'vidas', el número era "+x);
}
</SCRIPT>
</HTML>
- Graba el programa con el nombre Prog030a.htm y ejecútalo varias veces para comprobar
que funciona correctamente.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG031.HTM
JavaScript Fermí Vilà 41
var opc="0";
var num;
switch(opc)
{
case "1":
num=prompt("Escribe el número","");
num=parseFloat(num);
alert("El triple de "+ num +" es " +(3*num));
break;
case "2":
num=prompt("Escribe el número","");
num=parseFloat(num);
alert("El cuadrado de "+ num +" es " +(num*num));
break;
case "3":
num=prompt("Escribe el número","");
num=parseFloat(num);
alert("El Logaritmo Neperiano de "+ num +" es " +(Math.log(num)));
break;
case "4":
num=prompt("Escribe el ángulo en radianes","");
num=parseFloat(num);
alert("El seno de "+ num +" es " +Math.sin(num));
break;
case "5":
num=prompt("Escribe el ángulo en radianes","");
num=parseFloat(num);
alert("El coseno de "+ num +" es " +Math.cos(num));
break;
}
}
</SCRIPT>
</HTML>
- La estructura “switch-case”
switch(x)
{
case valor 1:
sentencia1;
sentencia2;
…;
…;
break;
case valor 2:
sentencia3;
…;
…;
break;
…
…
…
}
JavaScript Fermí Vilà 42
Según el valor que tome la variable “x”, se ejecutarán las líneas de programa del “case”
correspondientes. Observa que cada “case” termina con “break”.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG031a.HTM
var num,bien,notanum,notacual;
num=parseInt(prompt("Escribe el número total de preguntas",""));
bien=parseInt(prompt("Escribe el número de resouestas acertadas",""));
notanum=parseInt(10*bien/num);
switch(notanum)
{
case 0:
notacual="Muy Deficiente";
break;
case 1:
notacual="Muy Deficiente";
break;
case 2:
notacual="Deficiente";
break;
case 3:
notacual="Deficiente";
break;
case 4:
notacual="Insuficiente";
break;
case 5:
notacual="Suficiente";
break;
case 6:
notacual="Bien";
break;
case 7:
notacual="Notable";
break;
case 8:
notacual="Notable";
break;
case 9:
notacual="Excelente";
break;
case 10:
notacual="Matricula de Honor";
JavaScript Fermí Vilà 43
break;
}
alert("La nota cualitativa es "+notacual);
</SCRIPT>
</HTML>
- Grábalo con el nombre Prog031a.htm en TuCarpeta y ejecútalo varias veces para comprobar
que funciona.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG032.HTM
var x=1;
var salida="while:\n";
while (x<5)
{
x=x+1;
salida=salida+x+"\t";
}
salida=salida+"\ndo while:\n";
x=1;
do
{
x=x+1;
salida=salida+x+"\t";
} while (x<5);
alert(salida);
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG033.HTM
var x=1;
var salida="while:\n";
while (x<5)
{
x=x+1;
salida=salida+x+"\t";
}
salida=salida+"\ndo while:\n";
x=1;
do
{
x=x+1;
salida=salida+x+"\t";
} while (x>5);
alert(salida);
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG034.HTM
var anterior,ultimo,aux;
anterior=0;
ultimo=1;
var solucion;
solucion="0 - 1";
while (ultimo<=25000000000000)
{
aux=anterior+ultimo;
anterior=ultimo;
ultimo=aux;
if (ultimo>0) solucion=solucion+" - "+ultimo;
}
alert(solucion);
JavaScript Fermí Vilà 45
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG035.HTM
// Cálculo de factoriales
var fin;
var num=2;
var fact;
var solucion="";
fin=prompt("Factoriales hasta el número?","");
fin=parseFloat(fin);
while (num<=fin)
{
fact=1;
for (i=1;i<=num;i++)
{
fact=fact*i;
}
solucion=solucion+" - "+fact;
num++;
}
alert(solucion);
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG036.HTM
var lado1,lado2,lado3,auxiliar;
var solucion="";
lado1=prompt("Primer lado: ","");
lado1=parseFloat(lado1);
JavaScript Fermí Vilà 46
</SCRIPT>
JavaScript Fermí Vilà 47
</HTML>
Autoevaluación II
1) El siguiente programa tiene errores. Escríbelo y corrígelo para que funcione (grábalo con el
nombre Eval2A.htm en TuCarpeta):
<SCRIPT>
<HTML LANGUAGE="JavaScript"
// EVAL2A.HTM
var farenheit,celsius,
var s="";
for(i=-2;i<=12:i++)
{
celsius=10*i;
farenheit=32+(celsius*9)/5;
s=s+"C= "+celsius+" F= "+farenheit+"\n";
if (celsius==0) s=s+"Punto congelación del Agua\n";
if (celsius==100) s=s+"Punto de ebullición del Agua\n";
}
alert(s;
<//SCRIPT>
<HTML>
3) Escribe un programa que nos vaya pidiendo números. Si escribimos el número 9999 se
acaba; por último el programa nos da como resultado el número de números introducidos,
exceptuando el 9999.
Graba el programa con el nombre Eval2C.htm en TuCarpeta.
4) Haz un programa que haga lo mismo que el anterior, pero además nos dé la suma de todos
los números introducidos, exceptuando el 9999
Graba el programa con el nombre Eval2D.htm en TuCarpeta.
JavaScript Fermí Vilà 48
5) Haz un programa que haga lo mismo que el anterior, pero además nos dé el producto de
los números introducidos, exceptuando el 9999.
Graba el programa con el nombre Eval2E.htm en TuCarpeta.
6) Haz un programa que escriba todos los múltiplos de 23 inferiores a 1000 y por último nos
dé la suma de todos ellos.
Graba el programa con el nombre Eval2F.htm en TuCarpeta.
7) Haz un programa que sirva para hacer una tabla de valores de la función y=sen(7x-5)
- El programa nos pide los dos valores de “x” (valores máximo y mínimo).
- El programa nos pide el incremento (variación) de la “x”.
Graba el programa con el nombre Eval2G.htm en TuCarpeta.
8) Haz un programa que sirva para calcular un cateto de un triángulo rectángulo a partir del
otro cateto y la hipotenusa, de la siguiente forma:
- El programa nos pide el valor de la hipotenusa.
- El programa nos pide el valor de un cateto.
- Si el cateto es mayor que la hipotenusa, el programa nos da un mensaje de error y se
acaba.
- El programa nos da como resultado el valor del otro cateto y nos pregunta si queremos
volver a empezar.
Graba el programa con el nombre Eval2H.htm en TuCarpeta.
2
9) Haz un programa que sirva para resolver ecuaciones de 2º grado del tipo ax + bx = 0.
Graba el programa con el nombre Eval2I.htm en TuCarpeta.
(Modifica el Prog027.htm, que resolvia el caso general)
10) Haz un programa que sirva para resolver sistemas de ecuaciones del tipo: ax + by = c
dx + ey = f
Graba el programa con el nombre Eval2J.htm en TuCarpeta.
x=(ce-bf)/(ae-bd) ; y=(af-dc)/(ae-bd)
Prueba el funcionamiento del programa para el caso a=1; b=-2; c=-3; d=3; e=1;f=5; si todo
funciona correctamente: x=1 ; y=2
11) Haz un programa con la posibilidad de hacer el Eval2I.htm o el Eval2J.htm (debes utilizar
la estructura “switch”)
Graba el programa con el nombre Eval2K.htm en TuCarpeta.
JavaScript Fermí Vilà 49
2
12) Haz un programa que escriba la tabla de valores de la función y = ax + bx + c, el programa
nos pide los valores de a, b, c y el número
natural “v”. El programa construye la tabla
de valores entre los valores de “-v” y “v”
con un incremento de una unidad.
Graba el programa con el nombre
Eval2L.htm en TuCarpeta.
La “salida” para el caso a = 1, b = -2, c=3,
v=5 ha de ser de la siguiente forma:
14) El siguiente programa tiene errores, indícalos y explica detalladamente lo que hace el
programa:
<htmL>
<SCRITP>
// Eval2N.htm
var i=0;
var s=””;
wile(i<5);
{
s=s+i
i++;
}
alert(s);
</SCRIPT>
<HTLM>
Graba el programa corregido con el nombre Eval2N.htm en TuCarpeta.
15) Haz un programa que sirva para calcular el área de un triángulo o el área de un rectángulo
o el área de un círculo. El programa ha de tener la posibilidad de volver a empezar.
Graba el programa con el nombre Eval2O.htm en TuCarpeta.
16) Haz un programa tal que: dados dos vectores del espacio calcule su producto escalar,
producto vectorial y además nos dé el módulo de los dos vectores y también el módulo del
producto vectorial.
Graba el programa con el nombre Eval2P.htm en TuCarpeta.
v =(a , b , c) w=(d , e , f)
Producto Escalar = ad + be + cf
Producto vectorial = (bf-ec , dc-af , ae-
bd)
Módulo de v = a2 + b2 + c2
JavaScript Fermí Vilà 50
17) Haz un programa que “dibuje” un rectángulo de asteriscos a partir de la base y la altura.
Graba el programa con el nombre Eval2Q.htm en TuCarpeta.
18) Haz un programa que dibuje un cuadrado, con el carácter que quieras, a partir del lado.
Graba el programa con el nombre Eval2R.htm en TuCarpeta.
19) Haz un programa que nos pida un número y dé como resultado la tabla de multiplicar del
número introducido.
Graba el programa con el nombre Eval2S.htm en TuCarpeta.
20) Haz un programa que calcule el número “e” mediante el desarrollo en serie:
e = 1 + 1/(1!) + 1/(2!) + 1/(3!) + 1/(4!) + ... 1/(50!)
Graba el programa con el nombre Eval2T.htm en TuCarpeta.
23) Haz un programa que nos pregunte 10 multiplicaciones aleatoriamente y al final nos dé la
nota cualitativa.
Graba el programa con el nombre Eval2W.htm
JavaScript Fermí Vilà 51
JavaScript Fermí Vilà 52
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG039.HTM
</SCRIPT>
</HTML>
Se dice que la función es sin retorno de parámetros, porque no devuelve nada; para que la
función devuelva un valor, debería haber la instrucción return.
Si una función no retorna nada se le denomina también con el nombre de MÉTODO.
Nuestra función mediageo(), calcula la media geometrica de dos números. Como no retorna
nada, lo que hace en realidad la función es “agrupar” en un lugar determinado del fichero
HTML, una serie de sentencias que por ellas mismas ya forman un programa, se dice también
que es un subprograma.
<HTML>
<SCRIPT LAN....
// Programa Principal
sentencia1;
JavaScript Fermí Vilà 53
sentencia2();
// Fin del programa Principal
function mediageo()
{
sentencia3;
...; Método o Subprograma = función sin retorno de
....; parámetros
}
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG040.HTM
var opc="0";
function suma()
{
var a,b;
a=prompt("Escribe el primer sumando","");
a=parseFloat(a);
b=prompt("Escribe el segundo sumando","");
b=parseFloat(b);
alert("La suma de "+ a +" y "+ b +" es "+(a+b));
}
function raiz()
{
var a;
a=prompt("Escribe el radicando ","");
a=parseFloat(a);
alert("La raíz cuadrada de "+ a +" es "+Math.sqrt(a));
}
function logaritmo()
{
var x;
x=prompt("Escribe un número positivo","");
x=parseFloat(x);
JavaScript Fermí Vilà 54
function ayuda()
{
alert("Es bastante tonto que me pidas ayuda\npero aquí la tienes:\n\tPulsa S si
quieres sumar\n\tPulsa R para la raíz cuadrada\n\tPulsa L para el logaritmo
neperiano\n\tPulsa A para acceder a la ayuda\n\tPulsa T para acabar");
}
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG041.HTM
/* Programa Principal */
var x,y,result;
x=prompt("Escribe el primer sumando","");
x=parseFloat(x);
y=prompt("Escribe el segundo sumando","");
y=parseFloat(y);
</SCRIPT>
</HTML>
Es una función con dos argumentos (a y b) que retorna un valor (parámetro), que en nuestro
caso es el cuadrado de la suma de “a” y “b”.
Una función que retorna parámetros, se caracteriza en que en su interior aparece la sentencia
return, que permite devolver valores.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG042.HTM
var salida="";
salida=salida+"Enero tiene "+ diasmes(1) +" días\n";
salida=salida+"Febrero tiene "+ diasmes(2) +" días\n";
salida=salida+"Marzo tiene "+ diasmes(3) +" días\n";
salida=salida+"Abril tiene "+ diasmes(4) +" días\n";
salida=salida+"Mayo tiene "+ diasmes(5) +" días\n";
salida=salida+"Junio tiene "+ diasmes(6) +" días\n";
salida=salida+"Julio tiene "+ diasmes(7) +" días\n";
salida=salida+"Agosto tiene "+ diasmes(8) +" días\n";
salida=salida+"Septiembre tiene "+ diasmes(9) +" días\n";
salida=salida+"Octubre tiene "+ diasmes(10) +" días\n";
salida=salida+"Noviembre tiene "+ diasmes(11) +" días\n";
salida=salida+"Diciembre tiene "+ diasmes(12) +" días\n";
alert(salida);
/* Función "diasmes" */
function diasmes(mes)
{
var dias;
switch(mes)
{
case 2:
dias=28;
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dias=31;
break;
case 4:
case 6:
case 9:
case 11:
dias=30;
break;
}
return dias;
}
</SCRIPT>
</HTML>
JavaScript Fermí Vilà 56
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG043.HTM
var num,resto;
num=prompt("Escribe un número entero","");
num=parseInt(num,10);
for (i=2;i<num-1;i++)
{
resto=num % i;
if ((resto==0) && (num != 2))
{
alert(num+" no es primo");
break;
}
}
alert("Si no ha aparecido un mensaje de que no es primo, entonces el número
"+num+" es primo");
</SCRIPT>
</HTML>
- El operador %:
num %i, nos da el resto de la división entre num y i.
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG044.HTM
var num;
{
alert(num+" es primo");
}
else
{
alert(num+"no es primo");
}
function primo(x)
{
var resto;
for (i=2;i<x-1;i++)
{
resto=x % i;
if ((resto==0) && (x != 2))
{
return "N";
}
}
return "S";
}
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG045.HTM
var num,base;
num=prompt("Escribe un número positivo","");
num=parseFloat(num);
base=prompt("Escribe la base del logaritmo","");
base=parseFloat(base);
alert("El logaritmo de "+num+" en base "+base+" es "+logBase(num,base));
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG046.HTM
JavaScript Fermí Vilà 58
var num,numDecimales;
num=prompt("Escribe un número decimal","");
num=parseFloat(num);
numDecimales=prompt("Escribe el número de decimales","");
numDecimales=parseInt(numDecimales,10);
alert("El número "+num+" con "+numDecimales+" decimales =
"+Aproxi(num,numDecimales));
function Aproxi(n,d)
{
cifra=1;
for(i=1;i<=d;i++)
{
cifra *= 10;
/* recuerda que "cifra *= 10" es equivalente a "cifra=cifra*10" */
}
return Math.round(n*cifra)/cifra;
}
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG047.HTM
var num;
num=prompt("Escribe un número: ","");
num=parseFloat(num);
alert("El signo de "+num+" es "+Signo(num));
function Signo(x)
{
if(x != 0)
{
return x/Math.abs(x);
}
else
{
return 0;
}
}
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG048.HTM
var x,y,aux,resto;
x=prompt("Escribe un número","");
x=parseInt(x,10);
y=prompt("Escribe el otro número","");
y=parseInt(y,10);
if (x<y)
{
aux=x;
x=y;
y=aux;
}
while ((x % y) != 0)
{
resto=x%y;
x=y;
y=resto;
}
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG049.HTM
var x,y;
x=prompt("Escribe un número","");
x=parseInt(x,10);
y=prompt("Escribe otro número","");
y=parseInt(y,10);
alert("El MCD es: "+MCD(x,y));
function MCD(a,b)
{
var resto,aux;
if(a<b)
{
aux=a;
JavaScript Fermí Vilà 60
a=b;
b=aux;
}
if ((a%b)==0) resto=b;
while((a%b) !=0)
{
resto=a%b;
a=b;
b=resto;
}
return resto;
}
</SCRIPT>
</HTML>
Programa que calcula los 10 primeros múltiplos del número que queramos, utilizando
una función que retorna parámetro.
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG049a.HTM
function mult10(x)
{
var salida="Múltiplos de "+x+"\n";
var mult=0;
for(i=1;i<=10;i++)
{
mult=mult+x;
salida=salida+mult+" - ";
}
return salida;
}
a=parseInt(prompt("Escribe un número entero",""));
alert(mult10(a));
</SCRIPT>
</HTML>
- Observa:
En primer lugar se encuentra la función y a continuación el programa, que en nuestro caso
consta de 2 únicas instrucciones. En la práctica veremos que la o las funciones siempre
estarán en el <HEAD> </HEAD> de la página HTML.
Programa que construye una tabla de valores de y=mx+n utilizando una función
- Escribe:
JavaScript Fermí Vilà 61
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG049b.HTM
function recta(a,b)
{
salida="Tabla de valores de y = "+a+"x + "+b+"\n";
for(i=-5;i<=5;i++)
{
y=a*i+b;
salida=salida+"X = "+i+"\t"+"Y = "+y+"\n";
}
return salida;
}
m=parseFloat(prompt("Tabla de valores de y = mx + n\nEscribe el valor de
m",""));
n=parseFloat(prompt("Tabla de valores de y = mx + n\nEscribe el valor de
n",""));
alert(recta(m,n));
</SCRIPT>
</HTML>
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG049c.HTM
function hipot(c1,c2)
{
return Math.sqrt(c1*c1+c2*c2);
}
var x,y;
x=parseFloat(prompt("Escribe el valor de un cateto",""));
y=parseFloat(prompt("Escribe el valor del otro cateto",""));
alert("La hipotenusa del triángulo de catetos "+x+" , "+y+" es = "+hipot(x,y));
</SCRIPT>
</HTML>
- Grábalo con el nombre Prog049c.htm y ejecútalo varias veces para asegurarte que
funciona.
Programa que resuelve una ecuación de segundo grado utilizando tres funciones
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG049d.HTM
JavaScript Fermí Vilà 62
function imagi()
{
return "Soluciones Imaginarias";
}
function doble(a,b)
{
return -b/(2*a);
}
function dos(a,b,disc)
{
var x1,x2;
x1=(-b+Math.sqrt(disc))/(2*a);
x2=(-b-Math.sqrt(disc))/(2*a);
return "x1 = "+x1+" , "+"x2 = "+x2;
}
var x,y,z,d;
var salida="";
x=parseFloat(prompt("Ecuación ax²+bx+c=0\nEscribe el valor de 'a'",""));
y=parseFloat(prompt("Ecuación ax²+bx+c=0\nEscribe el valor de 'b'",""));
z=parseFloat(prompt("Ecuación ax²+bx+c=0\nEscribe el valor de 'c'",""));
d=y*y-4*x*z;
if(d<0)
{
alert(imagi());
}
if(d==0)
{
alert("Una solución, que es "+doble(x,y));
}
if(d>0)
{
alert("Dos soluciones:\n"+dos(x,y,d));
}
</SCRIPT>
</HTML>
- Grábalo con el nombre Prog049d.htm y ejecútalo varias veces (como mínimo una para
cada uno de los tres casos).
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG049e.HTM
function pot()
{
var b,e;
var resul;
b=parseFloat(prompt("Escribe la base de la potencia",""));
e=parseFloat(prompt("Escribe el exponente",""));
resul=b+" elevado a "+e+" es "+Math.pow(b,e);
alert(resul);
}
function raiz()
JavaScript Fermí Vilà 63
{
var b,e;
var resul;
b=parseFloat(prompt("Escribe el radicando de la raíz",""));
e=parseFloat(prompt("Escribe el índice de la raíz",""));
resul="La raíz "+e+"-ésima de "+b+" es "+Math.pow(b,1/e);
alert(resul);
}
var opc="s"
while(opc != "S")
{
opc=prompt("Escribe la opción que desees:\n(P)Calcular una potencia
(R)Calcular una raíz (S)Salir del programa","S");
switch(opc)
{
case "P":
case "p":
pot();
break;
case "R":
case "r":
raiz();
break;
}
}
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG049f.HTM
function cuali(notanum)
{
switch(notanum)
{
case 0:
case 1:
return "Muy Deficiente";
break;
case 2:
case 3:
return "Deficiente";
break;
case 4:
return "Insuficiente";
break;
case 5:
JavaScript Fermí Vilà 64
return "Suficiente";
break;
case 6:
return "Bien";
break;
case 7:
case 8:
return "Notable";
break;
case 9:
return "Excelente";
break;
case 10:
return "Matricula de Honor";
break;
}
}
var num,bien,nota,notacual;
num=parseInt(prompt("Escribe el número total de preguntas",""));
bien=parseInt(prompt("Escribe el número de resouestas acertadas",""));
nota=parseInt(10*bien/num);
alert("La nota cualitativa es "+cuali(nota));
</SCRIPT>
</HTML>
- Grábalo con el nombre Prog049f.htm y pruébalo varias veces para comprobar que
funciona.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG050.HTM
JavaScript Fermí Vilà 65
for(i=0;i<=10;i++)
{
x[i]=2*i;
salida=salida+"x["+i+"]="+x[i]+"\t";
}
alert(salida);
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
//PROG051.HTM
var n;
var salida="";
n=prompt("Escribe el número de elementos del Array","");
n=parseInt(n);
var Vector=new Array(n);
for(i=0;i<n;i++)
{
Vector[i]=prompt("Introduce Valor","");
salida=salida+Vector[i]+"\n";
}
alert("Los valores de la matriz son:\n"+salida);
</SCRIPT>
</HTML>
- Observa de qué forma, podemos definir un array con un número variable de valores.
- Escribe:
JavaScript Fermí Vilà 66
<HTML>
<SCRIPT LANGUAGE="JavaScript">
//PROG051a.HTM
var y=0;
var i=0;
var sum=0;
while(y != 9999)
{
y=parseFloat(prompt("Introduce un valor\npara acabar escribe
9999","9999"));
x[i]=y;
i++;
}
x[i]=0;
for(j=0;j<i-1;j++)
{
sum=sum+x[j];
}
med=sum/j;
alert("La media es "+med);
</SCRIPT>
</HTML>
- Grábalo con el nombre Prog051a.htm y ejecútalo varias veces para comprobar que
funciona.
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
//PROG051b.HTM
function media(n)
{
var x=new Array(n);
var sum=0;
for(i=0;i<n;i++)
{
num=parseFloat(prompt("Escribe un valor de la serie
("+(i+1)+"º):",""));
x[i]=num;
sum=sum+x[i];
}
return sum/n;
}
var valores;
valores=parseInt(prompt("Escribe el número de elementos de la serie",""));
alert("La media de todos los valores es: "+media(valores));
JavaScript Fermí Vilà 67
</SCRIPT>
</HTML>
- Grábalo con el nombre Prog051b.htm y ejecútalo varias veces para comprobar que
funciona.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
//PROG051c.HTM
function media(n)
{
var x=new Array(n);
var sum=0;
var salida="";
for(i=0;i<n;i++)
{
num=parseFloat(prompt("Escribe un valor de la serie ("+(i+1)+"º):",""));
x[i]=num;
salida=salida+x[i]+" - ";
sum=sum+x[i];
}
salida=salida+"\nLa Media Aritmética de estos "+n+" números es "+(sum/n);
return salida;
}
var valores;
valores=parseInt(prompt("Escribe el número de elementos de la serie",""));
alert(media(valores));
</SCRIPT>
</HTML>
Programa que calcula, dada una serie de 20 números, la media aritmética, las
desviaciones respecto a la media, la desviación media, la varianza y la desviación típica.
Recuerda:
Dada la serie estadística: x1, x2, x3, ... , xn
Media aritmética: x = (x1+x2+x3+ ......)/n
Desviaciones respecto a la media: d1=|x1-x|, d2=|x2-x|, ....
Desviación media: es la media aritmética de las desviaciones
Varianza: es la media aritmética de las desviaciones al cuadrado.
Desviación típica: es la raíz cuadrada de la varianza.
- Escribe:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
//PROG051d.HTM
JavaScript Fermí Vilà 68
for(i=0;i<20;i++)
{
num=parseFloat(prompt("Escribe un valor de la serie ("+(i+1)+"º):",""));
x[i]=num;
salida=salida+x[i]+" - ";
sum=sum+x[i];
}
med=sum/20;
for(i=0;i<20;i++)
{
des[i]=Math.abs(x[i]-med);
salida1=salida1+des[i]+" - ";
sum1=sum1+des[i];
sum2=sum2+(des[i]*des[i]);
}
desmed=sum1/20;
vari=sum2/20;
dt=Math.sqrt(vari);
alert(salida+"\n"+"MEDIA ARITMÉTICA =
"+med+"\n"+salida1+"\n"+"DESVIACIÓN MEDIA ="+desmed+"\nVARIANZA
="+vari+"\nDESVIACIÓN TÍPICA = "+dt);
</SCRIPT>
</HTML>
- Grábalo con el nombre Prog051d.htm y ejecútalo varias veces para comprobar que
funciona.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG052.HTM
alert(GeneraLetras());
function GeneraLetras()
{
var n;
n=parseInt(prompt("Cuántas letras quieres (1 a 26)",""));
if (isNaN(n)==true) return;
if (n<1) n=1;
JavaScript Fermí Vilà 69
if (n>28) n=26;
var Letras=new Array(n);
for (i=0;i<=Letras.length-1;i++)
{
Letras[i]=String.fromCharCode(65+i);
}
return Letras;
}
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG053.HTM
var salida="";
var Datos=new Array("Pepito","Paquito","Felipe");
var Edad=new Array(57,15,26);
alert("La matriz Datos tiene "+Datos.length+" elementos");
alert("La matriz Edad tiene "+Edad.length+" elementos");
for (i=0;i<=2;i++)
{
salida=salida+Datos[i]+" - "+Edad[i]+"\n";
}
alert(salida);
</SCRIPT>
</HTML>
Matriz2D[i]=new Array(5);
}
Con este código lo que conseguimos es crear una matriz con 5 elementos cada uno de los
cuales es, a su vez, una matriz. El resultado es el deseado: una matriz con dos dimensiones.
Una vez definida una matriz multidimensional, podemos acceder a sus elementos de la
siguiente forma:
Matriz2D[0][0] = primer elemento de la matriz.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG054.HTM
</SCRIPT>
</HTML>
El código ASCII asigna a cada carácter un número de 0 a 255, es decir 256 caracteres en total.
1 carácter = 8 bits = 1 byte = 8 ceros y unos.
8
0 y 1 en grupos de ocho: 2 = 256
El código ASCII se ha quedado pequeño: 256 caracteres es insuficiente para representar los
símbolos propios de muchos países.
La mayor parte de los sistemas operativos modernos (por ejemplo el Windows), guardan
internamente la representación de sus caracteres como valores Unicode no Ascii
JavaScript Fermí Vilà 71
var x = “JavaScript”
alert(x.charCodeAt(5));
Devolverá un 99, que corresponde a la “c”.
Las cadenas igual que las matrices comienzan a numerarse en el cero.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG055.HTM
var x="PACO-paco";
var letras=new Array(9);
var salida="";
salida=salida+x+"\n";
for(i=0;i<9;i++)
{
salida=salida+x.charCodeAt(i)+"\t";
letras[i]=x.charCodeAt(i);
}
alert(salida);
alert(letras);
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG056.HTM
var x;
x=prompt("Escribe una palabra o frase","");
var letras=new Array();
var numeros=new Array();
for(i=0;i<x.length;i++)
{
numeros[i]=x.charCodeAt(i);
letras[i]=String.fromCharCode(numeros[i]);
}
alert(letras+"\n"+numeros);
JavaScript Fermí Vilà 72
</SCRIPT>
</HTML>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG057.HTM
var x;
var salida="";
var letras=new Array();
var numeros=new Array();
x=prompt("Escribe una palabra o frase","");
for(i=0;i<=x.length;i++)
{
numeros[i]=x.charCodeAt(i);
letras[i]=String.fromCharCode(numeros[i]);
salida=salida+letras[i]+" = "+numeros[i]+"\n";
}
alert(salida);
alert(SumaASCII(x));
function SumaASCII(frase)
{
var aux=0;
for(i=0;i<frase.length;i++)
{
aux += frase.charCodeAt(i);
}
return aux;
}
</SCRIPT>
</HTML>
Si utilizamos la función anterior para determinar una dirección e-mail, no sería correcto ya que
el símbolo @ al principio o final de la cadena, no correspondería a una dirección de correo
electrónico; para este caso deberíamos modificar la función:
Function BuscaEmail(texto)
{
for(i=0;i<texto.length;i++)
{
if(texto.charAt(i)==”@” && i ¡= (texto.length-1) && (i ¡= 0))
return true;
}
return false
}
alert(BuscaEmail(“pepe@eso.es”));
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG058.HTM
var texto;
texto=prompt("Escribe el texto que quieras:","");
alert("Número de a y de A = "+BuscaLetra(texto));
function BuscaLetra(x)
{
var numero=0;
for(i=0;i<x.length;i++)
{
if(x.charAt(i)=="a" || x.charAt(i)=="A") numero++;
}
return numero;
}
</SCRIPT>
</HTML>
6.- Temporizadores
Los temporizadores son objetos sin representación física que se encargan de ejecutar una
tarea al cabo de cierto tiempo que se le debe indicar.
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG059.HTM
/* Texto animado */
var velocidad=200;
var letras;
function animar()
{
letras=new Array();
var texto="Uso de cadenas con JavaScript para efectos dinámicos";
for(i=0;i<texto.length;i++)
{
letras[i]=texto.charAt(i);
}
mueveLetras();
}
var TextoAct="";
var n=-1;
function mueveLetras()
{
n++;
TextoAct += letras[n];
document.forms[0].TextoDinamico.value=TextoAct;
if(n==letras.length-1)
{
n=-1;
TextoAct="";
}
setTimeout("mueveLetras()",velocidad);
}
</SCRIPT>
<BODY onload=animar();>
<FORM>
<INPUT TYPE="text" NAME="TextoDinamico" VALUE="" SIZE="120">
</FORM>
</BODY>
</HTML>
• document.forms[0].TextoDinamico.value= variable;
En el cuadro de texto de nombre “TextoDinamico”, se coloca el valor de la variable.
En el próximo capítulo lo estudiaremos con detalle.
Autoevaluación III
1) Haz un programa de nombre Eval3A.htm, que calcule el mínimo común múltiplo de dos
números utilizando la función MCD del Prog049.htm y sabiendo que mcm(x,y) =
x*y/MCD(x,y)
2) Haz un programa de nombre Eval3B.htm, que sirva para simplificar una fracción numérica,
debes utilizar la función MCD del ejercicio anterior.
Observa: a a/MCD(a,b)
----- = -----------------
b b/MCD(a,b)
Comprueba el funcionamiento del programa
para el caso:
3) Haz un programa de nombre Eval3C.htm, que sirva para sumar o restar dos fracciones y
después simplifique el resultado.
Observa:
a c a (mcm(b, d ) / b) + c(mcm(b, d ) / d )
+ =
b d mcm(b, d )
Compruébalo para el caso:
JavaScript Fermí Vilà 76
4) Haz un programa de nombre Eval3D.htm, que sirva para calcular el módulo de un vector
en el espacio, utilizando una función.
5) Haz un programa de nombre Eval3E.htm, que sirva para calcular el área de un triángulo en
el espacio, utilizando la función del ejercicio anterior.
Recuerda:
A=(a1,a2,a3), B=(b1,b2,b3), C=(c1,c2,c3)
AB=(b1-a1,b2-a2,b3-a3), AC=(c1-a1,c2-a2,c3-a3)
Área del triángulo ABC: mitad del producto vectorial de AB y AC (consulta el Eval2P.htm)
Compruébalo para el siguiente caso:
0
0
1 1
0 1
2 2 2
0 1 2
......
10) Haz un programa de nombre Eval3J.htm que lea un sistema de tres ecuaciones con tres
incógnitas y nos escriba la matriz ampliada. Suponiendo que todos los coeficientes son
positivos y constan de un único dígito. Deberás utilizar la función texto.charAt(num)
11) Haz un programa de nombre Eval3K.htm, que calcule un determinante de tercer orden.
Recuerda:
a b c
d e f = aei + dch + bfg - gec - hfa - dbi
g h i
12) Haz un programa de nombre Eval3L.htm, que sirva para discutir un sistema de tres
ecuaciones con tres incógnitas, sólo en los casos compatible determinado e incompatible y
lo resuelve en el caso compatible determinado.
De la siguiente forma:
1º) Crea una función que sirva para calcular un determinante de tercer orden (ejercicio
anterior).
13) Haz un programa de nombre Eval3M.htm, que simule una tirada aleatoria de cinco dados
de parchís.
JavaScript Fermí Vilà 79
14) Haz un programa de nombre Eval3N.htm, que resuelva un sistema de dos ecuaciones con
dos incógnitas por el método de Cramer.
Crea una función que calcule un determinante de 2º orden
15) Haz un programa de nombre Eval3O.htm, que escriba un número en base 2 o 3 en base
10.
Repasa el primer capítulo
16) Haz un programa de nombre Eval3P.htm, que calcule los 50 primeros términos de la
sucesión de termino general: (3n + 1) / ( 2n – 1)
17) Haz un programa de nombre Eval3Q.htm, que calcule la raíz cuarta de un número,
utilizando una función.
18) Haz un programa de nombre Eval3R.htm, que cuente el número de vocales que contiene
un texto cualquiera.
19) Haz un programa de nombre Eval3S.htm, que haga lo mismo que el anterior, pero al final
el programa nos da el número de “a”, número de “e”, número de “i”, y lo mismo con las “o” y
“u”.
JavaScript Fermí Vilà 80
Para ello necesitamos conocer un poco más de los tags propios del HTML,
Texto
<!-- //-->
Permite escribir comentarios en una página web (no en un programa JavaScript).
<BR>
Es equivalente a un [Return]. No existe el correspondiente tag de cierre.
<H1> </H1>
<H2> </H2>
<H3> </H3>
Nos sirven para escribir “títulos”.
<P> </P>
Párrafo normal (justificación izquierda).
Colores
<BODY BGCOLOR=”CódigoColor”> </BODY>
La página quedará coloreada con el color de fondo correspondiente a CódigoColor
La sintaxis de CódigoColor es #XXYYZZ
XX es un número en hexadecimal de 00 a FF correspondiente al rojo
YY es un número en hexadecimal de 00 a FF correspondiente al verde
ZZ es un número en hexadecimal de 00 a FF correspondiente al azul
Ejemplos:
#FF0000 rojo #0000FF azul
#9900DD violeta #00FF00 verde
#FF00FF magenta
Otros
<HR>
Dibuja una línea horizontal.
<B> </B>
Letra en negrita.
JavaScript Fermí Vilà 81
<HTML>
<HEAD><TITLE>Esto está en el navegador</TITLE></HEAD>
<!-- PROG061.HTM //-->
<BODY BGCOLOR="#000000">
<FONT COLOR="#FFFFFF">
<H1>Color de Fondo #000000=Negro</H1>
<BR>
<P ALIGN="CENTER">
El color del texto #FFFFFF=Blanco</P>
<BR>
<HR>
Esto está entre dos rayas horizontales
<HR>
<P ALIGN="CENTER">
<B>Esto es Negrita</B></P>
<BR>
Esto es letra normal
</FONT>
</BODY>
</HTML>
<HTML>
<!-- PROG062.HTM //-->
<BODY BGCOLOR="#FF0000">
<FONT COLOR="#0000FF">
<B>
<BR>
<HR>
<P ALIGN="CENTER">
Pepito Valdemoro Ruiz
<BR>
Avda. Las Babosas 21-25, 2, 4
<BR>
08915 - BADALONA
</P>
<HR>
</B>
</FONT>
</BODY>
</HTML>
Casi todos los programas que hemos hecho hasta ahora se han caracterizado en que su
“salida” ha sido siempre utilizando la ventana “alert” de JavaScript. Vamos a ver en el siguiente
programa que podemos “enviar la salida” a la misma pantalla del navegador.
JavaScript Fermí Vilà 82
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG063.HTM
var nom;
nom=prompt("Escribe tu nombre","");
var salida="";
for(i=2;i<=14;i=i+2)
{
salida=salida+"<BR>"+"i= "+i+" Hola "+nom;
}
document.write("<H1><P align='CENTER'>Uso de DOCUMENT.WRITE</H1>");
document.write("<BR><BR>");
document.write(salida);
</SCRIPT>
</HTML>
Utilizando los tags propios del HTML, podemos mejorar la salida de cualquier programa
JavaScript, en efecto:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG063.HTM
var nom;
nom=prompt("Escribe tu nombre","");
var salida="";
for(i=2;i<=14;i=i+2)
{
salida=salida+"<BR>"+"i= "+i+" - Hola "+nom;
}
document.write("<BODY BGCOLOR='#00FF00'><FONT COLOR='#FF0000'>");
document.write("<H1><P align='CENTER'>Uso de DOCUMENT.WRITE</H1>");
document.write("<BR><BR>");
document.write("<B>"+salida+"</B>");
</SCRIPT>
</HTML>
Cuadros de Texto:
<FORM>
<INPUT TYPE=”text” SIZE=”10” NAME=”pepe”>
</FORM>
Crea un cuadro de texto de nombre “pepe” y tamaño 10 caracteres.
<FORM>
<INPUT TYPE=”text” onBlur=”programa JavaScript”>
</FORM>
Crea otro cuadro de texto tal que, al salir de él se ejecuta el programa JavaScript.
<HTML>
<!-- PROG065.HTM //-->
<BODY>
<FORM>
ESCRIBE LO QUE QUIERAS:
<INPUT TYPE="text" SIZE="50" NAME="uno">
<BR><BR>
PULSA TAB para pasar al siguiente cuadro de texto:
<BR><BR>
VUELVE A ESCRIBIR LO QUE TE VENGA EN GANA:
<INPUT TYPE="text" onBlur="alert('vale');">
<BR>
<INPUT TYPE="text" VALUE="PUES ESO">
</FORM>
</BODY>
</HTML>
2º) “Programar” en la página web, los elementos visuales que necesitamos para nuestro
programa:
- Un cuadro de texto, para “recoger” la base del triángulo:
Base del triángulo: <INPUT TYPE="text" SIZE="5" NAME="bas">
- Un cuadro de texto, para “recoger” la altura del triángulo:
Altura del triángulo: <INPUT TYPE="text" SIZE="5" NAME="alt" >
- Un cuadro de texto, donde aparecerá el resultado del programa, es decir el área del
triángulo:
Área del triángulo: <INPUT TYPE="text" SIZE="10" NAME="result">
3º) “Programar” el enlace entre JavaScript y HTML, es decir, la ejecución del programa.
De momento sólo sabemos hacerlo utilizando el evento onBlur de un cuadro de texto. Es decir
hemos de modificar el segundo cuadro de texto de forma que nos quede:
Altura del triángulo: <INPUT TYPE="text" SIZE="5" NAME="alt" onBlur=
"document.forms[0].result.value =a(document.forms[0].bas.value,this.value);">
Observa:
- Para referirnos al contenido (valor) del cuadro de texto de nombre “bas”, utilizamos la
sintaxis: document.forms[0].bas.value
- Para referirnos al contenido del cuadro activo, utilizamos la sintaxis: this.value
<HTML>
<!-- PROG066.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function a(x,y)
{
return (parseFloat(x)*parseFloat(y)/2);
}
</SCRIPT>
</HEAD>
<BODY>
JavaScript Fermí Vilà 85
<FORM>
<BR>
Base: <INPUT TYPE="text" SIZE="5" NAME="bas">
<BR>
Altura: <INPUT TYPE="text" SIZE="5" NAME="alt"
onBlur="document.forms[0].result.value=a(document.forms[0].bas.value,this.value);">
<BR>
<BR>
Área: <INPUT TYPE="text" SIZE="10" NAME="result">
</FORM>
</BODY>
</HTML>
4º) Para acabar, es conveniente mejorar el diseño visual del programa: títulos, colores, etc.
<HTML>
<!-- PROG067.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function a(x,y)
{
return (parseFloat(x)*parseFloat(y)/2);
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#0000FF">
<FONT COLOR="#FF0000">
<H1><P ALIGN="CENTER">Calculo del Área de un Triángulo</H1>
<HR>
</FONT>
<FONT COLOR="#FFFFFF"><P>
Escribe el los siguientes cuadros la base y la altura del triángulo.
Para pasar de un cuadro al siguiente pulsa la tecla de tabulación
[Tab]. Al situarte en el último cuadro, automáticamente aparecerá
el valor del área.
Para escribir un dato en decimales, debes utilizar el "punto decimal",
no la coma.
<BR>
<HR>
<FONT COLOR="YELLOW">
<FORM>
<P ALIGN="CENTER">
Base del triángulo: <INPUT TYPE="text" SIZE="5" NAME="bas">
<BR>
Altura del triángulo: <INPUT TYPE="text" SIZE="5" NAME="alt"
onBlur="document.forms[0].result.value=a(document.forms[0].bas.value,this.value);">
<BR>
<BR><HR><P ALIGN="CENTER"><B>
Área del triángulo: <INPUT TYPE="text" SIZE="10" NAME="result">
<HR>
</FORM>
</FONT></B>
JavaScript Fermí Vilà 86
</BODY>
</HTML>
- Observa que en lugar de utilizar un código de color, también podemos utilizar el nombre del
color en inglés.
Botones
<HTML>
<!-- PROG068.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function Saludo()
{
alert("Hola Mundo!");
}
</SCRIPT>
</HEAD>
<BODY>
<P ALIGN="CENTER">
<FORM>
<INPUT TYPE="button" VALUE="Hazme Clic" onClick="Saludo();">
</FORM>
</P>
</BODY>
</HTML>
<HTML>
<!-- PROG069.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function Saludo(nom)
{
alert("Hola "+nom);
}
</SCRIPT>
JavaScript Fermí Vilà 87
</HEAD>
<BODY>
<P ALIGN="CENTER">
<FORM>
Escribe tu nombre:
<INPUT TYPE="text" NAME="x">
<BR><BR>
<INPUT TYPE="button" VALUE="Hazme Clic" onClick="Saludo
(document.forms[0].x.value);">
</FORM>
</P>
</BODY>
</HTML>
EJEMPLOS “visuales”
Para acabar este tema se trata de repetir una serie de programas ya hechos en capítulos
anteriores, pero utilizando las posibilidades “visuales” que acabamos de ver.
2
Ejemplo1: Tabla de valores de la función y=x -5x+10
El programa correspondiente era el Prog023.htm que ya tienes en TuCarpeta:
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG023.HTM
var x1,x2,paso;
var salida="";
var y;
x1=prompt("Escribe el menor valor de x","");
x1=parseFloat(x1);
x2=prompt("Escribe el mayor valor de x","");
x2=parseFloat(x2);
paso=prompt("Escribe el incremento de x:","");
paso=parseFloat(paso);
for(i=x1;i<=x2;i=i+paso)
{
y=i*i-5*i+10;
salida=salida+i+" "+y+"\n";
}
alert(salida);
</SCRIPT>
</HTML>
<SCRIPT LANGUAGE="JavaScript">
function valores(x1,x2,paso)
{
var y;
var salida="";
x1=parseFloat(x1);
JavaScript Fermí Vilà 88
x2=parseFloat(x2);
paso=parseFloat(paso);
for(i=x1;i<=x2;i=i+paso)
{
y=i*i-5*i+10;
salida=salida+"x= "+i+" y="+y+"<BR>";
}
document.write(salida);
}
</SCRIPT>
Es decir:
<FORM>
Primer o mínimo valor de X:<INPUT TYPE="text" NAME="min">
<BR>
Último o máximo valor de X:<INPUT TYPE="text" NAME="max">
<BR>
Incremento o Variación entre los valores de X: <INPUT TYPE="text" NAME="incr">
<BR>
<HR>
<INPUT TYPE="button" VALUE="Tabla de Valores"
onClick="valores(document.forms[0].min.value,document.forms[0].max.value,document.forms[0
].incr.value);">
<HR>
<BR>
</FORM>
<HTML>
<!-- PROG070.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function valores(x1,x2,paso)
{
var y;
var salida="";
x1=parseFloat(x1);
x2=parseFloat(x2);
paso=parseFloat(paso);
for(i=x1;i<=x2;i=i+paso)
{
y=i*i-5*i+10;
salida=salida+"x= "+i+" y="+y+"<BR>";
}
document.write(salida);
}
</SCRIPT>
</HEAD>
<BODY>
JavaScript Fermí Vilà 89
<FORM>
Primer o mínimo valor de X:<INPUT TYPE="text" NAME="min">
<BR>
Último o máximo valor de X:<INPUT TYPE="text" NAME="max">
<BR>
Incremento o Variación entre los valores de X: <INPUT TYPE="text" NAME="incr">
<BR>
<HR>
<INPUT TYPE="button" VALUE="Tabla de Valores"
onClick="valores(document.forms[0].min.value,document.forms[0].max.value,document.
forms[0].incr.value);">
<HR>
<BR>
</FORM>
</BODY>
</HTML>
- Escribe:
<HTML>
<!-- PROG071.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function valores(x1,x2,paso)
{
var y;
var salida="";
x1=parseFloat(x1);
x2=parseFloat(x2);
paso=parseFloat(paso);
for(i=x1;i<=x2;i=i+paso)
{
y=i*i-5*i+10;
salida=salida+"x= "+i+" y="+y+"<BR>";
}
document.write("<P ALIGN='CENTER'><FONT
COLOR='red'><B>"+salida);
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR="GREEN"><FONT COLOR="YELLOW"><H1><P ALIGN="CENTER">
Tabla de Valores de la función: Y=X*X-5*X+10</H1>
<FORM>
Primer o mínimo valor de X:<INPUT TYPE="text" NAME="min">
<BR>
Último o máximo valor de X:<INPUT TYPE="text" NAME="max">
<BR>
Incremento o Variación entre los valores de X: <INPUT TYPE="text" NAME="incr">
<BR>
<HR><P ALIGN="CENTER">
JavaScript Fermí Vilà 90
- Es interesante probarlo con valores relativamente grandes, por ejemplo: x1=1, x2=200,
paso=1
<HTML>
<SCRIPT LANGUAGE="JavaScript">
// PROG021.HTM
var salida="";
var fact=1;
var num;
num=prompt("Cálculo del factorial del numero ","");
num=parseInt(num,10);
for(i=1;i<=num;i++) fact=fact*i;
alert("El factorial de "+num+" es "+fact);
</SCRIPT>
</HTML>
Vamos allá:
<SCRIPT LANGUAGE="JavaScript">
function factorial(num)
{
var fact=1;
num=parseInt(num);
for(i=1;i<=num;i++) fact=fact*i;
return fact;
}
</SCRIPT>
- Escribe:
<HTML>
<!-- PROG072.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function factorial(num)
{
var fact=1;
num=parseInt(num);
for(i=1;i<=num;i++) fact=fact*i;
return fact;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
Escribe el número:<INPUT TYPE="text" NAME="x">
<BR><BR>
<INPUT TYPE="button" VALUE="Calcular el Factorial"
onClick="document.forms[0].f.value=factorial(document.forms[0].x.value);">
<BR><BR>
<INPUT TYPE="text" NAME="f">
</FORM>
</BODY>
</BODY>
</HTML>
Escribe:
<HTML>
<!-- PROG073.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function factorial(num)
{
var fact=1;
num=parseInt(num);
for(i=1;i<=num;i++) fact=fact*i;
return fact;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
Escribe el número:<INPUT TYPE="text" NAME="x">
<BR><BR>
<INPUT TYPE="button" VALUE="Calcular el Factorial"
onClick="document.forms[0].f.value=factorial(document.forms[0].x.value);">
JavaScript Fermí Vilà 92
<BR><BR>
<INPUT TYPE="text" NAME="f">
<BR><BR>
<INPUT TYPE="button" VALUE="OTRO"
onClick="document.forms[0].x.value='';document.forms[0].f.value='';">
</FORM>
</BODY>
</BODY>
</HTML>
- Escribe:
<HTML>
<!-- PROG074.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function factorial(num)
{
var fact=1;
num=parseInt(num);
for(i=1;i<=num;i++) fact=fact*i;
return fact;
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#000000"><FONT COLOR="WHITE">
<H1><P ALIGN="CENTER">CÁLCULO DEL FACTORIAL DE UN NÚMERO</H1>
<BR>
<H3>El factorial de un número es el producto del número por los sucesivos
enteros anteriores, hasta llegar a la unidad.
Es decir, el factorial de 5 será 5*4*3*2*1 por lo tanto 120.</H3>
<HR>
<FORM>
<H2><P ALIGN="CENTER"><FONT COLOR="RED">
Escribe el número:<INPUT TYPE="text" NAME="x">
<BR><BR>
<INPUT TYPE="button" VALUE="Calcular el Factorial"
onClick="document.forms[0].f.value=factorial(document.forms[0].x.value);">
<INPUT TYPE="button" VALUE="Otra vez"
onClick="document.forms[0].x.value='';document.forms[0].f.value='';">
<BR><BR>
<INPUT TYPE="text" NAME="f">
<BR><BR>
</FORM>
</BODY>
</BODY>
</HTML>
- Escribe:
<HTML>
<!-- PROG075.HTM //-->
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function MCD(a,b)
{
var resto,aux;
if(a<b)
{
aux=a;
a=b;
b=aux;
}
if ((a%b)==0) resto=b;
while((a%b) !=0)
{
resto=a%b;
a=b;
b=resto;
}
return resto;
}
</SCRIPT>
</HEAD>
<FORM><B>
<p align="center">Numerador : <input type="text" size="9"
name="num1"> <br>
Denominador: <input type="text" size="9" name="den1"
onblur="document.forms[0].num2.value=document.forms[0].num1.value/MCD(document.
forms[0].num1.value,this.value);document.forms[0].den2.value=this.value/MCD(documen
t.forms[0].num1.value,this.value);">
<br>
</p>
<hr>
<p align="center"><br>
<input type="text" size="7" name="num2"> <br>
<input type="text" size="7" name="den2"> <br><br>
JavaScript Fermí Vilà 94
Autoevaluación IV
1º) En el programa “Eval1A.htm” habíamos hecho un programa que restaba dos números.
Has de hacer un programa “visual” de nombre Eval4A.htm, que haga lo mismo, de la
siguiente forma:
- Dos cuadros de texto para introducir los dos números
- Un botón para ejecutar el programa
- Un cuadro de texto para el resultado
- El programa debe quedar bonito, es decir: títulos, colores, etc.
3º) En el “Prog028.htm” habíamos hecho un programa que construía una tabla de senos.
Haz un programa de nombre Eval4C.htm, que construya la tabla de senos anterior, pero su
salida en lugar de ser por un “alert”, que sea por la pantalla del navegador. Mejora dicha salida,
por ejemplo: letra en negrita, color rojo (fondo negro) y centrado.
7º) Haz un programa “visual” que sirva para pasar un número de una base de numeración
cualquiera a otra base de numeración cualquiera. Básate en los ejercicios Eval1K, Eval1L y
Eval1M.
Graba el programa con el nombre Eval4g.htm
7. JavaScript y la Web..............................................................................................................173