De los problemas a los programas
                           Modelo Formal
                                Algoritmos
               Lenguajes de Programación




            Curso de Nivelación de Algoritmos
                                        Clase 1


                              Lic. Ernesto Mislej
                             emislej@gmail.com

Maestría y Carrera de Especialización en Explotación de Datos y Descubrimiento
                                de Conocimiento

                             12 de marzo de 2012




                        Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                      Modelo Formal
                           Algoritmos
          Lenguajes de Programación




Computer science is no more about computers than

astronomy is about telescopes.




                                                               E. W. Dijkstra




                   Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                            Modelo Formal
                                 Algoritmos
                Lenguajes de Programación




De los problemas a los programas


      Escribir un programa de computadoras comprende varios
      pasos:
           Formulación y especicación del problema.
           Diseño de la solución.
           Implantación.
           Prueba.
           Documentación.
           Evaluación de la solución.
      La mitad del trabajo es saber qué problema se va a resolver.




                         Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                            Modelo Formal
                                 Algoritmos
                Lenguajes de Programación




De los problemas a los programas


      Al abordar los problemas, por lo general, éstos no tienen una
      especicación simple y precisa.
      Una buena estrategia es expresar ciertos aspectos de un
      problema con un modelo formal recurriendo a casi cualquier
      rama de las matemáticas y de las ciencias.
      Y así aprovechar todo lo que se sabe del modelo.




                         Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                              Modelo Formal
                                   Algoritmos
                  Lenguajes de Programación




Modelo Formal




  Ejemplo
  Elegir dónde ubicarse al subir a un colectivo lleno.




                           Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                             Modelo Formal
                                  Algoritmos
                 Lenguajes de Programación




Modelo Formal




  Ejemplo
  Elegir 2 equipos de fútbol parejos, para jugar un picado.




                          Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                             Modelo Formal
                                  Algoritmos
                 Lenguajes de Programación




Modelo Formal




  Ejemplo
  Llegar a Ciudad Universitaria desde el centro.




                          Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                             Modelo Formal
                                  Algoritmos
                 Lenguajes de Programación




Modelo Formal




  Ejemplo
  Ir al supermercado con una lista de productos.




                          Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                             Modelo Formal
                                  Algoritmos
                 Lenguajes de Programación




Modelo Formal




  Ejemplo
  Armar las mesas para un casamiento.




                          Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                              Modelo Formal
                                   Algoritmos
                  Lenguajes de Programación




Algoritmos


      Cuando se tiene el modelo adecuado al problema se puede
      buscar una solución en función de ese modelo.
      El objetivo inicial consiste en hallar una solución en forma de
      algoritmo.
      Un algoritmo es una secuencia nita de instrucciones, de
      signicado preciso y puede ejecutarse con una cantidad nita
      de esfuerzo.




                           Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                              Modelo Formal
                                   Algoritmos
                  Lenguajes de Programación




Algoritmos



   Ejemplo
   Armar una red tendido de TV por Cable.
   Unir todas las casas usando la mínima cantidad de cable.




                           Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                                   Modelo Formal
                                        Algoritmos
                       Lenguajes de Programación




Algoritmos

 Kruskal (AGN):
   1. Sea T un conjunto vacío.
   2. Sea E el conjunto de ejes.
   3. Extraer e el eje más pequeño de E .
   4. Si T ∪ {e } tiene un ciclo, descartar e ;
      sino agregar e a T .
   5. Si T no une a todos los nodos, ir a 3.
   6. Devolver T .


    http://www-b2.is.tokushima-u.ac.jp/ ikeda/suuri/kruskal/KruskalApp.shtml?demo1


                                Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                              Modelo Formal
                                   Algoritmos
                  Lenguajes de Programación




Algoritmos


      Los algoritmos pueden estar expresados en lenguaje natural,
      como el español, en un lenguaje de programación o incluso por
      diseño de hardware.
      El único requisito es que la especicación debe proveer una
      descripción precisa de los pasos a seguir dentro del
      procedimiento.




                           Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                            Modelo Formal
                                 Algoritmos
                Lenguajes de Programación




