Download PDF Presentation
Document related concepts
no text concepts found
Transcript
Scientific Programming with Python Felipe Zapata Reactivity and Molecular Structure Group of the University of Alcala 9 de marzo, 2011 Contenido ● ¿Porque que programar? ● Introducción a Python ● Características y herramientas en python ● Programación orientada a objetos ● Conclusiones Programación ● ● ● ● Los ordenadores realizan operaciones específicas en tiempo muy cortos. No todas las herramientas necesarias están desarrolladas. La implementación de las metodologías de resolución de problemas no es un paso trivial. Diseñas tus propias herramientas. ¿Que es un programa? ● Secuencia de instrucciones que especifican como llevar a cabo una labor, como por ejemplo resolver una ecuación diferencial o buscar y editar texto en un documento. Input : ingresar datos. Output: desplegar datos Math: realizar operaciones. Conditional: comparación de condiciones. Repetition: operaciones iterativas. Python ● ● ● Lenguaje de alto nivel, con interpetración al vuelo. No más compilación. Fácil de programar, toma menos tiempo escribir un programa y los programas resultantes son más cortos y fáciles de leer. El interpretador funciona de manera interactiva o en modo script. Modos ● ● Modo interactivo. El compilador permite ejecutar directamente en la shell una secuencia de comandos luego de invocar a Python. Modo script Herramientas en Python Modulos: ● Math. Funciones matematicas básicas. ● Numpy. Numerical Python, algebra matricial. ● SciPy. open-source software for math, science, and engineering. ● Otras. Random, OS, etc. ● Mytools. Herramientas que crea el usuario. Variables Nombres prohíbidos Expresiones ● ● ● La prioridad de los operadores es (),**, *, /, +, -. El simbolo # se usa para comentar. Las expresiones inician en la primera columna. Laziness ● ● ● Una manera práctica de programar es repetir la menor cantidad de código, en la medida que sea posible. El programa se debe estructurar de tal forma que en el esquema principal del programa solo aparezcan las operaciones fundamentales. Los detalles de cálculo se deben cargar sobre funciones. Funciones Indentación de 4 espacios!! ● ● Para invocar las funciones se escribe el nombre de la función con sus respectivos parametros. Las variables al interior de la función son variables locales. Condicionales ● Una expresiones booleana es una expresión que al comparar valores arroja verdadero o falso. X == Y es X igual a Y X != Y es X diferente de Y X > Y es X mayor que y X < Y es X menor que Y X >= Y es X mayor o igual que Y X <= Y es X menor o igual que Y Condicionales e iteración While and if En Python toda expresión no vacia tiene por defecto valor true, es decir lo unico falso en python es For Statment La declaración for itera sobre cualquier secuencia de items que pueda ser iterable. Strings ● ● Es una secuencia de caracteres inmutables, que puede ser accesible a través del operador bracket. Existen diversidad de métodos para operar con los strings. Lists ● ● ● Una lista es una secuencia de valores de cualquier tipo: enteros, float, caracteres, otras lista, otro tipo de secuencia. Son la principal herramienta para manejar secuencias de valores. Gran número de métodos que permite su manipulación. List Comprehensions ● List comprehensions. Provee un esquema conciso para generar listas. [expresion for var in range] List, files and strings ¿Como leer un archivo? Dictionary ● ● Un diccionario es como un tipo de lista, pero más general. Existe una relación entre los indices, que pueden ser casi cualquier tipo, denominados keys y los valores a los que llevan estas keys. Element = {1.:'H',6.:'C',7.:'N',8.:'O'} Histogramas Tuples ● ● Una tupla es una secuencia de valores de cualquier tipo, que estan indexados por enteros y son inmutables. Las tuplas son el output de diferentes métodos. NUMPY Objetos ● ● Un objeto es una entidad abstracta que intenta representar un objeto real que tiene una serie de atributos. Existen tres razones principales para usar objetos en programación: Encapsulación. Polimorfismo. Herencia. Encapsulación y herencia ● ● La encapsulación es esconder del flujo general del programa los detalles innecesarios para que el flujo sea comprensible. La herencia es una manera de hacer que las funciones y métodos hereden características funcionales de métodos ya programados. Polimorfismo ● Independiente de la clase a la que pertenezca el objeto es posible realizar operaciones sobre el objeto cuyo resultado dependera del tipo de objeto que se tiene. ¿para que sirven los objetos ? Molecular System Atoms Vel-Verlet1 Xi(t), Vxi(t/2) Transformation qi(t) Force field Vel-Verlet2 Vxi(t) F = - Gx =Bt(Hq(qi-qo)) abstracción Las moléculas están formadas por átomos. Los átomos tienen coordenas espaciales, velocidades, masas y están en un campo de fuerzas. Luego existe un una colección de objetos pertenecientes a la clase átomos, cuyos atributos son mass, velocidad, cordenadas y fuerza. Implementación Verlet1(atomos[i]) ==>Xi(t) + Vxi(t/2) transformation(Xi(t)) ==> qi potential(qi) ==> Force field Verlet2(Force field) == > Vxi(t) Python permite definir funciones y métodos que hacen la implementación transparente Conclusiones ● ● ● Python es un lenguaje de programación interactivo e interpretativo. Python combina una sintaxis clara con una gran poder de manipulación de datos. Los modulos de programación científica facilitan el trabajo enormemente.