0% encontró este documento útil (0 votos)
20 vistas11 páginas

Proyecto PC Entrega Final

El proyecto final tiene como objetivo fortalecer las habilidades de pensamiento computacional mediante el desarrollo de un sistema en Python, donde los estudiantes deben demostrar su capacidad para modificar y explicar el código en tiempo real. Se requiere que los participantes implementen estructuras de control, manejen errores y fomenten la creatividad en la programación, además de seguir directrices específicas para la entrega del proyecto. La versión final del proyecto debe incluir funcionalidades completas, una mejor presentación de datos y validaciones para la actualización de valores.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas11 páginas

Proyecto PC Entrega Final

El proyecto final tiene como objetivo fortalecer las habilidades de pensamiento computacional mediante el desarrollo de un sistema en Python, donde los estudiantes deben demostrar su capacidad para modificar y explicar el código en tiempo real. Se requiere que los participantes implementen estructuras de control, manejen errores y fomenten la creatividad en la programación, además de seguir directrices específicas para la entrega del proyecto. La versión final del proyecto debe incluir funcionalidades completas, una mejor presentación de datos y validaciones para la actualización de valores.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Proyecto Final – Pensamiento Computacional – Docente: Nombre docente

Alejandro Martinez Lujan


Equipo de
Samuel Cediel Vargas
Trabajo

Objetivo general

Fortalecer y evaluar las habilidades básicas del pensamiento computacional a través


del desarrollo un sistema en Python, asegurando que cada miembro del equipo pueda
modificar y dar respuesta sobre el código en tiempo real durante la presentación.

Objetivos específicos

● Aplicar los pilares del pensamiento computacional en la resolución de problemas


prácticos.
● Implementar y dominar las estructuras de control estudiadas en clase, incluyendo:
entradas y salidas de datos, condicionales simples y múltiples, ciclos while y for,
manejo de listas, creación y uso de funciones, manejo de archivos y creación de
gráficas.
● Desarrollar habilidades en la creación, depuración y modificación de código,
garantizando la capacidad de responder preguntas y hacer ajustes inmediatos
durante la presentación del proyecto.

Presentación del Proyecto

Los estudiantes deben estar en la capacidad de demostrar su comprensión y dominio


del proyecto mediante actividades prácticas como:

• Modificación de código existente: Modificar el código del sistema actual en


tiempo real durante la presentación.
• Desarrollo de nuevas funcionalidades del sistema: Implementar nuevas
opciones, utilizando funciones y estructuras algorítmicas adecuadas, con
capacidad de explicación en tiempo real.
• Control de errores y mejoras en el sistema: Asegurar que las acciones del
sistema no generen errores lógicos, como evitar valores negativos o superar topes
predefinidos. Mejorar la visualización de los datos para una mejor experiencia de
usuario.
• Fomento de la creatividad mediante la programación: Incorporar acciones
creativas y originales que añadan elementos novedosos al sistema, promoviendo la
resolución de problemas de manera innovadora.

Pensamiento Computacional - EAFIT


Nota: Para el desarrollo de este proyecto solo puede utilizar las estructuras de
programación y conceptos explicados en clase. En caso de utilizar estructuras
diferentes, el estudiante debe demostrar dominio de estas y estar preparado para
explicarlas.

Sugerencia: Recuerde apoyarse en monitorias si tiene dudas, o preguntarle al


docente.

Versión final del Proyecto

En la entrega 2 se realizó el código inicial en Python, el cual podría incluir el


desarrollo parcial o total con las funcionalidades del sistema. Ese código contenía 4
variables principales y un menú que implementa todas las funcionalidades.
En la versión final, las variables principales deben estar almacenadas en una lista, y
cada opción del sistema debe estar implementada en una función independiente.
Considere si requiere usar parámetros y retorno de datos.
A continuación, un ejemplo del proyecto IMC, que muestra cómo implementar listas y
funciones de acuerdo con lo solicitado para la versión final.

# Proyecto Monitoreo del Índice de Masa Corporal (IMC)

# Elaborado por:

"""
Nombre 1
Nombre 2
Nombre 3
"""

# Librería para generar números aleatorios


import random

# Librería para graficar


import [Link] as plt

"""
Lista de 2 posiciones.
La posición 0 de la lista representa el imcJovenes
La posición 0 de la lista representa el imcAdultos
"""

Pensamiento Computacional - EAFIT


listaIMC = [0, 0]

# Funciones para cada una de las opciones del proyecto.

