BBDD&POO
Bases de Datos y
Programación Orientada a Objetos.
Curso: 2017/18. Parte POO
Máster en Modelización Matemática, Estadística y Computación
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
N no lectivo, N fiesta, N estudio, N exámenes, NN BBDD, NN POO, nuestra clase. |
La propuesta de ejercicio extra consiste simplemente en montar la base de datos para bibliografía con MySQL y procesar los datos y cargarlos directamente en ella desde Java (en vez de generar ficheros como se ha propuesto en el ejercicio original). No es obligatorio realizarlo, pero podrá ayudar a la nota final (que en todo caso se combinará con la parte de bases de datos).
Mensaje enviado por e-mail el 18/01/2018
Hola a todos,
La fecha de entrega para el ejercicio está determinada por la de entrega de actas en la universidad que primero
las solicita.
Para que me de tiempo a evaluar me pondré a ello sin falta el lunes 29 a las 7:30am, por lo que os pido que para
ese momento hayáis hecho todos el envío.
------------------------------------------------
Por otro lado, tengo que pediros disculpas por un error en el enunciado que ha detectado uno de vosotros.
Los que habéis entregado no os preocupéis del tema porque (y esto es para todos) me vale la solución tanto teniendo
en cuenta lo que os comento ahora como sin tenerlo en cuenta.
El asunto es que en la lista de tablas a generar falta una: Publicaciones.txt.
Publicaciones.txt: dos columnas separadas por “,”. La primera un número de orden dado por el programa
y la segunda una publicación sacada del campo 5 de DB1.txt.
De este modo en la tabla info-articulo se entiende que la publicación va codificada.
Info-articulo.txt: 5 columnas separadas por “,”. La primera un número de orden, la segunda el
título, la tercera el año, la cuarta el código de la publicación y la quinta columna la dirección web, que en caso
de no estar disponible se consignará “null”
Esto es consistente con lo que os cuento en el pdf de ayuda, donde indico que, del mismo modo que con autores y
filiaciones, podemos hacer un conjunto de publicaciones.
De ese conjunto generamos la tabla (por lo demás resulta innecesario).
Disculpad el fallo, y en todo caso insisto en que podéis tener esto en cuenta o no. En cuanto a la dificultad del
ejercicio, prácticamente no varía.
Un saludo.
La propuesta de ejercicio extra consiste simplemente en montar la base de datos para bibliografía con MySQL y procesar los datos y cargarlos directamente en ella desde Java (en vez de generar ficheros como se ha propuesto en el ejercicio original). No es obligatorio realizarlo, pero podrá ayudar a la nota final (que en todo caso se combinará con la parte de bases de datos).
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.
public class Pi { //Esto de la precisión es algo aproximado por no ser trivial. private static final double PRECISION=1E-5; public static void main(String args[]){ double pi=pi(); System.out.println(pi+ "\t"+Math.PI+"\tdiferencia: "+(Math.PI-pi)); } static double pi(){ double piCuartos=0.0, denominador=-1, incr=1.0; while (Math.abs(incr)>PRECISION/4) piCuartos += 1 / (denominador+=2) - (incr = 1/ (denominador+=2)); return 4*piCuartos; } }Algunos consejos usando este ejercicio... (video)
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
NOVIEMBRE
DICIEMBRE
Todo lo anterior, muy resumido, aquí.
create database actaspv; use actaspv; CREATE TABLE estadisticas ( `id` VARCHAR(8) NOT NULL, `numPalabras` INT NOT NULL, `validas` INT NOT NULL, `media` DOUBLE NOT NULL, `desviacionTipica` DOUBLE NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC));
En ocasiones alguna pregunta nada habitual puede ser de interés general....
(NOTA sobre formato del fichero de datos del ejercicio final) Al abrir los ficheros de datos del ejercicio final no veo más que una sola linea inmensamente larga.
Es una "ilusión óptica" :-) ...abre el fichero con otro editor (estarás usando Notepad probablemente)
No tendrás problemas al procesar el fichero con Java.
Me explico...
Para separar una linea de otra, en los ficheros de texto, tiene haber "algo" que lo indique. Resulta que hay dos maneras diferentes de hacerlo dependiendo de qué máquina uses. En el "mundo Windows" se usan dos caracteres no imprimibles seguidos: "CR" (carriage return) que indica desplazarse al principio de la linea actual, y "LF" (Line Feed) que indica darla por consumida y bajar a la linea siguiente. En el mundo UNIX se decidió que sólo se usaría "LF" con el significado conjunto de pasar a la linea siguiente llevando el punto de escritura al punto inicial.
Con esto, al abrir un documento de texto con un editor, este debe ser lo suficientemente "listo" como para contemplar ambas posibilidades. En realidad casi siempre bastaría con ignorar los "CR" e interpretar los "LF" al modo UNIX, porque no es normal que queramos interpretarlos como sólo bajar a la linea de abajo sin ir al principio.
El problema viene con los editores de texto que no hacen esto. Notepad ignora los "LF" e interpreta los "CR" como los "LF" de UNIX. Una inconsistencia incluso con el estándar de Microsoft que provoca lo que ves: como no hay "CR"s en el fichero, no ve pasos de linea.
Cuando leas lineas con Java [x.readLine()] la cosa va a ir bien, porque el método es lo suficientemente listo como para funcionar siempre bien.