Está en la página 1de 14

Programación Avanzada

Ingeniería Biomédica

EXAMEN FINAL DE PROGRAMACIÓN AVANZADA


Nombre: Diego Alberto Huaman Barrientos

Código:20190370

El examen consta de tres secciones diseñadas para evaluar tus conocimientos en programación
en Python. Asegúrate de leer atentamente las instrucciones de cada sección y proporcionar
respuestas claras y completas.

Sección 1: Preguntas teóricas

En esta sección, deberás responder a preguntas teóricas relacionadas con los conceptos y
características de Python. Asegúrate de proporcionar una explicación clara y concisa, y, cuando
corresponda, incluir ejemplos relevantes para respaldar tus respuestas.

1. ¿Qué es la encapsulación en programación orientada a objetos?. Proporciona un


ejemplo para ilustrar tu respuesta.

Es un principio que permite agrupar datos. Es un concepto para lograr el modularidad y


el ocultamiento de la información de un programa. Los datos y los métodos se agrupan
en una clase. Se llama encapsulación por que los datos están dentro lo que significa que
no se puede acceder directamente fue del mismo.

EJEMPLO

class Persona:
def __init__(self, nombre, edad):
self.__nombre = nombre
self.__edad = edad

def obtener_nombre(self):
return self.__nombre

def obtener_edad(self):
return self.__edad

def establecer_edad(self, nueva_edad):


if nueva_edad > 0:
self.__edad = nueva_edad

# Crear un objeto de la clase Persona


persona1 = Persona("Diego", 30)

# Acceder a los datos a través de los métodos de acceso


print(persona1.obtener_nombre()) # Salida: Diego
print(persona1.obtener_edad()) # Salida: 30

pág. 1
Programación Avanzada
Ingeniería Biomédica

# Intentar acceder a los datos directamente genera un error


print(persona1.__nombre) # Error: 'Persona' object has no attribute '__nombre'

# Cambiar la edad utilizando el método de establecimiento


persona1.establecer_edad(40)

# Obtener la nueva edad


print(persona1.obtener_edad()) # Salida: 40

Claramente se ve en este ejemplo que ‘Persona’ encapsula los datos ‘nombre’ y ‘edad’,
es decir no se puede acceder directamente a ellos, se debe de usar el método de acceso
‘obtener_nombre()’ y obtener_edad()’ para recién obtener los valores requeridos.

2. ¿Qué es el polimorfismo y cuáles son sus beneficios en la programación orientada a


objetos?. Proporciona un ejemplo para ilustrar tu respuesta.

Permite que objetos de diferentes clases se comporten según del contexto que se le dan,
es decir es la capacidad que tiene un objeto para tomar muchas formas diferentes.
Un beneficio es la capacidad de escribir un código más flexible y extensible, esto facilita
la reutilización del código y crear estructuras más genéricas.

EJEMPLO

class Animal:
def sonido(self):
pass

class Perro(Animal):
def sonido(self):
return "La Obeja hace: Meehhh meehh!"

class Gato(Animal):
def sonido(self):
return "El Perro hace: Gau gau!"

class Vaca(Animal):
def sonido(self):
return "El Gallo hace: Kikiriki kikiriki!"

# Crear una lista de animales


animales = [ Obeja (), Perro(), Gallo()]

# Iterar sobre la lista y llamar al método sonido de cada animal


for animal in animales:
print(animal.sonido())

pág. 2
Programación Avanzada
Ingeniería Biomédica

3. ¿Cuál es la diferencia entre un atributo de clase y un atributo de instancia en Python?

Una diferencia sustancial es como se accede y se comparte entre diferentes instancias


de una clase.

ATRIBUTO DE CLASE ATRIBUTO DE INSTANCIA


• Pertenece a la clase en si y no a • Pertenece a una instancia
las instancias individuales de la especifica de la clase
clase- • Cada instancia tiene su propia
• Este es compartido por todas las copia y se llama automáticamente
instancias de la clase y se define cuando se crea una nueva
dentro de la clase, pero fuera de instancia.
cualquier método-

