Created in Canva
PORTAFOLIO DE PROGRAMACIÓN II Estudiante: Natalia Taylor Cédula: 1-762-623 Curso: Programación II Tutor: Jose Callender Universidad: UTP | Bocas del Toro Periodo Académico: 2 año | primer semestre
INTRODUCCIÓN Este portafolio reúne todo lo trabajado durante el curso de Programación II, organizado por módulos, actividades, proyectos y evaluaciones, para mostrar paso a paso todo lo que se vio y se puso en práctica. Al inicio se conoció el lenguaje Python: su origen, características, ventajas y desventajas, además de cómo preparar el equipo y configurar el entorno para empezar a trabajar. Luego se desarrolló el primer laboratorio con programas básicos e interactivos, y se presentó la exposición sobre la situación de los ciberataques en Panamá, para después realizar el primer parcial. En el Módulo II se profundizó en cómo se guarda y procesa la información: se vieron las variables, reglas para nombrarlas, entrada y salida de datos, tipos de datos como números, textos y valores lógicos, además de estructuras como listas, tuplas y diccionarios. También se revisaron todos los tipos de operadores, la forma de convertir datos, el control de flujo con condicionales y bucles, y el manejo de errores. Todo esto se aplicó en proyectos y ejercicios prácticos, y al finalizar se realizó el segundo parcial. En el Módulo III se conocieron las distintas formas de organizar el código: la programación estructurada y el uso de funciones, y luego la programación orientada a objetos con sus principios de encapsulamiento, abstracción, herencia y polimorfismo. Se profundizó en diccionarios, manejo de archivos y funciones avanzadas, y se desarrollaron ejercicios divididos en tres niveles de dificultad, terminando con el proyecto integrador del Centro de Operaciones de Seguridad. Por último se realizó el tercer parcial que cubrió todo lo visto en este módulo. Todo lo que aquí se presenta muestra cómo se fue avanzando desde lo más básico hasta armar sistemas completos, uniendo la teoría con la práctica y relacionándolo siempre con lo que se necesita para la carrera de Ciberseguridad.
Módulo I : Introducción al Lenguaje Empezamos con este primer módulo, que sirve para conocer lo básico de Python y saber cómo preparar todo para empezar a hacer nuestros propios programas. Lo primero que vimos fue qué es Python y en qué se usa: el profesor nos dijo que es un lenguaje de programación muy conocido, que sirve para muchas cosas: hacer páginas web, crear programas, trabajar con datos, e incluso para inteligencia artificial. Después vimos su historia y cómo fue evolucionando: lo creó Guido Van Rossum, un programador holandés, allá por 1989, como un proyecto para no aburrirse en las vacaciones. El nombre lo sacó de un programa de televisión que le gustaba mucho. Luego fuimos viendo sus versiones: la primera salió en 1994, la segunda en el 2000, y ahora usamos la versión 3 que salió en el 2008, que tiene cambios importantes como que ya hay que usar print() como función, y al dividir números enteros sale resultado con decimales. Seguimos con sus características, ventajas y desventajas: aprendimos que es fácil de leer, funciona en cualquier computadora y tiene muchas herramientas ya hechas, pero también que es un poquito más lento que otros lenguajes y no sirve para todo tipo de proyectos. Por último, vimos cómo instalarlo y configurar el entorno: primero descargamos Python de su página oficial, lo instalamos y comprobamos que quedara bien. Después instalamos el programa Visual Studio Code, y le pusimos la extensión oficial de Python para poder escribir y probar nuestros códigos ahí sin problemas.
Luego creamos nuestro primer programa: abrimos Visual Studio Code, hicimos un archivo nuevo llamado inicio.py y escribimos el código para que saliera el mensaje de bienvenida al laboratorio. Laboratorio N°1: Programas interactivos básicos y operaciones en Python Empezamos con este primer laboratorio, donde el profesor primero nos explicó lo básico que necesitábamos saber antes de empezar a practicar: aprendimos qué son las variables para guardar información, cómo usar print() para mostrar cosas en pantalla, input() para que nosotros mismos escribamos datos, cómo convertir lo que ingresamos a números para hacer cuentas, y cómo hacer sumas y restas sencillas. Ya con eso claro, empezamos a hacer las actividades una por una: Después modificamos ese programa para que fuera interactivo: le agregamos la función input() para que nos pidiera nuestro nombre, y al escribirlo el programa nos saludaba por nuestro nombre. Primero hicimos la verificación del entorno: abrimos la consola, escribimos el comando python --version y comprobamos que ya teníamos instalado Python 3.11.9 en la computadora.
Seguimos con las operaciones básicas: hicimos que el programa nos pidiera dos números, calculamos la suma y la resta de ambos, y mostramos los resultados en pantalla. Más adelante hicimos una simulación de sistema de acceso: pusimos un título al programa, pedimos el nombre y la edad, saludamos al usuario y calculamos cuántos años tendría dentro de 5 Luego hicimos el mini proyecto del perfil del estudiante: pedimos nombre, edad, ciudad y carrera, mostramos todo organizado, calculamos la edad en 5 años y le pusimos líneas para que se viera más ordenado.
Por último hicimos los retos: elegí corregir errores de un código que no funcionaba, porque me sirvió para aprender a leer los mensajes de error y arreglar detalles como comas faltantes; también mejoré el programa del perfil agregando más datos como cédula, correo y universidad, y pude practicar cómo presentar la información de forma clara y segura. Luego de terminar toda estas actividades que se nos dejo procedimos a subirlo a la plataforma para su calificación lunes, 23 de marzo al martes, 31 de marzo de 2026, Actividad N°1: Exposicion_Noticia_Ciberseguridad también hicimos la exposición sobre la noticia de los ciberataques en Panamá para este año 2026. En la presentación contamos que los ataques han aumentado muchísimo: van un 25% más que el año pasado, y en promedio cada institución recibe como 2.600 intentos por semana. El profesor nos comentó que ahora se usa mucho la inteligencia artificial para atacar, lo que hace que todo sea más difícil de detectar. Mencionamos los casos que han pasado recientemente: en marzo la Caja de Seguro Social tuvo un ataque por una falla en sus servidores y se llevaron unos 3 terabytes de información, entre historiales médicos y firmas digitales. Luego en abril le tocó a la plataforma Panamá Emprende, donde entraron usando claves que ya estaban comprometidas, y están revisando si fue falla del sistema o mal uso de los accesos. También contamos que en septiembre del año pasado al Ministerio de Economía y Finanzas le metieron un virus por un archivo adjunto, pero por suerte pudieron detenerlo a tiempo y no afectó las cuentas principales.
Explicamos también cómo están atacando ahora: usan la inteligencia artificial para hacer correos y mensajes que parecen totalmente reales, revisan miles de sistemas en muy poco tiempo buscando fallas, y hasta crean identidades falsas para engañar los controles de seguridad. Por último hablamos de lo que está haciendo el Gobierno: decidieron no pagar rescates, reforzaron el equipo que atiende estos incidentes y crearon un centro nuevo que vigila las redes todo el tiempo. PARCIAL N°1: Modulo I lunes, 20 de abril al martes, al lunes 27 de abril del 2026 hicimos el primer parcial de la materia. En esta evaluación nos midieron todo lo que habíamos visto hasta el momento: desde lo básico de Python, cómo preparar el entorno de trabajo, hasta lo que practicamos en el laboratorio.
Después se vieron las operaciones de entrada y salida Se explicó cómo el programa recibe datos y cómo los muestra: Entrada: con la función input() se le pide al usuario que escriba algo desde el teclado; todo lo que ingresa llega siempre como texto. Salida: con la función print() se muestra en pantalla cualquier mensaje, valor o resultado que se necesite. Módulo II : Estructuras e Instrucciones Básicas en Python Primero se vio qué son las variables y cómo nombrarlas Las variables son espacios donde se guarda cualquier dato que se necesite usar después. En Python no hay que declararlas antes ni decir qué tipo de dato van a tener: simplemente se les pone un nombre y se les asigna un valor, e incluso se puede cambiar ese valor o su tipo cuando se quiera. También se aprendieron las reglas para escribir sus nombres: no pueden empezar con números, solo aceptan letras, números y guion bajo, y distinguen entre mayúsculas y minúsculas.
Luego se vieron los tipos de datos Se revisaron todos los tipos principales: los numéricos (enteros y con decimales), las cadenas de texto, los valores lógicos que solo pueden ser verdadero o falso, Entre otros Proyecto N°1: Al terminar hicimos nuestro primer proyecto : consistió en Crear un archivo de python con el nombre testl.py realizar comentarios, al menos 2 formas de escribir comentarios en python. Crear 4 variables cumpliendo el estándar correcto de Nombres de variables, -2 variables de manera correcta -2 variables de manera incorrecta, comentar las 2 variables incorrectas. Mostrar por pantalla las variables que son correctas en cuanto al buen uso de los Nombres de variables (hacer uso de la función de salida de datos print()). obtener el nombre y la edad de una persona ingresando por teclado los datos, - hacer uso de la función de entrada de datos input() - mostrar en pantalla los datos ingresados - uso de la función de salida de datos print().
Cadenas de texto: sirven para guardar letras, palabras o frases, y se escriben entre comillas simples o dobles. Se vio que funcionan como una lista de caracteres, donde la primera letra está en la posición cero. Con ellas se pueden hacer varias cosas: usar la función len() para saber cuántos caracteres tiene usar el recorte o slicing para tomar solo una parte de la frase; usar las palabras clave in y not in para revisar si una letra o palabra está o no dentro del texto; también se empezó a ver cómo usarlas junto con condicionales y bucles. Numéricos: se vio primero los enteros, que son números sin parte decimal; luego los flotantes, que sí llevan decimales; también se mencionaron los números complejos. Booleanos: solo pueden tomar dos valores: True (verdadero) o False (falso), y sirven para saber si una condición se cumple o no.
luego de ver los tipos de datos hicimos nuestro segundo proyecto : consistió en Crear un archivo de python con el nombre test2.py crear una variable de texto frase = "Las mejores cosas de la vida son gratis" y que muestre por pantalla la longitud de la cadena. Utilice la función len(). Con la misma variable frase, mostrar por pantalla las primeras 3 letras de la cadena. Utilizar slicing. Con la misma variable frase, comprobar si la palabra "vida "está presente en la variable "frase" utilice la palabra clave in. utilizar el bucle for para recorrer los caracteres de la variable frase. Utilizar la condicional if y compruebe que la palabra "mejores" se encuentre en la variable frase, si es verdadero entonces debe imprimir un mensaje. Proyecto N°2 Recién después se vieron las listas: Que estas sirven para guardar varios elementos juntos entre corchetes; están ordenadas, permiten datos repetidos y se pueden modificar cuando se quiera. Se vio cómo cambiar un elemento por su posición listaFrutas = ["banana", "mango", "coco"] print(listaFrutas) agregar al final con append() en un lugar exacto con insert() listaFrutas = ["banana", "mango", "coco"] listaFrutas[0] = "papaya" print(listaFrutas) frutas = ["manzana", "banano", "pera"] frutas.append("naranja") print(frutas) borrar con remove() o pop() ordenarlas con sort() listaFrutas = ["banana", "mango", "coco"] listaFrutas.insert(3, "sandia") print(listaFrutas) frutas = ["manzana", "banano", "pera", "sandia"] frutas.remove("banano") print(frutas) frutas = ["manzana", "banano", "pera", "sandia"] frutas.pop(1) print(frutas) copiarlas con copy(). frutas = ["manzana", "banano", "pera", "sandia"] frutas.sort() print(frutas) alfabeto = ["z", "h", "a", "b", "c"] listaDos = alfabeto.copy() print(listaDos)
Al ver las lista procedimos hacer nuestro tercer proyecto : Consistia en : Escribir un programa que almacene las asignaturas de un curso ( por ejemplo Matemáticas, Físi ca, Química, Historia y Lengua) en una lista y la muestre por pantalla. Insertar después de la materia química y antes de historia una nueva materia que se llamará "programación". Eliminar la materia mátematicas. Después se vieron las tuplas y los diccionarios: las tuplas se escriben entre paréntesis, son parecidas a las listas pero una vez creadas no se les puede cambiar nada; Proyecto N°3: los diccionarios guardan la información entre llaves, en pares de clave y valor, de forma que se puede acceder, ver todas las claves o valores, modificar, agregar y borrar lo que se necesite.
Al ver las las tuplas y diccionarios procedimos hacer nuestro cuarto proyecto : Consistia en : Escribir un programa que almacene las asignaturas datos en un diccionario, que se pueda, añadir un elemento, actualizar el elemento y eliminar el elmento. iterar el elmento y cuando llegue al item 2 actualice un nuevo valor. Añada un nuevo elmento color: "rojo" Elimine el color rojo También se vio la conversión de datos: Proyecto N°4: Se explicó que toda la información que se ingresa en un programa se recibe inicialmente como texto, por lo que, si se desea realizar operaciones matemáticas o trabajar con otros tipos de datos, es necesario convertirla. Para ello, se utilizan funciones como: Texto Entero Decimal Convierte cualquier dato o número a texto. Convierte texto a número entero (sin decimales). Convierte texto a número con decimales. FUNCIÓN SÍMBOLO ¿PARA QUÉ SIRVE? EJEMPLO int() str() float() int("10") → 10 float("10.5") → 10.5 str(100) → "100" Luego se vieron todos los tipos de operadores:
De asignación: sirven para dar valor a una variable o cambiarlo. Aritméticos: para hacer cálculos: Dividir y guardar Sumar y guardar Restar y guardar Asignación simple Multiplicar y guardar Guarda un valor en la variable. Divide lo que tenía entre un valor. Le resta un valor a lo que ya tenía. Multiplica lo que tenía por un valor. Le suma un valor a lo que ya tenía. (x vale 5) (x vale 8) (x vale 6) (x vale 12) (x vale 3.0) OPERADOR SÍMBOLO ¿PARA QUÉ SIRVE? EJEMPLO PRÁCTICO = += -= *= /= x = 5 x += 3 x -= 2 x *= 2 x /= 4
Lógicos: para revisar condiciones: and si deben cumplirse dos cosas a la vez, or si basta con que se cumpla una, y not para decir lo contrario. Y lógico O lógico N egación Da verdadero solo si todas las condiciones se cumplen. Da verdadero si se cumple al menos una condición. Invierte el valor (verdadero a falso y viceversa). OPERADOR SÍMBOLO ¿PARA QUÉ SIRVE? EJEMPLO or and not tengo_edad and tengo_id pago_efectivo or pago_tarjeta not esta_lloviendo Suma Resta División Potencia Multiplicación Resto (Módulo) Resta dos valores. Suma dos valores. Multiplica dos valores. Eleva un número a un exponente. Devuelve el residuo/sobrante de una división. Divide y devuelve un número decimal. OPERADOR SÍMBOLO ¿PARA QUÉ SIRVE? EJEMPLO + - * / % ** 10 % 3 → 1 2 ** 3 → 8 5 + 3 → 8 10 - 4 → 6 4 * 3 → 12 10 / 2 → 5.0
Se realizaron ejercicios prácticos en los que se aplicaron los conocimientos aprendidos mediante ejemplos reales, como el cálculo del promedio de tres notas, la creación de una calculadora de propinas y la verificación del cumplimiento de ciertos requisitos utilizando condiciones. Ejercicios Practicos
Luego se vio el control de flujo El control de flujo permite determinar el orden en el que un programa ejecuta sus instrucciones. Gracias a estas estructuras, un programa puede tomar decisiones, repetir procesos y reaccionar ante determinadas situaciones. Entre las estructuras estudiadas se encuentran: Sentencias condicionales Las sentencias condicionales permiten que el programa tome decisiones basándose en ciertas condiciones. Las principales estructuras vistas fueron: if: ejecuta un bloque de código únicamente cuando la condición es verdadera.
if - else: permite ejecutar una acción si la condición es verdadera y otra diferente si es falsa. Estas estructuras son ampliamente utilizadas para validar información y determinar qué acción debe realizar el programa en cada situación. Por ejemplo, pueden emplearse para permitir o denegar el acceso a un sistema dependiendo de las credenciales ingresadas por el usuario. if - elif - else: se utiliza cuando existen varias condiciones posibles y el programa debe evaluar cuál de ellas se cumple. Tambien vimos sobre los bucles Los bucles son estructuras que permiten repetir instrucciones de forma automática, evitando escribir el mismo código varias veces.
Bucle FOR El ciclo for es utilizado cuando se conoce la cantidad de veces que una tarea debe repetirse. Es especialmente útil para recorrer listas, mostrar información almacenada o realizar conteos. Bucle WHILE El ciclo while ejecuta instrucciones mientras una condición permanezca verdadera. Es ideal para situaciones donde no se conoce previamente el número exacto de repeticiones. También se estudiaron funciones como:
También se estudiaron funciones como: enumerate(), que permite obtener simultáneamente el índice y el valor de un elemento. zip(), utilizada para recorrer varias listas al mismo tiempo. Bucles anidados, que permiten colocar un ciclo dentro de otro para trabajar con estructuras más complejas.
Laboratorio N°2: Sistema Seguro de Autenticación y Procesamiento de Datos Empezamos con este segundo laboratorio, Primero desarrollamos la Parte 1: creamos un programa que valida usuario y contraseña usando una tupla para que las credenciales no se puedan modificar, permitimos hasta 3 intentos de acceso, luego pedimos un número y realizamos operaciones de suma, resta, multiplicación y división. Todo lo hicimos con manejo de errores para que el programa no se detenga si algo sale mal, y al terminar lo expusimos en clase. Luego hicimos la Parte 2: ampliamos ese mismo programa sin quitar nada de lo que ya funcionaba. Agregamos un segundo acceso para administrador, creamos listas para llevar el historial de accesos exitosos, fallidos, errores y operaciones realizadas, e hicimos excepciones personalizadas para detectar cosas como cuando se ingresa texto en lugar de número o cuando se intenta dividir entre cero. Al entrar como administrador se pueden ver todos los reportes completos del sistema. Informe Final
try: permite colocar el código que podría generar un error. except: se ejecuta cuando ocurre una excepción y permite manejar el error de forma controlada finally: contiene instrucciones que se ejecutarán siempre, independientemente de que haya ocurrido un error o no. raise:permite generar una excepción de manera intencional cuando sea necesario. Además, se aprendió la diferencia entre un error de sintaxis y una excepción, así como la importancia de capturar errores específicos para mejorar la confiabilidad del programa. Mediante ejemplos prácticos, como la división entre cero, se pudo observar cómo un programa puede continuar funcionando correctamente aun cuando se presenta una situación inesperada. Finalmente, se abordó el manejo de errores y excepciones, uno de los temas más importantes para desarrollar programas robustos y seguros. Se explicó que una excepción es un problema que ocurre durante la ejecución del programa y que, si no es controlado, puede provocar que este se detenga inesperadamente. Para evitarlo, Python proporciona herramientas como: También realizamos la Investigación sobre Errores y Excepciones Primero se explicó la diferencia: un error ocurre antes de que el programa se ejecute o por fallos en la lógica, mientras que una excepción aparece mientras corre el programa por situaciones inesperadas. Luego se investigaron y describieron 15 tipos de excepciones que trae Python, como cuando se intenta dividir entre cero, se usa una variable que no existe, se ingresa texto en lugar de número, se busca una posición que no hay en una lista, entre otras. Para cada una se explicó cuándo sucede, qué significa y se puso un ejemplo de código. Actividad N°2: Investigación (Errores y Excepciones)
Módulo III: Programación Estructurada, Funciones, Diccionarios y Archivos En este módulo se vio que Python es un lenguaje que permite usar diferentes formas de organizar el código, según lo que se necesite hacer. Los paradigmas son esos estilos o modelos para estructurar los programas y que sean más fáciles de hacer, de arreglar y de volver a usar. Primero se vio la Programación Estructurada: organiza todo en pasos ordenados, usando entrada y salida de datos, condicionales para tomar decisiones y bucles para repetir acciones. También se vio cómo hacer funciones propias: son bloques de código que sirven para hacer una tarea en específico y se pueden usar cuantas veces se quiera sin volver a escribir todo. Se aprendió que pueden devolver un resultado o no, que pueden recibir datos obligatorios o con valores por defecto, y cómo llamarlas de distintas formas. Luego se pasó a la Programación Orientada a Objetos: aquí se organiza todo en clases y objetos. Una clase es como un molde que define qué características y qué acciones tendrá algo; un objeto es lo que sale de ese molde, con sus propios valores. También se vieron los cuatro principios básicos: Encapsulamiento: se guardan los datos importantes y solo se muestra lo necesario. Abstracción: se enfoca en qué hace algo sin entrar en detalles complicados de cómo lo hace. Herencia: una clase puede tomar características y acciones de otra ya hecha. Polimorfismo: cosas distintas pueden responder a una misma instrucción de forma diferente PARCIAL N°2: Modulo II En esta evaluación se midió todo lo visto en ese módulo: desde variables, tipos de datos, cadenas y operaciones de entrada y salida, hasta listas, tuplas, diccionarios, conversión de datos y todos los tipos de operadores. También entró el control de flujo con condicionales y bucles, el manejo de errores, y todo lo aplicado en los proyectos y ejercicios prácticos que se hicieron. Se comprobó que se maneja bien la información y que se puede armar código ordenado y funcional.
Después realizamos el proyecto de la Clínica Digital, donde aplicamos los conocimientos aprendidos sobre Programación Orientada a Objetos mediante el desarrollo de un sistema de gestión para una clínica. Elegimos este paradigma porque permite representar elementos del mundo real utilizando clases y objetos, logrando una estructura más organizada, clara y sencilla de ampliar. Para comenzar, se creó la clase base Persona, donde se almacenaron los datos que tienen en común los médicos y los pacientes, como el nombre y el apellido. A partir de esta clase se generaron las clases hijas: Paciente, que incorpora información adicional como la edad, y Médico, que incluye datos como la especialidad. Además, se desarrollaron las clases Cita y Consulta para registrar y administrar la información relacionada con la atención médica. El sistema cuenta con un menú principal que permite acceder a diferentes funciones según el tipo de usuario. Desde el área de paciente es posible registrar personas, programar citas y guardar consultas, mientras que desde el área médica, protegida mediante usuario y contraseña, se pueden visualizar los pacientes registrados, revisar la agenda y consultar los expedientes. Durante el desarrollo se aplicó principalmente el concepto de herencia, lo que permitió reutilizar código, evitar repeticiones y mantener una mejor organización del programa. Al finalizar el proyecto, se comprobó que la Programación Orientada a Objetos facilita la creación de sistemas más ordenados y escalables, aunque actualmente la información almacenada solo permanece disponible mientras el programa está en ejecución. Laboratorio N°3: Sistema Seguro de Autenticación y Procesamiento de Datos
En esta parte del módulo se profundizó en la programación estructurada, el uso de funciones, el manejo de diccionarios y la lectura y escritura de archivos. Primero se repasó la programación estructurada: se explicó que todo programa se organiza combinando solo tres estructuras básicas: secuencia, donde las instrucciones van una después de otra; selección, para tomar decisiones según una condición; y repetición, para ejecutar acciones varias veces. Se vio que con esto el código queda más claro, con menos errores y más fácil de mantener. Luego se vieron las funciones definidas por el usuario: son bloques de código que hacen una tarea específica y se pueden usar cuantas veces se quiera sin volver a escribir todo. Se explicó cómo crearlas con la palabra def, que pueden recibir datos o no, que pueden devolver un resultado con return o no hacerlo. También se conocieron distintos tipos: funciones sin parámetros, con parámetros, recursivas que se llaman a sí mismas, de orden superior que reciben otras funciones, y las funciones lambda que se escriben en una sola línea para operaciones sencillas. Además se repasaron las funciones que ya trae Python de fábrica, como len(), max(), min() y sum(). Después se vieron los diccionarios: sirven para guardar información organizada en pares de clave y valor. Se aprendió cómo crearlos, acceder a sus datos de forma segura con get(), comprobar si una clave existe, agregar, modificar o borrar información, y usar métodos como keys(), values() e items() para ver todo lo que tienen. Por último se vio el manejo de archivos: se explicó cómo abrir archivos de texto en modo lectura, escritura o para agregar información al final sin borrar lo que ya hay. Se mostró la forma correcta de hacerlo con la instrucción with, que se encarga de cerrar el archivo automáticamente y evita errores o pérdida de datos. Módulo III: Paradigmas de la Programación en Python
Practicas Realizadas Práctica 1: Calcular el promedio de un estudiante Se pidió ingresar tres notas, convertirlas a números decimales, calcular el promedio dividiendo la suma entre tres y mostrar si el estudiante aprobó o reprobó según si el resultado era mayor o igual a 71. Práctica 2: Sumar dos números usando funciones Se creó una función llamada sumar que recibe dos valores y devuelve su resultado. Luego se pidieron los datos al usuario, se llamó a la función y se mostró la suma obtenida.
Práctica 3: Registro básico de estudiante Se armó un diccionario con los datos de nombre, edad y carrera, y se mostró cada uno de los valores accediendo por su clave correspondiente. Práctica 4: Guardar nombres en un archivo Se pidió un nombre, se abrió un archivo en modo para agregar información, se guardó el nombre y luego se volvió a abrir para leer y confirmar que había quedado guardado correctamente. Práctica 5: Clase Estudiante Como repaso de lo visto antes sobre orientación a objetos, se creó la clase Estudiante con sus datos y un método para mostrarlos, y luego se creó un objeto usando esa clase para probar su funcionamiento.
Ultima Actividad Se desarrollaron 30 ejercicios organizados en tres niveles, poniendo en práctica todo lo aprendido durante el módulo: Nivel I - Fundamentos: Se trabajó con programación estructurada y funciones básicas. Se hicieron programas para detectar intentos de acceso, revisar puertos, clasificar contraseñas, analizar tráfico y verificar direcciones IP. También se crearon funciones propias para validar datos y calcular riesgos, además de sistemas para controlar accesos, monitorear recursos y llevar inventario. Nivel II - Intermedio: Se usaron funciones más avanzadas y la programación orientada a objetos. Se aplicó la recursividad para buscar y contar información, y herramientas como map(), filter() y expresiones lambda para organizar y filtrar datos. Se crearon clases para usuarios y dispositivos, y se pusieron en práctica los conceptos de herencia, polimorfismo y abstracción con herramientas de seguridad. Nivel III - Avanzado: Se combinó todo lo anterior con diccionarios y manejo de archivos. Se armaron bases para registrar vulnerabilidades y equipos, se generaron y analizaron registros de eventos, y se guardó información de forma segura. Para terminar, se desarrolló el Proyecto Final: Centro de Operaciones de Seguridad (SOC), un sistema completo que reúne todo lo visto, permitiendo gestionar usuarios, incidentes y equipos, y generando reportes automáticos con la información más importante. PARCIAL N°3: Modulo III En esta evaluación se midió todo lo visto en el Módulo III: desde la programación estructurada y el uso de funciones, hasta la programación orientada a objetos con sus principios de herencia, polimorfismo y abstracción. También entró el manejo de diccionarios, archivos, y todo lo aplicado en los ejercicios prácticos y el proyecto del Centro de Operaciones de Seguridad. Se comprobó que se pueden unir todos los conocimientos para resolver problemas y armar sistemas completos tal como se hizo en las actividades.
REFLEXIÓN Al finalizar todo lo trabajado en este portafolio, puedo reconocer el avance que fui logrando poco a poco durante el proceso. Inicié aprendiendo los conceptos más básicos de Python, desde su funcionamiento y preparación del entorno de trabajo, hasta llegar al desarrollo de sistemas más completos donde pude integrar diferentes conocimientos y herramientas. Comprendí que una buena organización de la información es fundamental en la programación. Esto comienza desde el uso correcto de variables y tipos de datos, hasta la manera de estructurar la información mediante listas, diccionarios y clases. También aprendí que un programa no solo debe funcionar, sino que debe estar bien organizado, ser fácil de comprender, permitir modificaciones futuras y tener la capacidad de manejar errores sin detenerse inesperadamente. Además, al trabajar temas relacionados con la ciberseguridad, como la validación de accesos, revisión de puertos y protección de información, pude entender mejor la importancia que tiene cada uno de estos conocimientos dentro de mi área de estudio. Estos elementos forman parte de la base necesaria para desarrollar sistemas más seguros, identificar vulnerabilidades y buscar soluciones ante posibles problemas. Lo que más me ayudó durante este proceso fue la práctica constante después de cada tema aprendido, ya que me permitió comprender mejor cómo aplicar los conceptos y cómo unirlos para crear proyectos más completos. Aunque todavía queda mucho por aprender y mejorar, este portafolio representa una etapa importante en mi formación, donde pude fortalecer mis habilidades de programación y comprender mejor la utilidad de cada herramienta estudiada.