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.