4. Describe el proceso de lectura de un archivo de texto utilizando el método open() en


Python. Proporciona un ejemplo para ilustrar tu respuesta.

Tenemos la apertura del archivo en la cual utilizamos la función open () en la cual


proporcionamos el nombre o la ruta del archivo que queremos abrir. Luego, tenemos la
lectura del contenido en la cual utilizamos los métodos proporcionados por el objeto del
archivo para leerlo, esto devuelve un objeto de archivo que representa el archivo
abierto.
Luego tenemos el cierre del archivo que se utiliza el método ‘close ()’ del objeto del
archivo. Esto libera los recursos del sistema asociados con el archivo y garantiza que los
cambios en el archivo se guarden correctamente.

EJEMPLO
# Apertura del archivo en modo lectura
archivo = open("archivo.txt", "r")

# Lectura del contenido completo del archivo


contenido = archivo.read()
print(contenido)

# Cierre del archivo


archivo.close()

pág. 3
Programación Avanzada
Ingeniería Biomédica

5. ¿Cuál es la diferencia entre los modos de apertura 'r', 'w' y 'a' en el método open()?.
Proporciona un ejemplo para ilustrar tu respuesta.

‘r’ (LECTURA) ‘w’ (ESCRITURA) ‘a’ (Anexar)


Permite leer el contenido Se utiliza para escribir en Sirve para agregar
de un archivo existente, un archivo, si no existe se contenido a un archivo
cuando no existe alguno creará uno nuevo, pero si existente, esto permite
se genera un error existe se sobrescribirá en agregar nuevos datos sin
el contenido anterior eliminar anteriores, si no
existe se creará uno
nuevo.

# Modo de apertura 'r' (lectura)


archivo_lectura = open("archivo.txt", "r")
contenido_lectura = archivo_lectura.read()
print(contenido_lectura)
archivo_lectura.close()

# Modo de apertura 'w' (escritura)


archivo_escritura = open("archivo.txt", "w")
archivo_escritura.write("Examen final")
archivo_escritura.close()

# Modo de apertura 'a' (anexar)


archivo_anexo = open("archivo.txt", "a")
archivo_anexo.write("\n¡Este es un nuevo contenido!")
archivo_anexo.close()

Sección 2: Problemas de código

En esta sección, se presentarán varios problemas para resolver mediante la escritura de código.
Puedes utilizar cualquier editor de texto de tu preferencia, como Visual Studio Code, Google
Colab o cualquier otro. Sin embargo, recuerda que debes proporcionar una captura de pantalla
del código desarrollado en tu respuesta, en lugar de copiar y pegar el código en el texto. Esto nos
permitirá evaluar tu capacidad para escribir código y entender su funcionamiento.

6. Supongamos que tienes una clase base llamada Figura y dos clases derivadas llamadas
Circulo y Rectangulo. Implementa el método calcular_area() en cada una de las clases,
de tal manera que se pueda calcular el área de un círculo y un rectángulo utilizando
polimorfismo. A continuación, crea una lista de objetos de tipo Figura que contenga
tanto círculos como rectángulos, y utiliza un bucle para calcular y mostrar el área de cada
figura en la lista.

pág. 4
Programación Avanzada
Ingeniería Biomédica

7. Escribe un programa en Python que simule un sistema de gestión de tareas. El programa


debe realizar lo siguiente:
• Crea una lista vacía llamada tareas para almacenar las tareas.
• Muestra un menú de opciones al usuario con las siguientes opciones:
o Agregar tarea: Permite al usuario ingresar una nueva tarea y la agrega a
la lista de tareas.
o Mostrar tareas: Muestra todas las tareas almacenadas en la lista,
numeradas y con su descripción.
o Completar tarea: Permite al usuario seleccionar una tarea por su
número y marcarla como completada.
o Eliminar tarea: Permite al usuario seleccionar una tarea por su número
y eliminarla de la lista.