Los lenguajes de Programación


      ¾Qué lenguajes de programación conocen?
      Nosotros vamos a usar Python:

                             http://www.python.org
      Cada lenguaje tiene una sintaxis y una semántica en particular,
      es decir, el conjunto de instrucciones que admite como válidas
      y la manera particular de utilizarlas.




                         Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos
De los problemas a los programas
                            Modelo Formal
                                 Algoritmos
                Lenguajes de Programación




Los lenguajes de Programación


      A su vez cada lenguaje de programación denota un paradigma
      de programación.
      Existen lenguajes que son declarativos como el SQL y
      lenguajes que son imperativos (existen aún más distinciones).
      Nosotros vamos por el modelo imperativo.


      Veamos el entorno interactivo Python.




                         Lic. Ernesto Mislej   Curso de Nivelación de Algoritmos

Curso de Nivelación de Algoritmos - Clase 1

  • 1.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Curso de Nivelación de Algoritmos Clase 1 Lic. Ernesto Mislej emislej@gmail.com Maestría y Carrera de Especialización en Explotación de Datos y Descubrimiento de Conocimiento 12 de marzo de 2012 Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 2.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Computer science is no more about computers than astronomy is about telescopes. E. W. Dijkstra Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 3.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación De los problemas a los programas Escribir un programa de computadoras comprende varios pasos: Formulación y especicación del problema. Diseño de la solución. Implantación. Prueba. Documentación. Evaluación de la solución. La mitad del trabajo es saber qué problema se va a resolver. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 4.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación De los problemas a los programas Al abordar los problemas, por lo general, éstos no tienen una especicación simple y precisa. Una buena estrategia es expresar ciertos aspectos de un problema con un modelo formal recurriendo a casi cualquier rama de las matemáticas y de las ciencias. Y así aprovechar todo lo que se sabe del modelo. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 5.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Modelo Formal Ejemplo Elegir dónde ubicarse al subir a un colectivo lleno. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 6.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Modelo Formal Ejemplo Elegir 2 equipos de fútbol parejos, para jugar un picado. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 7.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Modelo Formal Ejemplo Llegar a Ciudad Universitaria desde el centro. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 8.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Modelo Formal Ejemplo Ir al supermercado con una lista de productos. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 9.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Modelo Formal Ejemplo Armar las mesas para un casamiento. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 10.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Algoritmos Cuando se tiene el modelo adecuado al problema se puede buscar una solución en función de ese modelo. El objetivo inicial consiste en hallar una solución en forma de algoritmo. Un algoritmo es una secuencia nita de instrucciones, de signicado preciso y puede ejecutarse con una cantidad nita de esfuerzo. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 11.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Algoritmos Ejemplo Armar una red tendido de TV por Cable. Unir todas las casas usando la mínima cantidad de cable. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 12.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Algoritmos Kruskal (AGN): 1. Sea T un conjunto vacío. 2. Sea E el conjunto de ejes. 3. Extraer e el eje más pequeño de E . 4. Si T ∪ {e } tiene un ciclo, descartar e ; sino agregar e a T . 5. Si T no une a todos los nodos, ir a 3. 6. Devolver T . http://www-b2.is.tokushima-u.ac.jp/ ikeda/suuri/kruskal/KruskalApp.shtml?demo1 Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 13.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Algoritmos Los algoritmos pueden estar expresados en lenguaje natural, como el español, en un lenguaje de programación o incluso por diseño de hardware. El único requisito es que la especicación debe proveer una descripción precisa de los pasos a seguir dentro del procedimiento. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 14.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Los lenguajes de Programación ¾Qué lenguajes de programación conocen? Nosotros vamos a usar Python: http://www.python.org Cada lenguaje tiene una sintaxis y una semántica en particular, es decir, el conjunto de instrucciones que admite como válidas y la manera particular de utilizarlas. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
  • 15.
    De los problemasa los programas Modelo Formal Algoritmos Lenguajes de Programación Los lenguajes de Programación A su vez cada lenguaje de programación denota un paradigma de programación. Existen lenguajes que son declarativos como el SQL y lenguajes que son imperativos (existen aún más distinciones). Nosotros vamos por el modelo imperativo. Veamos el entorno interactivo Python. Lic. Ernesto Mislej Curso de Nivelación de Algoritmos