from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor
def agregar_diapositiva_titulo(prs, titulo, subtitulo):
slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = titulo
subtitle.text = subtitulo
# Formato
title.text_frame.paragraphs[0].font.size = Pt(40)
title.text_frame.paragraphs[0].font.bold = True
title.text_frame.paragraphs[0].font.color.rgb = RGBColor(0, 77, 64) # Verde IPN
def agregar_diapositiva_contenido(prs, titulo, puntos):
slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(slide_layout)
title = slide.shapes.title
title.text = titulo
tf = slide.placeholders[1].text_frame
tf.word_wrap = True
for punto in puntos:
p = tf.add_paragraph()
p.text = punto
p.level = 0
p.font.size = Pt(20)
Crear Presentación
prs = Presentation()
Diapositiva 1: Portada
agregar_diapositiva_titulo(prs,
"SISTEMA DE DISTRIBUCIÓN LOGÍSTICA:\nLOGITECH SIMULATOR",
"Instituto Politécnico Nacional\nESIME Zacatenco\n\nProgramación Avanzada\nAlumno: Miguel Ángel Chiquito Mejía\nProfesor: Alejandro Herrera Martínez")
Diapositiva 2: Objetivo
agregar_diapositiva_contenido(prs, "Objetivo del Proyecto", [
"Desarrollar una simulación de logística urbana integrada.",
"Aplicar estructuras de datos avanzadas en un escenario real de e-commerce.",
"Demostrar el uso de programación concurrente para procesos asíncronos.",
"Optimizar el flujo de información mediante Programación Orientada a Objetos (POO)."
])
Diapositiva 3: Estructuras Base
agregar_diapositiva_contenido(prs, "Estructuras: Árboles y Listas", [
"Árboles: Organización jerárquica del catálogo de productos por categorías (Electrónica, Gaming, etc.).",
"Listas: Registro dinámico del inventario disponible en el Almacén Central.",
"Base del sistema: Abstracción de datos del primer semestre evolucionada a modelos complejos."
])
Diapositiva 4: Colas y Pilas (El Corazón Logístico)
agregar_diapositiva_contenido(prs, "Dinámica FIFO y LIFO", [
"Cola (FIFO): Los pedidos se procesan en el orden estricto de llegada del cliente.",
"Pila (LIFO): Al cargar los camiones, el último paquete en entrar es el primero en salir.",
"Simulación Industrial: Optimización de la carga y descarga física de mercancía."
])
Diapositiva 5: Grafos (Modelado Urbano)
agregar_diapositiva_contenido(prs, "Modelado de Rutas: Grafos", [
"Representación de la ciudad como un Grafo no dirigido.",
"Nodos: Puntos de entrega e intersecciones (Zona Norte, Sur, Oriente, etc.).",
"Aristas: Calles que conectan los puntos con distancias (pesos) definidas.",
"Cálculo de trayectorias alineadas sobre los ejes del plano cartesiano."
])
Diapositiva 6: Programación Concurrente
agregar_diapositiva_contenido(prs, "Concurrencia: Multi-threading", [
"Uso de la librería 'threading' para manejar múltiples camiones.",
"Ejecución en paralelo: Las unidades de reparto se mueven simultáneamente.",
"Independencia de procesos: El movimiento de un camión no bloquea el flujo del sistema ni la interfaz gráfica."
])
Diapositiva 7: Planteamiento EPS
agregar_diapositiva_contenido(prs, "Planteamiento: Entradas, Procesos y Salidas", [
"Entradas: Datos del catálogo, stock inicial y órdenes de compra.",
"Procesos: Enrutamiento por Grafos, gestión de Pilas/Colas y cálculos cinemáticos de hilos.",
"Salidas: Animación gráfica en tiempo real sobre Canvas de Tkinter y reportes de entrega."
])
Diapositiva 8: Interfaz de Usuario (Tkinter)
agregar_diapositiva_contenido(prs, "Visualización e Interfaz Gráfica", [
"Uso de Tkinter Canvas para la representación visual.",
"Renderizado de retícula cartesiana para validación de alineación.",
"Animación fluida de los objetos gráficos representando las unidades Alpha-01 y Beta-02."
])
Diapositiva 9: Prueba de Escritorio
agregar_diapositiva_contenido(prs, "Validación: Prueba de Escritorio", [
"Ingreso de 3 pedidos de prueba (Laptop, Control, Teclado).",
"Validación de inversión de flujo: El camión entrega primero el último paquete cargado (LIFO).",
"Sincronización: Comprobación de que ambos hilos terminan regresando al Almacén Central."
])
Diapositiva 10: Conclusiones
agregar_diapositiva_contenido(prs, "Conclusiones", [
"Las estructuras de datos son herramientas críticas para la resolución de problemas de ingeniería.",
"La programación concurrente permite modelar sistemas complejos de la vida real de forma eficiente.",
"Python ofrece un entorno robusto para la integración de algoritmos avanzados y visualización nativa."
])
Guardar Presentación
prs.save("Presentacion_Proyecto_ChiquitoMejia.pptx")
print("Presentación generada con éxito.")
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor
def agregar_diapositiva_titulo(prs, titulo, subtitulo):
slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
def agregar_diapositiva_contenido(prs, titulo, puntos):
slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(slide_layout)
title = slide.shapes.title
title.text = titulo
Crear Presentación
prs = Presentation()
Diapositiva 1: Portada
agregar_diapositiva_titulo(prs,
"SISTEMA DE DISTRIBUCIÓN LOGÍSTICA:\nLOGITECH SIMULATOR",
"Instituto Politécnico Nacional\nESIME Zacatenco\n\nProgramación Avanzada\nAlumno: Miguel Ángel Chiquito Mejía\nProfesor: Alejandro Herrera Martínez")
Diapositiva 2: Objetivo
agregar_diapositiva_contenido(prs, "Objetivo del Proyecto", [
"Desarrollar una simulación de logística urbana integrada.",
"Aplicar estructuras de datos avanzadas en un escenario real de e-commerce.",
"Demostrar el uso de programación concurrente para procesos asíncronos.",
"Optimizar el flujo de información mediante Programación Orientada a Objetos (POO)."
])
Diapositiva 3: Estructuras Base
agregar_diapositiva_contenido(prs, "Estructuras: Árboles y Listas", [
"Árboles: Organización jerárquica del catálogo de productos por categorías (Electrónica, Gaming, etc.).",
"Listas: Registro dinámico del inventario disponible en el Almacén Central.",
"Base del sistema: Abstracción de datos del primer semestre evolucionada a modelos complejos."
])
Diapositiva 4: Colas y Pilas (El Corazón Logístico)
agregar_diapositiva_contenido(prs, "Dinámica FIFO y LIFO", [
"Cola (FIFO): Los pedidos se procesan en el orden estricto de llegada del cliente.",
"Pila (LIFO): Al cargar los camiones, el último paquete en entrar es el primero en salir.",
"Simulación Industrial: Optimización de la carga y descarga física de mercancía."
])
Diapositiva 5: Grafos (Modelado Urbano)
agregar_diapositiva_contenido(prs, "Modelado de Rutas: Grafos", [
"Representación de la ciudad como un Grafo no dirigido.",
"Nodos: Puntos de entrega e intersecciones (Zona Norte, Sur, Oriente, etc.).",
"Aristas: Calles que conectan los puntos con distancias (pesos) definidas.",
"Cálculo de trayectorias alineadas sobre los ejes del plano cartesiano."
])
Diapositiva 6: Programación Concurrente
agregar_diapositiva_contenido(prs, "Concurrencia: Multi-threading", [
"Uso de la librería 'threading' para manejar múltiples camiones.",
"Ejecución en paralelo: Las unidades de reparto se mueven simultáneamente.",
"Independencia de procesos: El movimiento de un camión no bloquea el flujo del sistema ni la interfaz gráfica."
])
Diapositiva 7: Planteamiento EPS
agregar_diapositiva_contenido(prs, "Planteamiento: Entradas, Procesos y Salidas", [
"Entradas: Datos del catálogo, stock inicial y órdenes de compra.",
"Procesos: Enrutamiento por Grafos, gestión de Pilas/Colas y cálculos cinemáticos de hilos.",
"Salidas: Animación gráfica en tiempo real sobre Canvas de Tkinter y reportes de entrega."
])
Diapositiva 8: Interfaz de Usuario (Tkinter)
agregar_diapositiva_contenido(prs, "Visualización e Interfaz Gráfica", [
"Uso de Tkinter Canvas para la representación visual.",
"Renderizado de retícula cartesiana para validación de alineación.",
"Animación fluida de los objetos gráficos representando las unidades Alpha-01 y Beta-02."
])
Diapositiva 9: Prueba de Escritorio
agregar_diapositiva_contenido(prs, "Validación: Prueba de Escritorio", [
"Ingreso de 3 pedidos de prueba (Laptop, Control, Teclado).",
"Validación de inversión de flujo: El camión entrega primero el último paquete cargado (LIFO).",
"Sincronización: Comprobación de que ambos hilos terminan regresando al Almacén Central."
])
Diapositiva 10: Conclusiones
agregar_diapositiva_contenido(prs, "Conclusiones", [
"Las estructuras de datos son herramientas críticas para la resolución de problemas de ingeniería.",
"La programación concurrente permite modelar sistemas complejos de la vida real de forma eficiente.",
"Python ofrece un entorno robusto para la integración de algoritmos avanzados y visualización nativa."
])
Guardar Presentación
prs.save("Presentacion_Proyecto_ChiquitoMejia.pptx")
print("Presentación generada con éxito.")