Scientific Programming with Python · Contenido ¿Porque que programar? Introducción a Python...

29
Scientific Programming with Python Felipe Zapata Reactivity and Molecular Structure Group of the University of Alcala 9 de marzo, 2011

Transcript of Scientific Programming with Python · Contenido ¿Porque que programar? Introducción a Python...

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

● 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

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ó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

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.