introducción a la programación con python

Click here to load reader

Post on 18-Nov-2014

446 views

Category:

Software

11 download

Embed Size (px)

DESCRIPTION

Introducción a la programación con python ¿Por qué dos lenguajes de programación? Python y C son bien diferentes. El primero es un lenguaje de muy alto nivel que permite expresar algoritmos de forma casi directa (ha llegado a considerarse (pseudocodigo ejecutable)) y hemos comprobado que se trata de un lenguaje particularmente adecuado para la enseñanza de la programación. El lenguaje C exige una gran atención a multitud de detalles que dificultan la implementan de algoritmos a un estudiante que se enfrenta por primera vez al desarrollo de programas. No obstante, C sigue siendo un lenguaje de programación de referencia y debe formar parte del curricular de todo informático; y no solo por su extendido uso en el mundo profesional: su proximidad al computador nos permite controlar con gran precisión el consumo de recursos computacionales. Aprender Python antes que C permite estudiar las estructuras de control y de datos básicas con un alto nivel de abstracción y, as´ı, entender mejor que supone, exactamente, la mayor complejidad de la programación en C y hasta que punto es mayor el grado de control que nos otorga. Por ejemplo, una vez se han estudiado listas en Python, su implementación en C permite al estudiante no perder de vista el objetivo ´ultimo: construir una entidad con cierto nivel de abstracción usando unas herramientas concretas (los punteros). De ese modo se evita una desafortunada confusión entre estructuras dinámicas y punteros que es frecuente cuando ´estas se estudian únicamente a la luz de un lenguaje como C