# Opción 1: Inicializar valores de IMC → Permite ingresar el IMC promedio inicial


de cada grupo.
def ingresarValores():
"""
Versión inicial para ingresar los valores
imcJovenes = int(input("Ingrese el IMC promedio de los jóvenes: "))
imcAdultos = int(input("Ingrese el IMC promedio de los adultos: "))
listaIMC[0] = imcJovenes
listaIMC[1] = imcAdultos
"""

# versión actualizada para ingresar los valores con control de valores negativos
imcJovenes = int(input("Ingrese el IMC promedio de los jóvenes: "))
imcAdultos = int(input("Ingrese el IMC promedio de los adultos: "))
if imcJovenes < 0 or imcAdultos < 0:
print("Error: No se permiten valores negativos. No se actualizaron los datos.")
else:
listaIMC[0] = imcJovenes
listaIMC[1] = imcAdultos

# Opción 2: Consultar el estado del IMC en todos los grupos → Muestra los valores
actuales registrados.
def consultarValores():
"""
Versión inicial para mostrar los valores
print("El IMC promedio de los jóvenes es: "+ str(listaIMC[0]))
print("El IMC promedio de los adultos es: " + str(listaIMC[1]))
"""

# Versión actualizada para mostrar los datos


print("----------------------")
print("JO: " + str(listaIMC[0]) + " | AD: " + str(listaIMC[1]))
print("----------------------")

# Opción 3: Actualizar el IMC de un grupo específico → Permite modificar el IMC


promedio de un grupo seleccionado.
def actualizarValoresGrupoEspecifico():

Pensamiento Computacional - EAFIT


print("Menú de grupos:")
print("1) Jóvenes")
print("2) Adultos")
grupo = int(input("Seleccione el grupo: "))
if grupo == 1:
imcJovenes = int(input("Ingrese el nuevo IMC promedio de los jóvenes: "))
listaIMC[0] = imcJovenes
elif grupo == 2:
imcAdultos = int(input("Ingrese el nuevo IMC promedio de los adultos: "))
listaIMC[1] = imcAdultos
else:
print("Grupo incorrecto")

# Opción 4: Ajuste global del IMC → Permite aumentar en una unidad los valores
de IMC promedio de cada grupo.
def actualizarValores():
imcJovenes = listaIMC[0] + 1
imcAdultos = listaIMC[1] + 1
listaIMC[0] = imcJovenes
listaIMC[1] = imcAdultos

# Opción 5: Cambio aleatorio del IMC en un grupo → Se disminuye en una unidad


el IMC promedio en un grupo seleccionado al azar.
def actualizarValorGrupoAleatorio():
# Calcula un número aleatorio entre 1 y 2, porque hay 2 grupos poblacionales
aleatorio = [Link](1, 2)
if aleatorio == 1:
imcJovenes = listaIMC[0] - 1
listaIMC[0] = imcJovenes
elif aleatorio == 2:
imcAdultos = listaIMC[1] - 1
listaIMC[1] = imcAdultos

"""
Opción 6: Clasificación del estado nutricional → El sistema categoriza y muestra el
IMC de un grupo poblacional en:
• Bajo peso: IMC menor a 18.5
• Normal: IMC entre 18.5 y 24.9
• Sobrepeso: IMC mayor a 25
"""
def clasificar():

Pensamiento Computacional - EAFIT


print(" ")
print("Menú de grupos:")
print("1) Jóvenes")
print("2) Adultos")
grupo = int(input("Seleccione el grupo: "))
if grupo == 1:
if listaIMC[0] < 18.5:
print("Jóvenes con IMC en Bajo peso")
elif listaIMC[0] >= 18.5 and listaIMC[0] <= 24.9:
print("Jóvenes con IMC Normal")
else:
print("Jóvenes con IMC en Sobrepeso")
elif grupo == 2:
if listaIMC[1] < 18.5:
print("Adultos con IMC en Bajo peso")
elif listaIMC[1] >= 18.5 and listaIMC[1] <= 24.9:
print("Adultos con IMC Normal")
else:
print("Adultos con IMC en Sobrepeso")
else:
print("Grupo incorrecto")

# (NUEVA FUNCIÓN) Actualización masiva → Permite duplicar los valores de IMC


promedio de cada grupo.
def actualizarMasivamente():
for i in range(len(listaIMC)):
duplicado = listaIMC[i] * 2
listaIMC[i] = duplicado

