Download CURSO DISEÑO DE DIAPOSITIVAS EDUACTIVAS CON
Document related concepts
no text concepts found
Transcript
UNIVERSIDAD DE TARAPACA ARICA Informe de Segunda Presentación Integrantes: José Báez Mª Francisca Chacana Carlos Galleguillos Pablo Vargas Introducción Python es un lenguaje de programación de alto nivel y propósito general que puede aplicarse a muchos problemas de diferentes tipos y a lo largo del tiempo ha estado sujeto a cambios para su mejoramiento, que van desde la versión 0.9.0, publicada en 1991 por su creador Guido van Rossum, hasta la actual versión 2.5.1 publicada el año 2006. En esta oportunidad el trabajo de investigación se enfocará en Python 2.3.3, reconocida como la versión más estable y tiene como dueño Python Software Foundation (PSF), Modelo de Computación A su vez Python es definido como un lenguaje de programación multiparadigma, esto significa que no obliga a los programadores a adoptar un estilo particular de programación, permite varios estilos tales como: l l l l Programación orientada a objetos Programación estructurada Programación funcional Programación orientada a aspectos. Diremos que Python sigue un modelo del tipo Imperativo con Orientación a Objetos, así como también genera un lenguaje de scripting Semántica La semántica de un lenguaje de programación es la interpretación de éste, en el caso de Pyhton al ser lenguaje compacto hace que sea mas fácil su comprensión, lo que lleva a una correcta interpretación del lenguaje. En Python existen reglas básicas de ejecución las cuales establecen que la función inicial no necesariamente deba llamarse main, ya que no posee una estructura estandarizada, pero si es necesario que las rutinas deban ser definidas antes de que estas sean utilizadas. Dentro de cada rutina existirá un orden lógico con el cual serán evaluadas las expresiones contenidas en ella. Este orden lógico esta basado en la aritmética, es decir: Si la expresión se extiende en una sola instrucción, esta se realizada de acuerdo a lo siguiente: 1.-Potencias. 2.-Paréntesis comenzando por sus interiores. 3.-Multiplicación o división según el orden en que se presentan. 4.-Sumas o restas según como se presenten. En caso de que la instrucción se realice en líneas continuas, estas se ejecutan correlativamente. Ejemplo: Una vez conocido el orden en el cual serán evaluadas las distintas expresiones (pertenecientes a una determinada rutina), las instrucciones de control, que involucren a estas expresiones, podrán entregar un resultado de manera correcta. Las instrucciones de control mas conocidas dentro de Pyhton son: If: Esta instrucción se emplea cuando se desea ejecutar una acción bajo una condición determinada. Else: Esta instrucción se ejecuta cuando la condición de un if perteneciente a un mismo bloque no es cumplida. Elif: Es una instrucción que permite introducir una condición intermedia entre un if y un else. For: La construcción for (para) es un poco diferente a lo que se acostumbra. En lugar de recorrer siempre una progresión aritmética, escoger la inicialización, comprobación y salto de paso, el for de Python recorre los elementos de una secuencia (una lista o cadena), en el orden en que aparecen en la secuencia. While: La instrucción while permite definir bucles, como hace la instrucción for, pero en la instrucción while se comprueba si efectivamente cumple la condición necesaria para que se vuelva a repetir. Print: Esta instrucción permite desplegar por pantalla distintos mensajes, resultados, etc. Sintaxis La sintaxis de Python se caracteriza por ser flexible y sencilla, lo que permite crear funciones de múltiples propósitos. Además Python no posee una estructura básica estandarizada, ya que el agrupamiento en bloques se da solo cuando se desea implementar una instrucción específica y solo si esta lo requiere, tomando en cuenta que para definir bloques de código, se utiliza solamente el sangrado (o indentación), es decir en Python no es necesario utilizar BEGIN/END, ni llaves. Existen además opciones que ayudan a un ordenamiento, como las cabeceras de programa, comentario de líneas de códigos de programas, delimitadores de bloque, etc. Para poder realizar un bloque de código se necesita saber cuales son los distintos tipos de variables, constante y operaciones que se utilizan en este lenguaje. Dentro de Python existen los siguientes tipos de variables: tipo entero, tipo real y tipo carácter, los cuales son definidos dependiendo del valor que se le asigna. Ejemplo: En este caso la variable Fecha puede ser definida como: >>> Fecha = 1997 >>> Fecha = 1997.0 >>> Fecha = "1997" #entero #real #carácter Sin la necesidad de recurrir a la declaración de su tipo. Constantes Python al ser un lenguaje interpretado no tiene implementadas constantes, dicho de otra manera no hay constantes en Python. Operaciones Las cuatro operaciones aritméticas básicas son la suma (+), la resta (-), la multiplicación (*) y la división (/). Una vez conocidos los distintos tipos de variables, constantes y operaciones estas pueden ser utilizadas en las distintas instrucciones de control las cuales permitirán el desarrollo de un código más eficiente y con menos recursos de memoria. Las instrucciones de control más utilizadas son: If if condición: Aquí van las órdenes que se ejecutan si la condición es cierta. Else else: Aquí van las órdenes que se ejecutan si la condición es falsa. Elif Cuando no se desee elegir entre dos opciones, sino entre varias, se utilizar la orden elif. if condición_1: bloque 1 elif condición_2: bloque 2 else: bloque 3 For for variable in lista (o cadena) : cuerpo del bucle While while condicion: Cuerpo del bucle, que se repetirá mientras la condición sea cierto. Print print 'Lo que se despliega por pantalla' Ejemplos: Al igual que otros lenguajes, Python reserva palabras que no pueden utilizarse para nombrar variables, ya que cumplen una determinada función dentro del lenguaje. Las palabras reservadas de Python son las siguientes: And del for is raise assert elif from lambda return break else global not try class except if or while continue exec import pass yield def finally in print Variables Concepto de Variables Una variable es un espacio de memoria que se reserva para guardar un valor alfanumérico, que se reconoce por la etiqueta asignada bajo ciertas reglas según el lenguaje de programación, en el caso de Python las variables asumen su tipo en el momento en el cual se les asigna un valor, es decir, si a una determinada variable se le asigna un valor de tipo entero, esta variable será de tipo entero, sucederá de igual forme si se le asigna un real o carácter. Tipos primitivos Los tipos primitivos de un lenguaje son aquellos que provee inicialmente el lenguaje, en el caso de Python los tipos primitivos son: int, char, float. Int >>> a=10 #a será de tipo entero y tendrá el valor 10 Char >>> a=”10” >>> a=”hola” #a será de tipo char Float >>> a=10.0 #a será de tipo real Pese a que Pyhton es un lenguaje cuyos tipos se descubren en tiempo de ejecución, es decir de tipo dinámico, también se define como un lenguaje fuertemente tipado. Ámbito Sabemos que el ámbito de una variable es la región de texto de un programa de Python donde esta variable es accesible directamente. Determinados estáticamente, usados dinámicamente. Existen 3 ámbitos, y se desea buscar una determinada variable se sigue el siguiente orden: 1º Local (interno). 2º Global (Externo). Python considera una variable local siempre que se le asigne un valor dentro de un bloque de visibilidad o ámbito. Si se quiere modificar este comportamiento, se debe declarar la variable como global. Ejemplo: >>> n=0 >>> def A(): n=1 #n declarada en el ambito local A print n >>> def B(): print n #n del ambito global >>> >>> A() 1 >>> B() 0 Es importante destacar que no se puede asignar un valor a una variable global dentro de una función. Si no se quiere asignar ningún valor a una variable, se le puede asignar el valor None. Tiempo de vida El tiempo de vida de las variables en Python es determinado por el termino de la ejecución del programa, o cuando se le asigna un nuevo valor a la variable, ya que en Python no es obligación la declaración de variables globales, locales y no locales. TAD Un tipo abstracto de datos, o TAD, especifica un conjunto de operaciones, o métodos, y la semántica de dichas operaciones, lo que ejecutan. Sin embargo, no especifica la implementación de las operaciones. Esto es lo que lo convierte en abstracto. En Pyhton los TAD más utilizados son las pilas y las colas. TAD Pila: Una pila es una colección, lo que significa que es una estructura de datos que contiene elementos múltiples, se implementan a menudo en bibliotecas estándares de manera que se puedan escribir una vez y usarlas luego muchos programadores. El uso más recurrente de este TAD es para evaluar expresiones posfijo. Al TAD pila se le asocia una ordenación “último en entrar primero en salir" (last in, first out), o LIFO, porque el elemento añadido en último lugar es el primero que se extrae. Ejemplo: Implementación del TAD Pila con clases: >>> class Pila: def __init__(self): self.elementos=[None] def push (self, elemento): self.elementos.append(elemento) def pop(self): return self.elementos.pop() def isEmpty(self): return(self.elementos==[]) Implementación del TAD Pila con funciones: >>> def CrearPila(): c=[] return c #inicializa la pila vacía. >>> def EsVacia(c): return(c==[]) #comprueba si la pila esta vacía. >>> def Poner(pila,elto): #añade un elemento a la pila. return pila.insert(0,elto) >>> def Copiar(pila): #copia la pila. copia=CrearPila() for x in pila: copia.append(x) return copia >>> def Quitar(pila): #quita el ultimo elemento ingresado a la pila. pila.remove(pila[0]) >>> def Consultar(pila): return pila[0] #retorna el ultimo elemento ingresado a la pila. >>> def Modificar(pila,elto): #modifica el ultimo elemento ingresado a la pila. pila[0]=elto TAD Cola: El TAD cola es un TAD que ejecuta las operaciones que uno podría realizar sobre una cola (fila de clientes esperando un servicio de algún tipo). La regla que determina quien va primero se llama táctica de encolamiento. La táctica de encolamiento más simple se llama FIFO, de “first in first out", (el primero que entra es el primero que sale). Ejemplo: Implementación del TAD cola con clases. >>> class Cola: def __init__(self): self.elementos=[] def push (self, elemento): self.elementos.append(elemento) def pop(self): return self.elementos.pop(0) def isEmpty(self): return(self.elementos==[]) Implementación del TAD cola con funciones. >>> def CrearCola(): #inicializa la cola vacía. c=[] return c >>> def EsVacia(c): return (c==[]) #comprueba si la cola esta vacía. >>> def Poner(cola, elto): #añade un elemento a la cola return cola.insert(0, elto) >>> def Copiar(cola): #copia la cola. copia=CrearCola() for x in cola: copia.append(x) return copia >>> def Quitar(cola): #quita el primer elemento ingresado a la cola. cola.remove(cola[len(cola)-1]) >>> def Consultar (cola): #retorna el primer elemento ingresado a la cola. return cola[len(cola)-1] >>> def Modificar (cola, elto):#modifica el primer elemento ingresado a la cola. cola[len(cola)-1]=elto Subrutinas En Python no existen subrutinas, pero en cambio se emplean funciones. Una función se declara usando la palabra clave def, seguida del nombre de la función y entre paréntesis una lista de parámetros separados por “,”. Retorno Las funciones de Python no especifican el tipo de su valor de retorno; ni siquiera especifican si devuelven o no un valor, de hecho, todas las funciones de Python devuelven un valor, mientras exista la sentencia return, devolverá ese valor; en otro caso devolverá None, el valor nulo de Python Parámetros Los parámetros que admiten las funciones son enteros, caracteres y reales. En cuanto al paso de parámetros, podemos decir que este se efectúa mediante referencia. Ejemplo: 1 2 3 >>> def incrementa(p): p=p+1 return p 4 5 6 >>> a=1 >>> b=incrementa(a) 7 8 9 10 11 >>> print 'a:',a a: 1 >>> print'b:',b b: 2 >>> Para comprender claramente el paso de parámetros en Python, analizaremos paso a paso que es lo que ocurre con este pequeño programa. Inicialmente tenemos en la pila la reserva de memoria para las variables a y b. Al ejecutar la línea 5, a= 1: Cuando llamamos a incrementa el parámetro p recibe una referencia al valor apuntado por a. Entonces a=1 , p=1: Luego de ejecutar la línea 2 hace que p apunte a una nueva zona de memoria en la que se guarda el valor 2. Ya que p=1 -> p=(p)+1 -> p=(1)+1 =2 Entonces p=2, así Python ha reservado una nueva celda de memoria con dicho valor. Finalmente, se ha asignado a p el resultado de la expresión, es decir, se ha hecho que p apunte a la celda de memoria con el resultado. Sigamos con la ejecución de la llamada a la función. Al finalizar esta, la referencia de p se devuelve y, en la línea 6, se asigna a b. Resultado: b tomará el valor de p al final de la llamada y a no será modificado. En conclusión podemos decir que el paso por referencia consiste en entregar como argumento un puntero a la variable, y no el contenido de la variable. Manejo de Excepciones Los errores detectados durante la ejecución son llamados excepciones y no son incondicionalmente fatales. El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula else. Esta sentencia recibe el nombre de Try. La sintaxis y semántica de la sentencia try es: · Primero se declara la cláusula try seguida de “:” y luego las sentencias entre las palabras reservadas try y except es ejecutada. · Mientras que la cláusula except se encontraran las sentencias que se ejecutaran en caso de existir un error en alguna de las sentencias declaradas en try, lo que permitirá que el programa se siga ejecutando. Ejemplo: #Sin manejo de excepciones >>> a=2 >>> b=0 >>> c=a/b Traceback (most recent call last): File "<pyshell#6>", line 1, in -toplevelc=a/b ZeroDivisionError: integer division or modulo by zero # Con manejo de excepciones >>> a=2 >>> b=0 >>> def dividirseguro(a,b): try: return a/b except ZeroDivisionError: return None >>> dividirseguro(a,b) >>> >>> b=1 >>> dividirseguro(a,b) 2 >>> Excepciones de Python Siempre que ocurre un error en tiempo de ejecución, se crea una excepción, normalmente el programa se para y Python presenta un mensaje de error. Los mensajes de error mas frecuentes son: NameError: Esta intentando usar una variable que no existe en el entorno actual. TypeError: Esta intentando usar un valor de forma inadecuada. AttributeError: Esta intentando acceder a un atributo o método que no existe. ZeroDivisionError: Cuando se intenta dividir por 0. Ejemplo: >>> print 55/0 ZeroDivisionError: integer division or modulo Excepciones definidas por el programador En Pyhton es posible que los programas puedan nombrar sus propias excepciones creadas por el programador de acuerdo a lo que se necesita. Opciones de manejo de la excepción Una sentencia try puede tener más de una cláusula except, para especificar manejadores de diferentes excepciones. Como máximo se ejecutará sólo un manejador, estos sólo manejan excepciones que ocurran en la cláusula try correspondiente. Una cláusula except puede nombrar múltiples excepciones como una lista entre paréntesis. Ejemplo: ... except (RuntimeError, TypeError, NameError): ... return None Criterios de Evaluación Sabemos que los lenguajes de programación son sometidos a una evaluación bajo ciertos criterios, tales como: Sobrecarga de Operadores en Python Python posibilita el cambio de definición de los operadores integrados cuando se aplican en tipos definidos por el usuario. Esta característica se denomina sobrecarga de operadores. Es muy útil cuando se definen nuevos tipos matemáticos. Ortogonalidad Python gracias a que es un lenguaje de programación altamente flexible y con una semántica muy sencilla permite que a su vez sea muy ortogonal, es decir, si una construcción o método funciona con una estructura de datos, debe funcionar de modo similar con aquellas otras que guardan alguna semejanza. Abstracción Python cuenta con un alto nivel de abstracción. Expresividad Otro punto a favor que podemos atorgar a Python es la gran expresividad de la que goza su código, es decir, lo que conseguimos en mas de 30 líneas en otro lenguaje de programación, en Python fácilmente podremos expresarlo en 10 líneas de código y sin perder su claridad. Aliasing Como las variables apuntan a objetos, si asigna una variable a otra, ambas variables se refieren al mismo objeto: >>> a = [1, 2, 3] >>> b = a En este caso, el diagrama de estados será: Como la misma lista tiene dos nombres diferentes, a y b, podemos decir que se le ha puesto un alias. Los cambios hechos a un alias afectan al otro: >>> b[0] = 5 >>> print a [5, 2, 3] Por lo que podemos decir que existe el Aliasing. Conclusiones Python hoy en día se considera como un lenguaje de programación de propósito general, cuya expansión y popularidad es muy reciente, y se caracteriza por su simplicidad, versatilidad y rapidez de desarrollo. Python es un lenguaje de scripting independiente de plataforma y orientado a objetos, preparado para realizar cualquier tipo de programa. Su elegante y visual sintaxis, que se caracteriza por la indentación de bloques, su gestión de tipos dinámica y su naturaleza interpretada, hacen de él, el lenguaje ideal para guiones (scripts) y desarrollo rápido de aplicaciones en muchas áreas. En los últimos años el lenguaje se ha hecho muy popular, gracias a varias razones como: · · · La sencillez y velocidad con la que se crean los programas. Un programa en Python puede tener de 3 a 5 líneas de código menos que su equivalente en otros lenguajes de programación. La cantidad de plataformas en las que podemos desarrollar, como Unix, Windows, OS/2, Mac, Amiga y otros. Además, Python es gratuito y de libre distribución, esta disponible libremente en la sede web de Python, http://www.python.org. Python está en movimiento y en pleno desarrollo, pero ya es una realidad y una interesante opción para realizar todo tipo de programas que se ejecuten en cualquier máquina. El equipo de desarrollo está trabajando de manera cada vez más organizada y cuentan con el apoyo de una comunidad que está creciendo rápidamente. Algunas empresas que utilizan Python son Yahoo, Google, Walt Disney, la NASA, Red Hat, etc.