´ 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
© Copyright 2024 ExpyDoc