Indicación metodológica de lectura fundamental para el estudiante
Bienvenidos a la recta final del curso. Nos quedan exactamente tres clases para culminar este proceso. Si usted ha llegado hasta la Clase 12, ha demostrado que su capacidad intelectual y su disciplina son superiores a las barreras que el mundo o usted mismo se han impuesto. Pero escúcheme bien: a partir de este momento, el nivel de exigencia se multiplica. Ya no estamos aprendiendo a gatear; estamos aprendiendo a construir el motor del vehículo.
Hoy no veremos uno o dos temas, veremos cuatro conceptos pilares simultáneamente. El volumen de información, la cantidad de ejercicios y la complejidad de la lógica se van a triplicar. Usted pasará de escribir "scripts" (archivos que se leen de arriba hacia abajo) a diseñar "sistemas modulares" (bloques de código independientes que se comunican entre sí). Prepare su lector de pantalla, preste atención a cada signo de puntuación (paréntesis, corchetes y llaves tienen significados totalmente distintos hoy) y lea todo este documento antes de intentar escribir una sola línea.
Datos Curiosos y Utilitarios de Python (Cultura de Ingeniería)
Para ser un programador respetado, usted debe conocer el terreno que pisa. Aquí tiene tres datos técnicos que le darán una ventaja en su comprensión del lenguaje:
1. La filosofía oculta en su computadora: Si usted abre su consola CMD, entra al intérprete escribiendo `python` y presiona Enter, y luego escribe el comando `import this` y presiona Enter, el lenguaje le revelará un poema oculto llamado "El Zen de Python". Son 19 reglas de diseño escritas por Tim Peters, como por ejemplo: "Lo simple es mejor que lo complejo" y "La legibilidad cuenta". Los profesionales leen esto para recordar cómo estructurar su mente.
2. La regla de oro de Google: En sus inicios, Google adoptó una directriz arquitectónica famosa: "Python donde podamos, C++ donde debamos". Esto significa que Python se usa para desarrollar rápido, probar ideas y conectar sistemas complejos (por su legibilidad y rapidez de creación), pero cuando se requiere velocidad de procesamiento extrema a nivel de hardware, se integran lenguajes compilados. Usted está aprendiendo el idioma del desarrollo rápido.
3. El rey de la Ciberseguridad: Python es el lenguaje número uno en el mundo para el hacking ético y la seguridad informática. Sus librerías permiten automatizar escaneos de redes y descifrar contraseñas en pocas líneas de código. Lo que usted está aprendiendo hoy es la misma herramienta que usan los analistas de seguridad para proteger o vulnerar sistemas globales.
Explicaciones Detalladas: Los Cuatro Pilares de Hoy
Tema 1: Funciones Personalizadas (def)
Hasta hoy, hemos usado funciones creadas por otros (como `print()` o `len()`). Ahora crearemos las nuestras usando la palabra reservada `def` (definir). Una función es un bloque de código encapsulado al que le ponemos un nombre. No se ejecuta hasta que nosotros lo "llamamos".
*Sintaxis:*
```python
def saludar(nombre):
print("Hola,", nombre)
```
Ese bloque no hace nada por sí solo. Para que funcione, más abajo en el código escribimos: `saludar("Diego")`. Esto evita repetir código cien veces.
Tema 2: Diccionarios (El mapeo de datos)
Las listas usan índices numéricos (0, 1, 2) y se declaran con corchetes `[]`. Los Diccionarios usan "Llaves" o "Claves" de texto y se declaran con símbolos de llaves `{}`. Son como la base de datos de un contacto en su teléfono.
*Sintaxis:*
```python
usuario = {"nombre": "Juan", "edad": 30, "rol": "admin"}
```
Para imprimir el nombre, usted no pide la posición cero; usted pide la clave: `print(usuario["nombre"])`.
Tema 3: Tuplas (Las listas de hierro)
Una tupla es exactamente igual a una lista, pero con dos diferencias: se declara con paréntesis `()` y es absolutamente inmutable. Una vez creada, usted no puede usar `.append()`, ni `.pop()`, ni `.remove()`.
¿Para qué sirve? Por seguridad. Si usted tiene datos que el programa jamás debe alterar por accidente (como los meses del año o las coordenadas de un servidor), los guarda en una tupla.
Tema 4: Modularidad Básica
La combinación de Funciones y Diccionarios nos permite separar nuestro código. El bloque principal ya no tiene toda la lógica revuelta. En la parte superior del archivo ponemos nuestras herramientas (funciones) y en la parte inferior construimos nuestro programa llamando a esas herramientas.
Vocabulario Técnico Obligatorio
Investigue y defina en su archivo `Tarea_Doce.txt`:
1. Def (Define): Palabra reservada para crear funciones.
2. Parámetro: La variable que una función espera recibir entre sus paréntesis.
3. Argumento: El valor real que le enviamos a la función cuando la llamamos.
4. Return: El comando que hace que una función nos devuelva un valor en lugar de solo imprimirlo.
5. Clave-Valor (Key-Value): La estructura base de los diccionarios.
6. Diccionario: Estructura de datos no ordenada, mutable, que utiliza llaves `{}`.
7. Tupla: Colección ordenada e inmutable de datos, usa paréntesis `()`.
8. Alcance (Scope): El lugar donde una variable existe (una variable creada dentro de una función muere cuando la función termina).
9. Modularidad: La práctica de dividir un programa grande en piezas pequeñas independientes.
10. Refactorización: El proceso de reescribir código para hacerlo más limpio sin cambiar lo que hace.
Desafío Mental Técnico: El Enigma del Criptógrafo
Metodología: Este ejercicio combina funciones y diccionarios en su mente. Requiere abstracción pura.
Instrucciones: Siga la lógica mental sin escribir código.
1. Usted crea una función llamada `verificar_acceso(usuario_id)` que recibe un número.
2. Dentro de la función, hay un diccionario: `base_datos = {101: "Permitido", 202: "Denegado", 303: "Permitido"}`.
3. La función revisa el diccionario. Si el usuario existe y su valor es "Permitido", devuelve (return) `True`. Si no existe o es denegado, devuelve `False`.
4. En el código principal, usted tiene una tupla de intentos: `intentos = (202, 101, 999)`.
5. Usted hace un ciclo `for` que recorre la tupla `intentos` y, por cada número, llama a la función `verificar_acceso()`.
El Reto: Si el programa imprime el resultado de la función por cada vuelta del ciclo `for`, ¿cuál será la salida exacta, línea por línea, en la consola? Explique el flujo de los datos desde la tupla, pasando por el parámetro de la función, hasta consultar el diccionario.
Ejemplo Práctico Guiado: El Sistema de Contactos Modular
Paso Uno: Digite este código escuchando atentamente la diferencia entre paréntesis, corchetes y llaves.
```python
# Zona de Funciones
def mostrar_perfil(contacto):
print("El perfil pertenece a:", contacto["nombre"])
print("Su correo de contacto es:", contacto["email"])
# Zona de Programa Principal
# Creamos un diccionario
usuario_activo = {"nombre": "Laura", "email": "laura@correo.com", "edad": 28}
print("Iniciando sistema...")
mostrar_perfil(usuario_activo) # Llamada a la función pasando el diccionario
print("Sistema finalizado.")
```
Paso Dos: Analice cómo el diccionario `usuario_activo` viaja hacia la función y es recibido con el nombre temporal de `contacto`. Guárdelo como `sistema.py` y ejecútelo.
Ejercicios de Refuerzo de Lógica (Algoritmos)
En su archivo `Algoritmos_Capitulo_12.txt`, diseñe la lógica en texto plano para:
1. Una función que reciba dos números, los sume y devuelva el resultado para ser guardado en una variable externa.
2. Un diccionario que represente un libro (título, autor, año) y cómo accedería al año de publicación.
3. El uso de un `try-except` al intentar buscar una "clave" que no existe dentro de un diccionario.
4. Un ciclo `for` diseñado para recorrer una tupla con los días de la semana.
5. El algoritmo de un programa donde un menú inicial llame a 3 funciones diferentes (Sumar, Restar, Salir) dependiendo de lo que elija el usuario.
Ejercicios Prácticos de Programación en Python
Para su carpeta `Capitulo 12`, cree los siguientes programas:
Ejercicio 1: La función multiplicadora.
Cree una función `def multiplicar(a, b):` que retorne el resultado. Llame a la función tres veces con diferentes números e imprima los resultados.
Ejercicio 2: El inventario por llaves.
Cree un diccionario llamado `inventario` con 3 productos (por ejemplo: `{"manzanas": 10, "peras": 5}`). Pida al usuario el nombre de una fruta y muestre cuántas hay, buscando por la clave del diccionario.
Ejercicio 3: La tupla inquebrantable.
Cree una tupla con las vocales `("a", "e", "i", "o", "u")`. Pida una letra al usuario y verifique, usando un ciclo `for` y un `if`, si esa letra existe dentro de la tupla.
Ejercicio 4: Función con Listas.
Cree una función llamada `analizar_lista(lista)` que reciba una lista de números, calcule cuántos elementos tiene usando `len()`, y los imprima uno por uno. Pásela a prueba con dos listas diferentes.
Ejercicio 5: El sistema integrado.
Combine los tres temas: Cree un diccionario de configuración de sistema `{"tema": "oscuro", "volumen": 80, "idioma": "es"}`. Cree una función `def leer_configuracion(clave):` que reciba una palabra, busque en el diccionario y maneje un `try-except KeyError` si la palabra no existe.
Prácticas con tu Lector de Pantalla JAWS y NVDA y CMD
Adapte sus respuestas a su lector de pantalla sin importar que lector de pantalla utilice .
Responda en `Tarea_Doce.txt`:
1. ¿Cómo pronuncia JAWS exactamente las llaves de apertura `{` y cierre `}` de los diccionarios? ¿Es fácil confundirlo con los corchetes?
2. Usando los comandos de JAWS en español, presione `Insert + Flecha Abajo` para leer su código completo de forma continua. ¿Es capaz de identificar mentalmente dónde termina una función y empieza el programa principal solo por el salto en la sangría?
3. En un diccionario, se usa el símbolo de dos puntos `:` para separar la Clave del Valor. ¿Tiene su lector configurado para verbalizar este signo vital?
4. Si intenta añadir un dato a una tupla, la consola CMD arrojará un `TypeError`. ¿Cómo rastrea con el lector de pantalla en qué línea se causó esa violación de inmutabilidad?
5. Las funciones usan la palabra `return`. ¿Cómo deletrea su lector esta palabra reservada fundamental?
6. Al presionar `Flecha Derecha` carácter por carácter, ¿cómo distingue su lector de pantalla entre `()` de los parámetros de una función y los `{}` de un diccionario si están en la misma línea?
7. Explique por qué el comando `cls` en CMD es obligatorio moralmente antes de probar un programa que ahora incluye tantas funciones complejas.
8. ¿Qué comando de revisión de línea de su lector utiliza para confirmar que un bloque interno tiene exactamente la doble tabulación requerida bajo un `if` dentro de una función?
9. ¿Cómo organiza mentalmente la lectura de un bloque de código sabiendo que las funciones que están arriba no se ejecutan hasta que son llamadas al final del documento?
10. Evalúe su fatiga auditiva: Al triplicar el código y las estructuras hoy, ¿qué estrategia usó con su lector para no abrumarse con la cantidad de signos y comandos de bloque?
Información Institucional sobre la Evaluación
Si ha logrado terminar y comprender esta clase, usted está programando de verdad. Ya no somos repetidores de comandos; somos arquitectos de información. La modularidad es la clave de los grandes sistemas del mundo real. Repase las diferencias estrictas entre Listas, Tuplas y Diccionarios, porque si usted usa el contenedor equivocado para los datos en un entorno profesional, el costo computacional puede ser catastrófico. Su disciplina nos está acercando a la meta. Guarde todos sus archivos de forma rigurosa. Nos vemos la próxima clase.
Profesor: Diego R. Solano C.