# (NUEVA FUNCIÓN) Actualizar desde archivo → Actualiza los valores de la lista


desde un archivo.
def actualizarDesdeArchivo():
archivo = open("[Link]")
contenido = [Link]()
lista = [Link](",")
listaIMC[0] = float(lista[0])
listaIMC[1] = float(lista[1])
[Link]()

# (NUEVA FUNCIÓN) Graficar → Muestra los valores de la lista en forma de gráfico.


def graficar():

Pensamiento Computacional - EAFIT


x = ["Jóvenes", "Adultos"]
y = listaIMC
[Link](x, y)
[Link]("Grupos")
[Link]("IMC")
[Link]("Gráfico de IMC")
[Link]()

# Ejecución del programa e invocación de funciones.


while True:
print(" ")
print("Menú de opciones:")
print("1) Inicializar valores de IMC")
print("2) Consultar el estado del IMC en todos los grupos")
print("3) Actualizar el IMC de un grupo específico")
print("4) Ajuste global del IMC")
print("5) Cambio aleatorio del IMC en un grupo")
print("6) Clasificación del estado nutricional")
print("7) Actualizar masivamente los valores de IMC")
print("8) Actualizar IMC desde archivo")
print("9) Graficar")
print("10) Salir")

opcion = int(input("Seleccione una opción: "))


if opcion == 1:
ingresarValores()
elif opcion == 2:
consultarValores()
elif opcion == 3:
actualizarValoresGrupoEspecifico()
elif opcion == 4:
actualizarValores()
elif opcion == 5:
actualizarValorGrupoAleatorio()
elif opcion == 6:
clasificar()
elif opcion == 7:
actualizarMasivamente()
elif opcion == 8:
actualizarDesdeArchivo()
elif opcion == 9:
graficar()
elif opcion == 10:
print("Chao!")

Pensamiento Computacional - EAFIT


break
else:
print("Opción incorrecta")

Versión FINAL del Proyecto

Siga las siguientes actividades para finalizar el proyecto:

1. Modificar las variables de categoría a una variable tipo lista: La versión


inicial usa 4 variables, por ejemplo: clientesZona1=10, clientesZona2=30,
clientesZona3=20, clientesZona4=45. En la versión final, las variables
deben representarse mediante una lista, ejemplo:
clientesZonas=[10,30,20,45], donde la posición 0, 1, 2 y 3 representa los
clientes de la zona 1, 2, 3 y 4, respectivamente. Los valores se deben solicitar al
usuario y asignarse a las posiciones correspondientes en la lista.

2. Convertir las opciones en funciones: Organice el código de cada opción en


una función independiente.

3. Completar las funcionalidades del sistema: Si en la versión anterior no se


implementaron todas las funcionalidades, agregue las opciones restantes,
asegurándose de que cada una esté en una función y sea invocada desde el
menú de opciones.

4. Mejorar la presentación de la consulta de datos: Modifique la opción que


permite consultar el estado de las variables para mostrar los datos en forma de
cuadrícula, como se muestra a continuación:

-----------------
Z1: 10 | Z2: 30
-----------------
Z3: 20 | Z4: 45
-----------------

Z1: 10 representaría los clientes de la zona 1, el Z2: 30, los clientes de la zona 2,
y así sucesivamente.
5. Control de actualización de datos con topes mínimos o máximos: Tome
alguna de las funciones que permite actualizar valores. Implemente validaciones
para asegurar que los valores no sean negativos o superen un valor máximo
específico. Por ejemplo, la suma de porcentajes no puede ser mayor a 100.

Pensamiento Computacional - EAFIT


6. Actualización masiva: Agregue una función que duplique el valor de todas las
categorías. Es decir, que los valores de cada posición de la lista se dupliquen.
Para esta acción debe utilizar un ciclo for.
Entrega
Envíe el documento con el enlace del proyecto y el código al Buzón de Interactiva
Virtual o donde el docente le indique. El docente también le indicará la fecha de
entrega y presentación del proyecto.

Enlace del proyecto:


[Link]
usp=sharing

Código:
Copie en este espacio el código Python del proyecto

# Proyecto Sistema de Gestión de Citas Médicas

# Elaborado por:

"""
Alejandro Martínez Luján
Samuel Cediel Vargas
"""

import random

tiposconsultorios = [8, 6, 8, 8]
nombres_consultorios = ["CPR", "TF", "TFP", "MAG"]

def mostrar_mensaje(texto):
print("-------------------------")
print(texto)
print("-------------------------")

