domingo, 19 de marzo de 2017

XI Olimpiada Informática UCLM: BASE DE DATOS

En la base de datos que adjuntamos al trabajo de la Olimpiada, recopilamos los equipos que fueron clasificados dentro de los mundiales de la FIFA, fases, clasificación de octavos y cuartos de final, semifinales y finales.

En primer lugar, hay cinco tablas:

  • CONTINENTES, una simple tabla donde se muestran todos los continentes, identificados con un campo clave, ‘ID_CONT’.
  • EQUIPOS, donde se recogen todos los equipos que han participado en, al menos, un mundial, indicando su continente (que, como veremos a continuación, está relacionado con el campo clave ‘ID_CONT’, de la tabla CONTINENTES) e identificando automáticamente cada uno con el campo clave ‘ID_SEL’.
  • FASE, que recoge, como se puede intuir, las fases finales de los mundiales (octavos de final, cuartos de final, semifinales, final y tercer y cuarto puesto), identificando cada una con el campo clave ‘ID_FASE’.
  • MUNDIAL, tabla donde se introduce cada mundial, indicando la sede de dicho mundial, su fecha de inicio y su fecha de finalización y el ganador del mundial. Cada uno se identifica automáticamente con el campo clave ‘ID_MUNDIAL’.
  • PARTIDOS, tabla más extensa de la base de datos, puesto que recoge todos los partidos de la fase final de todos los mundiales disputados (desde Uruguay 1930 hasta Brasil 2014). En ella, se introduce el mundial, las selecciones que se enfrentan, la fase que están jugando y, por supuesto, el resultado del partido. Cada partido tiene un identificador automático, que es el campo clave ‘ID_PARTIDO’.

Una vez vistas las tablas y sus estructuras, posiblemente lo más importante de la base de datos es la relación entre los campos de cada tabla, donde el identificador o campo clave de cada una juega un papel fundamental.

Como puede verse en la imagen, en general, cada campo clave de una tabla puede repetirse varias veces en un campo de datos de la otra tabla (relación ‘1’ a ‘n’). Esto nos servirá tanto para las consultas como para los formularios.

Las consultas de la base de datos son las siguientes:



Es importante analizar la estructura de consultas como PARTIDOS_FASE_FINAL, FINALES_MUNDIALES_HISTORICO, etc., que son muy parecidas (solo cambian los campos donde se elige el dato clave para ejecutar la consulta, como elegir solo las finales o los partidos donde aparezca España):


Como puede observarse, en el bloque SELECT se seleccionan los campos que se quieren mostrar en esta consulta. Cada campo viene acompañada de el identificador de la tabla (M.COPA, F.FASE, etc.), que se establece en el bloque FROM (MUNDIAL AS M, FASE AS F, etc.). Lo más significativo aquí es, por un lado, la forma de concatenar datos, como por ejemplo CONCAT(P.LGOL || ' - ' || P.VGOL), para mostrar el resultado del partido, ya que los goles del equipo local y el del visitante van separados; por otro lado, las estructuras INNER JOIN EQUIPOS AS SL ON SL.ID_SEL = P.ID_LOCAL e INNER JOIN EQUIPOS AS SV ON SV.ID_SEL = P.ID_VISITANTE permiten coger varios campos de una tabla que se relacionan con un solo campo de otra tabla y que, como hemos visto anteriormente, van relacionadas ‘1’ a ‘n’ en el grafo relacional. Por último, en el bloque WHERE introducimos las condiciones para obtener determinados datos. En este caso que el identificador de una tabla coincida con el de la otra tabla, puesto que están relacionadas. Además, en las distintas consultas que parten de esta estructura, lo único que las diferencia es el dato que queremos obtener, como que F.FASE = ‘Final’ para obtener los partidos que son finales, M.COPA = ‘Mundial 2010’ para buscar los partidos del mundial de 2010 de Sudáfrica, etc.

Por otro lado, los formularios son los siguientes:

  • ALTA_CAMPEONATOS sirve para introducir los campeonatos que se han jugado, indicando los datos que se corresponden con la tabla MUNDIAL.
  • ALTA_PARTIDOS sirve para introducir los partidos que se han jugado en un mundial, correspondiéndose con los campos de la tabla PARTIDOS.
  • ALTA_SELECCIONES sirve para introducir nuevas selecciones indicando su continente, que se almacenarán en la tabla EQUIPOS.

Cada campo de datos en los formularios puede coger datos de otras tablas (con las relaciones entre ellas) o de consultas, especialmente de SELECCIONES_ORDENADAS y de CONTINENTES_ORDENADOS.

Por último, hay 4 informes:



Todos los informes son sacados de las distintas consultas, teniendo una apariencia muy similar entre ellos.



XI Olimpiada Informática UCLM: HOJA DE CÁLCULO

La hoja de cálculo de esta prueba se basa en el tema general del módulo de ofimática, la Copa Mundial de la FIFA, y, más concretamente, el Mundial de Brasil 2014. Consiste, a rasgos generales, en una simulación de los resultados de los partidos de dicho mundial.

