Programación: Pasos para la solución de problemas

Introducción

La programación es una habilidad esencial en la era digital, y solucionar problemas es una parte fundamental del proceso de programación. En este artículo, se presentarán los pasos necesarios para abordar y resolver problemas de manera efectiva y eficiente. La metodología presentada aquí es aplicable a una amplia gama de problemas y se puede utilizar tanto por programadores experimentados como por aquellos que están comenzando su carrera en la programación.

Desarrollo del tema

El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución en la misma. Aunque el proceso de diseñar programas es esencialmente un proceso creativo, se pueden considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los programadores. Las siguientes son las etapas que se deben cumplir para resolver con éxito un problema de programación:

Definición del problema

Se encuentra dada por el enunciado del problema, el cuál debe ser claro y completo. Es importante que conozcamos exactamente que se desea del computador; mientras qué esto no se comprenda, no tiene caso pasar a la siguiente etapa.

Análisis del problema

Entendido el problema (que se desea obtener del computador), para resolverlo es preciso analizar:

  • Los datos o resultados que se esperan
  • Los datos de entrada que nos suministran
  • El proceso al que se requiere someter esos datos a fin de obtener los resultados esperados
  • Áreas de trabajo, fórmulas y otros recursos necesarios

Una recomendación muy práctica es el que nos pongamos en el lugar del computador, y analizar que es necesario que me ordenen y en que secuencia, para poder producir los resultados esperados. También da buenos resultados hacer similitudes con la labor de un empleado que hace el mismo trabajo que deseamos programarle al computador.

Selección de la mejor alternativa

Analizado el problema, posiblemente tengamos varias formas de resolverlo; lo importante es determinar cuál es la mejor alternativa: la que produce los resultados esperados en el menor tiempo y al menor costo. Claro que aquí también es muy válido el principio de que las cosas siempre se podrán hacer de una mejor forma.

Diagramación

Una vez que sabemos cómo resolver el problema, pasamos a dibujar gráficamente la lógica de la alternativa seleccionada. Eso es precisamente un Diagrama de Flujo: la representación gráfica de una secuencia lógica de pasos a cumplir por el computador para producir un resultado esperado.

La experiencia nos ha demostrado que resulta muy útil trasladar esos pasos lógicos planteados en el diagrama a frases que indiquen lo mismo; es decir, hacer una codificación del programa pero utilizando instrucciones en Español. Como si le estuviéramos hablando al computador. Esto es lo que denominaremos Algoritmo o Pseudocódigo.

Cuando logremos habilidad para desarrollar programas, es posible que no elaboremos el diagrama de flujo; en su lugar podremos hacer directamente el pseudocódigo del programa.

Prueba de escritorio

Para cerciorarnos de que el diagrama (y/o el pseudocódigo) esta bien, y, para garantizar que el programa que codifiquemos luego también funcione correctamente, es conveniente someterlo a una Prueba de Escritorio. Esta prueba consiste en que damos diferentes datos de entrada al programa y seguimos la secuencia indicada en el diagrama, hasta obtener los resultados.

El análisis de estos nos indicará si el diagrama esta correcto o si hay necesidad de hacer ajustes (volver al paso 4). Se recomienda dar diferentes datos de entrada y considerar todos los posibles casos, aun los de excepción o no esperados, para asegurarnos de que el programa no producirá errores en ejecución cuando se presenten estos casos.

Codificación

Una vez que hayamos verificado el diagrama mediante las pruebas de escritorio, codificamos el programa en el lenguaje de computador seleccionado. Esto es, colocamos cada paso del diagrama en una instrucción o sentencia, utilizando un lenguaje que el computador reconoce.

Todos los lenguajes de programación proveen facilidades para incluir líneas de comentarios en los programas. Estos comentarios aclaran lo que se ordena al computador y facilitan entender el programa. Puesto que estos comentarios no son tenidos en cuenta como instrucciones, y aparecen en los listados del programa, resulta muy conveniente agregar abundantes comentarios a todo programa que codifiquemos. Esto es lo que se denomina documentación interna.

Transcripción

El programa codificado es necesario que lo llevemos a un medio que sea aceptado como entrada por el computador: lo perforamos en tarjetas, lo grabamos en un disco flexíble o lo grabamos en un disco duro. Este programa es el que se conoce como Programa Fuente (Source).

Compilación

Utilizamos ahora un programa de computador llamado Compilador o Traductor, el cúal analiza todo el programa fuente y detecta errores de sintaxis ocasionados por fallas en la codificación o en la transcripción. Las fallas de lógica que pueda tener nuestro programa fuente no son detectadas por el compilador. Cuando no hay errores graves en la compilación, el compilador traduce cada instrucción del programa fuente a instrucciones propias de la máquina (Lenguaje de Maquina), creando el Programa Objeto.

Algunos computadores utilizan Interpretadores, (Generalmente para el Lenguaje Basic), en reemplazo de programas compiladores. La diferencia consiste en que el interpretador recibe, desde una terminal, sólo una instrucción a la vez, la analiza y, si esta bien, la convierte al formato propio de la maquina. Si la instrucción tiene algún error, el interpretador llama la atención de la persona para que corrija dicha instrucción.

Como resultado de la corrida del compilador, podemos obtener varios listados:

  • Listado del programa fuente
  • Listado de los errores detectados
  • Listado de campos utilizados, etc.

Los errores los debemos corregir sobre el mismo programa fuente, ya sea reemplazando las tarjetas mal perforadas o regrabando en el disco flexible o en el disco duro. Este paso de la compilación lo repetimos hasta eliminar todos los errores y obtener el programa ejecutable.

Pruebas de computador

Cuando tenemos el programa ejecutable (en lenguaje de maquina), ordenamos al computador que lo ejecute, para lo cuál suministramos datos de prueba, como lo hicimos en la prueba de escritorio (paso 5). Los resultados obtenidos los analizamos, luego de lo cuál puede ocurrir cualquiera de estas situaciones:

  • La lógica del programa esta bien, pero hay errores sencillos, los cuales los corregimos modificando algunas instrucciones o incluyendo unas nuevas; el proceso debemos repetirlo desde el paso 6 .
  • Hay errores ocasionados por fallas en la lógica, lo que nos obliga a regresar a los pasos 4 y 5 para revisión y modificación del diagrama.
  • Hay errores muy graves y lo más aconsejable es que regresemos al paso 2 para analizar nuevamente el problema, y repetir todo el proceso.
  • No hay errores y los resultados son los esperados. En este caso, el programa lo podemos guardar permanentemente en una librería o biblioteca del computador, para sacarlo de allí cuando necesitemos ejecutarlo nuevamente.

Documentación externa

Cuando el programa ya se tiene listo para ejecutar, es conveniente que hagamos su documentación externa siguiendo las normas de la instalación o las recomendaciones indicadas por el profesor. Una buena documentación incluye siempre:

  • Enunciado del problema
  • Diagrama de pasada
  • Narrativo con la descripción de la solución
  • Relación de las variables o campos utilizados en el programa, cada uno con su respectiva función
  • Diagrama del programa
  • Listado de la última compilación
  • Resultados de la ejecución del programa

Conclusión

En resumen, solucionar problemas en programación requiere un enfoque sistemático y una comprensión clara de los pasos necesarios para abordar el problema. Al seguir los pasos descritos en este artículo, los programadores pueden mejorar su capacidad para resolver problemas de manera efectiva y eficiente. Además, al practicar esta metodología de forma regular, los programadores pueden desarrollar su capacidad para resolver problemas y mejorar su habilidad general en la programación.