TRANSCRIPT

  • 1. Introduccion a la programacion con Python Andres Marzal Isabel Gracia Departamento de Lenguajes y Sistemas Informaticos Universitat Jaume I c 2003 de Andres Marzal Varo e Isabel Gracia Luengo. Reservados todos los derechos. Esta ((Edicion Internet)) se puede reproducir con nes autodidactas o para su uso en centros publicos de ensenanza, exclusivamente. En el segundo caso, unicamente se car- garan al estudiante los costes de reproduccion. La reproduccion total o parcial con animo de lucro o con cualquier nalidad comercial esta estrictamente prohibida sin el permiso escrito de los autores.
  • 2. Indice general 1. Introduccion 5 1.1. Computadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2. Codicacion de la informacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3. Programas y lenguajes de programacion . . . . . . . . . . . . . . . . . . . . . . . 9 1.3.1. Codigo de maquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.2. Lenguaje ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3.3. Un programa diferente para cada ordenador? . . . . . . . . . . . . . . . . 12 1.3.4. Lenguajes de programacion de alto nivel . . . . . . . . . . . . . . . . . . . 14 1.3.5. Compiladores e interpretes . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3.6. Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.3.7. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.4. Mas alla de los programas: algoritmos . . . . . . . . . . . . . . . . . . . . . . . . 17 2. Una calculadora avanzada 23 2.1. Sesiones interactivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.1.1. Los operadores aritmeticos . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.1.2. Errores de tecleo y excepciones . . . . . . . . . . . . . . . . . . . . . . . . 30 2.2. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.2.1. Enteros y otantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.2.2. Valores logicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.3. Operadores logicos y de comparacion . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.4. Variables y asignaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.4.1. Asignaciones con operador . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.4.2. Variables no inicializadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.5. El tipo de datos cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.6. Funciones predenidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.7. Funciones denidas en modulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.7.1. El modulo math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.7.2. Otros modulos de interes . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.8. Metodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3. Programas 53 3.1. El entorno PythonG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.2. Ejecucion de programas desde la lnea de ordenes Unix . . . . . . . . . . . . . . . 57 3.3. Entrada/salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.3.1. Lectura de datos de teclado . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.3.2. Mas sobre la sentencia print . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.3.3. Salida con formato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.4. Legibilidad de los programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.4.1. Algunas claves para aumentar la legibilidad . . . . . . . . . . . . . . . . . 65 3.4.2. Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.5. Gracos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Introduccion a la Programacion con Python i
  • 3. INDICE GENERAL 2006/09/25-15:31 4. Estructuras de control 75 4.1. Sentencias condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.1.1. Un programa de ejemplo: resolucion de ecuaciones de primer grado . . . . 75 4.1.2. La sentencia condicional if . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.1.3. Trazas con PythonG: el depurador . . . . . . . . . . . . . . . . . . . . . . 79 4.1.4. Sentencias condicionales anidadas . . . . . . . . . . . . . . . . . . . . . . . 81 4.1.5. Otro ejemplo: resolucion de ecuaciones de segundo grado . . . . . . . . . . 83 4.1.6. En caso contrario (else) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.1.7. Una estrategia de diseno: renamientos sucesivos . . . . . . . . . . . . . . 87 4.1.8. Un nuevo renamiento del programa de ejemplo . . . . . . . . . . . . . . 88 4.1.9. Otro ejemplo: maximo de una serie de numeros . . . . . . . . . . . . . . . 90 4.1.10. Evaluacion con cortocircuitos . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.1.11. Un ultimo problema: menus de usuario . . . . . . . . . . . . . . . . . . . . 96 4.1.12. Una forma compacta para estructuras condicionales multiples (elif) . . . 98 4.2. Sentencias iterativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.2.1. La sentencia while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.2.2. Un problema de ejemplo: calculo de sumatorios . . . . . . . . . . . . . . . 103 4.2.3. Otro programa de ejemplo: requisitos en la entrada . . . . . . . . . . . . . 104 4.2.4. Mejorando el programa de los menus . . . . . . . . . . . . . . . . . . . . . 106 4.2.5. El bucle for-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.2.6. for-in como forma compacta de ciertos while . . . . . . . . . . . . . . . 112 4.2.7. Numeros primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.2.8. Rotura de bucles: break . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 4.2.9. Anidamiento de estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . 120 4.3. Captura y tratamiento de excepciones . . . . . . . . . . . . . . . . . . . . . . . . 121 4.4. Algunos ejemplos gracos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.4.1. Un gracador de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.4.2. Una animacion: simulacion gravitacional . . . . . . . . . . . . . . . . . . . 128 4.4.3. Un programa interactivo: un videojuego . . . . . . . . . . . . . . . . . . . 134 4.5. Una reexion nal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 5. Tipos estructurados: secuencias 145 5.1. Cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 5.1.1. Lo que ya sabemos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 5.1.2. Escapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 5.1.3. Longitud de una cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 5.1.4. Indexacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 5.1.5. Recorrido de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 5.1.6. Un ejemplo: un contador de palabras . . . . . . . . . . . . . . . . . . . . . 152 5.1.7. Otro ejemplo: un programa de conversion de binario a decimal . . . . . . 157 5.1.8. A vueltas con las cadenas: inversion de una cadena . . . . . . . . . . . . . 158 5.1.9. Subcadenas: el operador de corte . . . . . . . . . . . . . . . . . . . . . . . 160 5.1.10. Una aplicacion: correo electronico personalizado . . . . . . . . . . . . . . 162 5.1.11. Referencias a cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 5.2. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 5.2.1. Cosas que, sin darnos cuenta, ya sabemos sobre las listas . . . . . . . . . 170 5.2.2. Comparacion de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 5.2.3. El operador is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 5.2.4. Modicacion de elementos de listas . . . . . . . . . . . . . . . . . . . . . . 175 5.2.5. Mutabilidad, inmutabilidad y representacion de la informacion en memoria176 5.2.6. Adicion de elementos a una lista . . . . . . . . . . . . . . . . . . . . . . . 178 5.2.7. Lectura de listas por teclado . . . . . . . . . . . . . . . . . . . . . . . . . 180 5.2.8. Borrado de elementos de una lista . . . . . . . . . . . . . . . . . . . . . . 182 5.2.9. Pertenencia de un elemento a una lista . . . . . . . . . . . . . . . . . . . . 185 5.2.10. Ordenacion de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 5.3. De cadenas a listas y viceversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 5.4. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 5.4.1. Sobre la creacion de matrices . . . . . . . . . . . . . . . . . . . . . . . . . 194 5.4.2. Lectura de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 ii Introduccion a la Programacion con Python
  • 4. c 2003 Andres Marzal e Isabel Gracia 0 INDICE GENERAL 5.4.3. Que dimension tiene una matriz? . . . . . . . . . . . . . . . . . . . . . . 197 5.4.4. Operaciones con matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 5.4.5. El juego de la vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 5.5. Una reexion nal