pág. 5
Programación Avanzada
Ingeniería Biomédica

o Salir: Finaliza el programa.


• El programa debe validar la entrada del usuario y mostrar mensajes de error en
caso de ingresar opciones inválidas.
• Si el usuario elige mostrar tareas, se debe indicar cuántas tareas hay y si la lista
está vacía.
• Si el usuario elige completar tarea o eliminar tarea, se debe validar que el
número de tarea ingresado sea válido y mostrar un mensaje de error en caso
contrario.
• Al salir del programa, se debe guardar la lista de tareas en un archivo de texto
llamado "tareas.txt".

pág. 6
Programación Avanzada
Ingeniería Biomédica

pág. 7
Programación Avanzada
Ingeniería Biomédica

8. Diseña un sistema de gestión de una tienda de productos electrónicos utilizando


programación orientada a objetos. El sistema debe permitir el registro y seguimiento de
productos, así como la información de los clientes que realizan compras. Implementa las
siguientes clases:

a) Clase Tienda:

• Atributos: nombre, ubicación.


• Métodos:
o agregar_producto(producto): agrega un producto a la tienda.
o eliminar_producto(producto): elimina un producto de la
tienda.
o mostrar_productos(): muestra todos los productos disponibles
en la tienda.

b) Clase Producto:

• Atributos: nombre, marca, precio.


• Métodos:
o calcular_descuento(): calcula y aplica un descuento al precio
del producto.
o mostrar_informacion(): muestra la información completa del
producto.
c) Clase Cliente:

• Atributos: nombre, dirección, edad.


• Métodos:
o realizar_compra(producto): permite al cliente comprar un
producto de la tienda.
o mostrar_compras(): muestra las compras realizadas por el
cliente.

Implementa estas clases y crea un programa de prueba que simule el


funcionamiento del sistema de gestión de la tienda. Interactúa con el programa para
agregar productos, realizar compras, mostrar información y aplicar descuentos.

pág. 8
Programación Avanzada
Ingeniería Biomédica

pág. 9
Programación Avanzada
Ingeniería Biomédica

pág. 10
Programación Avanzada
Ingeniería Biomédica

pág. 11
Programación Avanzada
Ingeniería Biomédica

Sección 3: Solución de códigos con errores o incompletos

En esta sección, se te proporcionarán fragmentos de código que contienen errores o están


incompletos. Tu tarea será identificar y corregir los errores o completar el código según se
solicite. Asegúrate de explicar claramente las modificaciones realizadas y proporcionar el código
corregido o completado como parte de tu respuesta.

9. Se te ha proporcionado un código que muestra un ejemplo de polimorfismo en Python.


El código define una clase base llamada Animal y dos clases derivadas, Perro y Gato, que
heredan de la clase base. Cada clase tiene su propio método hablar() para imprimir un
mensaje específico del animal.

Tu tarea es revisar el código y identificar un error de codificación relacionado con el


polimorfismo. Este error puede causar un comportamiento inesperado al ejecutar el
código.

pág. 12
Programación Avanzada
Ingeniería Biomédica

No hay un error en el ejercicio 9.

10. Se te ha proporcionado un código que tiene errores relacionados con el uso de open()
para la manipulación de archivos. Tu tarea consiste en depurar y corregir el código para
que funcione correctamente. El código original intenta escribir un mensaje en un archivo
llamado "datos.txt", leer su contenido y mostrarlo en pantalla. Además, intenta escribir
un nuevo mensaje en el archivo después de leerlo.

Identifica los errores en el código y realiza las correcciones necesarias para que el
mensaje se escriba correctamente en el archivo.

pág. 13
Programación Avanzada
Ingeniería Biomédica

El error esta en el modo de aperturar el archivo, luego de tener el código corregido y


luego se abre nuevamente en modo de apertura “a” (anexar), esto permite escribir en
el archivo sin borrar su contenido anterior.

¡Buena suerte en el examen! Si tienes alguna pregunta, no dudes en consultarme.

pág. 14

También podría gustarte