T.A.P.
Técnicas Actuales de Programación
Curso: 2016/17
Septiembre | Octubre | Noviembre | Diciembre | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
N no lectivo, N fiesta, N estudio, N exámenes, |
(sí, esto pasa de 100, pero es que en programación los errores son inevitables y por tanto hay que darles un margen)
15/12/2016.- En coordinación con el grupo de euskera, se cambia la evaluación para que el proyecto sea optativo. El factor de peso en la nota final del examen de ordenador para quien decida no realizarlo será por tanto del 95% (manteniendo la suma de pesos en el 115%)
Convocatoria oficial: día 30 de junio a las 10:00 AM. AULA 0.22 (no en las 0.19S y 0.20S asignadas por la facultad)
100% ejercicio con ordenador.
SEPTIEMBRE
Introducción
OCTUBRE
Se trata de calcular el número π con precisión de cuatro decimales mediante la serie:
La especificación de cuatro decimales hace referencia al criterio de parada en la suma de términos de
la serie, no a la presentación de la solución, que se hará normalmente mediante System.out.println(.)
y que nos mostrará un número de decimales que no podemos controlar por ahora.
Escriba una RUTINA que determine si un número dado es perfecto o no.
static boolean isPerfect(long n) { boolean esPerfecto=false; //TODO hacer lo necesario para que "isPerfect" refleje si n es perfecto o no. return esPerfecto; }
Un número perfecto es un entero positivo igual a la suma de sus divisores propios. Los divisores propios de un entero positivo son todos sus divisores a excepción de sí mismo. (Ejemplo de número perfecto: el 6, porque sus divisores propios son 1, 2 y 3 y 6=1+2+3.)
Utilizando dicha rutina debera obtener una lista de números perfectos entre el 1 y el 100.000
Listado de Números Perfectos [pdf]
Enunciado de la práctica [pdf]
NOVIEMBRE
Enunciado de la práctica [pdf]
Sobre el laboratorio de ayer:
Sobre el laboratorio de anteayer:
Continuamos con la biblioteca de clases:
EXAMEN DE TEST [pdf]
Las barras de "error" representan el intervalo completo de calificaciones
Se ha anulado la pregunta 7 (constructor por defecto)
Las barras rojas y azules representan las calificaciones antes y despues de la eliminación de la pregunta 7.
Pendiente acceso a calificaciones personales y revisión
Enunciado de la práctica [pdf]
Enunciado de la práctica [pdf]
Diciembre
Enunciado de la práctica [pdf]
En ocasiones no tengo respuesta inmediata a alguna pregunta por no ser frecuente o sencilla. En estos casos, si puede ser de interés general, queda reflejada aquí.
He diseñado mi propio tipo de letra. ¿Cómo puedo incluirlo en mi aplicación?
El mundo del diseño de "Fonts" (cosa de las Bellas Artes) y su uso en computadoras no es trivial. Todo lo necesario para el uso con Java se encuentra en el correspondiente tutorial de Oracle. Como respuesta concreta a cómo contar con un tipo de letra propio, se puede entresacar del mismo este sencillo código:
try { GraphicsEnvironment. getLocalGraphicsEnvironment(). registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf")); } catch (IOException|FontFormatException e) { /*Handle exception*/ }
donde se añade al entorno gráfico una nueva "font" que, en concreto, es de tipo "trueType" y se lee de un fichero (puede ser de otro tipo y en general leerse de cualquier "Stream" -véase documentación de Font.createFont-)
Quiero hacer un GUI de calculadora que pueda cambiar entre estándar y científica. ¿Cómo lo hago?
La manera más razonable puede ser agrupar en un par de paneles los botones que deben aparecer y desaparecer en cada caso para proceder a quitar y poner dichos paneles cuando se seleccione un modo u otro.
La siguiente imagen muestra una estructura sencilla de ejemplo: el "frame" lleva un "menuBar" donde se encuentran las dos opciones de paso de un modo a otro. Además hay un panel ("contenedorComun") para los botones que no varian entre ambos modos (componentes no visibles en la imagen) y un contenedor para intercambiar botoneras ("contenedorParaIntercambios"). Inicialmente este contenedor lleva dentro el panel de la calculadora estandar, pero se podrá intercambiar con el contenedor de la botonera cientifica que está "aparcado" en la sección "Other Components".
El modo de hacer el intercambio es extremadamente sencillo: basta con asociar a cada opción de menú su acción correspondiente como se ve en la siguiente imagen. No es otra cosa que sacar todo lo que haya en el panel (la botonera actual) y meter la botonera seleccionada. Una vez hecho esto terminamos con un "pack()" que le dice al "layoutManager" que haga su labor (que "empaquete" convenientemente el contenido)
(nota.- en sentido estricto el panel "contenedorParaIntercambios" es innecesario, pero se ha puesto por clarificar el ejemplo.)