Metodología para la Solución de Problemas Algorítmicos (MAPS)

Anuncio
Metodología para la Solución de Problemas Algorítmicos (MAPS)
Metodología para la Solución de Problemas Algorítmicos (MAPS)
A continuación se describen las etapas de la Metodología para la Resolución de Problemas
Algorítmicos propuesta por Tucker et al., denominada por sus siglas en ingles "MAPS". Son
siete las etapas, que a continuación se describen:
Etapa 1: El Dialogo
Comprender el problema. Leer el enunciado del problema y hacer preguntas sobre las
características de las entradas y las salidas. Consiste en la identificación de las entradas, las
salidas y sus respectivas limitaciones, para un problema determinado, como fruto de un proceso
de análisis, en el cual se le sugiere al estudiante aplicar un enfoque sistémico para realizar una
correcta delimitación del problema.
Etapa 2: Las Especificaciones
Comprendido el paso anterior se procede a definir las especificaciones a partir de las entradas y
salidas identificadas en la etapa anterior. Este proceso tiene como fin predecir las pre y post
condiciones expresadas como predicados, que en un futuro permitirán evaluar la consistencia
del algoritmo ya sea utilizándolas como estados iniciales, intermedios o finales.
El estudiante debe tener conocimiento previos de lógica matemática para lograr
especificaciones claras de las pre y post condiciones. Escribir pre y postcondiciones que sean
completas y consistentes. Es decir, asegurarse de que las precondiciones cubren todas las
posibles entradas, que las postcondiciones definen la salida para todas las posibles entradas, y
que tanto las precondiciones como las postcondiciones son interna y mutuamente consistente.
Etapa 3: La División
Esta etapa consiste en la elaboración del algoritmo, diseño del mismo, fundamentada en las
técnicas y herramientas que se expusieron anteriormente. Realizar subdivisiones del proceso en
una colección de pasos diferentes. Repetir este proceso para cada paso hasta que la subdivisión
no tenga sentido.
Identificar las relaciones de control entre los distintos pasos. Es decir ¿Qué paso debe preceder
a cuál ?, ¿Qué pasos son parte de otro mas complejo?, ¿Qué pasos deben repetirse dentro de un
bucle?, y así sucesivamente.
Etapa 4: Definición de Abstracciones
En esta etapa se determinan cuáles de los pasos que se han utilizado, recolectándolos y
adaptarlos en una solo rutina para ser utilizada en la situación presente. Se debe identificar
rutinas que se puede reutilizar en el programa, ya sea que existan o que necesite desarrollar él
Fuente: http://czsistemas.net63.net/index.php?page=algoritmo6 Adaptado por: Ing. Zamantha González
Metodología para la Solución de Problemas Algorítmicos (MAPS)
mismo, esto le permitirá realizar sus programas mas fácilmente y de tal forma que su
mantenimiento y comprensión sea mas fácil.
En muchos casos, esta tarea implica la construcción de nuevas rutinas a partir de otras, o
incluso construir una nueva para una utilización mas especializada.
Etapa 5: Codificación
Se trata de trasladar el algoritmo a un lenguaje de programación, crear el programa fuente con
base en la sintaxis propuesta por el lenguaje de programación escogido, compilarlo y por ultimo
depurarlo.
Etapa 6: Prueba y Verificación
Se realizan las pruebas y verificaciones del programa con miras a que este sea: un programa
correcto, robusto y amigable. La prueba se realiza para el conjunto de entradas que permita
explorar todo el rango de valores permitidos por las precondiciones, para cada ejecución,
comprobar que las salidas satisfacen las poscondiciones.
Etapa 7: Presentación
Se debe crea la documentación necesaria, esta debe ser tanto interna (expresada en líneas de
texto dentro del programa) como externa (creando un documento anexo que exponga los
aspectos clave del programa para su mantenimiento posterior), de forma tal, que su
mantenimiento sea fácil.
Se debe identificar el programa, el autor la fecha, una explicación de cada rutina utilizada, no
hay límite en cuanto a comentarios, de tal manera que faciliten la modificación programa.
Ahora bien, el desarrollo de estas etapas involucra dos conceptos fundamentales como son:
Análisis, que consiste en definir las partes en función de un comportamiento, o sea, de algo
general y desconocido obtener algo específico y conocido. Es ir del todo a las partes. Es
responder a preguntas que involucran ¿Qué?, consiste en indagar. Por ejemplo: ¿Qué debe
entrar al problema?, ¿Qué resultados deben salir del problema? y ¿Qué procesos debe ejecutar
el problema para convertir las entradas en salidas?
Síntesis, que consiste en definir un comportamiento a partir de una serie de partes, es ir de las
partes al todo, de algo conocido a lo desconocido, consiste en crear. Es responder a preguntas
sobre ¿Cómo?. Por ejemplo: ¿Cómo se debe desarrollar este proceso para lograr convertir las
entradas en salidas?
Fuente: http://czsistemas.net63.net/index.php?page=algoritmo6 Adaptado por: Ing. Zamantha González
Metodología para la Solución de Problemas Algorítmicos (MAPS)
Ejemplo. Metodología para la Solución de Problemas algorítmicos
Ya estamos en capacidad de dar solución a un problema utilizando una metodología, es este
caso aplicaremos la metodología MAPS desde el principio al fin.
El Dialogo
Deseamos calcular el promedio de las notas de los estudiantes de un curso de Introducción a la
programación. El promedio se va a realizar para cada estudiante individualmente.
Los datos de entrada serán introducidos por el teclado, hasta que se desee finalizar la
introducción de los datos utilizando un valor específico para tal fin.
Después de haber introducido los valores por el teclado se procede a calcular el promedio de la
nota para el estudiante. Terminado este proceso se presenta el promedio de la nota por la
pantalla, permitiendo elegir para ingresar otros datos de entrada para otro estudiante o permitir
salir del sistema.
Las notas de los estudiantes estarán comprendidas entre 1 y 20 puntos, la cantidad de
estudiantes no está limitada, se podrán calcular todos los promedios de notas que se deseen
realizar o hasta salir del sistema.
Tenemos como datos de entrada: las calificaciones de los estudiantes.
Datos de salida: el promedio de las calificaciones.
Las Especificaciones:
Si denotamos por Nota1 la primera calificación, Nota2 la segunda y así sucesivamente. A
continuación se presenta una descripción precisa del problema, en forma de precondiciones y
poscondiciones:
{pre: entrada = (Nota1, Nota2, ..., Nota n) ^ n>0 ^  i = nai = 
{post: entrada = (PM1, PM2, …, PMn) ^ n>0 ^  i = n
salida = Sum i = ain
Llamamos a Sum la suma de las calificaciones, n el número de las calificaciones y PM el
promedia de las calificaciones. Por lo tanto Sum, n y PM son variable del problema.
La forma de presentar la precondición y poscondición es el lenguaje de la lógica de predicados.
Cuando se utiliza la lógica de predicados de esta forma, se dice que realizamos aciertos acerca
de los estados inicial y final del proceso.
En el ejemplo no se deja duda sobre la exclusión del caso en que existan cero entradas en el
problema. Por lo tanto la solución algorítmica de este problema no tiene que ocuparse de este
caso.
Fuente: http://czsistemas.net63.net/index.php?page=algoritmo6 Adaptado por: Ing. Zamantha González
Metodología para la Solución de Problemas Algorítmicos (MAPS)
El haber escrito entrada = Vacío en la poscondición significa que, al final del proceso, la
entrada estará vacía. Es decir que todas las entradas habrán sido leídas por el proceso, pero no
pueden ser leídas de nuevo. Es decir que un valor no puede ser obtenido de nuevo después de
haberse obtenido una vez, y los valores individuales de entrada se obtienen exactamente en el
orden en que se introducen por el teclado.
La Partición
Los pasos de este problema son evidentes, si nos ponemos a pensar en el dialogo y las
especificaciones, podemos definir los siguientes pasos :
paso 1 : Obtener la lista de calificaciones
paso 2 : calcular n = número de notas de la lista
paso 3 : calcular Sum = la suma de las calificaciones de la lista
paso 4 : Calcular prom = Promedio de las notas = Sum / n
paso 5 : Presentar el promedio prom
La forma de presentar el algoritmo es la siguiente:
Fuente: http://czsistemas.net63.net/index.php?page=algoritmo6 Adaptado por: Ing. Zamantha González
Metodología para la Solución de Problemas Algorítmicos (MAPS)
Definición de abstracciones
En esta parte vamos a definir las rutinas. Una rutina es una parte de un algoritmo que puede
reutilizarse en otros contextos de resolución de problemas algorítmicos.
Un algoritmo o parte de él, que parcialmente puede ser reutilizado recibe el nombre de rutina.
Algunas rutinas son comunes y están incluidas en los lenguajes de programación, para
utilizarlas en los programas.
Consideremos la abstracción: Promediodelistas, una rutina que realiza el cálculo del promedio
de los valores de una lista de notas. El procedimiento para definir una rutina es le siguiente.
nombrar la abstracción, asignarle un nombre que identifique claramente el algoritmo que
representa.
Redefinir precondiciones y poscondiciones del problema, de tal manera que la solución pueda
implementarse como una rutina.
Implementar la abstracción como un procedimiento o función. Comprobación de la integridad
de la abstracción: Antes de utilizar una rutina, debemos asegurarnos de que hemos realizado
correctamente el proceso de abstracción. como mínimo, esto requiere reestructurar el
programa original del que hemos partido para realizar la abstracción, y comprobar que el
programa sigue satisfaciendo las especificaciones originales con la abstracción realizada.
El algoritmo de nuestro ejemplo quedaría implementado de la siguiente forma:
Fuente: http://czsistemas.net63.net/index.php?page=algoritmo6 Adaptado por: Ing. Zamantha González
Metodología para la Solución de Problemas Algorítmicos (MAPS)
Definición de la rutina
Codificación.
En pocas palabras la codificación es la traslación de la solución del algoritmo a un programa,
junto con su documentación. En la solución de un problema algorítmico parte del código se
obtiene
durante
las
etapas
de
Partición
y
Abstracción.
Prueba y Verificación. El Objetivo es garantizar lo mas posible que la solución diseñada es
correcta y completa en todos sus extremos. Es decir comprobar que para todas la
precondiciones se producirá un resultado consistente con las poscondiciones.
Presentación. La presentación de un solución completa de un problema, debe incluir, además
del
propio
texto
del
programa,
los
elementos
siguientes:
Una introducción escrita en castellano, identificando los autores, y que describa el problema,
la solución y de un aspecto importante.
Un ejemplo de entradas y las respectivas salidas obtenidas, en una o varias ejecuciones del
programa.
Un resumen de los resultados de verificación y/o prueba del programa, en los casos que sea
adecuada. En pocas palabras, la presentación de la solución a un problema debe hacerse de
forma que un lector interesado sea capaz de comprenderla.
Fuente: http://czsistemas.net63.net/index.php?page=algoritmo6 Adaptado por: Ing. Zamantha González
Descargar