def consultar_disponibilidad():
print("\nDISPONIBILIDAD ACTUAL DE CONSULTORIOS")
print("-------------------------")
print(f"CPR: {tiposconsultorios[0]} | TF: {tiposconsultorios[1]}")
print("-------------------------")
print(f"TFP: {tiposconsultorios[2]} | MAG: {tiposconsultorios[3]}")
print("-------------------------")

def agendar_cita():

Pensamiento Computacional - EAFIT


consultorio = input("Ingrese el consultorio (CPR, TF, TFP, MAG): ").upper()
if consultorio in nombres_consultorios:
indice = nombres_consultorios.index(consultorio)
if tiposconsultorios[indice] > 0:
hora = int(input("Ingrese la hora de la cita: "))
tiposconsultorios[indice] = tiposconsultorios[indice] - 1
mostrar_mensaje(f"Cita agendada en {consultorio} a las {hora}")
else:
mostrar_mensaje("No hay disponibilidad en ese consultorio.")
else:
mostrar_mensaje("Consultorio no válido.")

def reprogramar_cita():
consultorio_actual = input("Ingrese el consultorio actual (CPR, TF, TFP, MAG): ").upper()
nuevo_consultorio = input("Ingrese el nuevo consultorio (CPR, TF, TFP, MAG): ").upper()
hora = int(input("Ingrese una hora: "))

if consultorio_actual in nombres_consultorios and nuevo_consultorio in nombres_consultorios:


i_actual = nombres_consultorios.index(consultorio_actual)
i_nuevo = nombres_consultorios.index(nuevo_consultorio)

if tiposconsultorios[i_nuevo] > 0:
tiposconsultorios[i_actual] = tiposconsultorios[i_actual] + 1
tiposconsultorios[i_nuevo] = tiposconsultorios[i_nuevo] - 1

if tiposconsultorios[i_nuevo] < 0 or tiposconsultorios[i_nuevo] > 10:


tiposconsultorios[i_actual] = tiposconsultorios[i_actual] - 1
tiposconsultorios[i_nuevo] = tiposconsultorios[i_nuevo] + 1
mostrar_mensaje("No se pudo reprogramar. El valor resultante es inválido.")
else:
mostrar_mensaje(f"Cita reprogramada a {nuevo_consultorio} a las {hora}")
else:
mostrar_mensaje("No hay disponibilidad en el nuevo consultorio.")
else:
mostrar_mensaje("Consultorio(s) no válido(s).")

def cancelar_cita():
consultorio = input("Ingrese el consultorio de la cita a cancelar (CPR, TF, TFP, MAG): ").upper()
if consultorio in nombres_consultorios:
i = nombres_consultorios.index(consultorio)
if tiposconsultorios[i] < 10:
tiposconsultorios[i] = tiposconsultorios[i] + 1
mostrar_mensaje(f"Cita en {consultorio} cancelada.")

Pensamiento Computacional - EAFIT


else:
mostrar_mensaje("No se puede cancelar, ya se alcanzó el máximo de citas disponibles.")
else:
mostrar_mensaje("Consultorio no válido.")

def actualizar_masivamente():
for i in range(len(tiposconsultorios)):
tipos consultorios[i] = tiposconsultorios[i] * 2
if tiposconsultorios[i] > 10:
tiposconsultorios[i] = 10
mostrar_mensaje("Valores actualizados masivamente (con tope máximo de 10).")

def menu():
while True:
print("\nSistema de Gestión de Citas Médicas")
print("Elaborado por: Alejandro Martínez Luján y Samuel Cediel Vargas")
print("1. Consultar disponibilidad de consultorios")
print("2. Agendar una cita")
print("3. Reprogramar una cita")
print("4. Cancelar una cita")
print("5. Actualización masiva de disponibilidad")
print("6. Salir")

try:
op = int(input("Seleccione una opción: "))
if op == 1:
consultar_disponibilidad()
elif op == 2:
agendar_cita()
elif op == 3:
reprogramar_cita()
elif op == 4:
cancelar_cita()
elif op == 5:
actualizar_masivamente()
elif op == 6:
mostrar_mensaje("Saliendo del sistema")
break
else:
mostrar_mensaje("Opción inválida. Intente nuevamente")
except ValueError:
mostrar_mensaje("Error: debe ingresar un número entero")

Pensamiento Computacional - EAFIT


menu()

Pensamiento Computacional - EAFIT

También podría gustarte