Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OTI25 - Introducción a la Programación para Ing...

OTI25 - Introducción a la Programación para Ingresantes -- ABRAHAM ZAMUDIO

Avatar for Abraham Zamudio

Abraham Zamudio

March 11, 2026
Tweet

More Decks by Abraham Zamudio

Other Decks in Education

Transcript

  1. Ciencia La ciencia puede definirse como el conjunto de conocimientos

    obtenidos a través de la observación, el razonamiento y la experimentación, que se organizan de manera sistemática y se utilizan para comprender el mundo natural y social. Conjunto de conocimientos La ciencia también puede referirse al método de investigación utilizado para obtener estos conocimientos, que se basa en la formulación de hipótesis, la realización de experimentos y la evaluación de resultados. Método de investigación La ciencia puede referirse a una rama específica del conocimiento, como la física, la química, la biología o la sociología. Rama del conocimiento La ciencia es una actividad humana que busca comprender el mundo a través de la observación, el razonamiento y la experimentación.
  2. Ingenieria La ingeniería se define como la aplicación de conocimientos

    científicos, matemáticos y técnicos para diseñar, construir y mantener estructuras, máquinas, dispositivos, sistemas y procesos. Aplicación de conocimientos científicos y técnicos La ingeniería se enfoca en la resolución de problemas prácticos y la satisfacción de necesidades humanas a través de la creación y mejora de tecnologías. Resolución de problemas prácticos Además, se define como la actividad profesional del ingeniero. Actividad profesional del ingeniero la ingeniería es una disciplina que combina la ciencia, la tecnología y la creatividad para transformar ideas en soluciones tangibles que mejoren la calidad de vida.
  3. Primera revolucion industrial Ciencias Básicas: • La termodinámica, que estudia

    la relación entre el calor y el trabajo, proporcionó la base científica para comprender cómo convertir la energía térmica en energía mecánica. • Los principios de la física, como la presión y el volumen de los gases, fueron esenciales para el diseño y la optimización de las máquinas de vapor. Ingeniería: • Ingenieros como James Watt aplicaron estos principios científicos para mejorar significativamente la eficiencia y la potencia de las máquinas de vapor existentes. • La invención y el perfeccionamiento de la máquina de vapor revolucionaron la industria, el transporte y la minería, al proporcionar una fuente de energía confiable y potente. La Máquina de Vapor Ciencias Básicas: • La química proporcionó conocimientos sobre las propiedades de los metales y las reacciones químicas involucradas en la producción de hierro y acero. • La mineralogía, que estudia los minerales y sus propiedades, fue fundamental para la identificación y el procesamiento de los minerales de hierro. Ingeniería: • Ingenieros metalúrgicos desarrollaron nuevos procesos, como el pudelado y el laminado, para producir hierro y acero de mayor calidad y en mayores cantidades. • La disponibilidad de acero más fuerte y económico impulsó la construcción de puentes, ferrocarriles y maquinaria industrial. Metalurgia y Producción de Acero
  4. Segunda revolución industrial Ciencias Básicas: • Los descubrimientos de Michael

    Faraday sobre la inducción electromagnética y las leyes de Ohm y Kirchhoff sentaron las bases para la comprensión de la electricidad. • La física teórica, con el desarrollo de la teoría electromagnética de Maxwell, proporcionó un marco matemático para la electricidad y el magnetismo. Ingeniería: • Ingenieros como Thomas Edison y Nikola Tesla desarrollaron sistemas de generación, transmisión y distribución de electricidad, así como dispositivos eléctricos como la bombilla incandescente y el motor eléctrico. • La invención del telégrafo, el teléfono y la radio revolucionó las comunicaciones. Electricidad y Electrónica Ciencias Básicas: • La termodinámica y la mecánica de fluidos proporcionaron la base científica para comprender el funcionamiento de los motores de combustión interna. • La química permitió el desarrollo de combustibles más eficientes. Ingeniería: • Ingenieros como Rudolf Diesel y Karl Benz desarrollaron motores de combustión interna eficientes y confiables. • La invención del automóvil y el avión transformó el transporte. El Motor de Combustión Interna Ciencias Básicas: • El desarrollo de la estadística y el control de calidad permitió mejorar la eficiencia de los procesos de producción. • la metrologia desarrollo herramientas de medida muy precisas. Ingeniería: • Henry Ford introdujo la línea de ensamblaje y la producción en masa, lo que redujo drásticamente los costos de producción. • La estandarización de piezas y componentes facilitó la fabricación y el mantenimiento de productos. Producción en Masa y Estandarización
  5. Cuarta revolución industrial La diferencia fundamental entre la Tercera y

    la Cuarta Revolución Industrial radica en la evolución y la convergencia de las tecnologías digitales. Enfoque: • Se basa en la convergencia de tecnologías digitales, físicas y biológicas. • Se caracteriza por la interconexión, la inteligencia artificial, el Internet de las cosas (IoT), el big data, la robótica avanzada y la ciberseguridad. Características: • Automatización avanzada y sistemas ciberfísicos. • Interconexión de máquinas, dispositivos y sistemas. • Análisis de grandes volúmenes de datos para la toma de decisiones en tiempo real. • Personalización masiva y producción flexible. Impacto: • Transformación de la industria hacia fábricas inteligentes y conectadas. • Desarrollo de nuevos modelos de negocio y servicios personalizados. • Cambios profundos en la forma en que trabajamos y vivimos. Industria 4.0:
  6. Formulando un problema Formular un problema en ingeniería es un

    proceso que implica varias acciones clave, diseñadas para transformar una necesidad o desafío en un objetivo claro y alcanzable.
  7. Formulando un problema • Reconocimiento de la necesidad: El primer

    paso es identificar claramente qué problema se necesita resolver o qué necesidad se debe satisfacer. Esto puede surgir de una observación, una demanda del mercado, o una oportunidad de mejora. • Delimitación del problema: Es crucial definir los límites del problema, es decir, qué está incluido y qué no. Esto ayuda a enfocar los esfuerzos y evitar desviaciones. • Descripción detallada: Se debe realizar una descripción exhaustiva del problema, incluyendo sus causas, efectos, y cualquier información relevante. 1. Identificación y Definición del Problema • Investigación: Recopilar información sobre el problema, incluyendo estudios previos, datos relevantes, y opiniones de expertos. • Evaluación de restricciones: Identificar las limitaciones que pueden afectar la solución, como restricciones presupuestarias, temporales, ambientales, o legales. • Análisis de interesados: Identificar a todas las personas o grupos que se verán afectados por el problema o su solución, y comprender sus necesidades y expectativas. 2. Análisis del Contexto • Definición de metas: Establecer metas claras y medibles que describan lo que se espera lograr con la solución. • Especificación de criterios de éxito: Definir los criterios que se utilizarán para evaluar si la solución ha sido exitosa. • Priorización de objetivos: En caso de tener múltiples objetivos, establecer prioridades para asegurar que los esfuerzos se enfoquen en lo más importante. 3. Establecimiento de Objetivos • Redacción clara y concisa: Escribir un enunciado del problema que resuma de manera clara y concisa la situación actual, el problema en sí, y los objetivos a alcanzar. • Uso de lenguaje técnico adecuado: Utilizar un lenguaje técnico preciso y apropiado para el contexto del problema. • Validación del enunciado: Revisar y validar el enunciado del problema con otros ingenieros y expertos para asegurar que sea preciso y completo. 4. Formulación del Enunciado del Problema • Visualización: Utilizar diagramas, gráficos, o modelos para representar visualmente el problema y sus componentes. • Documentación: Mantener un registro detallado de todo el proceso de formulación del problema, incluyendo la información recopilada, los análisis realizados, y las decisiones tomadas. 5. Consideraciones Adicionales
  8. Lenguajes de Programacion El desarrollo de los lenguajes de programación

    ha sido un pilar fundamental en la evolución de la tecnología y la informática. En las últimas décadas, hemos presenciado una transformación significativa, desde lenguajes de bajo nivel hasta lenguajes de alto nivel, orientados a objetos, funcionales y de propósito específico. En esta parte de la clase resumire los hitos más relevantes en este período.
  9. Década de 1960: Los Primeros Lenguajes de Alto Nivel •

    FORTRAN (1957): Diseñado para aplicaciones científicas y de ingeniería, fue el primer lenguaje de alto nivel ampliamente adoptado. • COBOL (1959): Orientado a aplicaciones empresariales, se convirtió en estándar en sistemas financieros y gubernamentales. • ALGOL (1960): Sentó las bases para la estructuración de programas y la sintaxis de muchos lenguajes modernos. • LISP (1958): Desarrollado para la inteligencia artificial, introdujo conceptos como la recursión y la programación funcional. Década de 1970: La Era de la Estructuración • C (1972): Desarrollado por Dennis Ritchie, se convirtió en el lenguaje base para sistemas operativos como Unix y sentó las bases para lenguajes posteriores. • Pascal (1970): Diseñado para la enseñanza de programación estructurada, influyó en lenguajes como Modula y Ada. • SQL (1974): Introducido para la gestión de bases de datos relacionales, sigue siendo fundamental en el manejo de datos. Lenguajes de Programacion
  10. Década de 1980: Programación Orientada a Objetos •C++ (1985): Extensión

    de C con soporte para programación orientada a objetos (POO), ampliamente utilizado en desarrollo de software. •Objective-C (1984): Combinó C con Smalltalk, influyendo en el desarrollo de aplicaciones para macOS e iOS. •Ada (1983): Diseñado para aplicaciones críticas en defensa y aeroespacial, destacó por su robustez y seguridad. Década de 1990: Expansión y Diversificación •Python (1991): Enfatizó la legibilidad y simplicidad, convirtiéndose en uno de los lenguajes más populares para múltiples aplicaciones. •Java (1995): Introdujo la filosofía "write once, run anywhere" (WORA), revolucionando el desarrollo de aplicaciones empresariales y web. •JavaScript (1995): Impulsó la interactividad en la web, convirtiéndose en el lenguaje estándar para desarrollo front-end. •Ruby (1995): Destacó por su enfoque en la productividad y la simplicidad, popularizado por el framework Ruby on Rails. Lenguajes de Programacion
  11. Década de 2000: Lenguajes Modernos y Especializados •C# (2000): Desarrollado

    por Microsoft, se convirtió en un pilar para aplicaciones Windows y desarrollo de videojuegos con Unity. •Swift (2014): Introducido por Apple, reemplazó a Objective-C como el lenguaje principal para desarrollo en iOS y macOS. •Go (2009): Creado por Google, destacó por su eficiencia en sistemas distribuidos y aplicaciones en la nube. •Rust (2010): Enfocado en seguridad y rendimiento, ganó popularidad en sistemas de bajo nivel y desarrollo de sistemas operativos. Década de 2010-2020: Enfoque en Productividad y Especialización •Kotlin (2011): Adoptado como lenguaje oficial para desarrollo Android, ofreció una alternativa moderna a Java. •TypeScript (2012): Extensión de JavaScript con tipado estático, mejoró la escalabilidad de aplicaciones web. •R (1993, popularizado en 2010s): Dominó el análisis estadístico y la ciencia de datos. •Julia (2012): Diseñado para computación científica y análisis de datos de alto rendimiento. Lenguajes de Programacion
  12. Tendencias Actuales (2020s) •Lenguajes de dominio específico (DSL): Aumento de

    lenguajes especializados para áreas como inteligencia artificial, blockchain y big data. •Enfoque en seguridad y concurrencia: Lenguajes como Rust y Go continúan ganando terreno por su manejo seguro de memoria y concurrencia. •Integración con IA: Lenguajes como Python y Julia son fundamentales en el desarrollo de modelos de machine learning y deep learning. •Low-code/No-code: Plataformas que permiten desarrollo sin necesidad de programación tradicional, democratizando el acceso a la creación de software. Lenguajes de Programacion Conclusión En las últimas décadas, los lenguajes de programación han evolucionado desde herramientas rudimentarias hasta sistemas sofisticados y especializados. Esta evolución ha sido impulsada por las necesidades cambiantes de la industria, desde la computación científica hasta la inteligencia artificial y el desarrollo web. El futuro apunta hacia una mayor especialización, seguridad y accesibilidad, consolidando la programación como una habilidad esencial en el mundo moderno.
  13. Paradigmas de la Programacion Los paradigmas de la programación son

    enfoques o estilos que definen cómo se estructuran y ejecutan los programas. Cada paradigma ofrece un conjunto de principios, técnicas y herramientas para resolver problemas de software. En esta seccion de la clase describiremos los principales paradigmas de programación, sus características y aplicaciones.
  14. Paradigmas de la Programacion • Descripción: Es el paradigma más

    tradicional y se basa en la ejecución de una secuencia de instrucciones que modifican el estado del programa. • Características: •Uso de variables, bucles (for, while) y condicionales (if, else). •Enfoque en "cómo" se realiza una tarea paso a paso. •El flujo del programa es explícito y lineal. • Ventajas: •Fácil de entender y depurar. •Ampliamente utilizado y soportado. • Desventajas: •Puede volverse complejo en proyectos grandes. •Menos eficiente para problemas que requieren alto nivel de abstracción. • Lenguajes representativos: C, Pascal, BASIC. • Aplicaciones: Sistemas operativos, software de bajo nivel, scripts simples. 1. Programación Imperativa
  15. Paradigmas de la Programacion • Descripción: Organiza el software en

    "objetos" que encapsulan datos (atributos) y comportamientos (métodos). • Características: • Clases y objetos: Las clases son plantillas para crear objetos. • Herencia: Permite reutilizar código mediante jerarquías de clases. • Polimorfismo: Objetos de diferentes clases pueden responder al mismo mensaje. • Encapsulamiento: Oculta los detalles internos de los objetos. • Ventajas: • Facilita la reutilización y mantenimiento del código. • Ideal para modelar problemas del mundo real. • Desventajas: • Curva de aprendizaje más pronunciada. • Puede generar sobrecarga en proyectos pequeños. • Lenguajes representativos: Java, C++, Python, Ruby. • Aplicaciones: Desarrollo de software empresarial, aplicaciones móviles, videojuegos. 2. Programación Orientada a Objetos (POO)
  16. Paradigmas de la Programacion • Descripción: Trata la computación como

    la evaluación de funciones matemáticas, evitando cambios de estado y datos mutables. • Características: •Funciones como ciudadanos de primera clase (pueden pasarse como argumentos). •Uso de recursión en lugar de bucles. •Inmutabilidad de los datos (no se modifican después de su creación). •Enfoque en "qué" se debe hacer, no en "cómo". • Ventajas: •Código más conciso y predecible. •Ideal para procesamiento paralelo y concurrente. • Desventajas: •Curva de aprendizaje para desarrolladores acostumbrados a paradigmas imperativos. •Puede ser menos eficiente en términos de rendimiento en algunos casos. • Lenguajes representativos: Haskell, Lisp, Erlang, Scala. • Aplicaciones: Procesamiento de datos, sistemas concurrentes, inteligencia artificial. 3. Programación Funcional
  17. Paradigmas de la Programacion • Descripción: Describe "qué" debe hacer

    el programa, sin especificar "cómo" lograrlo. Incluye subparadigmas como la programación lógica y funcional. • Características: •Enfoque en resultados, no en pasos. •Uso de consultas y reglas para definir comportamientos. •Menos énfasis en el control de flujo. • Ventajas: •Código más legible y mantenible. •Ideal para problemas complejos que requieren alto nivel de abstracción. • Desventajas: •Menos control sobre la ejecución del programa. •Puede ser menos eficiente en términos de rendimiento. • Lenguajes representativos: SQL (para consultas de bases de datos), HTML (para estructura web), Prolog (programación lógica). • Aplicaciones: Bases de datos, desarrollo web, sistemas expertos. 4. Programación Declarativa
  18. Paradigmas de la Programacion Conclusión Los cuatro paradigmas principales (imperativo,

    orientado a objetos, funcional y declarativo) ofrecen enfoques distintos para resolver problemas de software. La elección del paradigma depende del tipo de problema, los requisitos del sistema y las preferencias del desarrollador. En la práctica, muchos lenguajes modernos, como Python y JavaScript, combinan múltiples paradigmas, permitiendo a los programadores aprovechar lo mejor de cada enfoque. Esta flexibilidad ha sido clave para la evolución y adaptabilidad de la ingeniería de software en las últimas décadas.
  19. Sistema de procesamiento computacional Es un conjunto de componentes interrelacionados

    que trabajan juntos para manipular y transformar datos. Este sistema puede variar en complejidad, desde una simple calculadora hasta una supercomputadora masiva.
  20. Sistema de procesamiento computacional Definición Un sistema de procesamiento computacional

    es un sistema que: • Recibe datos: A través de dispositivos de entrada (teclado, ratón, sensores, etc.). • Procesa datos: Utilizando una unidad central de procesamiento (CPU) o unidades de procesamiento gráfico (GPU) y otros componentes de hardware. • Almacena datos: En memoria (RAM) o almacenamiento permanente (discos duros, SSD, etc.). • Genera resultados: A través de dispositivos de salida (monitor, impresora, altavoces, etc.).
  21. Sistema de procesamiento computacional Componentes clave Hardware: • Unidad Central

    de Procesamiento (CPU): El "cerebro" del sistema, que ejecuta instrucciones. • Memoria de Acceso Aleatorio (RAM): Almacenamiento temporal para datos y programas en uso. • Dispositivos de almacenamiento: Almacenan datos y programas de forma permanente. • Dispositivos de entrada/salida (E/S): Permiten la interacción con el usuario y el entorno. Software: • Sistema operativo: Controla el hardware y proporciona una interfaz para el usuario. • Aplicaciones: Programas que realizan tareas específicas.
  22. Sistema de procesamiento computacional Tipos de sistemas de procesamiento computacional

    • Computadoras personales (PC): Para uso general. • Servidores: Para proporcionar servicios en una red. • Supercomputadoras: Para cálculos complejos. • Dispositivos móviles: Teléfonos inteligentes, tabletas, etc. • Sistemas integrados: En dispositivos electrónicos como automóviles y electrodomésticos.