Martes 14 oct. (2h 15:00-17:00)
- Hemos visto cómo desarrollaremos el curso con la proyección del enlace "presentación"
Como referencia bibliográfica únicamente los tutoriales en Oracle (en principio los "Getting Started" y "Learning the Java Language")
- Hemos visto todo el material del enlace "Intro" pasando bastante por encima de todo ello, aunque haciendo hincapié en la idea de Máquina Virtual, e indicando cómo obtener el entorno de desarrollo (JDK más NETBEANS de este enlace)
- Hemos programado con Netbeans mínimamente para hacer el "Hola Mundo" (como aquí)
- Hemos comenzado con las "Generalidades y programación sin objetos" llegando a ver los tipos primitivos (pag.6)
Miércoles 15 oct. (2h 17:00-19:00)
- Hemos terminado con el contenido del enlace "Generalidades y programación sin objetos" que contiene materiales que pueden seguirse igualmente en los tutoriales básicos indicados más arriba
Jueves 16 oct. (2h 17:00-19:00)
- Hemos hecho un programa muy simple para calcular números perfectos (versión 1, versión2). Queda propuesto como ejercicio resolver el mismo problema de un modo más eficiente (como se indica en el punto 2 del siguiente listado)
- Hemos visto la función System.currentTimeMillis() que nos permite calcular el tiempo de ejecución de nuestro código así.
- Hemos visto el funcionamiento de un programa con varias soluciones para el cálculo de perfectos (.jar) que obedecen a los siguientes comentarios:
- La primera versión es la "naif" que se ha hecho en clase
- La segunda es la que es un poco más "inteligente" puesto que para el candidato a perfecto "n" no analiza todos sus divisores, sino que considera que por cada uno que encuentra ("d") existe otro (n/d) que también lo es, por lo que puede limitar drásticamente el análisis.
- La tercera se sirve de que en realidad existe una fórmula: "p" es perfecto si p= 2^(ro-1) * (2^ro -1) siempre y cuando este segundo término sea primo (los primos de Mersenne). De esta forma basta con calcular en serie las (2^ro -1), comprobar su primalidad y de ser primo obtener el número perfecto asociado. De esta forma llegamos a descubrir muchos más en tiempo razonable.
- Con el algoritmo anterior podemos buscar números perfectos en tiempos razonables hasta llegar al punto en que la precisión de los números utilizados (long, double) nos de problemas. Para evitar estos problemas necesito números con más bits que los "long" (más de 64 bits), es decir necesito "enteros grandes". Si busco en la biblioteca de Java los encuentro: BigInteger. La cuarta versión del algoritmo usa BigInteger.
- Ya hemos eliminado las limitaciones de representación numérica... ahora es cuestión de tiempo... pero si tengo una máquina con un procesador con cores/Threads múltiples, debería poder aprovecharme de esa capacidad de cómputo... El último ejemplo lo hace.
Las versiones 3, 4 y 5 se presentan como "reflexión" respecto a las capacidades de Java.
Esta es la salida del programa en una máquina con procesador i7 con 8 hilos de ejecución
Aquí más info sobre todo el asunto de los primos de Mersenne
- Hemos empezado con el tema de "Programación con clases y objetos" llegando a la página 6.
Viernes 17 oct. (2h 17:00-19:00)
- Hoy ha sido todo seguir adelante con el tema 2, hasta llegar al 2.8 incluido.
Lunes 20 oct. (2h 15:00-17:00)
- Hemos terminado con el tema 2 y...
- Hemos visto todo el tema 3 y...
- ...no hemos tenido tiempo para más. Necesitaremos algo más de tiempo del previsto... Ya veremos cómo resolvemos... se os comunicará.
Clases con Carlos Gorria (21,22,23,27,28 oct.)
Miércoles 29 oct. (1,5h 15:00-16:30)
- Hemos visto lo correspondiente a las bibliotecas básicas (paquetes java.lang y java.util) .
Jueves 30 oct. (2h 17:00-19:00)
Hemos visto (muy rápidamente):
- Biblioteca IO.
- Ejercicio de IO.
- Aplicaciones en 5 capas.
- Acceso bases de datos desde Java.
- Tecnología JSP para la capa de usuario.