Las condiciones que pusieron en la prueba son las siguientes:
  1. Los resultados de los encuentros que tienen lugar tanto en la fase de grupos como en posteriores fases (octavos de final, cuartos de final…) se generarán de manera aleatoria, teniendo en cuenta que el mínimo número de goles que suele anotar un equipo en un partido es 0 y el máximo es considerado en este caso concreto como 5.
  2. La clasificación de los equipos en la fase de grupos se calculará de la siguiente forma:
    • Los puntos se calculan teniendo en cuenta que:
      • Cada partido ganado suma 3 puntos
      • Cada partido empatado suma 1 punto
      • Cada partido perdido no suma ningún punto
    • Los partidos ganados (PG), partidos empatados (PE) y partidos perdidos (PP) se calculan a partir de los resultados de la fase de grupos para cada equipo.
    • Los goles a favor (GF) se calculan como la suma de los goles que ha marcado un equipo a lo largo de la fase de grupos.
    • Los goles en contra (GC) se calculan como la suma de los goles que ha recibido un equipo a lo largo de la fase de grupos.
    • El gol average (GA) se calcula como la diferencia entre los goles a favor y los goles en contra de un equipo. Finalmente, los equipos se ordenarán en la clasificación de acuerdo al número de puntos, y en caso de empate, de acuerdo al gol average.
  3. En la fase de grupos, en caso de empate, cada uno de los contendientes recibe un punto. Sin embargo, una vez terminada la fase de grupos, el empate ha de deshacerse de alguna forma para determinar el equipo que pasará a la siguiente ronda. Para deshacer el empate, este año se ha decidido no jugar prórroga ni penaltis, para evitar calambres y otras lesiones en los jugadores que después de los noventa minutos llegan extenuados al final del partido, de manera que el comité de la FIFA ha acordado lo siguiente: cuando se produzca un empate una vez finalizada la fase de grupos, se lanzará una moneda al aire, de manera que si sale cara, pasará a la siguiente ronda el equipo que hace de local, mientras que si sale cruz, pasará a la siguiente ronda el equipo que hace de visitante.
  4. Una posible manera de automatizar el funcionamiento del simulador de la Copa Mundial de la FIFA de 2014 (cuya valoración supondrá hasta 7,5 puntos de los 50 del apartado de hoja de cálculo), consiste en crear dos botones utilizando macros que tendrán las siguientes funcionalidades:
    • Limpiar: Al accionar este botón se borrarán todos los resultados calculados, de manera que la hoja de cálculo quedará tal y como se muestra en la figura.
    • Simular: Al accionar este botón se calcularán los resultados del mundial: fase de grupos, clasificaciones y fase final.

Manual de la hoja de cálculo


En primer lugar, lo que nos encontramos al abrir la hoja de cálculo adjunta a este trabajo es una portada, una hoja con los resultados de la fase de grupos y de la fase final, una hoja donde figuran todos los grupos ordenados y dos hojas auxiliares donde se realizan la mayoría de cálculos.

La portada contiene dos botones, Limpiar y Simular.

El botón Simular activará el macro asociado, que generará datos aleatorios de puntuaciones y posiciones de los equipos, y tras realizar una simulación de la competición, mostrará en la portada el equipo ganador. Para realizar este proceso, la macro pone un ‘1’ en la celda A1 de la hoja auxiliar ‘AUX_GRUPOS’, para generar todos los resultados de la fase de grupos y de la fase final y, así, que la hoja pueda calcular los distintos apartados de cada equipo en la fase de grupos, puesto que en cada fórmula de la hoja de cálculo hay un condicional para que si AUXGRUPOS.$A$1=”1”, entonces se hagan todos los cálculos y operaciones.


Seguidamente, la macro ordena cada grupo, teniendo como primer criterio la puntuación de cada equipo y, como segundo criterio, el Goal Average (GA).
Utilizando el botón de Limpiar, el macro configurado en la hoja de cálculo borrará los datos de puntuaciones y torneos asignados a los grupos y los equipos de la competición. Esto se realiza al poner un ‘0’ en la celda A1 de la hoja auxiliar ‘AUX_GRUPOS’.

Es recomendable utilizar la función de Limpiar cada vez que se vaya a realizar una nueva simulación, ya que así se evitan posibles errores o repeticiones en el torneo.

