Fundamentos de programación

¿ Qué se entiende como solución a un problema?

Resolución es el acto y el resultado de resolver. Este verbo puede referirse a encontrar una solución para algo o a determinar alguna cuestión. Un problema, por otra parte, es una dificultad, un contratiempo o un inconveniente.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  a su fase final, cuando el problema efectivamente se resuelve.
Resultado de imagen para solucion de problemasEn el ámbito de la informática, la resolución de problemas es uno de los pilares fundamentales sobre los cuales se sostiene el desarrollo de programas y dispositivos, ya que cada paso hacia adelante a nivel tecnológico acarrea nuevos obstáculos, así como nuevos interrogantes y la necesidad de hallar soluciones innovadoras para seguir avanzando.La resolución de problemas en la programación informática, por ejemplo, exige el trabajo de un mínimo de dos departamentos: el de testing (también denominado de testeo) y el de debugging (el término, de origen inglés, hace alusión a “eliminar los bugs“, o sea, los errores). El primero se encarga de probar la versión más reciente de un programa para hallar todo tipo de errores y comportamientos anómalos, los cuales reporta al segundo, y esto da lugar a la búsqueda de potenciales soluciones.

Resultado de imagen para solucion de problemasSolución de problemas según Polya

George Pólya presentó en su libro Cómo plantear y resolver problemas (en inglés, How to solve it) un método de 4 pasos para resolver problemas matemáticos. Dicho método fue adaptado para resolver problemas de programación, por Simon Thompson en How to program it.

Paso 1: Entender 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.

Paso 2: Diseñar 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? ¿Conoces alguna función que te pueda ser útil? Mira atentamente el tipo y trata de recordar un problema que sea familiar y que tenga el mismo tipo o un tipo similar.
  • ¿Conoces algún problema familiar con una especificación similar?
  • 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?
  • Si no puedes resolver el problema propuesto, trata de resolver primero algún problema similar. ¿Puedes imaginarte un problema análogo un tanto más accesible? ¿Un problema más general? ¿Un problema más particular? ¿Un problema análogo?
  • ¿Puede resolver una parte del problema? ¿Puedes deducir algún elemento útil de los datos? ¿Puedes pensar en algunos otros datos apropiados para determinar la incógnita? ¿Puedes cambiar la incógnita? ¿Puedes cambiar la incógnita o los datos, o ambos si es necesario, de tal forma que estén más cercanos entre sí?
  • ¿Has empleado todos los datos? ¿Has empleado todas las restricciones sobre los datos? ¿Has considerado todas los requisitos de la especificación?

Paso 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
  • Puedes pensar en la solución del problema descomponiéndolo en problemas con datos más simples y uniendo las soluciones parciales para obtener la solución del problema; esto es, por recursión.
  • En su diseño se puede usar problemas más generales o más particulares. Escribe las soluciones de estos problemas; ellas puede servir como guía para la solución del problema original, o se pueden usar en su solución.
  • ¿Puedes apoyarte en otros problemas que has resuelto? ¿Pueden usarse? ¿Pueden modificarse? ¿Pueden guiar la solución del problema original?

Paso 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 problemas con algoritmos

¿Qué es un problema? Un problema se puede definir como una situación en la cual se trata de alcanzar una meta y para lograrlo se deben hallar y utilizar medios y estrategias.

¿Qué es un algoritmo? Un algoritmo es un método para resolver problemas que consiste en dividir el mismo en un numero finito de pasos elementales e indicar claramente el orden de ejecución de los mismos.
Resultado de imagen para algoritmos

