Evaluación interna: ejemplo 3 Trabajo del alumno: criterio B Fase B = Diseño detallado de la solución == Introduciendo datos de fronteras == Podemos usar la estructura de datos estándar denominada "diagrama de mapa" para introducir los datos de las fronteras. El usuario registro sólo las conexiones entre regiones, en lugar de las fronteras y las grandes regiones, como las líneas azules: de 2011 Fuente: BBCanada http://www.bbcanada.com/bb_canada_map.cfm consultada el18 de febrero 'Mapas cortesía de BBCanada.com, www.BBCanada.com ' Cada segmento de línea conecta dos regiones limítrofes. Observe que regiones limítrofes diagonales (p. ej. 8 y 13) pueden tener el mismo color. Para cada región sólo necesitamos una lista de los estados conectados. Los datos se pueden escribir de la siguiente forma: YU BC NW AL SA NU MA ON QU NF NB NS PE --> --> --> --> --> --> --> --> --> --> --> --> --> BC,NW YU,NW,AL YU,NU,BC,AL,SA BC,NW,SA AL,NW,MA NW,MA,QU SA,NU,ON MA,QU ON,NU,NF,NB QU QU,NS,PE NB,PE NB,NS El usuario introducirá los datos separados por comas en lugar de flechas (ver ejemplo a continuación). Material de ayuda al profesor de Informática 1 Evaluación interna: ejemplo 3 Trabajo del alumno: criterio B == Mostrando los resultados == Como el objetivo del programa es permitir que los estudiantes coloreen mapas, realmente no es necesaria una salida gráfica real. Todo lo que necesitan saber es qué color poner en cada región, como se muestra a continuación: Lista impresa de colores YU BC NW AL SA NU MA ON QU NF = = = = = = = = = = Los estudiantes colorearán el mapa así: blue yellow green blue red red green yellow blue yellow Fuente: BBCanada http://www.bbcanada.com/bb_canada_map.cfm consultada el 18 de febrero de 2011 'Por cortesía de BBCanada.com, www.BBCanada.com ' == Almacenamiento de datos == En resumen, el programa necesita dos listas de datos: Fronteras (la primera región de cada línea limita con las otras) YU,BC,NW BC,YU,NW,AL NW,YU,NU,BC,AL,SA AL,BC,NW,SA SA,AL,NW,MA NU,NW,MA,QU MA,SA,NU,ON ON,MA,QU QU,ON,NU,NF,NB NF,QU NB,QU,NS,PE NS,NB,PE PE,NB,NS Colores YU,blue BC,yellow NW,green AL,blue SA,red NU,red MA,green ON,yellow QU,blue NF,yellow NB,red NS,blue PE,green Los datos de las fronteras deben almacenarse en un archivo de datos, ya que se podría reutilizar o modificar. El programa generará automáticamente los datos de los colores, así que no deben almacenarse en un archivo de datos. Material de ayuda al profesor de Informática 2 Evaluación interna: ejemplo 3 Trabajo del alumno: criterio B == Procesamiento == La parte más importante del programa es la automatización que elige los colores adecuados, de acuerdo con los datos de las fronteras y siguiendo las reglas esbozadas en los criterios de logro: p. ej.: las regiones colindantes deben tener colores distintos los vecinos que sólo coincidan en un vértice pueden tener los mismos colores sólo se pueden usar cuatro colores si es posible, se deben usar menos de cuatro colores • • • • Hay dos estrategias posibles: 1. Realizar un algoritmo que genere automáticamente un plan de colores correcto -O2. Asignar colores de forma aleatoria y comprobar si el conjunto de colores es aceptable (siguiendo las reglas anteriores): si los colores no son correctos, se vuelve a iterar con un conjunto aleatorio distinto, hasta encontrar uno correcto (o abandonar después de 1000 intentos) La primera estrategia es la que se suele intentar cuando se busca un plan de colores. Desconozco si hay un algoritmo que funciona para todos los mapas, así que usaré el procedimiento aleatorio y verificaré la estrategia. Este diagrama de flujo esboza la lógica global del programa: Inicio Introducir datos de las fronteras colores = 4 colores = colores - 1 recuento = 0 Elegir colores aleatorios recuento = recuento+1 Comprobar si los colores son correctos ¿Son los colores correctos? sí ¿Probar menos colores? no Fin Material de ayuda al profesor de Informática no ¿se ha intentado 1.000 veces? no sí sí sí Imprimir lista con colores correctos Mostrar "Quitting" no ¿intentar otras 1.000 veces? 3 Evaluación interna: ejemplo 3 Trabajo del alumno: criterio B == Plan de desarrollo == La programación se puede dividir en cuatro versiones, añadiendo nuevas características en cada una. #1 – Detección de colores incorrectos (1 semana) • • • Crear una lista de datos de fronteras y una única lista de colores Comprobar si los colores son correctos por Una comparación de colores de los estados limítrofes examinando los datos de las fronteras pseudocode for Checking SUCCESS = True for each REGION in the Borders list for each NEIGHBOR of the REGION look up REGION.COLOR in the Colors list look up NEIGHBOR.COLOR in the Colors list if REGION.COLOR == NEIGHBOR.COLOR SUCCESS = False return SUCCESS #2 – Generación del conjunto de colores (1 semana) • • Generar un conjunto aleatorio de colores Repetir la asignación de colores aleatoria hasta que se encuentre un plan de colores correcto pseudocode for RandomColors Colors = empty list for each REGION in the Borders list select a random COLOR 1..4 (or 1..3 if max-colors is 3) record the name of the REGION and the COLOR in the Colors list #3 – Introducción de datos de fronteras desde un archivo (1 semana) Leer datos de fronteras desde un archivo de datos, permitiendo que el usuario introduzca los datos en un archivo de texto, sin tener que introducirlos directamente en el código del programa. pseudocode for LoadingBordersData COUNT = 0 Borders = empty list open data file repeat until end of file info = readLine (e.g. BC,YU,NW,AL) split info into array of Strings --> data[] append data[] to the Borders array #4 – Programa final (2 semanas) Una versión final del programa completamente terminada debería implementar lógica de alto nivel, como se describe en el diagrama de flujo anterior. Se deben incluir bastantes pruebas. #5 – Prueba final (1 semana) En esta fase el usuario final prueba la versión definitiva del programa. Material de ayuda al profesor de Informática 4 Evaluación interna: ejemplo 3 Trabajo del alumno: criterio B == Plan de pruebas == Aquí hay una lista de 3 fronteras para probar el programa, conjuntamente con un plan de colores correcto y otro incorrecto. Se pueden generar fácilmente coloraciones incorrectas para realizar pruebas. Bandera a Fronteras a:b,c,d b:a,c c : a , b, d d:a,c b c d Colores 1,2,3 bien mal 1 1 2 2 3 3 2 1 Cuadrado 3x3 Fronteras a:b,d b:a,c,e c:b,f d:a,e,g e:b,d,f,h f:c,e,i g:d,h h:e,g,i i:f,h a b c d e f g h i Colores 1,2,3,4 bien mal 1 1 2 2 3 3 4 3 1 2 2 1 3 1 4 2 1 3 Canadá (véase mapa más abajo) Fronteras Colores=1,2,3,4 bien mal YU:BC,NW BC:YU,NW,AL NW:YU,NU,BC,AL,SA AL:BC,NW,SA SA:AL,NW,MA NU:NW,MA,QU MA:SA,NU,ON ON:MA,QU QU:ON,NU,NF,NB NF:QU NB:QU,NS,PE NS:NB,PE PE:NB,NS 3 4 2 3 1 1 2 4 3 4 1 3 2 3 4 3 2 1 1 2 4 3 4 1 3 2 Fuente: BBCanada http://www.bbcanada.com/bb_canada_map.cfm consultada el 18 de febrero de 2011 'Mapas cortesía de BBCanada.com, www.BBCanada.com ' Después de la primera fase, ya no se necesita los datos de colores de pruebas, ya que el programa generará los colores automáticamente. Material de ayuda al profesor de Informática 5 Evaluación interna: ejemplo 3 Trabajo del alumno: criterio B Plan de pruebas Tipo de prueba Naturaleza de la prueba Ejemplo El programa se abre y solicita el nombre de un archivo existente El programa introduce los datos desde un archivo de datos (#1) Prueba con datos sencillos (#2) Hacer doble clic en el icono del archivo de colores CANADÁ Introducir el nombre del archivo y ver si el programa se ejecuta Prueba con datos incorrectos (#4) Comprobar visualmente después de la ejecución correcta del programa Comprobar que el programa no se ejecuta Las regiones vecinas no deben tener los mismos colores (#3) Comprobar visualmente después de la ejecución correcta del programa Las regiones colindantes que sólo coinciden en un vértice pueden tener el mismo color (#3) Comprobar visualmente después de la ejecución correcta del programa Sólo se pueden usar cuatro colores (#3) Comprobar visualmente después de la ejecución correcta del programa Comprobar visualmente después de la ejecución correcta del programa Si es posible, se deberían usar menos de cuatro colores (#3) Material de ayuda al profesor de Informática Usar un ejemplo en el que sólo sean necesarios tres colores Un número excesivo de datos pueden ocasionar que el programa no termine 6