NOTA: para poder ejecutar macros, hay que activarlos: (Herramientas > Opciones > Seguridad > Seguridad de macros > Medio; reiniciar LibreOffice y darle a "Activar macros”).

En la hoja ‘RESULTADOS_GRUPOS’ se encuentran todos los resultados, tanto de la fase de grupos como de la fase final, que se calculan de forma aleatoria (el número mínimo de goles es 0 y el máximo 5). Ahora bien, si en la fase final hay algún empate, como la organización ha decidido que no se jugará prórroga ni penaltis, se lanzará una moneda: si sale cara, el equipo local pasará a la siguiente fase; si sale cruz, lo hará el equipo visitante. Este proceso se realiza en la hoja auxiliar ‘AUX_FASES’.

El procedimiento es sencillo. En primer lugar, hay una serie de celdas que comprueban si hay empate en el partido y, mediante un simple condicional, muestran un ‘SI’ si lo hay y un ‘NO’ si no lo hay. Si no hay un empate, pasa el equipo que haya ganado al otro. Sin embargo, si hay empate, en una celda se calculará un número aleatorio (0 o 1), de modo que si sale ‘0’ entonces la celda indica ‘CRUZ’ y si sale un ‘1’ indica ‘CARA’. De este modo, la hoja calcula quién pasa según la moneda.



Si la celda anterior indica que ha habido un empate (‘SI’), entonces procede a calcular aleatoriamente un 0 o un 1 para saber si es cara o cruz.

Haz click en la imagen para verla más grande

En esta última imagen, si no existe empate, la fórmula comprueba qué celda del resultado es mayor que la otra para determinar quién pasa. Si hay un empate, entonces comprueba si la moneda ha salido CARA o CRUZ, para determinar si pasa el local o el visitante.

En cuanto a los grupos, el procedimiento para calcular los datos se realiza en la hoja ‘AUX_GRUPOS’:
  • Puntos: suma los partidos ganados multiplicados por tres más los empatados multiplicados por 1 (no se suman los perdidos, puesto que cuentan 0 puntos).
  • PG, PE, PP: si, en cada partido, la celda del resultado del equipo en cuestión es mayor que la del equipo contrincante, entonces el partido se ha ganado y, por lo tanto, el condicional muestra un ‘1’ (si no se ha ganado muestra un ‘0’). Así, se puede hacer la suma de los partidos ganados mediante la suma de términos que vienen determinados por varios condicionales. En los PE y PP se hace lo mismo, pero cambiando la condición (= y <, respectivamente).
    Haz click en la imagen para verla más grande
  • GF, GC: consiste en una sencilla suma de los goles a favor o en contra de los partidos disputados por cada equipo.
  • GA: se restan los GF y los GC.

martes, 14 de marzo de 2017

XI Olimpiada Informática UCLM: PROCESADOR DE TEXTOS

La prueba de Ofimática de la XI Olimpiada Informática de la UCLM que he realizado con mi grupo consiste en tres trabajos relacionados entre sí (procesador de textos, hoja de cálculo y base de datos), que tratan sobre la Copa Mundial de la Fifa. En esta primera entrada sobre esta prueba, hablaré de el procesador de textos que podéis ver al final.

El procesador de textos trata, principalmente, sobre la historia de la Copa Mundial de fútbol de la FIFA y sobre la última edición de esta, la Copa Mundial de Brasil de 2014. Además, el propio documento contiene un manual de la hoja de cálculo y la descripción de la base de datos, ambas adjuntas a este trabajo, y que veremos en las siguientes entradas. Por último, tiene una portada, índice de contenidos, imágenes y tablas y la bibliografía y referencias.

Lo podéis ver a continuación:





domingo, 29 de enero de 2017

Raptor Flowchart - Ejercicio 35: Cuadrado de asteriscos

Este algoritmo lee un número que introduzcamos, para, a continuación, crear un cuadrado con un número determinado de asteriscos de lado, en función del número que hayamos introducido (si hemos introducido un 5, el cuadrado tendrá 5 asteriscos de lado).



Puedes descargar el algoritmo aquí.

Raptor Flowchart - Ejercicio 34: Calificación de un grupo de alumnos

Este algoritmo calcula la nota media de cada alumno. La parte práctica vale un 10%, la de problemas una 50% y la de teoría un 40%. En primer lugar se introduce el nombre del alumno, para luego introducir sus notas, las cuales deben de estar entre el 0 y el 10. Una vez introducidas muestra la nota media de dicho alumno. El programa finaliza cuando se introduzca una cadena vacía en el cuadro de diálogo.



Puedes descargar el algoritmo aquí.

Raptor Flowchart - Ejercicio 33: Día, nombre del mes y año

Este algoritmo lee tres números que se introducen por teclado, los cuales indican una fecha (día, mes, año). Mientras se van introduciendo los datos, el programa comprueba que son válidos (si no lo son muestra un mensaje de error). Si lo son, entonces cambia el número del mes por su nombre.


Puedes descargar el algoritmo aquí.

Raptor Flowchart - Ejercicio 32: Número multiplos de 2, 3 y de ambos entre 0 y 100

Este algoritmo calcula mediante un bucle los números entre 0 y 100 (incluido) que son múltiplos de 2, de 3 y de ambos. Esto se comprueba mediante el resto que resulta de dividir el número que lleva el bucle entre dichos números, el cual debe ser igual a 0.



Puedes descargar el algoritmo aquí.