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.