Resumen del tema
Documento Informativo: Fundamentos de Programación Secuencial en Python
Resumen Ejecutivo
El material de origen presenta una introducción exhaustiva a la programación en Python, centrada en el concepto fundamental de las estructuras secuenciales. El curso, diseñado para un Ciclo Formativo de Grado Superior, establece que Python es un lenguaje de alto nivel, interpretado y con tipado dinámico, cuya filosofía prioriza la legibilidad y la simplicidad del código.
El pilar del módulo es el patrón de ejecución secuencial, donde las instrucciones se ejecutan de forma lineal. Este flujo se modela consistentemente mediante el paradigma Entrada-Procesamiento-Salida (IPO), que estructura los programas en tres fases claras: la obtención de datos (input()), la manipulación de estos mediante operadores, y la presentación de resultados (print()).
Un aspecto sintáctico distintivo y no opcional de Python es el uso de la sangría (generalmente 4 espacios) para definir bloques de código, una característica que impone un estilo ordenado y legible. Se enfatiza la importancia de seguir las convenciones de nomenclatura del PEP 8, como el uso de snake_case para variables y SNAKE_CASE para constantes, para mejorar la mantenibilidad del software.
El contenido abarca una descripción detallada de los tipos de datos, diferenciando entre objetos inmutables (cuyo valor no puede cambiar tras su creación, como int, str, tuple) y mutables (list, dict, set). Finalmente, se subraya la necesidad de la conversión explícita de tipos, ya que la función input() siempre devuelve los datos como cadenas de texto (str), requiriendo su transformación a tipos numéricos para realizar operaciones matemáticas.
1. Introducción al Lenguaje Python
Python, creado por Guido van Rossum a finales de los años 80, es un lenguaje de programación de propósito general diseñado para maximizar la legibilidad del código y la productividad del programador.
1.1. Características Clave
Característica Descripción
Alto Nivel El código se asemeja al lenguaje humano, lo que facilita su aprendizaje, comprensión y escritura.
Interpretado El código se ejecuta directamente, línea por línea, sin un paso de compilación previo, lo que acelera el ciclo de desarrollo.
Tipado Dinámico No es necesario declarar el tipo de una variable antes de asignarle un valor. Python infiere el tipo de dato automáticamente durante la ejecución.
Filosofía Zen Se rige por los principios del "Zen de Python", un conjunto de directrices que priorizan la simplicidad, la claridad y la belleza del código.
1.2. Sintaxis y Legibilidad: El Rol Crítico de la Sangría
La característica sintáctica más distintiva de Python es el uso obligatorio de la sangría para definir la estructura y los bloques de código. A diferencia de otros lenguajes que utilizan llaves ({}), Python emplea un número consistente de espacios (la convención es 4 espacios) para indicar el inicio y el fin de un bloque, como los que se encuentran dentro de bucles o condicionales. Esta regla fuerza a los programadores a escribir código visualmente ordenado, mejorando significativamente su legibilidad y mantenibilidad.
2. El Paradigma de la Estructura Secuencial
La estructura secuencial es el patrón de flujo de control más simple y fundamental en programación.
* Definición: Las instrucciones de un programa se ejecutan de forma estrictamente lineal y ordenada, una tras otra, desde la primera línea hasta la última, sin saltos ni repeticiones. La ejecución de una línea depende de que las anteriores ya se hayan completado.
2.1. El Patrón IPO (Input, Process, Output)
Casi todos los programas secuenciales siguen el patrón de tres fases conocido como IPO:
1. Entrada (Input): Se obtienen los datos necesarios para que el programa funcione. Esto puede lograrse mediante la asignación directa de valores en el código o a través de la interacción con el usuario, utilizando la función input().
2. Procesamiento (Process): Se realizan cálculos, manipulaciones o transformaciones sobre los datos de entrada. El orden de las operaciones en esta fase es crucial para obtener el resultado correcto.
3. Salida (Output): Se presentan los resultados o la información procesada al usuario, comúnmente mediante la función print().
2.2. Diagramas de Flujo como Herramienta Visual
Los diagramas de flujo son representaciones gráficas de un algoritmo que utilizan símbolos estándar para visualizar la lógica de un programa antes de escribir el código. Ayudan a planificar la secuencia de operaciones y las decisiones.
Símbolos Estándar
Símbolo Nombre Propósito
Óvalo Inicio / Fin Representa el punto de partida y el punto final de un programa.
Paralelogramo Entrada / Salida Indica operaciones donde el programa recibe datos (input()) o muestra resultados (print()).
Rectángulo Proceso Representa cualquier instrucción que transforma o procesa datos, como cálculos y asignaciones.
Rombo Decisión Indica un punto donde el flujo se bifurca basándose en una condición (no aplica en estructuras puramente secuenciales).
Flecha Línea de Flujo Conecta los símbolos para indicar la dirección y la secuencia de ejecución de los pasos.
Círculo Conector Se utiliza para conectar partes del diagrama en diferentes lugares de la misma página.
3. Fundamentos de Datos y Variables
3.1. Variables y Constantes
Una variable es un contenedor con un nombre simbólico que se utiliza para referirse a un valor almacenado en la memoria del ordenador. Las constantes, por convención, son variables cuyo valor no debe cambiar durante la ejecución del programa.
* Asignación: Se utiliza el operador igual (=) para asignar un valor a una variable.
* Tipado Dinámico: Python infiere el tipo de dato de una variable en el momento de la asignación.
* Sensibilidad: Python distingue entre mayúsculas y minúsculas (nombre, Nombre y NOMBRE son tres variables diferentes).
3.2. Convenciones de Nomenclatura (PEP 8)
Adherirse a la guía de estilo PEP 8 es crucial para escribir código Python legible y profesional.
Categoría Convención Ejemplo Correcto Ejemplo Incorrecto (por estilo)
Variables Comunes snake_case velocidad_maxima VelocidadMaxima
Constantes SNAKE_CASE TASA_IVA, PI tasa_iva, Pi
Clases CamelCase MiClase mi_clase
Funciones snake_case calcular_total() CalcularTotal()
Reglas para nombrar variables:
* Deben empezar con una letra o un guion bajo (_). Nunca con un número.
* No pueden ser una palabra reservada del lenguaje (e.g., if, for, class, True).
* Deben ser descriptivas para que el código se explique por sí mismo.
3.3. Tipos de Datos
Datos Fundamentales
Tipo Clase Descripción Ejemplo
Enteros int Números enteros, positivos o negativos, sin decimales. 42, -10
Flotantes float Números con parte decimal o exponenciales. 3.14, 2.0e-3
Cadenas str Secuencias inmutables de caracteres (texto). "Hola Mundo"
Booleanos bool Valores lógicos que solo pueden ser Verdadero o Falso. True, False
Colecciones de Datos
Tipo Clase Mutabilidad Orden Descripción
Lista list Mutable Ordenada Colección flexible de elementos que se puede modificar.
Tupla tuple Inmutable Ordenada Colección que no se puede modificar después de su creación.
Rango range Inmutable Ordenada Secuencia inmutable de números, eficiente para iterar.
Conjunto set Mutable No ordenada Colección de elementos únicos, sin orden específico.
Diccionario dict Mutable Ordenada* Colección de pares clave:valor.
*Desde Python 3.7, los diccionarios mantienen el orden de inserción.
3.4. El Concepto de Mutabilidad e Inmutabilidad
La mutabilidad determina si el contenido de un objeto puede ser modificado después de su creación.
* Objetos Inmutables (int, float, str, tuple, bool): Su valor no puede cambiar. Cualquier operación que parezca modificarlo en realidad crea un nuevo objeto en memoria y la variable pasa a apuntar a este nuevo objeto.
* Objetos Mutables (list, dict, set): Su contenido puede ser modificado "in situ" (en el mismo lugar de la memoria) después de su creación. Si dos variables apuntan al mismo objeto mutable, un cambio a través de una variable será visible en la otra.
4. Operaciones y Manipulación de Datos
4.1. Operadores Esenciales
Operadores Aritméticos
Operador Nombre Descripción Ejemplo (a=10, b=3) Resultado
+ Suma Adición de dos valores. a + b 13
- Resta Sustracción de dos valores. a - b 7
* Multiplicación Producto de dos valores. a * b 30
/ División Devuelve un resultado flotante. a / b 3.333...
// División Entera Devuelve el cociente entero (redondeado hacia abajo). a // b 3
% Módulo Devuelve el resto de la división entera. a % b 1
** Potencia Eleva el primer operando a la potencia del segundo. a ** b 1000
Operadores Relacionales y Lógicos
* Relacionales: Se usan para comparar valores y devuelven un resultado booleano (True o False). Incluyen == (igual a), != (distinto de), > (mayor que), < (menor que), >= (mayor o igual que), y <= (menor o igual que).
* Lógicos: Se usan para combinar expresiones condicionales. Incluyen and (Y lógico), or (O lógico) y not (Negación lógica).
4.2. Conversión de Tipos (Type Casting)
Permite cambiar el tipo de dato de un valor.
* Conversión Implícita: Python la realiza automáticamente para evitar la pérdida de datos, por ejemplo, al sumar un int y un float, el int se convierte a float.
* Conversión Explícita: El programador fuerza la conversión usando funciones como int(), float(), str(), list(), etc. Esto es fundamental al trabajar con la entrada del usuario.
4.3. Manejo de Cadenas de Texto (Strings)
Las cadenas son secuencias inmutables de caracteres.
* Creación: Se usan comillas simples (' '), dobles (" ") o triples (""" """ para multilínea).
* Indexación: Se accede a los caracteres por su índice, comenzando en 0. s[0] es el primer carácter y s[-1] es el último.
* Métodos Comunes: Incluyen .upper(), .lower(), .strip(), .replace(), .split(), y .join().
5. Interacción con el Usuario: Entrada y Salida
5.1. La Función input(): Captura de Datos
La función input() detiene la ejecución del programa y espera a que el usuario introduzca datos por teclado y presione Enter.
* Retorno: Siempre devuelve una cadena de texto (str), sin importar si el usuario introduce números.
* Conversión Obligatoria: Si se necesitan datos numéricos, es indispensable convertir la cadena devuelta usando int() o float().
5.2. La Función print(): Muestra de Resultados
La función print() muestra datos o resultados en la consola.
* Argumentos: Acepta múltiples argumentos, que por defecto se separan por un espacio.
* Parámetros Opcionales: Se puede personalizar el separador (sep=) y el carácter final (end=).
5.3. Formato de Cadenas (f-strings)
Las f-strings son el método moderno y recomendado para incrustar variables y expresiones dentro de una cadena de texto de forma legible y eficiente. Se crean anteponiendo la letra f a las comillas y colocando las variables entre llaves {}.
articulo = "Portátil"
precio = 999.99
print(f"El artículo '{articulo}' tiene un precio de {precio:.2f} €.")
# Salida: El artículo 'Portátil' tiene un precio de 999.99 €.
6. Aplicación Práctica y Ejecución
6.1. Análisis de un Ejemplo Completo: Cálculo de IVA
El material incluye un programa completo que calcula el total de una compra con IVA, demostrando el patrón IPO:
1. Entrada: Se solicita al usuario el nombre del artículo (input()), el precio base (float(input())) y la cantidad (int(input())).
2. Procesamiento: Se define una constante TASA_IVA. Se calculan secuencialmente el subtotal, el monto del IVA y el total final.
3. Salida: Se muestra un resumen detallado de la compra utilizando print() y f-strings para formatear los resultados numéricos a dos decimales.
6.2. Proceso de Ejecución y Análisis de Resultados
El ciclo de desarrollo implica un proceso iterativo:
1. Ejecución: El intérprete de Python lee el código, lo convierte a un formato intermedio (bytecode) y la Máquina Virtual de Python (PVM) lo ejecuta.
2. Análisis: Se verifica que la salida del programa sea la esperada. Si no lo es, se procede a la depuración.
3. Corrección (Depuración): Se identifican y corrigen errores, que pueden ser de sintaxis, de ejecución (excepciones) o lógicos.
6.3. Ejercicios Propuestos para la Práctica
Se proporcionan varios ejercicios para reforzar los conceptos aprendidos, incluyendo:
* Crear y mostrar variables de texto.
* Calcular el área de un rectángulo.
* Manipular elementos de una lista.
* Convertir grados Celsius a Fahrenheit.
* Concatenar cadenas y calcular su longitud.
Guía de estudio
Guía de Estudio: Introducción a Python y Estructuras Secuenciales
Cuestionario de Repaso
Responda a las siguientes preguntas en 2-3 frases, basándose exclusivamente en la información proporcionada en los documentos de estudio.
1. ¿Cuáles son las cuatro características clave que definen al lenguaje de programación Python?
2. Describa el patrón de flujo de control conocido como "estructura secuencial" y el modelo IPO.
3. ¿Cuál es la función de la sangría (indentación) en Python y por qué es una característica distintiva del lenguaje?
4. ¿Qué es un diagrama de flujo y para qué se utiliza en programación? Mencione tres símbolos estándar y su significado.
5. Explique la diferencia entre una variable y una constante en Python, enfocándose en la convención de nomenclatura recomendada por PEP 8.
6. ¿Cuál es la diferencia fundamental entre los tipos de datos mutables e inmutables? Proporcione un ejemplo de cada uno.
7. ¿Qué tipo de dato devuelve siempre la función input() y qué paso es crucial si se necesita trabajar con números obtenidos a través de ella?
8. Diferencie entre la conversión de tipos implícita y la explícita, explicando cuándo ocurre cada una.
9. ¿Qué son las f-strings y por qué se consideran el método recomendado para formatear cadenas de texto?
10. ¿Cuáles son los tres tipos de errores más comunes que pueden surgir durante el desarrollo de un programa?
--------------------------------------------------------------------------------
Clave de Respuestas
1. ¿Cuáles son las cuatro características clave que definen al lenguaje de programación Python? Python es un lenguaje de programación de alto nivel, lo que significa que su código se asemeja al lenguaje humano. Es interpretado, ejecutándose línea por línea sin compilación previa. Posee tipado dinámico, por lo que no es necesario declarar el tipo de una variable, y se rige por la filosofía del "Zen de Python", que prioriza la simplicidad y claridad del código.
2. Describa el patrón de flujo de control conocido como "estructura secuencial" y el modelo IPO. Una estructura secuencial es el patrón más simple donde las instrucciones de un programa se ejecutan de forma estrictamente lineal y ordenada, una tras otra. Este flujo sigue el modelo IPO (Input, Process, Output), que consta de tres fases: la Entrada de datos, el Procesamiento o manipulación de esos datos, y la Salida de los resultados al usuario.
3. ¿Cuál es la función de la sangría (indentación) en Python y por qué es una característica distintiva del lenguaje? La sangría, generalmente de 4 espacios, se utiliza en Python para definir bloques de código, indicando dónde comienzan y terminan estructuras como bucles o condicionales. Es una característica distintiva porque fuerza al programador a escribir código ordenado, lo que mejora significativamente la legibilidad y el mantenimiento del software.
4. ¿Qué es un diagrama de flujo y para qué se utiliza en programación? Mencione tres símbolos estándar y su significado. Un diagrama de flujo es una representación gráfica de un algoritmo que permite visualizar la lógica de un programa antes de escribir el código. Utiliza símbolos estándar como el Óvalo para indicar el Inicio/Fin del programa, el Rectángulo para representar un Proceso (cálculos o asignaciones), y el Paralelogramo para las operaciones de Entrada/Salida de datos (como input() y print()).
5. Explique la diferencia entre una variable y una constante en Python, enfocándose en la convención de nomenclatura recomendada por PEP 8. Una variable es un nombre que se refiere a un valor que puede cambiar durante la ejecución del programa, y según PEP 8, debe nombrarse usando snake_case (minúsculas y guiones bajos). Una constante es un tipo de variable cuyo valor no debería cambiar; para distinguirla, la convención PEP 8 dicta que su nombre se escriba en SNAKE_CASE (mayúsculas y guiones bajos).
6. ¿Cuál es la diferencia fundamental entre los tipos de datos mutables e inmutables? Proporcione un ejemplo de cada uno. La diferencia radica en si su valor puede ser modificado después de su creación. Los objetos inmutables, como las tuplas (tuple) o las cadenas (str), no pueden cambiarse; cualquier modificación crea un objeto nuevo en memoria. Por el contrario, los objetos mutables, como las listas (list) o los diccionarios (dict), pueden ser alterados en el mismo lugar de la memoria.
7. ¿Qué tipo de dato devuelve siempre la función input() y qué paso es crucial si se necesita trabajar con números obtenidos a través de ella? La función input() siempre devuelve los datos introducidos por el usuario como una cadena de texto (str), incluso si se teclean números. Por lo tanto, es crucial realizar una conversión de tipo explícita usando funciones como int() o float() si se necesita realizar operaciones matemáticas con el valor recibido.
8. Diferencie entre la conversión de tipos implícita y la explícita, explicando cuándo ocurre cada una. La conversión implícita es realizada automáticamente por Python para evitar la pérdida de datos, como cuando se suma un entero (int) y un flotante (float), promoviendo el entero a flotante. La conversión explícita, o "Type Casting", es forzada por el programador usando funciones como int(), str() o float() para cambiar un valor de un tipo a otro según sea necesario.
9. ¿Qué son las f-strings y por qué se consideran el método recomendado para formatear cadenas de texto? Las f-strings son un método moderno para insertar variables y expresiones dentro de una cadena de texto, prefijando la cadena con la letra "f" y colocando las variables entre llaves ({}). Se recomiendan porque ofrecen una sintaxis más legible, elegante y eficiente en comparación con alternativas como el método .format().
10. ¿Cuáles son los tres tipos de errores más comunes que pueden surgir durante el desarrollo de un programa? Los tres tipos de errores más comunes son los errores de sintaxis, que ocurren cuando el código viola las reglas del lenguaje; los errores de ejecución (o excepciones), que suceden cuando el código es sintácticamente correcto pero falla durante su ejecución (ej. división por cero); y los errores lógicos, donde el programa se ejecuta sin fallar pero produce un resultado incorrecto.
--------------------------------------------------------------------------------
Preguntas de Ensayo
1. Discuta la filosofía del "Zen de Python" como se describe en el texto y explique cómo características como el tipado dinámico y la sangría obligatoria apoyan sus principios de simplicidad, claridad y belleza del código.
2. Describa el ciclo de vida completo de un programa secuencial simple en Python, desde la escritura del código hasta su ejecución y análisis. Incorpore los conceptos del modelo IPO, el bytecode, la Máquina Virtual de Python (PVM) y el ciclo iterativo de depuración (Ejecutar -> Analizar -> Corregir).
3. Compare y contraste los tipos de datos mutables e inmutables en Python. Explique las implicaciones prácticas de esta distinción, especialmente en lo que respecta a la asignación de variables y la manipulación de datos, utilizando list y tuple como ejemplos principales.
4. Elabore sobre la importancia de las convenciones de nomenclatura de PEP 8. ¿Por qué es crucial para la legibilidad del código y la colaboración? Proporcione ejemplos específicos del texto para variables, constantes y clases, explicando la lógica detrás de cada convención (snake_case, SNAKE_CASE, CamelCase).
5. Explique el rol y la importancia de los diagramas de flujo en el proceso de programación. Describa al menos cuatro símbolos estándar (Óvalo, Rectángulo, Paralelogramo, Rombo) y vincúlelos con sus conceptos o estructuras de código correspondientes en Python.
--------------------------------------------------------------------------------
Glosario de Términos Clave
Término Definición
Algoritmo Una secuencia de pasos lógicos y ordenados para resolver un problema o realizar una tarea. Los diagramas de flujo son una representación gráfica de un algoritmo.
Asignación Operación que vincula un nombre de variable a un valor en memoria, utilizando el operador igual (=).
Booleano (bool) Tipo de dato fundamental que representa valores lógicos: True (Verdadero) o False (Falso).
Bytecode Formato intermedio al que el intérprete de Python traduce el código fuente. Es más eficiente para ser ejecutado por la Máquina Virtual de Python (PVM).
Cadena (str) Tipo de dato que representa una secuencia inmutable de caracteres utilizada para almacenar texto. Se define con comillas simples, dobles o triples.
Comentarios Líneas de código que son ignoradas por el intérprete. Se utilizan para documentar o explicar el código y en Python comienzan con una almohadilla (#).
Constante Un tipo de variable cuyo valor se espera que no cambie durante la ejecución del programa. Por convención (PEP 8), su nombre se escribe en mayúsculas (SNAKE_CASE).
Conversión de Tipos Operación que permite cambiar el tipo de dato de un valor. Puede ser implícita (automática) o explícita (manual, usando funciones como int()).
Depuración (Debugging) Proceso de encontrar y corregir errores en un programa. Incluye técnicas como el uso de print() o herramientas de depuración (debuggers).
Diagrama de Flujo Representación gráfica de un algoritmo o proceso que utiliza símbolos estándar para mostrar la secuencia lógica de las operaciones.
Diccionario (dict) Colección mutable y ordenada (desde Python 3.7+) de pares clave-valor.
Entero (int) Tipo de dato fundamental que representa números enteros, positivos o negativos, sin parte decimal.
Errores de Ejecución También llamados excepciones, ocurren cuando el código es sintácticamente correcto pero surge un problema durante su ejecución (ej. dividir por cero).
Errores de Sintaxis Errores que ocurren cuando el código viola las reglas gramaticales del lenguaje de programación.
Errores Lógicos Errores en los que el programa se ejecuta sin fallar pero produce un resultado incorrecto debido a una lógica defectuosa en el algoritmo.
Estructura Secuencial El patrón de flujo de control más simple, donde las instrucciones se ejecutan de forma estrictamente lineal y ordenada, de arriba hacia abajo.
f-strings Método moderno y recomendado para formatear cadenas en Python, permitiendo incrustar variables y expresiones directamente dentro de la cadena (f"Hola, {nombre}").
Flotante (float) Tipo de dato fundamental que representa números con parte decimal o exponenciales.
Indentación (Sangría) El uso de espacios en blanco (generalmente 4) al inicio de una línea para definir bloques de código. Es una característica sintáctica crucial en Python.
input() Función que detiene la ejecución del programa para recibir datos del usuario a través del teclado. Siempre devuelve los datos como una cadena (str).
Interpretado (Lenguaje) Un tipo de lenguaje de programación cuyo código se ejecuta directamente, línea por línea, por un intérprete, sin una fase de compilación previa.
Inmutable Característica de un objeto cuyo valor no puede ser modificado después de su creación. Ejemplos: int, float, str, tuple.
IPO (Input, Process, Output) Modelo que describe las tres fases de un programa secuencial: Entrada (obtener datos), Procesamiento (realizar cálculos) y Salida (mostrar resultados).
Keywords Palabras reservadas del lenguaje Python que tienen un significado especial y no pueden ser usadas como nombres de variables (ej. if, for, class).
Lenguaje de Alto Nivel Un lenguaje de programación cuyo código se asemeja al lenguaje humano, facilitando su aprendizaje y comprensión.
Lista (list) Colección ordenada y mutable de elementos, que pueden ser de diferentes tipos. Es una de las estructuras de datos más flexibles de Python.
Mutable Característica de un objeto cuyo valor puede ser modificado "in situ" (en el mismo lugar de la memoria) después de su creación. Ejemplos: list, dict, set.
Operadores Símbolos o palabras clave que realizan operaciones específicas (aritméticas, de comparación, lógicas) sobre valores y variables.
PEP 8 El documento oficial de guía de estilo para el código Python (Python Enhancement Proposal 8), que define las convenciones de nomenclatura y formato.
print() Función fundamental para mostrar datos o resultados en la consola o terminal del usuario.
Python Lenguaje de programación de alto nivel, interpretado y de propósito general, creado por Guido van Rossum.
PVM (Python Virtual Machine) La Máquina Virtual de Python, que es la encargada de ejecutar el bytecode generado por el intérprete.
snake_case La convención de nomenclatura recomendada por PEP 8 para variables y funciones, que consiste en usar letras minúsculas con palabras separadas por guiones bajos.
Tipado Dinámico Característica de Python donde no es necesario declarar el tipo de una variable antes de asignarle un valor; el tipo se infiere automáticamente.
Tupla (tuple) Colección ordenada e inmutable de elementos. Una vez creada, no se puede modificar.
Variable Un nombre que se utiliza para referirse a un valor almacenado en la memoria del ordenador.
Zen de Python La filosofía que rige el diseño de Python, priorizando la simplicidad, la claridad y la belleza del código.