Prácticas con JavaScript
Aplicaciones Telemáticas
Grado en Ingeniería Telemática, 2018-2019
Escuela Técnica Superior de Ingeniería de Telecomunicación
Universidad Rey Juan Carlos


Cambios en el documento

Instrucciones generales

Práctica 3.1. Holamundos

Prueba todos los holamundos vistos en las transparencias. (No hace falta que escribas memoria de esta práctica)

Práctica 3.2. Funciones básicas

Escribe un fichero ~/at/practica03/js01.js que contenga:

Práctica 3.3. Funciones.

Escribe en un fichero ~/at/practica03/js02.js un programa JavaScript que tenga una función que reciba dos parámetros:

La función devolverá

Práctica 3.4. Validación de contraseña

Escribe en un fichero ~/at/practica03/js03.js un programa JavaScript que tenga una función que indique si una contraseña tiene la fortaleza requerida

Recibirá los siguientes parámetros:

  1. La contraseña.

  2. La longitud total que deberá tener la contraseña para que se considere válida.

  3. El número mínimo de minúsculas exigidas. (Puede ser 0)

  4. El número mínimo de mayúsculas. (Puede ser 0)

  5. El número mínimo de números exigidos. (Puede ser 0)

  6. El número mínimo de caracteres especiales exigido. (Puede ser 0)

  7. Una cadena que contendrá todos los caracteres que serán considerados especiales. P.e.

    ,.-{}[]!"·$%&/()=?¿¡'
      

    Si la contraseña contiene algún caracter especial (ni letra española ni número) no incluido en esta lista, se considerará incorrecta. Si esta cadena contiene letras o números, puedes hacer lo que prefieras: comprobarlo o no, dar un error, ignorarlo, considerarlo un carácter especial, etc

Devolverá

Observaciones adicionales:

Sugerencia

Práctica 3.5. Sleep

Muchos lenguajes de programación tienen una función llamada sleep(x), que acepta un número de segundos y que detiene la ejecución del programa duante ese tiempo. O más bien, hace nada durante ese tiempo. El número puede tener decimales, pero si es negativo o no válido, la función mostrará un error en la consola.

JavaScript no tiene esta función. Prográmala, en el fichero. ~/at/practica03/sleep.js

Sugerencia: usa un bucle.

Práctica 3.6. Cronómetro

Ahora programarás la lógica de negocio de un cronómetro. Usa el fichero ~/at/practica03/crono.js. Se trata de cronometrar una carrera o algo similar, donde hay varios participantes, todos empiezan a la vez, cada uno va acabando en un tiempo distinto y se trata de poder almacenar varios tiempos.

Cuando programemos el interfaz de usuario (en el tema siguiente), tendrá 3 botones.

Deberás programar una función llamada acepta_tecla(x, crono). Si lo prefieres, puedes llamarla aceptaTecla(x, crono), get_key(x, crono) o getKey(x, crono).

Esta función:

Observa que el objeto recibido y el objeto devuelto serán distintos, aunque tendrán atributos comunes.

Implementa el cronómetro como una máquina de estados

Prueba esta función como las anteriores. Usa tu función sleep. Ejemplo:

console.log('Tecla incorrecta');
console.log(acepta_tecla('x', crono));

console.log('Uso normal');
console.log(acepta_tecla('s', crono));
sleep(1.5);
console.log(acepta_tecla('s', crono));
console.log(acepta_tecla('r', crono));


console.log('Reset después de reset');
sleep(.5);
console.log(acepta_tecla('r', crono));


sleep(.5);
console.log('Uso normal con parciales');
console.log(acepta_tecla('s', crono));
sleep(1);
console.log(acepta_tecla('p', crono));
sleep(1.5);
console.log(acepta_tecla('p', crono));
sleep(1.5);
console.log(acepta_tecla('s', crono));

(etc)
  

Práctica 3.7. Excepciones en la validación de contraseña

Modifica la práctica 3.4 (validación de contraseña) para que genere excepciones cuando la función reciba algún parámetro incorrecto (parámetro inexistente, parámetro con valor sin sentido o parámetro no esperado). En los casos en los que la contraseña no cumpla los requisitos, no se generarán excepciones, mantén la cadena de texto.

Observa que las excepciones son para situaciones excepcionales, esto es, que una función reciba cosas que no debería recibir o se produzcan errores severos. El caso de que un usuario escriba una fortaleza débil es algo habitual, ningún programa debería lanzar una excepción por algo así.

Observa también que lanzamos excepciones, pero no las capturamos.

No es necesario que entregues la versión anterior de la práctica (sin excepciones), pero es conveniente que guardes una copia.

Práctica 3.8. Excepciones en el cronómetro

Al igual que en la práctica anterior, modifica la práctica 3.6 para que tu función devuelva un error si los parámetros son incorrectos. Si el tiempo es superior a 23:59:59:99, se mantendrá el comportamiento previsto en la especificación: devolver la cadena overflow, no lanzar una excepción. Si la tecla pulsada no es ninguna de las previstas tampoco debes lanzar ninguna excepción, tu autómata simplemente las ignorará.