Etapas de la solución de problemas con algoritmos


  • El análisis consiste en una clara definición del problema, donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. Dado que se busca una solución por computadora, se precisan especificaciones detalladas de entradas y salidas. Para resolver un problema con un ordenador hay que disponer de los datos de entrada, estudiar el tratamiento que se ha de realizar a dichos datos, la información que se desea obtener como resultado y de que manera debe presentarse.
  • Después de analizar el problema, se han de conocer claramente tres cosas. Datos de Entrada de que se dispone Proceso o Tratamiento que ha de realizarse con estos datos. Información de salida deseada. Una de las técnicas mas empleadas recibe el nombre de H.I.P.O. (Hierarchy the plus input process output) que consiste en esquematizar cada programa.
  • Sin entrar en el campo de la informática, para hacer la nomina de los mejores alumnos de una carrera, se necesita saber: ENTRADA: Los datos de cada uno de los alumnos y si estos datos están en papel o en un fichero donde está toda la información de los alumnos. PROCESO: La fórmula matemática para calcular el promedio de notas es: (nota 1 + nota 2 + nota 3 + .....+ nota n) / cantidad de notas SALIDA: El modelo del informe donde se desean imprimir el promedio de los alumnos.
  • Teniendo en cuenta que un algoritmo es un método para resolver problemas, una vez analizado el mismo se precisa diseñar un algoritmo que indique claramente los pasos a seguir para resolverlo. Para realizar un determinado proceso, se le debe suministrar al ordenador una fórmula para la resolución de un problema (algoritmo), cuyo diseño debe ser independiente de la computadora que resuelve el problema. Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el diseño del algoritmo. En esta etapa se realizará una representación de la secuencia. Estas representaciones son las herramientas de: diagramas de flujo, pseudocódigos y/o tablas de decisión.
  • Una vez que el diagrama de flujo o el algoritmo de resolución del problema está definido se pasa a la fase de codificación  del programa en cualquier lenguaje (C, basic, cobol, pascal, etc.) cuyo resultado será el programa fuente, el cual sigue las reglas de sintaxis que el lenguaje escogido exija. Después de codificado el programa, se introduce en el ordenador mediante unos programas especiales llamados editores. Una vez dentro del ordenador, el programa deber ser traducido al único lenguaje que éste entiende: Lenguaje de máquina. Dicha operación se realiza mediante el correspondiente programa traductor o compilador del lenguaje en el que está escrito el programa.

¿Qué es un algoritmo?

En el contexto matemático, los algoritmos son una serie de normas o leyes específicas que hace posible la ejecución de actividades, cumpliendo una serie de pasos continuos que no le originen dudas a la persona que realice dicha actividad. Los algoritmos se pueden expresar de diversas formas: lenguaje natural, lenguaje de programación, pseudocódigo y diagramas de flujo.Los algoritmos se caracterizan porque: se definen de manera específica en cada paso. Su efectividad, esto significa que un sujeto puede realizar un algoritmo sin utilizar un ordenador y sus pasos son finitos.
Imagen relacionada
Los algoritmos computacionales, estos se realizan mediante la utilización de un computador. Y los no computacionales que son aquellos que no requieren de un ordenador. Por ejemplo cuando se instala un equipo de vídeo.Es importante resaltar la importancia de los algoritmos ya que representa un elemento básico para las matemáticas, la informática, la robótica, ya que a través de ellos se logra un ordenamiento de ideas. Ellos conducen a la correcta ejecución de actividades y a un orden de ideas, relacionadas con cualquier aspecto.

Algoritmos graciosos

Resultado de imagen para algoritmos graciososResultado de imagen para algoritmos graciosos

Resultado de imagen para algoritmos graciososResultado de imagen para algoritmos graciosos


¿ Cómo se puede comprobar la solución a un problema?


Para comprobar una solución es sustituir una solución nuevamente dentro de la ecuación o de la desigualdad original para ver si es una solución válida. El más de uso común de comprobar una solución es verificar que la matemáticas usada para subir con la solución está correcta. Además, a veces dos soluciones serán producidas para un problema, pero solamente uno será válido. Para descubrir que de las soluciones es válido, él se substituye nuevamente dentro de la ecuación original.

Hay tres pasos a comprobar una solución:
Resultado de imagen para comprobar solucion de problemas
  • Substituya la solución en la ecuación o la desigualdad original.
  • Simplifique la ecuación o la desigualdad.
  • Verifique que la ecuación o la desigualdad simplificada sea todavía verdad.


Comentarios