21 agosto 2016

Algoritmos y Programación - Python [0]

Problemas no computables [1]
Son aquellos problemas que nunca podrán ser resueltos por una computadora por más poderosa que sea.

Problemas intratables [2]
Son aquellos problemas que pueden ser resueltos pero que requieren de un enorme poder de computo y memoria.

Algoritmo
Es cualquier metodo para obtener un resultado. [3]

Construcción de Programas

1. Analizar el problema
    Entender profundamente cual es el problema y dejarlo por escrito.

2. Especificar la solución
    Describir qué debe hacer el programa, especificar datos de entrada, de salida y la relación entre ellos.

3. Diseñar la solución
    Cómo vamos a resolver el problema, cuales son los algortimos y las estructuras de datos que usaremos.

4. Implementar el diseño
    Traducir en un lenguaje de programación el diseño.

5. Probar el programa.
    Diseñar un conjunto de pruebas para probar cada una de sus partes.

6. Mantener el programa
    Realizar los cambios en respuesta a nuevas demandas.

Todos estos pasos deben ser documentados.

[4] Guia para diseño

    ¿Han visto este problema antes, aunque sea de manera ligeramente diferente?
    ¿Conocen un problema relacionado? ¿Conocen un programa que puede ser útil?
    Fijense en la especificación. Traten de encontrar un problema que les resulte familiar y que tenga la misma especificación o una parecido.
    Acá hay un problema relacionado con el que ustedes tienen y que ya fue resuelto. ¿Lo pueden usar? ¿Puede usar sus resultados? ¿Pueden usar sus métodos? ¿Pueden agregarle alguna parte auxiliar a ese programa del que ya disponen?
    Si no pueden resolver el propuesto, traten de resolver uno relacionado. ¿Pueden imaginarse uno relacionado que sea más fácil de resolver? ¿Uno más general? ¿Uno más especifico? ¿Un problema analogo?
    ¿Pueden resolver una parte del problema? ¿Pueden sacar algo útil de los datos de entrada? ¿Pueden pensar que információn es útil para calcular las salidas? ¿De qué manera se pueden manipular las entradas y las salidas de modo tal que estén "más cerca" unas de las otras?
    ¿Usaron todos los datos de entrada? ¿Usaron las condiciones especiales sobre los datos de entrada que aparecen en el enunciado? ¿Han tenido en cuenta todos los requisitos que se enuncian en la especificación?

Las funciones

Una función es un conjunto de instrucciones que llevan a cabo la solución de una parte particular del problema. Las funciones llevan ninguno, uno o más argumentos que son la parte variable que se debe definir en cada ejecución de la función. Es recomentable documentar las funciones ya que con el crecimiento del programa crece su complejidad y tener las funciones documentadas ayudar a la mantenibilidad.

Las variables y parametros que se declaran dentro de una función no existen fuera de ella. Por consiguiente en lenguajes como python de utiliza "return" para decirle a una función que el valor debe ser retornado al hilo principal para que el programa pueda utilzar esa salida para hacer otras tareas.

[0] Algoritmos y Programación - Python
[1][2][3] Algoritmos y Programación - Python  Pagina 9
[4] Algoritmos y Programación - Python  Pagina 28
[5] http://www.cs.kent.ac.uk/people/staff/sjt/Haskell_craft/HowToProgIt.html
[6] Algoritmos y Programación - Python  Pagina 30

Tomado de: http://blog.deploshark.com.ar/2015/02/algoritmos-y-programacion-python-0.html
Donde hay mucho mas material disponible, no dejen de visitarlo