lunes, 9 de julio de 2012

Tutorial de Introducción a la programación con Python (Pdf + Practicas) [MF]



Quise compartir este maravilloso tutorial de Python luego de ver que el sitio oficial http://marmota.act.uji.es/ estaba caído y que el pack de programas para practicar Python que se incluía en los enlaces del texto del pdf tampoco estaba disponible.


Yo había descargado y visto los tutoriales de "Aprendizaje de Python" de Guido Van Rossum y el de "Python para todos" de Raúl Duque, los cuales eran muy completos pero ninguno me pareció tan didáctico e intuitivo como este que publico aquí hoy.


Cabe recordar que este tutorial tiene la particularidad de que ademas de enseñar Python hace una buena introducción con C (y C++), por lo que ademas de aprender Python también se aprende lenguaje C, algo que me sorprendio muchísimo e hizo que considerara este curso como algo peculiar.


En el archivo zip se encuentra el documento (Introduccion_a_la_programacion_con_Python.pdf), escrito por los autores Andrés Marzal y Isabel Gracia y actualizado a la versión 09/2006 y el pack con los programas para practicar (programas-python.zip); la descarga es por mediafire ^^


mediafire Descarga: http://www.mediafire.com/download.php?d9x8yj57y0z404v (Archivo zip de 2mb)


A continuación cito parte del Prefacio, el cual me pareció realmente muy alentador:
(click en el spoiler para abrir)



