Laboratorio de Lenguajes de Programación - Semana 9
Siempre hago mucho hincapie en las características de este hermoso lenguaje, la verdad es que desde que lo utilice por primera vez me enamore :p, pues es muy sencillo de usar y de aprender asi que realmente los invito a utilizarlo
Esta es una corta entrada hecha por mi sobre Python y la Web
Recordemos que los códigos escritos en Python no son compilados sino interpretados, y Ubuntu incluye dicho intérprete.
Solo basta con teclear en la terminal: which python
para comprobar y verificar la ubicación donde esta disponible.
Por lo general el intérprete se encuentra en la carpeta /usr/bin/python.
La extensión de los códigos fuente es *.py.
Para interpretar un script en Ubuntu primero hay que otorgarle permisos de ejecución, esto se hace con el comando chmod.
Por ejemplo: chmod u+x archivo.py
Siempre hago mucho hincapie en las características de este hermoso lenguaje, la verdad es que desde que lo utilice por primera vez me enamore :p, pues es muy sencillo de usar y de aprender asi que realmente los invito a utilizarlo
Esta es una corta entrada hecha por mi sobre Python y la Web
INTÉRPRETE
Recordemos que los códigos escritos en Python no son compilados sino interpretados, y Ubuntu incluye dicho intérprete.
Solo basta con teclear en la terminal: which python
para comprobar y verificar la ubicación donde esta disponible.
Por lo general el intérprete se encuentra en la carpeta /usr/bin/python.
La extensión de los códigos fuente es *.py.
Para interpretar un script en Ubuntu primero hay que otorgarle permisos de ejecución, esto se hace con el comando chmod.
Por ejemplo: chmod u+x archivo.py
VARIABLES Y TIPOS
Python maneja 3 tipos de variables:
Números que pueden ser enteros (int), coma flotante (float) o complejos (complex)
Cadenas de texto que son simples caractéres (char)
Booleanos o lógicos, que devuelven dos estados "TRUE" o "FALSE".
Python es un lenguaje de tipado dinámico se refiere a que no es necesario declarar el tipo de dato que va a contener una determinada variable, sino que su tipo se determinará en tiempo de ejecución según el tipo del valor al que se asigne, y el tipo de esta variable puede cambiar si se le asigna un valor de otro tipo, claro, siempre y cuando se haga un typecasting.
Yo puedo hacer esto:
c = 90
x = 12.36
a = "Hola a todos"
Todas las anteriores son declaraciones de variables, no necesito en realidad decirle a Python de que tipo son (int, float o char), el intérprete me lo detectará automáticamente
Operadores
Operadores a nivel bit
El operador and (&), del inglés “y”, devuelve 1 si el primer bit operando es 1 y el segundo bit operando es 1. Se devuelve 0 en caso contrario.
El operador or (|), del inglés “o”, devuelve 1 si el primer operando es 1 o el segundo operando es 1. Para el resto de casos se devuelve 0.
El operador xor u or exclusivo (^) devuelve 1 si uno de los operandos es 1 y el otro no lo es.
El operador not (~), del inglés “no”, sirve para negar uno a uno cada bit; es decir, si el operando es 0, cambia a 1 y si es 1, cambia a 0.
Por último los operadores de desplazamiento (<<>>) sirven para desplazar los bits n posiciones hacia la izquierda o la derecha.
Booleanos
BÁSICO
Salida estándar
Para imprimir en pantalla un mensaje o el resultado de algun proceso se utiliza la función print:
print "Hola, esto es una cadena de texto"
Para imprimir el valor de una variable:
x = 20 print x
Para imprimir variables y texto combinados, se concatenan con el operador "+".
nombre = "Juan" edad = 20 print "Hola, me llamo " + nombre + " y tengo " + edad + "años"
Entrada estándar
Para introducir datos desde el teclado se utilizan las funciones input y raw_input:
Si queremos introducir una cadena competa utilizaremos raw_input:
cadena = raw_input("Introduce una oracion: ")
Para un dato numerico se utiliza input:
x = input("Dame un valor: ")
ESTRUCTURAS DE CONTROL
Codicional
if condicion: proceso(s)
Por ejemplo:
if x == 2: print "x es un dos"
if ... else ...
if condicion: proceso(s) else: proceso(s)
Por ejemplo
if x == 2: print "x es un dos" else: print "x es igual a " + x
elif (multiples condiciones)
if condicion1: proceso(s) elif condicion2: proceso(s) elif condicion3: proceso(s) else: proceso(s)
Por ejemplo:
if x == 1: print "x es igual a uno" elif x == 2: print "x es igual a dos" elif x == 3: print "x es igual a tres" else: print "desconozco cuanto valga x"
Ciclo For
for var_iteracion in secuencia: proceso(s)
Por ejemplo
print "Inicia el conteo" for i=1 in range (10): print i print "FUEGO!!!"
Ciclo While
while condicion: proceso(s)
Por ejemplo
salir = False while salir == False: respuesta = raw_input("Desea Salir \n") if(respuesta == "si"): salir=True else: salir=False print "Acabas de Salir"
Python y la Programación Orientada a Objetos
Conceptos Básicos
Para entender este paradigma primero tenemos que comprender qué es una clase y qué es un objeto.
Un objeto es una entidad que agrupa un estado y una funcionalidad relacionadas. El estado del objeto se define a través de variables llamadas atributos, mientras que la funcionalidad se modela a través de funciones a las que se les conoce con el nombre de métodos del objeto.
Un mensaje es la manera en que se comunican los objetos entre si, por eso cuando llamemos a alguna funcion de un objeto diremos que le estamos enviando un mensaje; entonces los metodos se encargan de procesar los mensajes que lleguen al objeto.
Una clase, por otro lado, no es más que una plantilla genérica a partir de la cuál instanciar los objetos; plantilla que es la que define qué atributos y métodos tendrán los objetos de esa clase.
Como ya mencione en la entrada de C++, las clases y por lo tanto los objetos tienen partes públicas y privadas, a la parte pública muy regularmente nos referiremos a ella como la interfaz, esta sera la única parte visible para los demas procesos y además la que esta dispuesta a compartir información y comunicarse con los demás.
La herencia se refiere basicamente al hecho de que una subclase, ademas de contener metodos y atributos propios tiene a su vez todos los atributos y métodos de la clase madre o superclase
Un ejemplo de objeto podría ser un coche, en el que tendríamos atributos como la marca, el número de puertas o el tipo de carburante y métodos como arrancar y parar. O bien cualquier otra combinación de atributos y métodos según lo que fuera relevante para nuestro programa.
Clases
En Python, una clase se declará con la palabra reservada class:
class Nombre_clase:Importante señalar que el nombre de las clases por convención debe iniciar con mayúscula, aunque no es formalmente necesario para su correcto funcionamiento.
Si la clase no define atributos, pues no debe estar vacía, entonces se utilizará la palabra pass:
class Sin_atributos: passEquivalente a usar "{}" en otros lenguajes.
Métodos
Los métodos se declaran con la misma sintáxis que las funciones, con la palabra reservada def:
class Aritmetica: def suma(atributos):
Constructores???
Python no contiene formalmente lo que llamaremos Constructor, tienen un método llamado __init__ (con doble guion bajo antes y despues del nombre), su función es emular un constructor inicializando las variables o atributos:
class Aritmetica: def __init__ (self, x, y): self.a = x self.b = y def suma (self): print self.a + self.bEste método es llamado automáticamente tras crear una instancia de la clase.
Como ya vimos, el primer atributo del método es self, que es una referencia al objeto recién creado, en otros mótodos se refiere a la instancia cuyo método ha sido llamado. Después de el pueden seguir la cantidad de argumentos que sean necesarios.
Instancias
Crear una instancia es tan fácil como enviar un valor a una función, en términos de OO, como enviar un mensaje a un método:
class Aritmetica: def __init__ (self, x, y): self.a = x self.b = y def suma (self): print self.a + self.b def main(): print "Suma mediante Programacion Orientada a Objetos" operacion = Aritmetica(3,5) operacion.suma() if __name__ == "__main__": main()En este ejemplo, la instancia se crea cuando "operacion" envia parámetros a "Aritmetica", recordemos que el metodo "__init__" se llama automáticamente por lo que ya tenemos asignados los parámetros a los atributos de la clase (suma1 y suma2).
Despues invocamos al método "suma" para realizar la operación, "suma" imprimirá el resultado final.
**RECUERDEN AGREGAR EL INTERPRETE AL CÓDIGO (#!/usr/lib/python) EN LA PRIMERA LÍNEA.
EJECUCIÓN DEL EJEMPLO ANTERIOR
No es necesario liberar de manera explícita las instancias (definir destructores) ya que Python elimina automáticamente las variables cuando salen del ámbito.
Herencia
Para declarar explícitamente la herencia de los atributos de la clase madre a otras subclases, es necesario colocar después del nombre de la subclase un paréntesis con el nombre de la clase madre, por ejemplo:
class Animales: pass class Gato(Animales): pass class Perro(Animales): pass
Encapsulación
Python no tiene modificadores de acceso explícitos, en su lugar el acceso a un atributo de determina en su nombre:
Privados: Si en el nombre del metodo se inicia con doble guión bajo y no termina con doble guión bajo:
class Animales: def __nombre(self):
Todos lo demas que no cumpla con esta regla se considera público.
Espero y les sirva bastante esta entrada sobre la programación orientada a objetos en Python
SALUDOS!!! ^_^
Muy bonito. Ocho puntos para el lab.
ResponderEliminar