Anuncio

Ejercicios de programación con Python

Ejercicios de programación con Python es una colección organizada de relaciones de ejercicios orientadas al aprendizaje progresivo del lenguaje y de los fundamentos de la algoritmia.

Python es uno de los lenguajes fundamentales en la formación en informática, matemáticas y ciencias de la computación. Su sintaxis clara y su amplio ecosistema lo convierten en una herramienta idónea tanto para iniciarse en la programación como para abordar problemas algorítmicos avanzados.

En el ámbito académico, Python no solo se utiliza para aprender a programar, sino también como vehículo para estudiar estructuras de datos, técnicas algorítmicas y aplicaciones matemáticas. En este contexto se sitúa esta obra, que propone un recorrido sistemático mediante ejercicios cuidadosamente estructurados.

Introducción al libro

Ejercicios de programación con Python es una colección organizada de relaciones de ejercicios orientadas al aprendizaje progresivo del lenguaje y de los fundamentos de la algoritmia. La obra está basada en materiales previamente utilizados en cursos universitarios de informática en el Grado en Matemáticas de la Universidad de Sevilla.

El libro está dirigido a:

  • Estudiantes universitarios de informática, matemáticas o disciplinas afines.
  • Personas en formación autodidacta que deseen consolidar fundamentos de programación.
  • Desarrolladores que quieran reforzar conceptos formales y algorítmicos.

El nivel requerido es introductorio en sus primeros capítulos, pero avanza hacia contenidos intermedios y estructurales, especialmente en las secciones dedicadas a tipos abstractos de datos, grafos, búsqueda en espacios de estados y programación dinámica.

La obra combina definición formal, implementación en Python y resolución de problemas clásicos de la informática y las matemáticas.

Contenido del libro

El libro se divide en tres grandes bloques temáticos.

En la primera parte se introducen los fundamentos de programación en Python, incluyendo definiciones de funciones por composición, comprensión y recursión, funciones de orden superior y tipos de datos algebraicos.

La segunda parte está dedicada a la algoritmia. Se desarrollan e implementan tipos abstractos de datos como pilas, colas, conjuntos, grafos y polinomios. También se abordan técnicas algorítmicas clásicas como divide y vencerás, búsquedas en espacios de estados y programación dinámica, incluyendo problemas como las n reinas, la mochila, el 8-puzzle o el cálculo de distancias de edición.

La tercera parte presenta aplicaciones a problemas matemáticos, incluyendo cálculo numérico, teoría de números y diversas construcciones combinatorias.

El enfoque es eminentemente práctico: cada sección propone ejercicios con implementación directa en Python, apoyándose en módulos estándar como math, tipado estático mediante typing y herramientas de prueba como hypothesis.

Índice del libro

I. Introducción a la programación con Python

  1. Definiciones elementales de funciones
    1.1 Definiciones por composición sobre números, listas y booleanos
    1.2 Definiciones con condicionales, guardas o patrones
  2. Definiciones por comprensión
    2.1 Definiciones por comprensión
  3. Definiciones por recursión
    3.1 Definiciones por recursión
    3.2 Operaciones conjuntistas con listas
    3.3 El algoritmo de Luhn
    3.4 Números de Lychrel
    3.5 Funciones sobre cadenas
  4. Funciones de orden superior
    4.1 Funciones de orden superior y definiciones por plegado
  5. Tipos definidos y de datos algebraicos
    5.1 Tipos de datos algebraicos: Árboles binarios
    5.2 Tipos de datos algebraicos: Árboles
    5.3 Tipos de datos algebraicos: Expresiones

