FUNDAMENTOS DE PROGRAMACIÓN


¿Qué se entiende como "solución a un problema"?
El concepto de resolución de problemas está vinculado al procedimiento que permite solucionar una complicación. La noción puede referirse a todo el proceso o a su fase final, cuando el problema efectivamente se resuelve.
En su sentido más amplio, la resolución de un problema comienza con la identificación del inconveniente en cuestión. Después de todo, si no se tiene conocimiento sobre la existencia de la contrariedad o no se la logra determinar con precisión, no habrá tampoco necesidad de encontrar una solución. Una vez que el problema se encuentra identificado, se hace necesario establecer una planificación para desarrollar la acción que derive en la resolución.



Solución del problema según Pólya 
George Pólya presentó en su libro Cómo plantear y resolver problemas, un método de 4 pasos para resolver problemas matemáticos.
El modelo de Pólya provee un marco conceptual para resolver problemas. Éste consiste en cuatro pasos:
  1. Comprender el problema: Resume la información dada y que deseas determinar.
  2. Desarrollar un plan: Expresa la relación entre los datos y la incógnita a través de una ecuación o fórmula. Busca patrones.
  3. Llevar a cabo el plan: Resuelve la ecuación, evalúa la fórmula, identifica el término constante del patrón, según sea el caso.
  4. Revisar: Examina la solución que obtuviste. Pregúntate si la respuesta tiene sentido.

Dicho método fue adaptado para resolver problemas de programación, por Simon Thompson en How to program it. Para resolver un problema se necesita:
  1. Comprender el problema. ¿Cuáles son las argumentos? ¿Cuál es el resultado? ¿Cuál es nombre de la función? ¿Cuál es su tipo? ¿Cuál es la especificación del problema? ¿Puede satisfacerse la especificación? ¿Es insuficiente? ¿Redundante? ¿Contradictoria? ¿Qué restricciones se suponen sobre los argumentos y el resultado? ¿Puedes descomponer el problema en partes? Puede ser útil dibujar diagramas con ejemplos de argumentos y resultados?                                                                                        
  2. Desarrollar el programa. ¿Te has encontrado con un problema semejante? ¿O has visto el mismo problema planteado en forma ligeramente diferente? ¿Conoces algún problema relacionado con éste? He aquí un problema relacionado al tuyo y que ya has resuelto. ¿Puedes utilizarlo? ¿Puedes utilizar su resultado? ¿Puedes emplear su método? ¿Te hace falta introducir alguna función auxiliar a fin de poder utilizarlo?             
  3. Escribir el programa. Al escribir el programa, comprueba cada uno de los pasos y funciones auxiliares. ¿Puedes ver claramente que cada paso o función auxiliar es correcta? Puedes escribir el programa en etapas. Piensas en los diferentes casos en los que se divide el problema; en particular, piensas en los diferentes casos para los datos. Puedes pensar en el cálculo de los casos independientemente y unirlos para obtener el resultado final.                                                                                                    
  4. Examinar la solución obtenida. ¿Puedes comprobar el funcionamiento del programa sobre una colección de argumentos? ¿Puedes comprobar propiedades del programa? ¿Puedes escribir el programa en una forma diferente? ¿Puedes emplear el programa o el método en algún otro programa? 


  • Solución de un problema expresado como algoritmo

El primer paso para encontrar la solución a un problema es el análisis del mismo. Se debe examinar cuidadosamente el problema a fin de obtener una idea clara sobre lo que se solicita y determinar los datos necesarios para
conseguirlo.
Diseño
Un algoritmo puede ser definido como la secuencia ordenada de pasos, sin ambigüedades, que conducen a la resolución de un problema dado y expresado en lenguaje natural, para realizar un diseño se debe tomar en cuenta los siguientes pasos:
  • Preciso: Indicando el orden de realización de cada uno de los
    pasos.
  • Definido: Si se sigue el algoritmo varias veces
    proporcionándole
    ( consistente ) los mismos datos, se deben obtener siempre los
    mismos resultados.
  • Finito: Al seguir el algoritmo, este debe terminar en algún
    momento, es decir tener un número finito de pasos.
Codificación
Una vez que el algoritmo está diseñado, representado mediante un pseudocódigo y verificado se debe pasar a la fase de codificación o traducción del algoritmo a un determinado lenguaje de programación, que deberá ser completada con la ejecución y comprobación del programa en el ordenador.

Depuración
Después de codificar el programa, generalmente quedan
pequeños detalles a corregir, por lo tanto, el siguiente paso
es la depuración del programa. Depurar es pulir el programa para que todo funcione como nosotros deseamos. Para esto, es necesario probar el programa cuantas veces sea necesario, para asegurarnos de que funcione correctamente.

Compilación
Consiste en que el compilador traducirá el código fuente a código máquina, también llamado código objeto, siempre y cuando, el propio compilador no detecte ningún error en dicho código fuente.

Mantenimiento
Este es el último paso del ciclo de vida de un programa. Se
realiza después de que el programa ya ha tenido vida útil
y debido a las nuevas necesidades de los usuarios, es
necesario hacer modificaciones al programa.
Cuando estos cambios son demasiados, se debe elaborar
un nuevo programa.
En un algoritmo se deben de considerar tres partes:
  • Entrada: Información dada al algoritmo.
  • Proceso: Operaciones o cálculos necesarios para encontrar la
    solución del problema.
  • Salida: Respuestas dadas por el algoritmo o resultados
    finales de los procesos realizados.

  • ¿Qué es un algoritmo?                                                
Un algoritmo puede ser definido como la secuencia ordenada de pasos, sin ambigüedades, que conducen a la resolución de un problema dado y expresado en lenguaje natural.
  • Ejemplos de algoritmos graciosos:




¿Cómo se puede  encontrar la solución a un problema?
Los consultores Brian Tracy (Autoridad en Estados Unidos, en lo relacionado con el desarrollo del potencial humano y la efectividad personal) y Colin Rose (es uno de los principales expertos del mundo en técnicas del aprendizaje acelerado), generaron diez pasos para pensar sistemáticamente en la resolución de problemas. Estos son:


1.    Cambiar el lenguaje negativo a positivo. En vez de usar la palabra "problema," utilice la palabra "situación," o llámela un desafío o una oportunidad.
2.    Definir la situación o dificultad claramente. Escribir  todos los detalles. 
3.    Preguntar, ¿Qué otra cosa es el problema? Buscar la causa principal y enfocarlo en diferentes perspectivas. 
4.     Preguntar: ¿Cuáles son las limitaciones? ¿Qué condiciones debe cumplir la solución? ¿Qué componentes debe tener la solución? ¿Qué aspecto debería tener la solución ideal a este problema? Definir medidas.
5.    Comparar  varias soluciones posibles y escoger la mejor. Para esto responda la pregunta ¿Cuál es lo mejor que se puede hacer en estas circunstancias? 
6.    Antes de poner en marcha una decisión, preguntar: ¿qué es lo peor que puede suceder si esta solución no funciona? Antes de hacer gastos o esfuerzos tratando de alcanzar las metas, se debe evaluar qué sucedería si la solución falla.
7.    Establecer indicadores de la toma de decisiones, preguntando ¿cómo se sabrá si hay progresos?  ¿cómo se mide el éxito?  Esto quiere decir que la solución se medirá por los objetivos o logros alcanzados.
8.    Aceptar la responsabilidad al poner en marcha una decisión.
9.    Fijar un plazo para ejecutar las decisiones y evaluarlas.
10.  Ejecutar la acción.

Referencias:







Comentarios