Resumen: Entrega nº56 del curso Aprender a programar en Visual Basic desde cero.
Codificación aprenderaprogramar.com: CU00357A
Ejercicio complementario y opcional para el curso Aprender a programar en Visual Basic desde cero. |
Plantear casos. Método. Valoraciones preliminares. Relaciones y procesos con letras.
Hemos de programar pensando en todas las situaciones posibles (al menos todas las que se nos ocurran), de forma que el programa sea capaz de resolverlas todas.
El número de casos y el número de series por caso lo elegimos en base a nuestra experiencia en resolución de programas, a nuestra intuición o creencia de que estamos planteando casos particulares que nos permitirán la resolución y por último, como respuesta al ensayo y error. Es decir, si planteamos dos casos y después vemos que el programa no responde bien ante determinadas circunstancias, tendremos que replantear usando distinto número o tipo de casos. En base a lo expuesto plantearemos distintas situaciones usando cuatro series como:
Caso 1. Una serie mayor no empatada y las tres restantes empatadas.
Caso 2. Las series mayores con triple empate en su primer número y sin empate en su segundo número.
Caso 3. Las series mayores con triple empate en su primer número, las dos primeras con empate en su segundo número.
Caso 4. Una serie mayor no empatada y las dos siguientes con empate absoluto en sus cuatro números.
Para cada caso escribiremos el proceso primero con un lenguaje más libre (hágalo cada cual como le parezca, a modo de tanteo y reflexión inicial) y después tratando de aproximarnos a un metalenguaje lógico-matemático.
El planteamiento de casos y el metalenguaje previo al pseudocódigo sería el siguiente:
Caso 1
Paso 1: la matriz a analizar (ok tiene más de una fila).
Paso 2: Extracción de la columna 1
Paso 3: ¿Orden ?
Paso 4: 22 > 18
Paso 5: Orden (1) = 22 33 85 57
Paso 6: Nueva matriz a analizar (ok tiene más de una fila)
Paso 7: Extracción de la columna 1
Paso 8: ¿Orden ?
Paso 9: 18 = 18 = 18 Triple empate
Paso 10: Sub – matriz a analizar
Paso 11: Extracción de la columna 1
Paso 12: ¿Orden ?
Paso 13: 55 = 55 > 51 doble empate
Paso 14: Sub – matriz a analizar
Paso 15: Extracción de la columna 1
Paso 16: ¿Orden ?
Paso 17: 32 > 19
Paso 18: Orden (2) = 18 55 32 41
Paso 19: Nueva matriz a analizar (ok tiene más de una fila)
Paso 20: Extracción de la columna 1
Paso 21: ¿Orden ?
Paso 22: 18 = 18 Doble empate
Paso 23: Sub – matriz a analizar
Paso 24: Extracción de la columna 1
Paso 25: 55 > 51
Paso 26: Orden (3) = 18 55 19 11
Paso 27: Nueva matriz a analizar Sólo tiene una fila
Paso 28: Orden (4) = 18 51 82 33
Caso 2
Paso 1: Es la matriz a analizar (ok tiene más de una fila).
Paso 2: Extracción de la columna 1
Paso 3: ¿Orden ?
Paso 4: 33 = 33 = 33 > 12 Triple empate
Paso 5: Sub – matriz a analizar
Paso 6: Extracción de la columna 1
Paso 7: ¿Orden ?
Paso 8: 73 > 22
Paso 9: Orden (1) = 33 73 85 15
Paso 10: Nueva matriz a analizar (ok tiene más de una fila)
Paso 11: Extracción de la columna 1
Paso 12: ¿Orden ?
Paso 13: 33 = 33 > 12 Doble empate
Paso 14: Sub – matriz a analizar
Paso 15: Extracción de la columna 1
Paso 16: ¿Orden ?
Paso 17: 22 > 21
Paso 18: Orden (2) = 33 22 25 77
Paso 19: Nueva matriz a analizar (ok tiene de una fila)
Paso 20: Extracción de la columna 1
Paso 21: ¿Orden ?
Paso 22: 33 > 12
Paso 23: Orden (3) = 33 21 13 10
Paso 24: Nueva matriz a analizar Sólo tiene una fila.
Paso 25: Orden (4) = 12 17 31 55
Caso 3
Paso 1: Es la matriz a analizar (ok tiene más de una fila).
Paso 2: Extracción de la columna 1
Paso 3: ¿Orden ?
Paso 4: 56 = 56 = 56 > 31 Triple empate
Paso 5: Sub – matriz a analizar
Paso 6: Extracción de la columna 1
Paso 7: ¿Orden ?
Paso 8: 22 = 22 > 10 Doble empate
Paso 9: Sub – matriz a analizar
Paso 10: Extracción de la columna 1
Paso 11: ¿Orden ?
Paso 12: 30 > 17
Paso 13: Orden (1) = 56 22 30 60
Paso 14: Nueva matriz a analizar (ok tiene más de una fila)
Paso 15: Extracción de la columna 1
Paso 16: ¿Orden ?
Paso 17: 56 = 56 > 31 Doble empate
Paso 18: Sub – matriz a analizar
Paso 19: Extracción de la columna 1
Paso 20: ¿Orden ?
Paso 21: 22 > 10
Paso 22: Orden = 56 22 17 81
Paso 23: Nueva matriz a analizar (ok tiene más de una fila)
Paso 24: Extracción de la columna 1
Paso 25: ¿Orden ?
Paso 26: 56 > 31
Paso 27: Orden (3) = 56 10 20 32
Paso 28: Nueva matriz a analizar Sólo tiene una fila.
Paso 29: Orden (4) = 31 12 14 16
Caso 4
Paso 1: Es la matriz a analizar (ok tiene más de una fila).
Paso 2: Extracción de la columna 1
Paso 3: ¿Orden ?
Paso 4: 85 > 73
Paso 5: Orden (1) = 85 91 17 12
Paso 6: Nueva matriz a analizar (ok tiene más de una fila)
Paso 7: Extracción de la columna 1
Paso 8: ¿Orden ?
Paso 9: 73 = 73 > 66 Doble empate
Paso 10: Sub – matriz a analizar
Paso 11: Extracción de la columna 1
Paso 12: ¿Orden ?
Paso 13: 18 = 18 Doble empate
Paso 14: Sub – matriz a analizar
Paso 15: Extracción de la columna 1
Paso 16: ¿Orden ?
Paso 17: 21 = 21 Doble empate
Paso 18: Sub – matriz a analizar
Paso 19: Extracción de la columna 1
Paso 20: ¿Orden ?
Paso 21: 43 = 43 Doble empate
Paso 22: Sub – matriz a analizar --> NO HAY SUB – MATRIZ : asignamos orden.
Paso 23: Orden = 73 18 21 43
Paso 24: Nueva matriz a analizar (ok tiene más de una fila)
Paso 25: Extracción de la columna 1
Paso 26: ¿Orden ?
Paso 27: 73 > 66
Paso 28: Orden (3) = 73 18 21 43
Paso 29: Nueva matriz a analizar Sólo tiene una fila.
Paso 30: Orden (4) = 66 12 17 13
Hemos planteado casos con números en vez de hacerlo con letras. ¿Por qué? Un motivo para ello es que necesitamos hacer comparaciones para determinar cuándo un elemento es mayor que otro, cosa que no podríamos hacer con letras a las que no hubiéramos asignado un valor.
Se han elegido matrices tipo 4x4 porque se estima que una 2x2 no es representativa de un caso genérico y que una 3x3 puede presentar particularidades indeseables.