II. Algorítmica

  1. El tipo abstracto de datos de las pilas
    6.1 El TAD de las pilas
    6.2 Implementación mediante listas
    6.3 Implementación mediante deque
    6.4 Ejercicios con pilas
  2. El tipo abstracto de datos de las colas
    7.1 El TAD de las colas
    7.2 Implementación mediante listas
    7.3 Implementación mediante dos listas
    7.4 Implementación mediante deque
    7.5 Ejercicios con colas
  3. El tipo abstracto de datos de las colas de prioridad
    8.1 El TAD de las colas de prioridad
    8.2 Implementación mediante listas
  4. El tipo abstracto de datos de los conjuntos
    9.1 El TAD de los conjuntos
    9.2 Implementación mediante listas no ordenadas con duplicados
    9.3 Implementación mediante listas no ordenadas sin duplicados
    9.4 Implementación mediante listas ordenadas sin duplicados
    9.5 Implementación mediante librería
    9.6 Operaciones con conjuntos
  5. Relaciones binarias homogéneas
  6. El tipo abstracto de datos de los polinomios
    11.1 El TAD de los polinomios
    11.2 Implementación mediante listas densas
    11.3 Implementación mediante listas dispersas
    11.4 Operaciones con polinomios
    11.5 División y factorización mediante la regla de Ruffini
  7. El tipo abstracto de datos de los grafos
    12.1 El TAD de los grafos
    12.2 Implementación mediante listas
    12.3 Problemas básicos
    12.4 Algoritmos sobre grafos
    12.5 Ejercicios sobre grafos
  8. Procedimiento de divide y vencerás
    13.1 Algoritmo divide y vencerás
    13.2 Rompecabezas del triominó
  9. Problemas con búsquedas en espacio de estados
    14.1 Búsqueda por profundidad
    14.2 Problema de las n reinas (profundidad)
    14.3 Búsqueda por anchura
    14.4 Problema de las n reinas (anchura)
    14.5 Problema de la mochila
    14.6 Búsqueda por primero el mejor
    14.7 Problema del 8-puzzle
    14.8 Búsqueda en escalada
    14.9 Algoritmo de Prim
    14.10 Problema del granjero
    14.11 Problema de las fichas
    14.12 Problema del calendario
    14.13 Problema del dominó
    14.14 Problema de suma cero
    14.15 Problema de las jarras
  10. Programación dinámica
    15.1 Fibonacci por programación dinámica
    15.2 Coeficientes binomiales
    15.3 Longitud de la subsecuencia común máxima
    15.4 Subsecuencia común máxima
    15.5 Distancia de Levenshtein
    15.6 Caminos en una retícula
    15.7 Caminos en una matriz
    15.8 Máxima suma de caminos en una matriz
    15.9 Camino de máxima suma en una matriz

III. Aplicaciones a las matemáticas

  1. Cálculo numérico
    16.1 Diferenciación y métodos de Herón y Newton
    16.2 Límites, bisección e integrales
  2. Miscelánea
    17.1 Números de Pentanacci
    17.2 Teorema de Navidad de Fermat
    17.3 Números primos de Hilbert
    17.4 Factorizaciones de números de Hilbert
    17.5 Sumas de dos cuadrados
    17.6 Serie de Thue-Morse
    17.7 Sucesión de Thue-Morse
    17.8 Huecos maximales entre primos
    17.9 Función indicatriz de Euler
    17.10 Ceros finales del factorial
    17.11 Primos cubanos
    17.12 Cuadrado más cercano
    17.13 Suma de cadenas
    17.14 Sistema factorádico de numeración
    17.15 Duplicación de cada elemento
    17.16 Suma de fila del triángulo de los impares
    17.17 Reiteración de suma de consecutivos
    17.18 Producto de la diagonal principal
    17.19 Reconocimiento de potencias de 4
    17.20 Exponente en la factorización
    17.21 Mayor órbita de la sucesión de Collatz
    17.22 Máximos locales

Datos del libro

  • Título: Ejercicios de programación con Python
  • Autor: José A. Alonso Jiménez
  • Categoría principal: Programación
  • Subcategoría: Python
  • Idioma: Español
  • Licencia: Creative Commons Reconocimiento–NoComercial–CompartirIgual 2.5 España (CC BY-NC-SA 2.5 ES)

Más libros en: Programación, Python


Aviso legal: Este libro se comparte únicamente con fines educativos. El contenido se distribuye bajo licencias Creative Commons o permisos explícitos de sus autores. OpenLibro no aloja material con derechos reservados.

Descargar libro PDF

Libros relacionados

Anuncios