Introducción a la Computación @let@token Conceptos de

´ a la Computacion
´
Introduccion
´
Conceptos de Programacion
´
Interprete
PYTHON
M. E. Buemi ([email protected])
Facultad de Ciencias Exactas y Naturales, UBA
25/03/2015
Comenzando a programar
UBA
¿Que´ es programar?
Un algoritmo es una lista finita de intrucciones (algo as´ı como una receta de
cocina), consiste de:
I
Instrucciones que indican que´ hacer.
I
´
Valores con los cuales se trabaja (parametros).
I
Variables a las cuales se les asigna un valor y a las cuales se le realizan
operaciones (i.e. sumar, restar).
Los programas se escriben en un lenguaje que una computadora pueda
entender (i.e. ejecutar).
Comenzando a programar
UBA
Lenguajes de alto nivel
I
´
Se refiere a las construcciones que son relativamente faciles
de
entender por un humano.
I
Ejemplos de lenguajes: Perl, Matlab, Java, C, C++, C#, Visual Basic,
Python, Scheme, Lisp, Pascal, Fortran y la lista sigue!
I
Hay algunos que han sido creados espec´ıficamente para ciertas
´ facil
´ la vida para aquellos que lo necesitan
aplicaciones, haciendo mas
´
(por ejemplo Fortran para las aplicaciones numericas).
I
´
Este tipo de lenguajes es independiente de la maquina
o arquitectura en
la cual funciona (en realidad, en algunos casos se usan trucos
˜
espec´ıficos para obtener mejoras en el desempeno).
I
´
Desde el punto de vista teorico,
lo que se puede computar con cualquier
lenguaje de estos es “lo mismo”.
Sin embargo, las computadoras no entienden este tipo de lenguajes
directamente.
Comenzando a programar
UBA
´
¿Como
se ejecuta un programa?
Los lenguajes de alto nivel necesitan ser traducidos a lo que una
´
computadora entiende: lenguaje de maquina.
Para esto, hay dos opciones:
´
1. Compilador: es un programa que toma codigo
fuente de alto nivel y lo
´
convierte en lenguaje de maquina.
´ en lenguaje
´
2. Interprete:
es un programa que convierte cada instruccion
´
de alto nivel a una serie de instrucciones de maquina
y la ejecuta.
´ puede
Esto hace falta porque una computadora (i.e. el procesador) solo
´
procesar lenguaje de maquina:
I
´
El lenguaje de maquina
consiste en un conjunto de instrucciones que un
procesador puede ejecutar directamente.
I
´ se codifica como un patron
´ de 1’s y 0’s que el
Cada instruccion
˜ vincula con la
procesador (en realidad, el ingeniero que lo disena)
´ a realizar (por ejemplo: add, substract, read, store, etc.)
operacion
Comenzando a programar
UBA
´
Los lenguajes de programacion
´ computacional esta´ determinado por:
Normalmente, obtener una solucion
I
Tiempo que se tarda en escribir
un programa
I
Tiempo de humanos (¡que sepan
programar!)
I
Matlab, Python
I
Tiempo que tarda en correr el
programa
I
´
Tiempo de computadora (tambien
del usuario que espera a que
termine)
I
C, Fortran
´ hay que
Al momento de elegir una herramienta o lenguaje de programacion
pesar estos dos aspectos.
´ Java y C# que estan
´ a medio camino.
Tener en cuenta tambien
Comenzando a programar
UBA
Python
En el curso
I
En este curso vamos a usar Python, pero no es un curso de Python.
I
Es una lenguaje interpretado (Hay un programa traduciendo cada
´ de operaciones en lenguaje de
comando que se introduce a un monton
´
maquina).
Python tiene las siguientes caracter´ısticas:
I
I
I
I
I
I
I
Gratis
Multi-plataforma
Se usa por todos lados
Muy bien documentado
Con muy buen nivel de soporte y comunidad de usuarios
´
Para aprender Python (o cualquier otro lenguaje de programacion),
hay
´ en Internet, pero hasta que
que perder tiempo. Hay mucha informacion
uno no se ensucia los dedos, la cosa no avanza No hay recetas
´
magicas!
Comenzando a programar
UBA
Python
´
El interprete
I
´ inicial para usar Python es utilizar directamente el interprete.
´
La opcion
I
Directamente se tipean los comandos y se obtiene la respuesta.
I
Para ver si todo funciona correcto, se puede hacer:
>>> p r i n t ( ” h o l a mundo \n ” )
h o l a mundo
I
´ siguiente).
el {\n} sirve para pasar al renglon
Comenzando a programar
UBA
Python
Editando texto
I
La otra manera de interactuar con Python es crear un archivo de texto
con los comandos que queremos que ejecute.
I
´
El interprete
va a ir leyendo el archivo y ejecutando de a un comando
por vez.
I
Esto termina cuando se han ejecutado todos los comandos o cuando
explota por haber encontrado un error.
I
´ sencilla de ejecutar
python mi super programa.py: es la manera mas
el script recientemente creado (hay otra maneras que vamos a ir
aprendiendo con el tiempo).
´ les guste.
Se puede usar el editor de texto que mas
I
I
I
I
I
I
Los freaks usan vi. Funciona en una consola.
Si no hay otra cosa, podes arreglarte con nano. Funciona en consola.
El mcedit es un editor muy completo, si sos lo suficientemente viejo y nerd,
´ funciona en consola.
puede que te traiga recuerdos. Tambien
En el entorno gnome, creo que geany esta´ bueno.
Si tenes KDE o cosas de KDE instalado, podes usar kate o kwrite.
Comenzando a programar
UBA
´ imperativa
Programacion
´
Modelo de computo
´
´
Un programa consiste de ordenes
(o bien “instrucciones”) que indican como
´ alojados en la memoria.
operar con los datos, que estan
Comenzando a programar
UBA
´ imperativa
Programacion
Entidad fundamental: variables
I
Corresponden a posiciones de memoria (RAM)
I
´ de un
Cambian expl´ıcitamente de valor a lo largo de la ejecucion
programa.
´
´ fundamental: asignacion
Operacion
I
Cambiar el valor de una variable.
I
Una variable no cambia a menos que se cambie expl´ıcitamente su valor,
´ de una asignacion.
´
a traves
´
´ en un sentido amplio.
Se usa el termino
funcion
I
´ de un valor.
Las “funciones” pueden devolver mas
I
Hay nuevas formas de pasar argumentos.
I
Las funciones no se consideran como valores, y no hay mecanismos
para realizar operaciones entre funciones (o bien es muy limitado).
Comenzando a programar
UBA
´
La asignacion
´ para modificar el valor de una variable.
Operacion
´
Sintaxis: variable = expresion
´
Efecto de la asignacion:
´ de la derecha y se obtiene un valor.
1. Se evalua
´ la expresion
2. El valor obtenido se copia en el espacio de memoria de la variable.
Ejemplos:
I
x=1
I
y=x
I
x=x+x
I
x=funcion(z+1,3)
I
x= x*x + 2*y + z;
´
Se pueden poner comentarios se usa el numeral (#). Es una buena practica
´ que vamos a incentivar.
de programacion
Comenzando a programar
UBA
Tipos
I
Todos los valores tienen un tipo de datos asociado.
I
Las variables no tienen un tipo de datos, depende del valor que
almacena.
I
´
Python determina automaticamente
el tipo de las variables.
´
Los tipos basicos
(i.e. predefinidos) son:
I
I
I
I
Numeros:
enteros (int), con coma (float), complejos(complex, por ejemplo
´
2 + 6j).
Cadenas de texto o cadenas de caracteres (se declaran encerrando los
caracteres entre comillas dobles)
Valores booleanos: True (verdadero) y False (falso).
Se puede determinar el tipo de datos asociado a un valor o a una variable
´ type.
con la funcion
Comenzando a programar
UBA
´
Operaciones basicas
con numeros
´
I
Suma (+), r = 3 + 2
I
Resta (-), r = 4 - 7
I
´ (-), r = -r
Negacion
I
´ (*), r = 2 * 6
Multiplicacion
I
Potencia (**), r = 2 ** 6
I
´ (/), r = 3.5 / 2
Division
I
´ entera (//), r = 3.5 // 2
Division
I
´
Modulo
o resto ( %), r = 7 % 2
Comenzando a programar
UBA
Operaciones booleanas
I
Se cumple A y B: and, True and False
I
Se cumple A o B: or, True or False
I
´ not, not True
Negacion:
I
Igualdad (==), r = 5 == 3
I
No son iguales (!=), r = 5!= 3
I
Menor (<), r = 5 < 3
I
Mayor (>), r = 5 > 3
I
Mayor o Igual (>=) / Menor o igual (<=), r = 5 <= 5
Comenzando a programar
UBA
Estructuras de control
I
Condicional (if ... else ...)
I
Ciclos (for, while ...)
I
Funciones
I
Retorno de control (return)
Aunque muchos lenguajes imperativos permiten implementar funciones
´
´
recursivas, el mecanismo fundamental de computo
no es la recursion.
Comenzando a programar
UBA
Estructura de control if condici´
on l´
ogica,
if condici´
on l´
ogica... else,
´ logica
´
if condici´
on l´
ogica ... elseif condicion
...else
´ sencilla para hacer un programa interesante.
Es la estructura mas
i f A>=6:
p r i n t ( ” Aprobado ” )
´ larga del if:
Esta es la version
i f A>=6:
p r i n t ( ” Aprobado ” )
else :
p r i n t ( ” Coloquio o Desaprobado ” )
Ojo! La manera de indicar bloques de instrucciones es por medio de la
´
tabulacion.
i f A>=6:
p r i n t ( ” Aprobado ” )
e l i f A>=4:
p r i n t ( ” Coloquio ” )
else :
p r i n t ( ” Hasta e l Pr \ ’ oximo C u a t r i m e s t r e ” )
Comenzando a programar
UBA
´ logica
´
Iterando: while condicion
contador = 0
while c o n t a d o r < 1 8 :
p r i n t ( ” Vamos por , ” + s t r ( c o n t a d o r ) )
´ es la salida de este codigo?
´
¿Cual
Y s´ı, me hab´ıa olvidado de incrementar el contador, deber´ıa ser as´ı:
contador = 0
while c o n t a d o r < 1 8 :
p r i n t ( ” Vamos por , ” + s t r ( c o n t a d o r ) )
c o n t a d o r = c o n t a d o r +1
´ puede ser una fuente de errores muy molestos, hay que tener
La tabulacion
´ que termina es:
mucho cuidado, la version
contador = 0
while c o n t a d o r < 1 8 :
p r i n t ( ” Vamos por , ” + s t r ( c o n t a d o r ) )
c o n t a d o r = c o n t a d o r +1
Comenzando a programar
UBA
Iterando con for
Es muy similar al while, pero se encarga de incrementar el ´ındice en un
cierto rango directamente.
f o r c o n t a d o r i n range ( 1 , 100 , 1 ) :
hacemos algo ( c o n t a d o r )
´ range te devuelve un rango desde 1 hasta 100 con un salto de 1.
La funcion
´ divertidas con estas estructuras.
Ya vamos a ver cosas mas
Comenzando a programar
UBA
Iterando con for
Es muy similar al while, pero se encarga de incrementar el ´ındice en un
cierto rango directamente.
f o r c o n t a d o r i n range ( 1 , 100 , 1 ) :
hacemos algo ( c o n t a d o r )
´ range te devuelve un rango desde 1 hasta 100 con un salto de 1.
La funcion
´ divertidas con estas estructuras.
Ya vamos a ver cosas mas
Comenzando a programar
UBA
´
Usando el interprete
Python
En la terminal escribo el comando:
python3
Puedo comenzar a ejecutar instrucciones python en la l´ınea de comandos.
en el caso de las estructuras de control tengo que identar.
Comenzando a programar
UBA
Editando texto
I
La otra manera de interactuar con Python es crear un archivo de texto
con los comandos que queremos que ejecute → script.
I
´
El interprete
va a ir leyendo el archivo y ejecutando de a un comando
por vez.
I
Esto termina cuando se ejecutaron todos los comandos o cuando
explota por haber encontrado un error.
I
I
´ sencilla de ejecutar el script
$python3 script1.py es la manera mas
recientemente creado (hay otras maneras).
´ les guste.
Se puede usar el editor de texto que mas
I
I
I
I
I
I
´ problemitas usa vi. Funciona en una consola.
La gente con mas
Los que tienen un grado de problemitas intermedio pueden usar el vim o el
´ son de consola.
emacs. Tambien
´ de consola.
Si no hay otra cosa, el nano va. Otro mas
El mcedit es un editor muy completo, si sos lo suficientemente viejo y nerd,
´ funciona en consola.
puede que te traiga recuerdos. Tambien
En el entorno GNOME, geany, gedit, etc.
En KDE, kate o kwrite.
Comenzando a programar
UBA
Editando funciones
I
´ que
La otra manera de interactuar con Python es crear una funcion
puede tener variables de entrada y resultado/s de salida.
Comenzando a programar
UBA
´
Probando codigo
I
´
Si tenemos un archivo con una funcion.
def r e t u r n s u m ( x , y ) :
c = x + y
return c
res = return sum ( 4 , 5 )
print ( res )
I
linea 1 return sum(x,y) def es palabra reservada, return sum es el
´
nombre del modulo,
c es la variable de entrada
I
se ejecuta con python3 return sum.py
Comenzando a programar
UBA
´ codigo
´
Probando mas
I
Caso en que el numero
de entradas no puede determinarse *args.
´
def m e d i a a r i t m e t i c a ( * args ) :
sum = 0
f o r x i n args :
sum += x
r e t u r n sum
print ( media
print ( media
print ( media
print ( media
print ( media
Comenzando a programar
aritmetica (45 ,32 ,89 ,78))
aritmetica (8989.8 ,78787.78 ,3453 ,78778.73))
aritmetica (45 ,32))
aritmetica (45))
aritmetica ( ) )
UBA
Usando el debugger
I
Lo invocamos con python3 -m pdb mi super programa.py.
I
En lugar de ejecutar el script, se va a parar en la primera l´ınea y nos va
a mostrar el prompt del pdb.
(Pdb)
Algunos comandos:
I
I
I
I
I
I
´
n o next: ejecuta una instruccion.
p, pp o print: imprime en pantalla el valor actual de un s´ımbolo.
l o list: muestra la l´ınea actual que esta´ siendo ejecutada junto con
algunas l´ıneas extras de contexto.
c o continue: ejecuta hasta que finalice el programa o hasta que se
encuentre con un breakpoint.
b o break: pone un breakpoint en el punto especificado del programa
´
´
(puede ser una l´ınea de codigo
o una funcion).
Comenzando a programar
UBA
Mensajes de error
File SyntaxError.py, line 1
print "Hola, mundo"
^
SyntaxError: invalid syntax
I
´
Los mensajes de error de Python se muestran en tiempo de ejecucion
utilizando un mecanismo llamado excepciones.
I
´ que podemos ver es el lugar en donde ocurrio´ el error, el
La informacion
´ y un mensaje de error.
tipo de excepcion,
I
Las excepciones son formas de reportar errores que el programador
puede utilizar y manejar (o atrapar) de alguna manera. Ahora no nos
vamos a meter con esto.
I
Si nadie hace nada con ellas, el programa explota como se ve en el
ejemplo.
Comenzando a programar
UBA
´ mensajes de error
Mas
Traceback (most recent call last):
File "./exp.py", line 120, in <module>
eval(sys.argv[1])(*sys.argv[2:])
File "./exp.py", line 91, in biglans_all_metrics
__generic_all_metrics(’biglans.ns’, size)
File "./exp.py", line 27, in __generic_all_metrics
random_costs_all = [__computecost(na,
na.getRandomPermutation(size_int)) for x in xrange(size_int**2)]
File "./emulabParser.py", line 230, in getRandomPermutation
return random_permutation(self.nodes, n)
File "./emulabParser.py", line 82, in random_permutation
return tuple(random.sample(pool, r))
File "/usr/lib/python2.7/random.py", line 322, in sample
raise ValueError("sample larger than population")
ValueError: sample larger than population
Comenzando a programar
UBA
´
Interprete
Python
Algunos comandos para acortar camino
CTRL + L limpiar comandos de python
´
CTRL + D o quit() o exit() salir del interprete
a la terminal
´
CTRL + Z fuerza a salir del interprete.
Comenzando a programar
UBA
´
Interprete
Python
Terminando
I
Con lo que vimos hoy, podemos hacer programas bastante piolas y
practicar bastante.
I
La semana que viene vamos a ver: funciones y colecciones.
I
Ahora hay que ensuciarse los dedos y empezar a practicar
Comenzando a programar
UBA