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