Download Práctica 2

Document related concepts
no text concepts found
Transcript
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Taller: Desarrollo Rápido de Aplicaciones para
Dispositivos Móviles Comptabiles con S60
Práctica 2
Dr. Gregorio Toscano Pulido
Centro de Investigación y de Estudios Avanzados del IPN.
Laboratorio de Tecnologı́as de Información
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Contenido
1
Introducción
Introducción
Paradigmas
Filosofı́a
Intreprete
2
Utilización del Interprete
Llamar el intérprete
Salir del intérprete
Scripts ejecutables
Introducción informal a Python
Listas
Iniciando a Programar
3
Herramientas de control de flujo
Construcciones if
for y while
Tipos dinámicos y fuertemente tipado.
4
Funciones
5
Práctica
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Python
El nombre del lenguaje proviene de la afición de su creador original,
Guido van Rossum, por los humoristas británicos Monty Python. El
principal objetivo que persigue este lenguaje es la facilidad, tanto
de lectura, como de diseño.
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Diseño
Python fue diseñado para ser leı́do con facilidad. Entre otras cosas
se utilizan palabras en inglés donde otros lenguajes utilizarı́an
sı́mbolos (por ejemplo, los operadores lógicos || y && en Python se
escriben or y and, respectivamente).
En vez de delimitar los bloques de código mediante el uso de llaves
({}), Python utiliza la indentación. Esto hace que la misma sea
obligatoria, ayudando a la claridad y consistencia del código escrito
(incluso entre varios desarrolladores):
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Paradigmas
Python es un lenguaje de programación multiparadigma. Esto
significa que más que forzar a los programadores a adoptar un
estilo particular de programación, permite varios
estilos:Programación orientada a objetos, programación
estructurada, programación funcional y programación orientada a
aspectos.
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Filosofı́a
Los usuarios de Python se refieren a menudo a la Filosofı́a Python
que es bastante análoga a la filosofı́a de Unix. El código que sigue
los principios de Python de legibilidad y transparencia se dice que
es pythonico. Contrariamente, el código opaco u ofuscado es
bautizado como no pythonico (unpythonic en inglés)
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Python es un lenguaje interpretado.
En general, se puede decir que un lenguaje es interpretado si sus
instrucciones se ejecutan secuencialmente a partir de código
fuente. Para ejecutar el código de un lenguaje interpretado,
necesitamos un intérprete de ese lenguaje. El intérprete
irá recibiendo lı́neas de código que traducirá a lenguaje máquina
para que se ejecute. A diferencia de los lenguajes compilados, no se
produce un ejecutable (no, los ficheros *.pyc de Python no son
ejecutables). De este modo, de una plataforma a otra, sólo
habrá que cambiar el intérprete, no el código.
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Lenguajes interpretados
Si bien los lenguajes interpretados son más lentos que sus
equivalentes compilados, también es cierto que llevan menos
tiempo de desarrollo, y que como hemos comentado, se trata de
programas cortos, en los que no existen diferencias significativas.
En el caso de Python, si necesitamos velocidad en una rutina,
siempre podemos implementar esa rutina en C e importarla a
nuestro código. Por otro lado, siempre que importemos con éxito
un módulo, el intérprete intentará generar un fichero “compilado”,
los *.pyc. Se trata de ficheros binarios (bytecode) en el
”idioma”del intérprete.
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Java
class Hola {
public static void main(String argument os[]} {
System.out.println("Hola, mundo");
}
}
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
PASCAL
Program Hola;
Begin
writeln(’Hola, mundo’);
End.
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
C
void main(){
printf ("Hola, mundo");
}
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Python
print "hola, mundo!"
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Usualmente realizar un programa en Python es más rápido que
implementarlo en otro lenguaje (se dice que es entre 2 y 4 veces
más rápido que Java), en gran parte, esto esposible, gracias la
simplicidad de la sintaxis, y por otra parte a sus tipos de datos
(listas, tuplas, diccionarios).
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Si bien los lenguajes interpretados son más lentos que sus
equivalentes compilados.
Los proyectos que se realizan en lenguajes interpretados
necesitan menos tiempo de desarrollo. (En donde se trata de
programas cortos, en los que no existen diferencias
significativas.)
Si necesitamos velocidad en una rutina, se puede implementar
una rutina en C, y cargarla como módulo compilado (pyc).
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Contenido
1
Introducción
Introducción
Paradigmas
Filosofı́a
Intreprete
2
Utilización del Interprete
Llamar el intérprete
Salir del intérprete
Scripts ejecutables
Introducción informal a Python
Listas
Iniciando a Programar
3
Herramientas de control de flujo
Construcciones if
for y while
Tipos dinámicos y fuertemente tipado.
4
Funciones
5
Práctica
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Cuando se leen órdenes desde una tty, se dice que el intérprete
está en modo interactivo. En este modo, espera a la siguiente
orden con el indicador principal, que suele se tres signos mayor
(>>>). Para las lı́neas adicionales, se utiliza el indicador
secundario, por omisión tres puntos (...).
gtoscano@wrangler:~$ python
Python 2.4.4 (#2, Jul 21 2007, 11:00:24)
[GCC 4.1.3 20070718 (prerelease) (Debian 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
gtoscano@wrangler:~$ python
Python 2.4.4 (#2, Jul 21 2007, 11:00:24)
[GCC 4.1.3 20070718 (prerelease) (Debian 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.exit()
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Scripts ejecutables
En sistemas UNIX tipo BSD, los scripts Python se pueden hacer
ejecutables directamente, como guiones de lı́nea de órdenes,
poniendo la lı́nea
#! /usr/bin/env python
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Comentarios
# éste es el primer comentario
fiambre = 1
# y éste
# ... ¡y un tercero!
cadena = "# Esto no es un comentario."
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Calculadora
>>>
4
>>>
...
4
>>>
4
>>>
5
>>>
...
2
2+2
# Esto es un comentario
2+2
2+2
# un comentario junto al código
(50-5*6)/4
# La división entera redondea hacia abajo:
7/3
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Asignación
Al igual que en C, se usa el signo de igualdad ‘=’ para asignar un
valor a una variable. El valor de una asignación no se escribe:
>>> ancho = 20
>>> alto = 5*9
>>> ancho * alto
900
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Asignación simultanea
Se puede asignar un valor simultáneamente a varias variables:
>>>
>>>
0
>>>
0
>>>
0
x = y = z = 0
x
# Poner a cero ’x’, ’y’ y ’z’
y
z
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
La coma flotante funciona de la manera esperada. Los operadores
con tipos mixtos convierten el operando entero a coma flotante:
>>> 4 * 2.5 / 3.3
3.0303030303
>>> 7.0 / 2
3.5
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Números complejos
Los números complejos siempre se representan como dos números
de coma flotante, la parte real y la imaginaria. Para extraer una de
las partes de un número complejo z, usa z.real y z.imag.
>>> a=1.5+0.5j
>>> a.real
1.5
>>> a.imag
0.5
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
>>> ’L\’Hospitalet’
"L’Hospitalet"
>>> "L’Hospitalet"
"L’Hospitalet"
>>> ’"Sı́," dijo.’
’"Sı́," dijo.’
>>> "\"Sı́,\" dijo."
’"Sı́," dijo.’
>>> ’"En L\’Hospitalet," dijo.’
’"En L\’Hospitalet," dijo.’
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Se pueden encerrar las cadenas entre comillas triples emparejadas:
.o ”’. No es necesario poner barra invertida en los avances de lı́nea
cuando se utilizan comillas triples; serán incluidos en la cadena.
print """
Uso: cosilla [OPCIONES]
-h
-H NombreServidor
"""
Mostrar este mensaje de uso
Nombre del servidor al que conectarse
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
El intérprete muestra los resultados de las operaciones con cadenas
como se escriben a la entrada: Entre comillas y con las comillas y
otros caracteres raros escapados por barras invertidas, para mostrar
el valor exacto. La cadena se encierra entre comillas dobles si
contiene una comilla simple y no contiene comillas dobles, si no, se
encierra entre comillas simples (se puede utilizar print para escribir
cadenas sin comillas ni secuencias de escape). Se puede concatenar
cadenas (pegarlas) con el operador + y repetirlas con *:
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
import string
cadena="hola, muy buen dia, mundo!"
print cadena[4:8]
print cadena[4:-2]
print cadena[-2:]
print cadena[-10:-2]
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Cadenas unicode
Crear cadenas Unicode en Python es tan simple como crear cadenas normales:
>>> u’Muy buenas’
u’Muy buenas’
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Listas
Python utiliza varios tipos de datos compuestos, que se utilizan
para agrupar otros valores. El más versátil es la lista, que se puede
escribir como una lista de valores (elementos) separada por comas
entre corchetes. Los elementos de una lista no tienen que ser todos
del mismo tipo.
>>> a = [’fiambre’, ’huevos’, 100, 1234]
>>> a
[’fiambre’, ’huevos’, 100, 1234]
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Como los ı́ndices de las cadenas, los ı́ndices de una lista empiezan
en cero. Las listas también se pueden cortar, concatenar, etc.:
>>> a[0]
’fiambre’
>>> a[3]
1234
>>> a[-2]
100
>>> a[1:-1]
[’huevos’, 100]
>>> a[:2] + [’bacon’, 2*2]
[’fiambre’, ’huevos’, ’bacon’, 4]
>>> 3*a[:3] + [’¡Hey!’]
[’fiambre’, ’huevos’, 100, ’fiambre’, ’huevos’, 100, ’fiambre’, ’huevos’, 100, ’¡Hey!’]
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Se puede asignar a un corte, lo que puede hasta cambiar el tamaño
de la lista:
>>> # Reemplazar elementos:
... a[0:2] = [1, 12]
>>> a
[1, 12, 123, 1234]
>>> # Quitar elementos:
... a[0:2] = []
>>> a
[123, 1234]
>>> # Insertar cosas:
... a[1:1] = [’puaj’, ’xyzzy’]
>>> a
[123, ’puaj’, ’xyzzy’, 1234]
>>> a[:0] = a
# Insertarse (una copia) al principio de ella misma
>>> a
[123, ’puaj’, ’xyzzy’, 1234, 123, ’puaj’, ’xyzzy’, 1234]
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
>>>
...
...
>>>
...
...
...
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
# Serie de Fibonacci:
# La suma de dos elementos nos da el siguiente
a, b = 0, 1
while b < 10:
print b
a, b = b, a+b
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Contenido
1
Introducción
Introducción
Paradigmas
Filosofı́a
Intreprete
2
Utilización del Interprete
Llamar el intérprete
Salir del intérprete
Scripts ejecutables
Introducción informal a Python
Listas
Iniciando a Programar
3
Herramientas de control de flujo
Construcciones if
for y while
Tipos dinámicos y fuertemente tipado.
4
Funciones
5
Práctica
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
>>>
>>>
...
...
...
...
...
...
...
...
...
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
x = int(raw_input("Introduce un número: "))
if x < 0:
x = 0
print ’Negativo cambiado a cero’
elif x == 0:
print ’Cero’
elif x == 1:
print ’Uno’
else:
print ’Más’
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
>>>
...
...
...
1
4
7
>>>
...
...
0
1
2
3
4
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
while a < 10 :
print a
a = a + 3
for x in range(5):
print x
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
>>> secuencia = [ 1,’hola’,4.2,[’juan’,’chocolate’, 7],2]
>>> for x in secuencia:
... print x
...
1
hola
4.2
[’juan’, ’chocolate’, 7]
2
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
>>> a = 3
>>> while a != 0 :
... print a
... a = a - 1
... else :
... print ’Ya terminamos el ciclo’
...
3
21
Ya terminamos el bucle
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
>>>
>>>
...
...
...
...
...
...
...
3
2
1
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
a = 3
while a != 0:
print a
a = a - 1
if a == 0:
break
else:
print ’Ya terminamos el bucle’
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
>>>
...
...
...
...
...
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
for x in range(10):
print ’Numero de la secuencia:’, x
if x % 2 == 0 :
print ’%d es par’ % x
if not(x % 4) :
print ’%s es multiplo de 4’ % str(x)
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Tipos dinámicos y fuertemente tipado
Python implementa tipos dinámicos. Esto quiere decir que el tipo
de un objeto se comprueba dinámicamente cada vez que es
necesario dicho objeto. A un objeto se le asigna un tipo en el
momento en que es asignado. Pero podemos realizar asignaciones
de diferentes tipos. Esto significa que un mismo identificador puede
referenciar objetos de tipo diferente en distintos puntos del
programa.
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Ejemplo
>>>
>>>
...
>>>
>>>
...
>>>
>>>
a = 7
# a es un entero y esta linea es un comentario
a = ’hola’
# a es una cadena
a = [1,7,’hola’]
# a es una lista
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Python es fuertemente tipado
Pese a sus tipos dinámicos, Python es un lenguaje fuertemente
tipado. Un lenguaje es fuertemente tipado si sus tipos se mantienen
de manera consistente (en Python si no hay una nueva asignación).
Esto quiere decir que no podemos sumar una cadena y un entero.
>>>> ’hola’+1
.
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Ejemplo
Los objetos en Python tienen individualidad. Podemos asociar
diferentes nombres a un mismo objeto, incluso en diferentes
ámbitos. Esto se conoce como .alias”. Es conveniente tener en
cuenta que al generar un .alias.estamos referenciando al mismo
objeto, no una copia del mismo. Es importante tener este aspecto
en cuenta para evitar sorpresas:
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Ejemplo
>>>
>>>
[1,
>>>
>>>
[1,
>>>
>>>
[1,
>>>
[1,
a = [1, ’hola’, 1235]
a
’hola’, 1235]
b = a
b
’hola’, 1235]
b[1] = ’chocolate’
b
’chocolate’, 1235]
a
’chocolate’, 1235]
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Contenido
1
Introducción
Introducción
Paradigmas
Filosofı́a
Intreprete
2
Utilización del Interprete
Llamar el intérprete
Salir del intérprete
Scripts ejecutables
Introducción informal a Python
Listas
Iniciando a Programar
3
Herramientas de control de flujo
Construcciones if
for y while
Tipos dinámicos y fuertemente tipado.
4
Funciones
5
Práctica
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Funciones
La palabra clave def introduce una definición de función. Debe ir
seguida del nombre de la función y la lista entre paréntesis de los
parámetros formales. Las sentencias que forman el cuerpo de la
función empiezan en la siguiente lı́nea y deben ir sangradas.
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Funciones
>>>
...
...
...
...
...
...
>>>
...
1 1
def fib(n):
# escribir la serie Fibonacci hasta n
"escribir la serie Fibonacci hasta n"
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
# Y ahora llamamos a la función recién definida:
fib(2000)
2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Contenido
1
Introducción
Introducción
Paradigmas
Filosofı́a
Intreprete
2
Utilización del Interprete
Llamar el intérprete
Salir del intérprete
Scripts ejecutables
Introducción informal a Python
Listas
Iniciando a Programar
3
Herramientas de control de flujo
Construcciones if
for y while
Tipos dinámicos y fuertemente tipado.
4
Funciones
5
Práctica
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Ejemplos
Realizar un programa que pida 10 números por teclado e
imprima la sumadichos números.
Implementar el programa anterior en PyS60, use como
ejemplo:
import appuifw
data = appuifw.query(u"Type a word:", "text")
appuifw.note(u"The typed word was: " + data, "info")
logo
Dr. Gregorio Toscano Pulido
Plataforma S60
Agenda
Introducción
Utilización del Interprete
Herramientas de control de flujo
Funciones
Práctica
Ejemplos
Realice un programa que tome 5 fotos y las almacene en
archivos numerados y que usen el formato JPG, use como
ejemplo:
global scan_res
scan_res= min(camera.image_sizes())#(160,120)
global image
image= camera.take_photo(’RGB’,scan_res)
filename = ’e:\\photo.jpg’
image.save( filename )
logo
Dr. Gregorio Toscano Pulido
Plataforma S60