"Estos libros de texto desarrollan el temario de la asignatura «Metodología y tecnología de la programación» de las titulaciones de Ingeniería Informática e Ingeniería Técnica en Informática de Gestión de la Universitat Jaume I. En ella se pretende enseñar a programar y, a diferencia de lo que es usual en cursos introductorios a la programación, se propone el aprendizaje con dos lenguajes de programación: Python y C.
¿Por qué dos lenguajes de progamació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 «pseudocórligo ejecutable‘) y hemos wmprobtnlo 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 implementación de algoritmos a 1m 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 currículum de todo informático; y no sólo por su extendido uso en el mundo profesional: su proximidad al computador nos permito controlar con gran precisión el consumo de recursos computacionales. Aprender Python arttas 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 ¡irogratuaclórl en G y hasta qué punto es ruayor el grm lo de control que nos (murga. Por ejemplo, una vez se han estudiado listas en Python, su implementación en C permite al estudiante no perder de vista el objetivo último: construir una entidad con cierto nivel de abstracción usando unas herramientas concretas (los punteros]. De ese ¡nodo se evita una desafortunaxla confusión entre estructuras dinámicas y punteros que es frecuente cuando éstas se estudian únicamente a la. luz de un lenguaje como C. En cierto modo, pues, Python y C se complementan en el aprendizaje y ofrecen una visión más rica y coruplcta de la programación. Las similitudes y diferencias entre ambos permiten al estudiante inferir más fácilmente qué es fundamental y qué accesorio o accidental al diseñar programas en un lenguaje de programación cualquiera. ¿Y por qué otro libro de texto introductorio a la programación? Ciertamente hay muchos libros que enseñan a programar desde cero. Este texto se diferencia de ellos tanto en el hecho de estudiar dos lenguajes como en la forma en que se exponen y desarrollan los conocimientos. Hemos procurado adoptar siempre el punto de vista del estudiante y presentar los conceptos y estrategias para diseñar programas básicos paso a. paso, incrementalmente. La experiencia docente nos ha ido mostrando toda una serie lineas de ramnautiento inapropiadas, errores y vicios en los que caen muchos estudiantes. El texto trata de exponer, con mayor o menor fortuna. esos razonamientos, errores y vicios para que el estudiante los tenga presentas y procure evitarlos. Así, en el desarrollo de algunos programas llegamos a. ofrecer versiones erróneas para, acto seguido, estudiar sus defectos y Imstrur una versión corregida. Los apunten están repletos de cuadros que pretenden profundizar en aspectos marginales, llamar la atención sobre algún extremo, ofrecer algunas pinceladas de historia o. sencillamente, desviarse de lo central al tema con alguna digresión que podría resultar motivadora para el estudiante. Hemos de recalcar que este libro pretende enseñar a programar y no es un manual exhaustivo sobre el lenguaje de programación Python. Son particularmente reseñablcs dos omisiones: los diccionarios y las clases. No forman parte de esta edición (aunque pensamos incluirlos en la siguiente como material de estudio opcional) porque hemos preferido centrarnos en aquellosaspectos que tanto Python como C presentan en común.
Queremos aprovechar para dar un consejo a los estudiamos que no nos cansamos de repetir: es imposible aprender a programar limitándose a leer unos apuntes o a seguir pasivamente una explicación en clase, especialmente si el período de estudio se concentra en una o dos semanas. Programar al nivel propio de un curso introductorio no es particularmente difícil, pero constituye una actividad intelectual radicalmente nueva para los estudiantes. Es necesario darse una oportunidad para ir asentando los conocimientos y las estrategias de diseño de programas (y así, superar el curso). Esa oportunidad requiere tiempo para madurar. . . y trabajo, mucho trabajo; por eso el texto ofrece más de cuatrocientos ochenta ejercicios. Sólo tras haberse enfrentado a buena parte de ellos se estará preparado para demostrar que se ha aprendido lo necesario. Hay centenares de diferencias entre la primera edición y esta segunda. No sólo hemos corregido erratas (y errores), hemos añadido también nuevos ejemplos, modificado otros, preparado nuevos ejercicios, reubicado ejercicios a lugares donde parecían más oportunos, etc. Los programas se presentan con una tipografía que, creemos, facilita notablemente la lectura. El documento PDF ofrece, además, la posibilidad de descargar cómodamente el texto de los programas (que se pueden descargar de http://marmota.act.uji.es/). Esperamos que esta posibilidad se traduzca en un mayor ánimo del estudiante para experimentar con los programas."



Tambien creo es conveniente adjuntar el indice del tutorial:
(click en el spoiler para abrir)


1. Introduccion
1.1. Computadores
1.2. Codificacion de la informacion
1.3. Programas y lenguajes de programacion
1.3.1. Código de máquina
1.3.2. Lenguaje ensamblador
1.3.3. ¿Un programa diferente para cada ordenador?
1.3.4. Lenguajes de programaci ́n de alto nivel
1.3.5. Compiladores e intérpretes
1.3.6. Python
1.3.7. C
1.4. Más allá de los programas: algoritmos
2. Una calculadora avanzada
2.1. Sesiones interactivas
2.1.1. Los operadores aritméticos
2.1.2. Errores de tecleo y excepciones
2.2. Tipos
2.2.1. Enteros y flotantes
2.2.2. Valores lógicos
2.3. Operadores lógicos y de comparación
2.4. Variables y asignaciones
2.4.1. Asignaciones con operador
2.4.2. Variables no inicializadas
2.5. El tipo de datos cadena
2.6. Funciones predefinidas
2.7. Funciones definidas en módulos
2.7.1. El módulo math
2.7.2. Otros m ́dulos de interés
2.8. Métodos
3. Programas
3.1. El entorno PythonG
3.2. Ejecución de programas desde la línea de ́órdenes Unix
3.3. Entrada/salida
3.3.1. Lectura de datos de teclado
3.3.2. Más sobre la sentencia print
3.3.3. Salida con formato
3.4. Legibilidad de los programas
3.4.1. Algunas claves para aumentar la legibilidad
3.4.2. Comentarios
3.5. Gráficos
4. Estructuras de control
4.1. Sentencias condicionales
4.1.1. Un programa de ejemplo: resolución de ecuaciones de primer grado
4.1.2. La sentencia condicional if
4.1.3. Trazas con PythonG: el depurador
4.1.4. Sentencias condicionales anidadas
4.1.5. Otro ejemplo: resolución de ecuaciones de segundo grado
4.1.6. En caso contrario (else)
4.1.7. Una estrategia de diseño: refinamientos sucesivos
4.1.8. Un nuevo refinamiento del programa de ejemplo
4.1.9. Otro ejemplo: máximo de una serie de números
4.1.10. Evaluación con cortocircuitos
4.1.11. Un ultimo problema: menú de usuario
4.1.12. Una forma compacta para estructuras condicionales múltiples (elif)
4.2. Sentencias iterativas
4.2.1. La sentencia while
4.2.2. Un problema de ejemplo: cálculo de sumatorios
4.2.3. Otro programa de ejemplo: requisitos en la entrada
4.2.4. Mejorando el programa de los menús
4.2.5. El bucle for-in
4.2.6. for-in como forma compacta de ciertos while
4.2.7. Números primos
4.2.8. Rotura de bucles: break
4.2.9. Anidamiento de estructuras
4.3. Captura y tratamiento de excepciones
4.4. Algunos ejemplos gráficos
4.4.1. Un graficador de funciones
4.4.2. Una animación: simulación gravitacional
4.4.3. Un programa interactivo: un videojuego
4.5. Una reflexión final
5. Tipos estructurados: secuencias
5.1. Cadenas
5.1.1. Lo que ya sabemos
5.1.2. Escapes
5.1.3. Longitud de una cadena
5.1.4. Indexación
5.1.5. Recorrido de cadenas
5.1.6. Un ejemplo: un contador de palabras
5.1.7. Otro ejemplo: un programa de conversión de binario a decimal
5.1.8. A vueltas con las cadenas: inversión de una cadena
5.1.9. Subcadenas: el operador de corte
5.1.10. Una aplicación: correo electrónico personalizado
5.1.11. Referencias a cadenas
5.2. Listas
5.2.1. Cosas que, sin darnos cuenta, ya sabemos sobre las listas
5.2.2. Comparación de listas
5.2.3. El operador is
5.2.4. Modificación de elementos de listas
5.2.5. Mutabilidad, inmutabilidad y representación de la información en memoria
5.2.6. Adición de elementos a una lista
5.2.7. Lectura de listas por teclado
5.2.8. Borrado de elementos de una lista
5.2.9. Pertenencia de un elemento a una lista
5.2.10. Ordenación de una lista
5.3. De cadenas a listas y viceversa
5.4. Matrices
5.4.1. Sobre la creación de matrices
5.4.2. Lectura de matrices
5.4.3. ¿Qué dimensión tiene una matriz?
5.4.4. Operaciones con matrices
5.4.5. El juego de la vida
5.5. Una reflexión final
6. Funciones
6.1. Uso de funciones
6.2. Definición de funciones
6.2.1. Definición y uso de funciones con un solo parámetro
6.2.2. Definición y uso de funciones con varios parámetros
6.2.3. Definición y uso de funciones sin parámetros
6.2.4. Procedimientos: funciones sin devolución de valor
6.2.5. Funciones que devuelven varios valores mediante una lista
6.3. Un ejemplo: Memorión
6.4. Variables locales y variables globales
6.5. El mecanismo de las llamadas a función
6.5.1. La pila de llamadas a función y el paso de parámetros
6.5.2. Paso del resultado de expresiones como argumentos
6.5.3. Más sobre el paso de parámetros
6.5.4. Acceso a variables globales desde funciones
6.6. Ejemplos
6.6.1. Integración numérica
6.6.2. Aproximación de la exponencial de un número real
6.6.3. Cálculo de números combinatorios
6.6.4. El método de la bisección
6.7. Diseño de programans con funciones
6.7.1. Ahorro de tecleo
6.7.2. Mejora de la legibilidad
6.7.3. Algunos consejos para decidir qué debería definirse como función: análisis descendente y ascendente
6.8. Recursión
6.8.1. Cálculo recursivo del factorial
6.8.2. Cálculo recursivo del número de bits necesarios para representar un número
6.8.3. Los números de Fibonacci
6.8.4. El algoritmo de Euclides
6.8.5. Las torres de Hanoi
6.8.6. Recursión indirecta
6.8.7. Gráficos fractales: copos de nieve de von Koch
6.9. Módulos
6.9.1. Un módulo muy sencillo mínimo y máximo
6.9.2. Un módulo más interesante: gravedad
6.9.3. Otro módulo: círculo vectorial
6.9.4. Un módulo para trabajar con polinomios
6.9.5. Un módulo con utilidades estadísticas
6.9.6. Un módulo para cículo matricial
7. Tipos estructurados: registros
7.1. Asociando datos relacionados
7.1.1. Lo que sabemos hacer
7.1.2. pero sabemos hacerlo mejor
7.2. Registros
7.2.1. Definicion de nuevos tipos de dato
7.2.2. Referencias a registros
7.2.3. Copia de registros
7.3. Algunos ejemplos
7.3.1. Gestión de calificaciones de estudiantes
7.3.2. Fechas
7.3.3. Anidamiento de registros
7.3.4. Gestión de un videoclub
7.3.5. Algunas reflexiones sobre c ́mo desarrollamos la aplicación de gestión del videoclub
8. Ficheros
8.1. Generalidades sobre ficheros
8.1.1. Sistemas de ficheros: directorios y ficheros
8.1.2. Rutas
8.1.3. Montaje de unidades
8.2. Ficheros de texto
8.2.1. El protocolo de trabajo con ficheros: abrir, leer/escribir, cerrar
8.2.2. Lectura de ficheros de texto línea a línea
8.2.3. Lectura carácter a carácter
8.2.4. Otra forma de leer línea a línea
8.2.5. Escritura de ficheros de texto
8.2.6. Añadir texto a un fichero
8.2.7. Cosas que no se pueden hacer con ficheros de texto
8.2.8. Un par de ficheros especiales: el teclado y la pantalla
8.3. Una aplicación
8.4. Texto con formato
A. Tablas ASCII e IsoLatin1 (ISO-8859-1)
B. Funciones predefinidas en PythonG y accesibles con modulepythong
B.1. Control de la ventana gráfica
B.2. Creación de objetos gráficos
B.3. Borrado de elementos
B.4. Desplazamiento de elementos
B.5. Interacción con teclado y ratón
B.6. Etiquetas
C. El módulo record


Adjunto aquí un PDF con los ejercicios en modo de examen de los mismos autores:
(créditos a beatriz por subirlo)
http://hbeatriz.files.wordpress.com/2010/09/ejercicios-python.pdf


Aqui el creador del lenguaje Python (Guido Van Rossum)


La sintaxis normal en el lenguaje:



Espero que esto pueda serle útil a alguien que quiera aprender este maravilloso lenguaje de programación, pero igual no se conformen solo con esto, sigan buscando y aprendiendo con Google :)


Conoscan más sobre Python en wikipedia: http://es.wikipedia.org/wiki/Python


Adiós y salu2 a to2 ^^


nikos3194



14 comentarios:

  1. genial!
    aunque aun estudio la preparatoria
    me interesa la programacion.
    y esta entrada esta muy completa.

    te luciste nikos! ^^

    Alfredo

    ResponderEliminar
    Respuestas
    1. gracias alfredo por tu comentario ^^

      es justamente la preparatoria el mejor momento para comenzar a aprender programación, te sugeriría que te esfuerces al máximo posible...

      PD: luego te tomaré una evaluación ;P

      Eliminar
  2. Muchas Gracias, precisamente estaba buscando ese libro, ya estaba pensando que no lo iba a encontrar.

    excelente aporte.

    ResponderEliminar
    Respuestas
    1. @ Jose Velasquez

      es verdad que los enlaces del servidor oficial original estan cai2, mientras tanto tambien te recomiendo que visites mi otro post con tutoriales python:
      http://www.to2hacemos.blogspot.com.ar/2012/07/pack-de-15-cursos-y-tutoriales-de.html

      adios y exitos! ;)

      Eliminar
  3. ¡Gracias! En el sitio tienen el libro: http://www.uji.es/bin/publ/edicions/ippython.pdf pero los programas no lo encontraba ^^

    Por cierto, en el enlace que agregué es el más actualizado aunque no dice la fecha.

    ResponderEliminar
    Respuestas
    1. Muchas gracias a vos por compartir el link de:
      http://www.uji.es/bin/publ/edicions/ippython.pdf

      esa en efecto es la ultima edición más reciente (creo que por el ISBN será de + ~ - el 2010) pero la edición que yo había incluido en el post era la del 2006 (además existen otras más viejas del 2000 y el 2003 respectivamente) así que gracias por la noticia, ya que esa nueva versión actualizada del pdf está poco difundido ¡A CORRER LA VOZ! :O

      PD: me alegro que el pack con los programa te sirviese, si queres más manuales de python pásate por este otro post:
      http://to2hacemos.blogspot.com.ar/2012/07/pack-de-15-cursos-y-tutoriales-de.html

      (╯°□°)╯ Python Power!!! \(^o^)/

      Eliminar
    2. Estoy empezando, se PHP pero quiero ver si por Python -> Django puedo hacer cosas mejores y pensar en grande :P
      Además de utilizar hardware y comunicar con la PC y utilizar Python, para reemplazar Java que ese me lo voy a tener que estudiar en la uni si es que voy para sistemas :)
      Saludos.

      Eliminar
    3. no necesitas de mi asesoramiento, si piensas así seguro que vas a tener el camino asegurado, la verdad aprecio tu devoción y espero que puedas dominar todas tus metas... por favor seguí así y nunca cambies de parecer :)

      este tutorial específico me gustó no solo porque enseña Python sino también porque ayuda a migrar a C++, la cual sirve luego para dominar cualquier lenguaje de programación (como el bendito Java), aunque puede tomar tiempo siempre recordemos la frase "no temas de ir despacio, teme a detenerte"...

      muchas gracias por comentar

      Eliminar
  4. Felicitaciones por publicación. Muy interesante. Saludos.

    ResponderEliminar
  5. Gracias por el artículo. Una pregunta, las respuestas a los ejercicios propuestos en el libro,¿se pueden encontrar en alguna parte? De esa manera podría saber si los he realizado correctamente o no.

    ResponderEliminar
    Respuestas
    1. Estimado Rafael:

      al parecer los profesores de la universidad de Jaume I no compartieron en la web las explicaciones completas para poder solucionar los ejercicios propuestos en el tutorial. Quise buscar en vano alguna ayuda en google pero al parecer nadie compartió tal material. Igualmente eh podido encontrar otros tutoriales con más ejercicios (aunque ninguno con respuestas)

      http://es.scribd.com/doc/125703917/Mas-Ejercicios-Python
      http://www3.uji.es/~vjimenez/PL/python-by-vilar.pdf

      Además debo agregar que este tutorial fue modificado a una versión más actualizada, tal como otro comentario de un usuario anterior:
      http://www.uji.es/bin/publ/edicions/ippython.pdf

      Por lo visto se presumiría que la falta del material puede ser debido a querer dar "empuje" a que la gente se inscriba a la carrera de Ingeniería Informática de UJI, y de esta manera tener el material completo asignado a la carrera... ;)

      Muchas gracias por su comentario, salu2 cordiales.

      nikos3194

      Eliminar
  6. Gracas! justo lo que estaba buscando. Hey al parecer hay un segundo volumen enfocado en C, se puede descargar de aca: http://www.losersjuegos.com.ar/_media/referencia/libros/c/c.pdf No me abre este link: http://www.uji.es/bin/publ/edicions/ippython.pdf :S no se si sera cosa mia

    ResponderEliminar
    Respuestas
    1. @le daro

      De nada. El volumen enfocado en C no lo había compartido porque el post estaría centrado solo en el lenguaje Python.Igualmente gracias por la mención.
      Respecto al link de la actualización que no se te abre, puedes encontrar un respaldo en la WayBackMachine de Internet Archive: https://web.archive.org/web/20120813015354/http://www.uji.es/bin/publ/edicions/ippython.pdf

      PD: ese pdf es pesado, si te demora mucho utiliza un gestor tipo jdownloader, mipony, orbit, etc.

      Salu2

      Eliminar