SOLUCIÓN DE PROBLEMAS


PROGRAMACIÓN ESTRUCTURADA

La programación estructurada es una teoría de programación que consiste en construir programas de fácil comprensión.

Es especialmente útil, cuando se necesitan realizar correcciones o modificaciones después de haber concluido un programa o aplicación. Al haberse utilizado la programación estructurada, es mucho más sencillo entender la codificación del programa, que se habrá hecho en diferentes secciones.
         
Se basa en una metodología de desarrollo de programas llamada refinamiento sucesivos: Se plantea una operación como un todo y se divide en segmentos más sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la programación estructurada, esta integración debe ser sencilla y no presentar problemas al integrar la misma, y de presentar algún problema, será rápidamente detectable para su corrección.
         
La representación grafica de la programación estructurada se realiza a través de diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas.
         
La programación estructurada propone segregar los procesos en estructuras lo más simple posibles, las cuales se conocen como secuencia, selección e interacción. Ellas están disponibles en todos los lenguajes modernos de programación imperativa en forma de sentencias. Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de fácil entendimiento.
PROGRAMACIÓN DE ALGORITMOS
La programación de algoritmos no es más que el estudio de un problema, su análisis e implementación final del mismo.
En la programación de los algoritmos encontramos tres fases fundamentales, las cuales son: identificación del problema, análisis y desarrollo del problema e implementación.

En la programación de algoritmos la identificación del problema no es más que, que es lo que se quiere hacer, para ello en esta etapa, encontramos información de entrada o inicial, que servirá para el análisis del problema.
La segunda etapa o fase es analizar el problema, en esta etapa es conveniente dividir o segregar las tareas necesarias e identificadas que ayudaran a la solución del problema dado. De esta forma se simplificaran y serán más comprensibles para su desarrollo, es recomendable siempre ir de las tareas o actividades más simples a las más complejas. En esta fase se transforma la información de entrada recibida.
La tercera etapa en la programación de algoritmos, consiste en la implantación y puesta en desarrollo del mismo, aquí se obtiene la información y resultado final resultante de las etapas anteriores.

En la programación de algoritmos, se utiliza una nomenclatura llamada pseudocódigo, una vez realizados los algoritmos en pseudocódigo, estos pueden ser traducidos en cualquier lenguaje de programación.

¿QUÉ ES UN PROBLEMA?

Se tiene un problema cuando se desea encontrar uno o varios objetos desconocidos (ya sean estos números, diagramas, figuras, demostraciones, decisiones, posiciones, algoritmos, u otras cosas), que cumplen condiciones y/o relaciones, previamente definidas, respecto a uno o varios objetos conocidos. De esta manera, solucionar un problema es encontrar los objetos desconocidos de dicho problema.

¿QUÉ ES UN ALGORITMO?
Podemos encontrar muchas definiciones completas o formales de algoritmo en los textos de algorítmica y programación, todas ellas muy similares:
  • Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones de un ordenador debe realizar para llevar a cabo un tarea en un tiempo mas finito. [Donald E. Knuth, 1968]
  • Descripción de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomina léxico [Pierre Scholl, 1988]
  • Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. [Rodolfo Quispe-Otazu, 2004]
Características:
Las características fundamentales que debe cumplir todo algoritmo son:
  • Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación.
  • Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos.
  • Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.
  • Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.
  • Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución.

EJEMPLOS BÁSICOS DE UN ALGORITMO
Problema: ¿Cómo freír un huevo?
  1. Pon el sartén en la estufa
  2. Poner aceite al sartén 
  3. Abre la llave del gas
  4. Agarrar el huevo
  5. Partirlo a la mitad
  6. Colocarlo dentro del sarten con aceite
  7. esperar unos minutos y listo!!

Problema: Cambiar la rueda pinchada de un automóvil teniendo un gato mecánico en buen estado, una rueda de reemplazo y una llave inglesa.


  1. Aflojar los tornillos de la rueda pinchada con la llave inglesa.
  2. Ubicar el gato mecánico en su sitio.
  3. Levantar el gato hasta que la rueda pinchada pueda girar libremente.
  4. Quitar los tornillos y la rueda pinchada.
  5. Poner rueda de repuesto y los tornillos.
  6. Bajar el gato hasta que se pueda liberar.
  7. Sacar el gato de su sitio.
  8. Apretar los tornillos con la llave inglesa y listo! 

Problema: Suma de dos números.



PRUEBAS DE ESCRITORIO.

La prueba de escritorio es una herramienta útil para entender que hace un determinado algoritmo, o para verificar que un algoritmo cumple con la especificación sin necesidad de ejecutarlo.

Básicamente, una prueba de escritorio es una ejecución ‘a mano’ del algoritmo, por lo tanto se debe llevar registro de los valores que va tomando cada una de las variables involucradas en el mismo.


Ejemplo:



**Información obtenida de http://es.wikipedia.org/wiki/Algoritmo y http://es.wikibooks.org/wiki/Fundamentos_de_programaci%C3%B3n/Algoritmos_y_programas