Upload
phungthuan
View
220
Download
0
Embed Size (px)
Citation preview
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.
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
● 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.
Indentación de 4
espacios!!
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ónWhile and if
En Python toda expresión no vacia tiene por defecto valor true, es decir lo unico falso en python es
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]
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'}
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.
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ónLas 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