Metodologías de desarrollo ágiles: Scrum, XPejordi
Metodologías de desarrollo ágiles: Scrum y eXtreme Programming.
Treball de l'assignatura Gestió de Sistemes d'Informació (GESI) de la Universitat Politècnica de Catalunya (UPC). Professor: Jordi Esteve. Gener 2009. Vilanova i la Geltrú. Barcelona. Catalunya.
Este documento presenta un plan de desarrollo de software utilizando la metodología Rational Unified Process (RUP). Describe las consideraciones iniciales de la organización y el modelo de negocio, incluidos los diagramas y especificaciones. Luego detalla las fases de inicio del proyecto, incluidos los aspectos organizacionales, y presenta un plan preliminar de desarrollo de software que incluye la introducción, alcance, organización y gestión del proyecto.
El documento describe las etapas de la organización en una empresa, las cuales se dividen en división de trabajo y coordinación. La división de trabajo implica la separación y delimitación de actividades para lograr especialización y eficiencia, mientras que la coordinación se refiere a sincronizar recursos para lograr objetivos de manera unida y armoniosa. Las etapas de la división de trabajo incluyen la jerarquización, departamentalización y descripción de funciones.
El documento describe varias metodologías para el desarrollo de software, incluyendo UP, RUP, Scrum y XP. La metodología UP (Proceso Unificado) es un marco iterativo e incremental basado en casos de uso y arquitectura. RUP (Rational Unified Process) es un refinamiento de UP que define roles y tareas. Scrum es una metodología ágil basada en iteraciones cortas llamadas "sprints" para entregar funcionalidad al cliente de forma continua. Cada metodología tiene ventajas como la detección temprana de errores
El documento describe los conceptos clave de la Vista Lógica en el análisis y diseño orientado a objetos con UML, incluyendo clases, atributos, operaciones, relaciones, agregación, herencia y diagramas de clases. Explica cómo modelar el sistema mediante la identificación de clases y especificación de sus características y cómo representar la interacción entre clases a través de diferentes tipos de relaciones.
El documento presenta información sobre Masaaki Imai, creador del método Kaizen. Se describe que Imai se graduó de la Universidad de Tokio en 1955 y fundó el Instituto Kaizen en 1986 para implementar la mejora continua en empresas. El método Kaizen busca eliminar desperdicios en procesos productivos a través de pequeñas mejoras continuas realizadas por todos los empleados para incrementar la productividad y reducir costos.
El documento describe los conceptos clave de la organización en el proceso administrativo. Explica que la organización implica estructurar e integrar los recursos de una organización y establecer relaciones entre sus niveles para alcanzar objetivos. También define la organización como el establecimiento de una estructura racional para sistematizar los recursos mediante la determinación de jerarquías, asignación de actividades y grupos. Finalmente, destaca la importancia de la organización para lograr objetivos de manera eficiente y simplificar funciones.
Universidad Nacional Experimental de Caracas UNEXCA
Programa Nacional de Formación Ingeniería Informática PNFI
Unidad curricular Ingeniería del software II - Código ISC339
Trimestre 2 - Tema 4
Contenido: definición, método, producto, pasos para hacer DAS, vista 4+1, Patrón MVC
Metodologías de desarrollo ágiles: Scrum, XPejordi
Metodologías de desarrollo ágiles: Scrum y eXtreme Programming.
Treball de l'assignatura Gestió de Sistemes d'Informació (GESI) de la Universitat Politècnica de Catalunya (UPC). Professor: Jordi Esteve. Gener 2009. Vilanova i la Geltrú. Barcelona. Catalunya.
Este documento presenta un plan de desarrollo de software utilizando la metodología Rational Unified Process (RUP). Describe las consideraciones iniciales de la organización y el modelo de negocio, incluidos los diagramas y especificaciones. Luego detalla las fases de inicio del proyecto, incluidos los aspectos organizacionales, y presenta un plan preliminar de desarrollo de software que incluye la introducción, alcance, organización y gestión del proyecto.
El documento describe las etapas de la organización en una empresa, las cuales se dividen en división de trabajo y coordinación. La división de trabajo implica la separación y delimitación de actividades para lograr especialización y eficiencia, mientras que la coordinación se refiere a sincronizar recursos para lograr objetivos de manera unida y armoniosa. Las etapas de la división de trabajo incluyen la jerarquización, departamentalización y descripción de funciones.
El documento describe varias metodologías para el desarrollo de software, incluyendo UP, RUP, Scrum y XP. La metodología UP (Proceso Unificado) es un marco iterativo e incremental basado en casos de uso y arquitectura. RUP (Rational Unified Process) es un refinamiento de UP que define roles y tareas. Scrum es una metodología ágil basada en iteraciones cortas llamadas "sprints" para entregar funcionalidad al cliente de forma continua. Cada metodología tiene ventajas como la detección temprana de errores
El documento describe los conceptos clave de la Vista Lógica en el análisis y diseño orientado a objetos con UML, incluyendo clases, atributos, operaciones, relaciones, agregación, herencia y diagramas de clases. Explica cómo modelar el sistema mediante la identificación de clases y especificación de sus características y cómo representar la interacción entre clases a través de diferentes tipos de relaciones.
El documento presenta información sobre Masaaki Imai, creador del método Kaizen. Se describe que Imai se graduó de la Universidad de Tokio en 1955 y fundó el Instituto Kaizen en 1986 para implementar la mejora continua en empresas. El método Kaizen busca eliminar desperdicios en procesos productivos a través de pequeñas mejoras continuas realizadas por todos los empleados para incrementar la productividad y reducir costos.
El documento describe los conceptos clave de la organización en el proceso administrativo. Explica que la organización implica estructurar e integrar los recursos de una organización y establecer relaciones entre sus niveles para alcanzar objetivos. También define la organización como el establecimiento de una estructura racional para sistematizar los recursos mediante la determinación de jerarquías, asignación de actividades y grupos. Finalmente, destaca la importancia de la organización para lograr objetivos de manera eficiente y simplificar funciones.
Universidad Nacional Experimental de Caracas UNEXCA
Programa Nacional de Formación Ingeniería Informática PNFI
Unidad curricular Ingeniería del software II - Código ISC339
Trimestre 2 - Tema 4
Contenido: definición, método, producto, pasos para hacer DAS, vista 4+1, Patrón MVC
Un organigrama representa gráficamente la estructura organizacional de una empresa, mostrando las diferentes unidades, cargos, niveles jerárquicos y las relaciones de autoridad. Ofrece información sobre las funciones de cada área y cómo se comunican e interactúan. Puede usarse vertical u horizontalmente, y existen diferentes tipos como los generales, analíticos y suplementarios.
El documento describe un método para definir la arquitectura de procesos de una empresa. Explica que la arquitectura de procesos trata de alinear los objetivos estratégicos, procesos de negocio y sistemas de tecnología de una empresa. Luego, detalla los cuatro pasos del método: 1) captura del organigrama, 2) modelado de la vista horizontal, 3) modelado de la configuración de valor, y 4) modelado de la arquitectura de procesos. Finalmente, aplica el método a un caso pr
FDD (Desarrollo Basado en Funcionalidades) es un proceso ágil para el desarrollo de sistemas que se enfoca en las fases de diseño y construcción. Consiste en cinco pasos secuenciales: desarrollo de un modelo global, construcción de una lista de funcionalidades, planeación por funcionalidad, diseño por funcionalidad y construcción por funcionalidad. Define roles claves como el Director del Proyecto, Arquitecto Jefe y Programador Jefe.
El documento describe los orígenes y desarrollo del lenguaje de programación Java. Java se creó originalmente en 1991 por un equipo de Sun Microsystems para aplicaciones electrónicas de consumo y se caracterizó por su portabilidad. En 1995, cuando se incluyó un intérprete de Java en el navegador Netscape, Java se convirtió en un lenguaje popular para aplicaciones web. Desde entonces, Java ha continuado evolucionando y expandiéndose, con versiones posteriores que agregaron nuevas características y mejoras.
El documento describe el Modelo V, un método para el desarrollo de software. El Modelo V representa gráficamente las fases del ciclo de vida del desarrollo de sistemas en forma de V, incluyendo el análisis de requisitos, diseño, implementación, pruebas e integración. El modelo ayuda a definir las pruebas necesarias en cada fase y a identificar dónde volver si se encuentran errores. El propósito del modelo es regular el proceso de desarrollo de software y mejorar la calidad del proyecto.
O documento apresenta os conceitos e arquitetura do Design Orientado a Domínio (DDD). Ele explica que DDD é uma abordagem de desenvolvimento de software focada nas regras de negócio e no domínio, não nos bancos de dados. O documento também descreve artefatos como entidades, objetos de valor, agregações, serviços e repositórios.
Este documento presenta dos métodos para estimar los costos de un software para DJ: el método ascendente y COCOMO. El método ascendente divide el proyecto en 3 etapas con sus actividades y costos asociados, para un total estimado de $3,300. COCOMO estima el esfuerzo, tiempo y costo requerido basado en el tamaño del proyecto en líneas de código, calculando un esfuerzo de 3 hombre-mes, un tiempo de desarrollo de 2.9 meses y un costo total de $3,300. Ambos métodos ar
Análisis de sistemas informáticos alexis diazAlexis Díaz
El documento describe los conceptos de análisis y diseño de sistemas. Explica que el análisis especifica lo que el sistema debe hacer mientras que el diseño establece cómo alcanzar el objetivo. También distingue entre analistas de sistemas, diseñadores de sistemas y analistas programadores. Finalmente, resume los componentes clave de un sistema de información como el software, hardware, gente, bases de datos y procesamientos.
El documento describe el método en V para el desarrollo de proyectos de software. El método en V representa las etapas del ciclo de vida de un proyecto donde la parte izquierda contiene las especificaciones y la derecha contiene las pruebas integradas. El método incluye etapas como requerimientos, diseño, codificación, integración, verificación y mantenimiento. Realiza pruebas a nivel de componentes, interfaz, sistema y aceptación para validar cada etapa antes de pasar a la siguiente.
El documento describe el modelo de cascada de fases solapadas. Este método permite que las etapas de un proyecto de software se superpongan parcialmente, lo que facilita la progresión del proyecto sin necesidad de esperar a completar una etapa antes de comenzar la siguiente. Esto hace que el desarrollo sea más dinámico e integral, reduciendo el tiempo total del proyecto. Sin embargo, requiere una cuidadosa planificación para delimitar claramente cada etapa.
Documento técnico n 89 propuestas metodologicas para el levantamiento y mo...auditormilano
Este documento presenta propuestas metodológicas para el levantamiento y modelamiento de procesos. Propone una metodología en cuatro fases para el levantamiento de procesos: preparación, recopilación de información, comprensión del proceso y documentación de información. También propone una metodología en cuatro fases para el modelamiento de procesos: preparación, comprensión del proceso, identificación de elementos gráficos y modelamiento del proceso. Incluye dos casos de uso como ejemplos y un glosario de términos
las organizaciones formales e informales.pptxKikeJoi
Las organizaciones formales e informales tienen actualmente un gran impacto en la sociedad. En una época llena de inseguridad e injusticia, la sociedad se refugia en las organizaciones de control social para buscar tranquilidad, solución y apoyo en cualquier escenario.
El documento presenta las credenciales y experiencia de Michael Rojas R. en ingeniería de software, incluyendo una maestría en ciencias de la computación y certificaciones en Microsoft, Java, Spring Framework y Android. También describe sus habilidades en el diseño de soluciones de tecnologías de la información y comunicación, así como conceptos clave de ingeniería de software como los modelos de proceso de software.
El documento describe el diseño a nivel de componentes, el cual define las estructuras de datos, algoritmos y mecanismos de comunicación asignados a cada componente del software. Explica qué es un componente y cómo se relacionan entre sí mediante módulos. También cubre principios como el abierto-cerrado, sustitución de Liskov y cohesión, los cuales buscan facilitar la reutilización y reducir el acoplamiento entre componentes.
La Organización como etapa del Proceso AdministrativoMili Herrera
La organización es una etapa fundamental del proceso administrativo que implica determinar la estructura, procedimientos y recursos necesarios para lograr los objetivos de un grupo social de manera eficiente. Incluye elementos como la estructura, sistematización de actividades y principios como la jerarquía y especialización. Los organigramas son herramientas gráficas útiles en este proceso, y existen diferentes tipos de organización como la funcional y de línea-staff.
El documento describe los componentes y la importancia de la administración. Explica que el proceso administrativo consta de cuatro funciones fundamentales: planeación, organización, dirección y control. Estas funciones se interrelacionan y son universales en cualquier organización donde personas trabajan juntas para lograr objetivos comunes. La administración es importante porque el éxito de cualquier empresa u organización depende de una buena administración.
El documento describe la metodología RUP (Rational Unified Process) para el desarrollo de software. RUP define roles, actividades, artefactos y flujos de trabajo. Incluye fases como Inicio, Elaboración, Construcción y Transición, donde se realizan actividades como análisis de requisitos, diseño de la arquitectura, implementación y pruebas. El objetivo de RUP es producir software de manera predecible y eficiente.
El documento presenta una comparación de los modelos de ciclo de vida para el desarrollo de software, incluyendo el modelo en cascada, el modelo en V, los modelos iterativos, incrementales y en espiral. Cada modelo se define, describe sus fases o etapas, ventajas y desventajas. El modelo en cascada es lineal y sigue una secuencia estricta de fases, mientras que los demás intentan ser más flexibles e iterativos para reducir riesgos y entregar software de forma incremental.
El documento describe los diferentes tipos de organigramas, incluyendo por su naturaleza, finalidad, ámbito, contenido y presentación gráfica. Los organigramas son representaciones gráficas de la estructura organizativa de una empresa que muestran la jerarquía, líneas de autoridad y áreas.
Este documento contiene información sobre subprogramas y funciones en C++. Explica las razones para crear subprogramas, como dividir la complejidad del código y promover la reutilización. También describe los pasos para escribir un subprograma, como definir el problema, darle un nombre y decidir cómo probarlo. Además, cubre temas como los parámetros, el paso de parámetros, el ámbito de variables y la recursividad. Finalmente, incluye ejercicios prácticos sobre el uso de subprogramas.
Este documento describe operadores y la estructura secuencial en algoritmos. Explica diferentes tipos de operadores como aritméticos, lógicos y relacionales. Luego presenta ejemplos de algoritmos secuenciales que suman números ingresados por el usuario y calculan el área de un círculo. Finalmente, discute las pruebas de escritorio para verificar el comportamiento de los algoritmos.
Un organigrama representa gráficamente la estructura organizacional de una empresa, mostrando las diferentes unidades, cargos, niveles jerárquicos y las relaciones de autoridad. Ofrece información sobre las funciones de cada área y cómo se comunican e interactúan. Puede usarse vertical u horizontalmente, y existen diferentes tipos como los generales, analíticos y suplementarios.
El documento describe un método para definir la arquitectura de procesos de una empresa. Explica que la arquitectura de procesos trata de alinear los objetivos estratégicos, procesos de negocio y sistemas de tecnología de una empresa. Luego, detalla los cuatro pasos del método: 1) captura del organigrama, 2) modelado de la vista horizontal, 3) modelado de la configuración de valor, y 4) modelado de la arquitectura de procesos. Finalmente, aplica el método a un caso pr
FDD (Desarrollo Basado en Funcionalidades) es un proceso ágil para el desarrollo de sistemas que se enfoca en las fases de diseño y construcción. Consiste en cinco pasos secuenciales: desarrollo de un modelo global, construcción de una lista de funcionalidades, planeación por funcionalidad, diseño por funcionalidad y construcción por funcionalidad. Define roles claves como el Director del Proyecto, Arquitecto Jefe y Programador Jefe.
El documento describe los orígenes y desarrollo del lenguaje de programación Java. Java se creó originalmente en 1991 por un equipo de Sun Microsystems para aplicaciones electrónicas de consumo y se caracterizó por su portabilidad. En 1995, cuando se incluyó un intérprete de Java en el navegador Netscape, Java se convirtió en un lenguaje popular para aplicaciones web. Desde entonces, Java ha continuado evolucionando y expandiéndose, con versiones posteriores que agregaron nuevas características y mejoras.
El documento describe el Modelo V, un método para el desarrollo de software. El Modelo V representa gráficamente las fases del ciclo de vida del desarrollo de sistemas en forma de V, incluyendo el análisis de requisitos, diseño, implementación, pruebas e integración. El modelo ayuda a definir las pruebas necesarias en cada fase y a identificar dónde volver si se encuentran errores. El propósito del modelo es regular el proceso de desarrollo de software y mejorar la calidad del proyecto.
O documento apresenta os conceitos e arquitetura do Design Orientado a Domínio (DDD). Ele explica que DDD é uma abordagem de desenvolvimento de software focada nas regras de negócio e no domínio, não nos bancos de dados. O documento também descreve artefatos como entidades, objetos de valor, agregações, serviços e repositórios.
Este documento presenta dos métodos para estimar los costos de un software para DJ: el método ascendente y COCOMO. El método ascendente divide el proyecto en 3 etapas con sus actividades y costos asociados, para un total estimado de $3,300. COCOMO estima el esfuerzo, tiempo y costo requerido basado en el tamaño del proyecto en líneas de código, calculando un esfuerzo de 3 hombre-mes, un tiempo de desarrollo de 2.9 meses y un costo total de $3,300. Ambos métodos ar
Análisis de sistemas informáticos alexis diazAlexis Díaz
El documento describe los conceptos de análisis y diseño de sistemas. Explica que el análisis especifica lo que el sistema debe hacer mientras que el diseño establece cómo alcanzar el objetivo. También distingue entre analistas de sistemas, diseñadores de sistemas y analistas programadores. Finalmente, resume los componentes clave de un sistema de información como el software, hardware, gente, bases de datos y procesamientos.
El documento describe el método en V para el desarrollo de proyectos de software. El método en V representa las etapas del ciclo de vida de un proyecto donde la parte izquierda contiene las especificaciones y la derecha contiene las pruebas integradas. El método incluye etapas como requerimientos, diseño, codificación, integración, verificación y mantenimiento. Realiza pruebas a nivel de componentes, interfaz, sistema y aceptación para validar cada etapa antes de pasar a la siguiente.
El documento describe el modelo de cascada de fases solapadas. Este método permite que las etapas de un proyecto de software se superpongan parcialmente, lo que facilita la progresión del proyecto sin necesidad de esperar a completar una etapa antes de comenzar la siguiente. Esto hace que el desarrollo sea más dinámico e integral, reduciendo el tiempo total del proyecto. Sin embargo, requiere una cuidadosa planificación para delimitar claramente cada etapa.
Documento técnico n 89 propuestas metodologicas para el levantamiento y mo...auditormilano
Este documento presenta propuestas metodológicas para el levantamiento y modelamiento de procesos. Propone una metodología en cuatro fases para el levantamiento de procesos: preparación, recopilación de información, comprensión del proceso y documentación de información. También propone una metodología en cuatro fases para el modelamiento de procesos: preparación, comprensión del proceso, identificación de elementos gráficos y modelamiento del proceso. Incluye dos casos de uso como ejemplos y un glosario de términos
las organizaciones formales e informales.pptxKikeJoi
Las organizaciones formales e informales tienen actualmente un gran impacto en la sociedad. En una época llena de inseguridad e injusticia, la sociedad se refugia en las organizaciones de control social para buscar tranquilidad, solución y apoyo en cualquier escenario.
El documento presenta las credenciales y experiencia de Michael Rojas R. en ingeniería de software, incluyendo una maestría en ciencias de la computación y certificaciones en Microsoft, Java, Spring Framework y Android. También describe sus habilidades en el diseño de soluciones de tecnologías de la información y comunicación, así como conceptos clave de ingeniería de software como los modelos de proceso de software.
El documento describe el diseño a nivel de componentes, el cual define las estructuras de datos, algoritmos y mecanismos de comunicación asignados a cada componente del software. Explica qué es un componente y cómo se relacionan entre sí mediante módulos. También cubre principios como el abierto-cerrado, sustitución de Liskov y cohesión, los cuales buscan facilitar la reutilización y reducir el acoplamiento entre componentes.
La Organización como etapa del Proceso AdministrativoMili Herrera
La organización es una etapa fundamental del proceso administrativo que implica determinar la estructura, procedimientos y recursos necesarios para lograr los objetivos de un grupo social de manera eficiente. Incluye elementos como la estructura, sistematización de actividades y principios como la jerarquía y especialización. Los organigramas son herramientas gráficas útiles en este proceso, y existen diferentes tipos de organización como la funcional y de línea-staff.
El documento describe los componentes y la importancia de la administración. Explica que el proceso administrativo consta de cuatro funciones fundamentales: planeación, organización, dirección y control. Estas funciones se interrelacionan y son universales en cualquier organización donde personas trabajan juntas para lograr objetivos comunes. La administración es importante porque el éxito de cualquier empresa u organización depende de una buena administración.
El documento describe la metodología RUP (Rational Unified Process) para el desarrollo de software. RUP define roles, actividades, artefactos y flujos de trabajo. Incluye fases como Inicio, Elaboración, Construcción y Transición, donde se realizan actividades como análisis de requisitos, diseño de la arquitectura, implementación y pruebas. El objetivo de RUP es producir software de manera predecible y eficiente.
El documento presenta una comparación de los modelos de ciclo de vida para el desarrollo de software, incluyendo el modelo en cascada, el modelo en V, los modelos iterativos, incrementales y en espiral. Cada modelo se define, describe sus fases o etapas, ventajas y desventajas. El modelo en cascada es lineal y sigue una secuencia estricta de fases, mientras que los demás intentan ser más flexibles e iterativos para reducir riesgos y entregar software de forma incremental.
El documento describe los diferentes tipos de organigramas, incluyendo por su naturaleza, finalidad, ámbito, contenido y presentación gráfica. Los organigramas son representaciones gráficas de la estructura organizativa de una empresa que muestran la jerarquía, líneas de autoridad y áreas.
Este documento contiene información sobre subprogramas y funciones en C++. Explica las razones para crear subprogramas, como dividir la complejidad del código y promover la reutilización. También describe los pasos para escribir un subprograma, como definir el problema, darle un nombre y decidir cómo probarlo. Además, cubre temas como los parámetros, el paso de parámetros, el ámbito de variables y la recursividad. Finalmente, incluye ejercicios prácticos sobre el uso de subprogramas.
Este documento describe operadores y la estructura secuencial en algoritmos. Explica diferentes tipos de operadores como aritméticos, lógicos y relacionales. Luego presenta ejemplos de algoritmos secuenciales que suman números ingresados por el usuario y calculan el área de un círculo. Finalmente, discute las pruebas de escritorio para verificar el comportamiento de los algoritmos.
Este documento describe los tipos de datos abstractos (TDA), incluyendo su definición, especificación y uso en la programación. Explica que un TDA define un conjunto de operaciones sobre un modelo matemático. Luego, detalla los pasos para definir un TDA, como especificar su dominio, operaciones sintácticamente y semánticamente. Finalmente, explica cómo utilizar los TDA en la programación para separar la abstracción de la implementación.
Este documento presenta los fundamentos de la programación y resolución de problemas mediante computadoras. Explica las tres etapas del proceso: análisis del problema, diseño del algoritmo e implementación en la computadora. También describe conceptos como algoritmos, pseudocódigo, diagramas de flujo y variables. Finalmente, presenta un ejemplo completo de resolución de un problema paso a paso.
El documento explica por qué se eligió Python como primer lenguaje de programación para enseñar. Python tiene una sintaxis sencilla y es poderoso, lo que hace que sea más fácil de aprender que lenguajes como Java o C++. Aprender los conceptos básicos de Python facilita el aprendizaje de otros lenguajes. El documento también proporciona una introducción a los conceptos básicos de Python como variables, funciones, condicionales, bucles y clases.
El documento presenta información sobre algoritmos. Explica las fases para desarrollar un algoritmo: análisis del problema, diseño del algoritmo e implementación del algoritmo. También describe características de los algoritmos como precisión, finitud, entrada, salida y eficiencia. Presenta ejemplos de algoritmos cotidianos y resume los conceptos clave sobre algoritmos.
DTrace es una herramienta de instrumentación desarrollada por Sun que permite analizar el comportamiento de sistemas Solaris en tiempo real sin afectar el rendimiento. Se compone de un lenguaje de programación llamado D y proveedores que publican sondas. Los programas DTrace se usan para definir sondas, predicados y acciones. También permite crear nuevos proveedores para instrumentar aplicaciones personalizadas.
Este documento presenta los conceptos básicos de la lógica computacional. Explica términos clave como informática, computadora, hardware, software y cómo funciona un PC. Describe los pasos para solucionar un problema, incluyendo la definición del problema, análisis, identificación de variables y constantes, algoritmo, codificación y pruebas. También cubre temas como variables, constantes, operadores, enunciados, comentarios y primitivas básicas. El documento provee una introducción general a los fundamentos de la programación y l
Este documento presenta los conceptos y metodología básicos de la programación. Explica que la programación implica seguir pasos como definir el problema, los datos de entrada y salida, desarrollar un algoritmo, probarlo y codificarlo. También describe elementos clave como variables, operadores, expresiones e instrucciones. Finalmente, introduce conceptos como flujo de control, estructuras selectivas y repetitivas.
Este documento describe los conceptos básicos de la programación, incluyendo la estructura general de un programa, los elementos como datos, operadores, expresiones e instrucciones, y técnicas para representar algoritmos como diagramas de flujo y pseudocódigo. Explica que un programa es un conjunto ordenado de instrucciones que resuelven un problema, y que los algoritmos son independientes del lenguaje de programación utilizado. También cubre temas como declaración de variables, tipos de operadores y funciones internas, y diferentes tipos de instrucciones como asignación y control.
Este documento presenta una guía para el examen diagnóstico de programación utilizando el programa PSeInt. Explica brevemente qué es PSeInt, describe su interfaz y área de trabajo. Luego, introduce conceptos clave como el pseudocódigo, tipos de datos, expresiones, estructuras de control y ejemplos resueltos de algoritmos en pseudocódigo.
Este documento describe los conceptos de memoria estática y dinámica en los sistemas de computación. Explica que la memoria estática es asignada por el compilador para elementos fijos del programa, mientras que la memoria dinámica es asignada y liberada dinámicamente durante la ejecución. También cubre temas como la asignación de memoria, el uso de pilas y colas, y el recolector de basura.
El documento presenta información sobre algoritmos y diagramas de flujo. Explica que un algoritmo es un conjunto de pasos para resolver un problema y provee ejemplos. También define diagramas de flujo como una representación gráfica de un algoritmo y cubre conceptos como variables, operadores y tipos de datos. Finalmente, propone ejercicios para diseñar algoritmos y diagramas de flujo.
El documento trata sobre conceptos básicos de programación. Explica las diferentes etapas para crear un programa informático, incluyendo el análisis del problema, diseño de algoritmos, codificación, pruebas y documentación. También describe elementos clave como variables, constantes, estructuras secuenciales, selectivas y repetitivas, y diferentes lenguajes de programación.
Introducción a los algoritmos y programación 1Jeckson Loza
Este documento introduce los conceptos básicos de la programación y la solución de problemas. Explica que la programación es un proceso para escribir instrucciones que permitan a una computadora realizar una tarea específica. Describe el ciclo básico de programación que incluye analizar el problema, diseñar un algoritmo, traducir el algoritmo a un lenguaje de programación y depurar el programa. También presenta un ejemplo de cómo aplicar este ciclo para calcular el área de un triángulo rectángulo.
Este documento presenta un resumen de Turbo Pascal versión 7.0. Incluye una lista de alumnos, una introducción al lenguaje Pascal desarrollado por Niklaus Wirth, y una descripción de los menús y funciones del entorno de programación Turbo Pascal 7.0 como compilar, ejecutar y depurar programas.
Este documento describe los pasos para diseñar algoritmos, incluyendo el análisis del problema, la división del problema en subproblemas más simples, y el uso de herramientas como pseudocódigo y diagramas de flujo. Explica conceptos como diseño descendente, refinamiento paso a paso, y los símbolos estándar utilizados en diagramas de flujo. También incluye ejemplos de pseudocódigo y diagramas de flujo para el cálculo del área de un rectángulo.
El documento habla sobre algoritmos y diagramas de flujo. Define un algoritmo como un conjunto de pasos ordenados para resolver un problema, y explica que los algoritmos se pueden clasificar en cuantitativos y cualitativos. También describe los componentes de un diagrama de flujo y los pasos para desarrollar un programa, incluyendo análisis, diseño, codificación, ejecución y pruebas.
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Nerys Ramírez Mordán
Este código genera secuencias y repeticiones de vectores en R:
1. La línea 1:10 genera un vector numérico desde 1 hasta 10.
2. La línea rep(1:4,2) repite el vector de 1 a 4 dos veces, resultando en el vector [1,2,3,4,1,2,3,4]. La función rep() repite el vector especificado (1:4) la cantidad de veces indicada en el segundo argumento (2).
Así, rep() permite generar repeticiones de vectores de manera fácil en R.
El documento explica los conceptos fundamentales de los sistemas y sistemas de información. Define un sistema como un conjunto de componentes interrelacionados que trabajan juntos para lograr objetivos comunes. Explica que los sistemas dinámicos tienen tres funciones básicas: entradas, procesamiento y salida, mientras que los sistemas cibernéticos agregan retroalimentación y control. También describe los componentes clave de un sistema de información, incluidos recursos humanos, hardware, software, datos y redes.
El documento habla sobre los fundamentos de los sistemas de información en los negocios. Explica que un sistema de información puede ser cualquier combinación organizada de personas, hardware, software y recursos de información que almacene, recupere y transmita información en una organización. También describe varios tipos de sistemas de información como los sistemas de apoyo a las operaciones, sistemas de apoyo administrativo y otras categorías.
Este documento discute diferentes formas de representar grafos, incluyendo listas de aristas, listas de adyacencia y matrices de adyacencia. La lista de aristas enumera todas las aristas de un grafo, mientras que la lista de adyacencia especifica los vértices adyacentes a cada vértice. Las matrices de adyacencia usan una matriz booleana donde un 1 indica una arista entre dos vértices y un 0 indica ausencia de arista.
Este documento proporciona instrucciones para crear una presentación de PowerPoint de 10 diapositivas o menos sobre los sitios turísticos y la biodiversidad de Buenaventura, Colombia para un amigo en Finlandia. Se pide explicar los conceptos de biodiversidad, manglares y plancton, ubicar Buenaventura en un mapa, e incluir los principales sitios turísticos e información sobre avistamiento de ballenas.
El documento describe los esfuerzos para rediseñar los programas académicos en el Instituto de Bellas Artes e implementar las Tecnologías de la Información y la Comunicación (TIC). Actualmente, el instituto cuenta con recursos tecnológicos básicos como internet de alta velocidad y computadores, pero se necesita mejorar la capacitación de docentes, aumentar los recursos educativos digitales, y rediseñar los programas de estudio para integrar mejor las TIC. El objetivo general es formar estudiantes con habilidades TIC
Este documento introduce la teoría de grafos, incluyendo sus definiciones básicas como grafos simples, multigrafos, pseudografos, grafos dirigidos y multigrafos dirigidos. También describe cómo los grafos pueden usarse para modelar diferentes sistemas como redes sociales, grafos de influencia, y dependencias en programación concurrente.
LA PEDAGOGIA AUTOGESTONARIA EN EL PROCESO DE ENSEÑANZA APRENDIZAJEjecgjv
La Pedagogía Autogestionaria es un enfoque educativo que busca transformar la educación mediante la participación directa de estudiantes, profesores y padres en la gestión de todas las esferas de la vida escolar.
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMJuan Martín Martín
Examen de Selectividad de la EvAU de Geografía de junio de 2023 en Castilla La Mancha. UCLM . (Convocatoria ordinaria)
Más información en el Blog de Geografía de Juan Martín Martín
http://blogdegeografiadejuan.blogspot.com/
Este documento presenta un examen de geografía para el Acceso a la universidad (EVAU). Consta de cuatro secciones. La primera sección ofrece tres ejercicios prácticos sobre paisajes, mapas o hábitats. La segunda sección contiene preguntas teóricas sobre unidades de relieve, transporte o demografía. La tercera sección pide definir conceptos geográficos. La cuarta sección implica identificar elementos geográficos en un mapa. El examen evalúa conocimientos fundamentales de geografía.
2. Nombre: Esteban Andrés Díaz Mina
Ingeniero de Sistemas (UV)
Especialista en Redes de Comunicación (UV)
Magister en E-Learning (UNAB-UOC)
E-mail : esteban.diaz@correounivalle.edu.co
Fundamentos de Programación
3. Diseño de programas desde la especificación hasta
la implementación.
Usar buenas practicas de programación como
Principios básico del Desarrollo de Software
Fundamentos de Programación
4. Las clases se dictan con videobeam y/o en la sala de
computo.
Se promoverá la participación activa de los estudiantes
mediante actividades en clase.
Para el diseño de programas se usan dos innovaciones
Pedagógicas:
unas guías de diseño que orientan al estudiante en todo el
proceso y un ambiente de programación para principiantes,
que se adapta a medida que los usuarios se van volviendo
expertos.
Fundamentos de Programación
7. How to Design Programs
Matthias Felleisen
Robert Bruce Findler
Matthew Flatt
Shriram Krishnamurthi
Disponible en:
http://www.htdp.org
Fundamentos de Programación
8. En este curso se debe usar el Entorno de Desarrollo
Integrado DrRacket para la definición de las funciones.
Fundamentos de Programación
10. Funcional.
Relativamente pequeño. (Versión 6.11 – 76 MB)
Fácil de aprender.
Programas usualmente son más cortos.
Utilizado para enseñar programación.
Fundamentos de Programación
11. Racket puede ejecutar una línea de código tan
pronto como se escribe en la ventana de
interacción.
> (+ 17 8)
25
Fundamentos de Programación
12. Suponga que queremos hallar la solución de la
siguiente expresión:
3 + 2 * 7
Parece fácil, sin embargo, se puede dar más de
una interpretación. ¿Cuáles?
Fundamentos de Programación
13. Se pueden pensar que la expresión se reduce a
“5 * 7” o a “3 + 14” dependiendo de que
operación se realice primero. Lo cual puede
ocasionar ambigüedad.
3 + 2 * 7
¿Cómo se puede evitar este tipo de error?
Fundamentos de Programación
14. Evaluación Sencilla
Se pueden adicionar paréntesis para delimitar parte
de la expresión.
(3 + (2 * 7))
Por medio de lo anterior, obtenemos total claridad.
Se aprecia que primero se debe multiplicar 2 y 7;
luego a este resultado sumarle 3.
Fundamentos de Programación
15. Notación Prefija
Racket usa notación prefija, en este tipo de evaluación
se invoca primero el operador, seguido por los
argumentos.
( <operador> <argumentos> )
Ejemplos:
(+ 5 3)
(* 4 6)
(* 7 (- 6 5))
(* 2 3 5)
Fundamentos de Programación
16. Usando el Stepper
DrRacket incluye una herramienta que presenta paso a
paso la evaluación de una expresión.
El Paso a Paso muestra el orden de evaluación de las
expresiones.
Ejemplo:
(/ (+ 2 7) (/ (* 6 4) (- 12 4) ))
Fundamentos de Programación
17. Scheme
Enteros 9, -5, 0, -48
Números Reales 3.14159, 2.78
Fraccionarios 1/2, 5/3
Símbolos x, y, pi, radio
a menudo son usados para los nombres de:
Una función
Un parámetro
Una variable
Fundamentos de Programación
18. Scheme
Hay alrededor de 100 símbolos predefinidos en Racket,
incluyendo operadores aritméticos:
Símbolo Nombre
+ Adición
- Sustracción
* Multiplicación
/ División
Fundamentos de Programación
19. Primer Ejemplo
Suponga que queremos usar la función predefinida
“sqrt”, la cual retorna la raíz cuadrada de su parámetro.
Por ejemplo, se puede escribir lo siguiente en Racket:
(sqrt 121)
Fundamentos de Programación
20. Primer Ejemplo
Igualmente se puede escribir:
(sqrt 2)
Sin embargo, el resultado que se aprecia es:
#i1.4142135623730951
¿Qué significa “#i”?
Esta es una forma en la que Racket indica la
aproximación en un cálculo.
Fundamentos de Programación
21. Se ofrecen numerosas funciones de uso común:
– (sqrt A) →
– (expt A B) →
– (exp A) →
– (modulo A B) → residuo de la división entera A/B
A
B
A
A
e
Fundamentos de Programación
23. Vocabulario (Funciones)
Predecible, reproducible.
Cada vez que se aplica a la función el mismo
parámetro, se obtiene el mismo resultado.
Si f(x)= x * x * x f(2) = 8.
Nada cambia en los parámetros.
Cada vez que se llama una función, no se
modifica el valor del parámetro. Es decir “La
función no altera nada en el mundo.”
Si f(x)= x * x * x f(2) = 8. El 2 no se modifica.
Fundamentos de Programación
24. Composición
Se pueden realizar composición de múltiples
funciones.
Por ejemplo: f(x)= x * x * x g(x) = x+5
Calcular el resultado de: g(f(2))
El llamado interno f(2), retorna 8; así que el llamado
externo g(8), retorna 13.
g(f(2)) g(8) 13
Fundamentos de Programación
25. Funciones en Scheme
Consideremos nuevamente la función f(x) = x * x
Se empieza por asignar un nombre apropiado a la
función:
(define (cuadrado x)
Se continúa adicionando el cuerpo correspondiente
(define (cuadrado x)
(* x x)
)
Fundamentos de Programación
26. Funciones en Scheme
(define (cuadrado x)
(* x x)
)
Posteriormente, se prueba la función
(cuadrado 7) (cuadrado 10)
49 100
Fundamentos de Programación
27. Funciones en Scheme
; Genera el cuadrado de un número
(define (cuadrado x)
(* x x ))
; Genera la suma de cuadrados
(define (sumaCuadrados x y)
(+ (cuadrado x) (cuadrado y)))
Fundamentos de Programación
28. Funciones en Scheme
Formule las siguientes funciones matemáticas
como una función en Racket:
Fundamentos de Programación
30. Aunque para el interprete no tenga relevancia el estilo;
como una buena practica de programación, nosotros
siempre lo mantendremos!
Considerando el buen estilo, se usarán identaciones y
se mantendrá en el mejor formato las definiciones de
las funciones.
Fundamentos de Programación
32. Buen estilo de Definición de Función
(define (hipotenusa lado1 lado2)
(sqrt (+
(* lado1 lado1)
(* lado2 lado2))))
Lo anterior es opuesto a:
(define (hipotenusa lado1 lado2) (sqrt (+ (* lado1 lado1) (* lado2 lado2))))
Fundamentos de Programación
33. (define (hipotenusa lado1 lado2)
(sqrt (+
(* lado1 lado 1)
(* lado2 lado 2))))
(define (hipotenusa lado1 lado2)
(sqrt (+
(cuadrado lado1)
(cuadrado lado2))))
Fundamentos de Programación
34. Algunas constantes comunes como e y tienen
nombres predefindos en DrRacket
e equivale a #i2.718281828459045
pi equivale a #i3.141592653589793
Otras constantes como velocidad_maxima pueden ser
definidas en DrRacket:
(define velocidad_maxima 60)
Fundamentos de Programación
35. Definición de la función que calcula el área de un Circulo
(define (areaCirculo radio)
(* pi (* radio radio)))
Posteriormente ejecutamos la función, suministrando
todos los valores necesarios para las variables.
(areaCirculo 10) #i314.1592653589793
Fundamentos de Programación
36. Errores de Sintaxis
Comparable a los errores gramaticales en los lenguajes
naturales.
DrRacket verifica que todo el código este correctamente
organizado de acuerdo a las reglas.
Errores en Tiempo de Ejecución
Dividir por cero, por ejemplo.
Número incorrecto de parámetros cuando se intenta ejecutar
la función.
( Error Semántico)
Fundamentos de Programación
37. Errores Lógicos
La “gramática” está correcta, pero la solución no
es apropiada para el problema.
Por ejemplo, se solicita una función que determine
el cuadrado de un número y se realiza una función
que determina la raíz cuadrada de un número.
Fundamentos de Programación
38. (* (8) 2)
(2 * 4)
(/ * 3 5)
(/ 3 0)
(define (func2 a) (+ b 2))
(define func1 (a) (+ a 2))
(define (func3 1) (+ a 2))
Fundamentos de Programación
39. Una fábrica produce gorros en forma de cilindro. El
administrador de la empresa requiere saber cuánto
material es requerido para la elaboración de los
gorros.
Fundamentos de Programación
Área total del cilindro:
Donde,
r: radio de la base
h: la altura del cono
)(2 hrr
40. El Dodecaedro es un poliedro formado por doce caras
pentagonales.
El área y el volumen de este poliedro se puede calcular
con las siguientes formulas:
Donde a es la longitud de una de las aristas.
)525(53 2
aA
4
)5715(3
a
V
Fundamentos de Programación
a. Escriba una función para calcular el área del dodecaedro.
b. Escriba una función para calcular el volumen del dodecaedro.
43. Aplicar la función a las entradas de los ejemplos
Verificar que las salidas esperadas correspondan
con las obtenidas.
Descubrir los errores
Pruebas
Formular cómo la función calcula su resultado.
Desarrollar una expresión en Racket que use
primitivas, otras funciones y las variables.
Transformar las expresiones matemáticas asociadas
al problema, cuando estén disponibles
Definir la funciónCuerpo
Buscar ejemplos asociados al problema.
Crear ejemplos.
Validar los resultados, si es posible.
Caracterizar la relación
entrada-salida por medio de
ejemplos
Ejemplo
Escoger un nombre que se ajuste al problema.
Estudiar el problema y determinar los datos de
entrada que requiere la función.
Asociar una variable por entrada.
Describir que debería producir la función a partir
de las variables
Formular el contrato y la cabecera así:
;; nombre: numero_1 … numero_2
;; Calcular numero_2 desde numero_1 …
(define (nombre x1 …)…)
Describir el propósito de la
función.
Dar el nombre a la función.
Especificar la naturaleza de
los datos de entrada y de
salida;
Formular la cabecera
Propósito
Contrato
Cabecera
ActividadObjetivoFase
44. ;;Propósito:
;;Una breve descripción del problema.
;;Contrato:
;;<nombre> : <tipos de variable> <tipos de variable>
;;Ejemplo:
;; <ejemplo de qué se quiere colocar>
;; debe producir <ejemplo de que debería ocurrir>
;;Definición
;;<aquí se coloca el código>
;;Pruebas
;;<aquí se colocan las pruebas>
Fundamentos de Programación
45. ;; Nombre: Luís Ramírez
;; Código: 201812345
;; Taller 1- Ejercicio 3.
Diseño del Programa:
;; Propósito: Una breve descripción del problema.
;; Contrato: <nombre> : <tipos de variable> -> <tipos de variable>
;; Ejemplo: <ejemplo de qué se quiere colocar>
debe producir <ejemplo de que debería ocurrir>
;; Definición <aquí se coloca el código>
;; Pruebas <aquí se colocan las pruebas>
Fundamentos de Programación
46. Escriba la receta de diseño para una función que
calcule el área de un círculo.
Fundamentos de Programación
47. ;; Calcular el área de un círculo a partir del radio.
Fundamentos de Programación
54. La fuerza de atracción entre dos masas m1 y m2,
separadas por una distancia d, está dada por la formula:
Donde G es la constante de gravitación universal:
2
21 )**(
d
mmG
F
8
10*673.6
G
Fundamentos de Programación
Escriba la receta de diseño para un programa que obtenga
la fuerza Gravitacional a partir de las masas de los dos
cuerpos y la distancia entre ellas.
56. En los programas no solamente se permiten representar
funciones matemáticas, como las vistas hasta ahora.
Al programar también se permite controlar la
realización de un cálculo si se cumplen o no ciertas
condiciones.
El manejo de condiciones dota de un gran poder
expresivo a los lenguajes de programación, y por lo
tanto permiten construir programas más complejos.
Fundamentos de Programación
57. Ejemplos:
¿El número de estudiantes matriculados en el curso
750080M es superior a 40?
¿El avión tiene suficiente combustible para llegar al
aeropuerto de Santiago de Cali?
¿El estudiante con código 201634567 aprobó más de la
mitad de los créditos?
Fundamentos de Programación
58. Un booleano es un tipo de dato fundamental para
el manejo de las condiciones.
Los Booleanos representan los valores de verdad
true y false
Fundamentos de Programación
59. Las funciones que permiten determinar la
satisfacción o no de cierta propiedad en un conjunto
de valores se conocen como Predicados.
Fundamentos de Programación
60. Los predicados tienen las siguientes propiedades:
1. Producen un valor de verdad; en DrRacket
true o false.
2. Los nombres generalmente finalizan con el
carácter ? (los predicados propios de DrRacket
tienen esta característica).
Fundamentos de Programación
61. (number? <valor>)
Determina si <valor> es o no es un número.
(odd? <valor>)
Retorna true si <valor> es un número impar, en caso
contrario retorna false.
(even? <valor>)
Retorna true si <valor> es un número par, en caso
contrario retorna false.
Fundamentos de Programación
63. ;; Determina si la edad de una persona corresponde a
;; la de un menor de edad.
(define (es-menor? edad)
(< edad 18))
Fundamentos de Programación
64. Pregunta
¿Cómo se pueden usar los predicados para tomar
decisiones?
Respuesta
Se utilizarán en enunciados o instrucciones
condicionales.
Fundamentos de Programación
65. Los enunciados condicionales se pueden construir
por medio de la función predefinida en Scheme,
cond.
Su sintaxis o formato es el siguiente:
(cond (cond
[ pregunta1 respuesta1 ] [ pregunta1 respuesta1 ]
[ pregunta2 respuesta2 ] [ pregunta2 respuesta2 ]
… …
[ preguntan respuestan ] ) [ else respuestan ] )
Fundamentos de Programación
66. Interrogante
“Qué significa [pregunta respuesta]?”
Solución
“pregunta” es donde se especifica la condición que se
puede cumplir; para ello, se pueden usar predicados, o
en general expresiones condicionales.
“respuesta” indica que debe ocurrir cuando “pregunta” es
verdadera, es decir, su valor es true.
Fundamentos de Programación
67. Pregunta: ¿Cuantas pregunta-respuesta se pueden manejar en un cond?
Respuesta: Tantas como necesite.
Pregunta: ¿ Qué significa else?
Respuesta: else permite manejar aquellos datos que no se han satisfecho
por ninguna de las condiciones anteriores, la respuesta
asociada, es la respuesta para todos estos casos.
Pregunta: ¿La receta de diseño es diferente al manejar programas
con condiciones ?”
Respuesta: Sí.
Fundamentos de Programación
68. < Menor
> Mayor
= Igual
<= Menor o Igual
>= Mayor o Igual
Fundamentos de Programación
70. Al referirnos a ciertas situaciones, en ocasiones,
involucramos varias condiciones, estas se relacionan por
medio del conectivo y (AND) y el conectivo o (OR).
Ejemplos:
Si apruebo FDP y Matemáticas podré matricular MDI.
Si hoy es Martes o Miércoles entonces tengo clases de
Lectura de Textos Académicos en Ingles.
Fundamentos de Programación
71. En ocasiones, también requerimos expresar la negación de
un acontecimiento como parte de una condición:
Si un número entero positivo no es Primo entonces es
Compuesto.
Si la nota final de Juan Parra en el curso de Matemáticas
no está entre 2.0 y 2.95, entonces no puede habilitar.
Fundamentos de Programación
72. (and (>= nota 3.0) (<= nota 5.0))
(or (>= x 60) (< y 30))
(not (= edad 20))
¿La variable nota está 3.0 y 5.0?
¿El valor de x es mayor o igual que 60, o el valor de y es
menor que 30?
¿La edad es diferente a 20?
Fundamentos de Programación
73. En ocasiones no es necesario evaluar las expresiones
lógicas en su totalidad; se usa de manera inteligente la
semántica del “AND” y del “OR” mediante la
evaluación en corto circuito.
Fundamentos de Programación
75. Suponga que se dispone de una función que
determina el precio unitario de venta de DVD’s, el
precio se calcula dependiendo de la cantidad de
artículos que compre el cliente:
Entre 1 y 5 $250.000 cada uno.
Entre 6 y 10 $220.000 cada uno.
Más de 10 $200.000 cada uno.
Fundamentos de Programación
76. Corresponde a la primera etapa del proceso de diseño de Programas.
En esta fase se indica que conocemos de los datos que la función requiere.
Análisis y Definiciones de Datos:
Si se compran entre 1 y 5, el precio por unidad es de 250.000
Si se compran entre 6 y 10, el precio por unidad es de 220.000
Si se compran más de 10, el precio por unidad es de 200.000
Fundamentos de Programación
77. Se ofrece una pequeña descripción de los datos que se
están usando.
Se aprecia que el precio por unidad varía según la
cantidad de DVD’s a comprar.
La respuesta es un número!
Fundamentos de Programación
78. Determinar el precio por unidad a partir de la
cantidad de DVDs que un cliente desee comprar .
Fundamentos de Programación
79. La anterior fase, nos ofrece suficiente información
para poder establecer el contrato.
;; Contrato: precioUnidad : número --> número
La función recibe una cantidad, y produce el
precio por unidad.
Fundamentos de Programación
81. ;; (precioUnidad 1) debe retornar 250.000
;; (precioUnidad 3) debe retornar 250.000
;; (precioUnidad 8) debe retornar 220.000
;; (precioUnidad 10) debe retornar 220.000
;; (precioUnidad 11) debe retornar 200.000
Se debe diseñar por lo menos ejemplo por cada
condición:
Fundamentos de Programación
82. ¿Qué hacer con la cantidad igual a 0?
Esta entrada no se adapta al problema.
Fundamentos de Programación
83. La definición se basa en el análisis de datos.
;; Definición
(define (precioUnidad cantidad)
(cond
[ . . . ? . . . ]
[ . . . ? . . . ]
)
)
Pregunta: ¿Cuántas condiciones se necesitan?
Respuesta: Observemos el análisis y definición de datos!
Fundamentos de Programación
84. ;;Definición
(define (precioUnidad cantidad)
(cond
[(<= cantidad 5) … ]
[(and (>= cantidad 6)(<= cantidad 10)) … ]
[(> cantidad 10) … ]
)
)
Se aprecia que se manejaron tres casos.
Se debe ser cuidadoso al cubrir el rango de posibilidades.
Fundamentos de Programación
87. Se deben manejar pruebas por cada ejemplo:
> (precioUnidad 1)
;; debe producir 250000
> (precioUnidad 3)
;; debe producir 250000
> (precioUnidad 8)
;; debe producir 220000
> (precioUnidad 12)
;; debe producir 200000
Fundamentos de Programación
88. ;; Pruebas
> (= (precioUnidad 3) 250000)
> (= (precioUnidad 8) 220000)
> (= (precioUnidad 12) 200000)
Con este estilo de pruebas se puede observar si
cada una de las pruebas fue exitosa; cada una de
ellas debe responder “true”.
Fundamentos de Programación
89. Un símbolo es una secuencia de caracteres que por sí
mismos no tienen significado.
Los programas y los usuarios lo dotan de significado.
Hemos visto que símbolos como sqrt y + tienen un
significado predefinido.
Fundamentos de Programación
90. Otros símbolos como hipotenusa y cuadrado se han
definido y tienen asociado el nombre de una función.
Sin embargo, algunos símbolos son sólo símbolos sin
significado adicional. En este caso, para que Racket no
trate de asignarle significado, se precede el símbolo
con una Comilla Simple ( ‘ ).
Fundamentos de Programación
91. Predicados para Symbol
symbol=? : (symbol symbol -> boolean)
symbol? : (any -> boolean)
> (symbol=? ‘one ‘one) > (symbol=? ‘one ‘two)
true false
> (symbol? ‘UV) > (symbol? 45)
true false
Fundamentos de Programación
92. Como ocurre con los números, los símbolos pueden ser
retornados desde las funciones que diseñamos. Igualmente
podemos pasar símbolos a una función.
(define (diaSemana numerodia )
(cond
[ (= numerodia 1) ‘Domingo ]
[ (= numerodia 2) ‘Lunes ]
[ (= numerodia 3) ‘Martes ]
[ (= numerodia 4) ‘Miércoles ]
[ (= numerodia 5) ‘Jueves ]
[ (= numerodia 6) ‘Viernes ]
[ (= numerodia 7) ‘Sábado ]
)
) ¿ Cuál es el contrato de la función?
Fundamentos de Programación
93. Se requiere una función, a la cual se le ingrese el día de la
semana y retorne el número que le corresponde.
¿ Cuál es el contrato de la función?
Fundamentos de Programación
95. En DrRacket, se pueden definir piezas de datos
compuestos llamadas Strings.
Los Strings no son atómicos como los símbolos; ellos se
pueden descomponer en muchas partes.
“Esta es una cadena de caracteres”
(define nombre “Anyali Ruiz”)
Fundamentos de Programación
97. Escriba la Receta de Diseño para una función que
determine si un año es bisiesto.
Un año es bisiesto si es múltiplo de 4:
(por ejemplo 1984).
Sin embargo, los años múltiplos de 100 sólo son
bisiestos cuando a la vez son múltiplos de 400:
(por ejemplo, 1000 no fue bisiesto,
mientras que 2400 sí lo será).
Fundamentos de Programación
98. Escriba la Receta de Diseño para un programa que
reciba un argumento real y que devuelva
“EL NUMERO ES POSITIVO”, si el número es
positivo; “EL NUMERO ES NEGATIVO” si es
negativo o ‘CERO, si es cero.
Utilice los predicados:
real? negative? positive?.
Fundamentos de Programación
99. Desarrollar una función (llamada impuesto) que
calcula el impuesto a partir del pago bruto (sin
descuentos). Por un pago de $240 o menos el impuesto
es del 0% , por un pago de más de $240 hasta de $480
el impuesto es del 15% por un pago de más de $480 el
impuesto es del 28%.
Fundamentos de Programación
100. Desarrollar una función (llamada pago-neto) que
determine el pago neto de un empleado a partir del
número de horas trabajadas (valor-hora es $12).
El pago neto es igual al pago bruto (sin descuentos)
menos el impuesto.
Fundamentos de Programación
101. ;; Propósito: Calcular el valor correspondiente
;; al impuesto a partir del pago bruto.
;; Contrato: impuesto: numero -> numero
;; Cabecera: (define ( impuesto pago-bruto )...)
Fundamentos de Programación
105. ;; Contrato: pago-neto: numero -> numero
;; Propósito: Calcular el pago-neto
;; (con descuento ) a partir del número de
;; horas trabajadas
;; Cabecera:
;; (define ( pago-neto horas-trabajadas )...)
Fundamentos de Programación
109. Escriba un programa que permita calcular la nota
final de un estudiante del curso Fundamentos de
Programación que consta de 3 notas entre 1.0 - 5.0,
la primera nota vale 24%, la segunda 34% y la
tercera 42%. La nota final se obtiene de acuerdo a la
siguiente tabla:
Nota Nota Final
[3.0 – 5.0] Gana
[1.0 – 3.0) Pierde
Fundamentos de Programación
110. (define (promedio a b c)
(+ (* a 0.24)(* b 0.34) (* c 0.42)))
(define (nota a b c)
(cond
[(>= (promedio a b c) 3.0)"Gana"]
[else "Pierde"]))
Fundamentos de Programación
111. (define (nota-f a b c)
(cond
[(and (>= a 1) (<= a 5) (>= b 1) (<= b 5)
(>= c 1) (<= c 5)) (nota a b c)]
[else "Error, alguna de las notas están
fuera de rango"]))
Fundamentos de Programación
112. >(nota-f 5.0 1.5 5.1)
;"Error, alguna de las notas están fuera de rango”.
>(nota-f 2.3 1.5 3.2)
;"Pierde“
>(nota-f 5.0 1.5 5.0)
;"Gana"
Fundamentos de Programación
113. Realice en DrRacket una función llamada
nota_Asignatura que permita a un profesor
obtener la nota final de un estudiante, dadas las
notas correspondiente a los talleres y los exámenes.
La evaluación del curso se hará teniendo en cuenta
la siguiente tabla:
Talleres 30%
Primer Parcial 30%
Examen Final 40%
Fundamentos de Programación
114. (define (notaAsig t p f)
(+ (* t 0.4) (* p 0.3) (* f 0.3)))
Fundamentos de Programación
115. Defina una nueva función asignaturas que tiene
como parámetros de entrada además de las nota
obtenidas, un código de la asignatura con el fin de
calcular la nota de la asignatura deseada, teniendo
en cuenta la sgte tabla:
Código Talleres Primer Parcial Examen Final
750081M 30% 30% 40%
750082M 10% 40% 50%
750083M 20% 30% 50%
750084M 40% 30% 30%
Fundamentos de Programación
116. (define (notaAsig81 t p f)
(+ (* t 0.3) (* p 0.3) (* f 0.4)))
(define (notaAsig82 t p f)
(+ (* t 0.1) (* p 0.4) (* f 0.5)))
(define (notaAsig83 t p f)
(+ (* t 0.2) (* p 0.3) (* f 0.5)))
(define (notaAsig84 t p f)
(+ (* t 0.4) (* p 0.3) (* e 0.3)))
Fundamentos de Programación
117. (define (Asignatura1 cod t p f)
(cond
[(symbol=? cod '750081M)(notaAsig81 t p f)]
[(symbol=? cod '750082M)(notaAsig82 t p f)]
[(symbol=? cod '750083M)(notaAsig83 t p f)]
[(symbol=? cod '750084M)(notaAsig84 t p f)]
[else "El código No se encuentra"]
)
)
Fundamentos de Programación
118. (define (Asignatura cod t p f)
(cond
[(not(symbol? cod)) "El Código debe ser un symbol"]
[ (or
(< t 1.0) (> t 5.0)
(< p 1.0) (> p 5.0)
(< f 1.0) (> f 5.0))
"Alguna de las notas esta fuera del rango
permitido"]
[else (Asignatura1 cod t p f)]))
Fundamentos de Programación
121. Una estructura es usada para agrupar datos que
mantienen una fuerte relación.
Esto corresponde a una unidad que se puede
manipular por diferentes funciones sin perdida
del significado de sus datos.
Fundamentos de Programación
122. Persona
Nombre, Apellido, edad, e-mail.
Universidad
Nombre, Ciudad, Año Fundación, Rector
CD
Artista, Género, Número de canciones.
Fundamentos de Programación
123. La Secretaría Académica de la Universidad requiere tener
información de los estudiantes que permita: enviar cartas,
generar y enviar recibos de pago considerando los
estímulos académicos.
La información que se podría almacenar es:
Nombre del estudiante Apellido del estudiante
Dirección Valor de la Matricula
Puesto Programa Académico
Fundamentos de Programación
124. (define-struct <nombre de la estructura>
(<nombre del primer campo>
<nombre del segundo campo>
…
<nombre del último campo>
)
)
Fundamentos de Programación
125. (define-struct estudiante (nombre apellido dirección
valorMatricula puesto programa))
Ahora tenemos la posibilidad de almacenar información
del estudiante usando la estructura estudiante.
ACLARACIÓN:
NO hemos almacenado información acerca de algún estudiante
en particular. Sólo se ha creado un tipo de estructura de datos
que describe la información que se puede almacenar de cada
estudiante.
Fundamentos de Programación
126. Considere la definición de estructura estudiante:
(define-struct estudiante (nombre apellido direccion
valorMatricula puesto programa))
La anterior definición permite utilizar las siguientes
funciones, creadas por DrRacket:
CONSTRUCTOR:
(make-estudiante <nom> <ape><dir> <valMat> <pu> <pr>)
Fundamentos de Programación
127. Siempre que se define una estructura,
automáticamente Racket nos ofrece diversas
funciones que nos permiten manipular la nueva
estructura.
Fundamentos de Programación
130. Ahora podemos acceder a la información de
la siguiente forma:
> (estudiante-nombre Sofia)
>‘Sofia
> (estudiante-direccion Sofia)
>”Kra24#12-40”
>(estudiante-valorMatricula Sofia)
>400000
Fundamentos de Programación
132. Cada estructura definida tiene unos campos que pueden
tomar valores en cierto dominio.
Por ejemplo la estructura estudiante tiene seis campos: tres
symbol y tres number
¿Cómo podemos prevenir, instrucciones como:
(make-estudiante ‘Luis ‘Marquez 2 1900 2 280000)?”
Fundamentos de Programación
133. Desafortunadamente no se puede prevenir construir
instancias de estructura con valores diferentes a los
esperados. Sin embargo, se puede comunicar al usuario
acerca de lo que se espera almacenar en las estructuras.
Esto se realiza por medio de COMENTARIOS.
Fundamentos de Programación
134. Consideraremos la estructura punto, la cual además
de sus coordenadas x & y, tendrá un color asociado;
vamos a establecer que todos tienen el mismo radio.
Fundamentos de Programación
135. ;; Análisis y Definición de Datos
(define-struct punto (x y color))
;; Un punto es una estructura:
;; (make-punto a b c) , donde a y b son números, y
c es un color.
Fundamentos de Programación
136. ;; Análisis y Definición de Datos
(define-struct punto (x y color))
;; Un punto es una estructura:
;; (make-punto a b c) , donde a y b son números, y
c es un color.
Se indica al usuario lo que debe ser pasado al
constructor para crear una instancia Punto.
Fundamentos de Programación
137. Se quiere realizar una función que a partir de dos
puntos determine la distancia entre ellos.
Fundamentos de Programación
138. (define-struct punto (x y color))
;; Un punto es una estructura:
(make-punto a b c)
;; donde a y b son números, y c es un color.
Fundamentos de Programación
139. ;; A partir de dos puntos, determinar la distancia
entre ellos.
;; distancia: punto punto -> número
Fundamentos de Programación
144. Desarrollar una función tiempo->segundos que
tome una estructura tiempo (horas, minutos,
segundos) y produzca el número de total de
segundos.
Fundamentos de Programación
145. (define-struct tiempo (horas minutos segundos))
;; tiempo es una estructura
;; (make-tiempo h m s) donde h, m,s son números
;; Propósito: Calcular el número total de segundos
;; a partir de cierto tiempo.
;; Contrato: tiempo->segundos: tiempo -> número
Fundamentos de Programación
148. Escuela de Ingeniería y Sistemas de Computación
Fundamentos de Programación
Clase 5
149. En Racket, como en la mayoría de lenguajes de
programación, existen definiciones de datos
que se refieren a su propia definición.
¿Qué quiere decir esto?
Fundamentos de Programación
152. ¿Puede una fila tener
una sola persona?
Sí.
¿Que hay detrás de la persona que
se encuentra en la fila?
Una fila vacía.
Fundamentos de Programación
153. Las personas son adicionadas
o removidas de la fila.
Sin importar cuantas
Personas haya,
sigue siendo fila.
¿Por qué?
¿Qué ocurre cuando hay más personas en la fila?
Fundamentos de Programación
154. 1. Una fila vacía o
2. Al menos un cliente y detrás una fila.
Una fila puede ser:
Fundamentos de Programación
155. Sin importar cuantas personas estén en la fila;
¿Con cuales clientes puede tratar el cajero directamente?
Respuesta: El primer cliente.
Es el único que es accesible directamente.
¿Cómo el cajero puede interactuar con el resto de la fila?
Respuesta: Tratando el primer cliente.
Operaciones sobre una fila
Fundamentos de Programación
156. Una lista corresponde a un concepto
computacional (en particular, es un tipo de
dato) muy utilizado para la representación de
datos en los lenguajes de programación.
De las Filas a las Listas
Fundamentos de Programación
157. Podemos ver la relación de este concepto con el de fila
Una fila puede ser:
1. Una fila vacía.
2. Al menos tiene una persona seguida de una fila.
Una lista puede ser:
1. Una lista vacía.
2. Al menos tiene un ??? y un lista de ???.
??? – Significa que las listas NO están limitadas a un tipo
de información en particular
De las Filas a las Listas
Fundamentos de Programación
158. Las listas se construyen en DrRacket a partir de una
unidad fundamental llamada pareja, la cual se
construye utilizando la instrucción cons.
CONS (PAREJAS)
Listas y la sintaxis en Racket
Fundamentos de Programación
159. Pareja es una de las estructuras de datos más
utilizada en DrRacket.
Gráficamente, una pareja se puede representar así:
Cons(pareja)
Fundamentos de Programación
160. Para acceder a los dos componentes, usaremos dos funciones
propias de DrRacket:
(first <pareja>) recupera el dato almacenado en la primera parte
de la pareja
(rest <pareja>) recupera el dato almacenado en la segunda
parte de la pareja
Cons(pareja)
Fundamentos de Programación
first rest
161. (cons <item> <item>) Crea una pareja
(first <pareja>) Accede al frente de la pareja
(rest <pareja>) Accede a la parte posterior de la
pareja
(cons? <dato>) Determina si el dato es una
pareja o no.
Como trabajar con parejas
Fundamentos de Programación
162. Las listas son usadas para almacenar gran variedad
de datos.
Podemos crear
listas de números,
listas de símbolos,
listas de string,
listas de listas, etc.
Listas
Fundamentos de Programación
163. Las listas hacen parte de los tipos de datos dinámicos; es
decir, se pueden crear listas que almacenen poca o
mucha información, dependiendo de las necesidades.
También se puede modificar el número de elementos
que tiene.
Listas
Fundamentos de Programación
164. Una lista puede ser:
1. La lista vacía, empty, o
2. (cons z loz)
donde z es un ??? y loz es una lista de ???.
empty representa la lista vacía.
??? indica el tipo de información que se puede
almacenar en la lista.
Definición de Listas
Fundamentos de Programación
165. Toda lista va a ser una pareja, con la restricción de que
el segundo componente sea una lista; una lista puede
ser empty.
Por lo tanto, nos apoyaremos en el constructor cons
para la creación de listas.
CONS, en este caso, toma dos argumentos:
Una pieza de datos para almacenar en la lista y la lista
donde se va almacenar.
Creación de Listas
Fundamentos de Programación
166. (cons 3 empty)
Dato a
almacenar
La lista sobre la cual
se adicionan valores.
Recuerde que
empty es una lista!
Ejemplo de Creación Listas
Fundamentos de Programación
167. (cons 1 (cons 2 (cons 3 empty)))
Adicionando más valores a la Lista
Fundamentos de Programación
169. Defina una lista que contenga los meses del
año. (Symbol)
Defina una lista que contenga los países
Bolivarianos. (String).
Trabajando con Listas
Fundamentos de Programación
170. Defina la una variable para cada lista del punto
anterior.
(define meses (…))
(define bolivarianos (…))
Trabajando con Listas
Fundamentos de Programación
171. Podemos anidar los operadores first y rest.
(first (rest (rest meses)))
(rest (rest (rest meses )))
(first (rest bolivarianos)))
(rest (rest bolivarianos)))
Trabajando con Listas
Fundamentos de Programación
172. 172
(empty? <value>)
Determina si el valor corresponde a una lista vacía o no.
(list? <value>)
Determina si el valor corresponde a una lista o no
¿Qué devolverá (list? empty)?
Trabajando con Listas
Fundamentos de Programación
173. Las listas son construidas como un caso especial
de las parejas, lo que limita el acceso a solamente
su primer elemento, usando first, y al resto de la
lista, usando rest.
Como procesar las Listas
Fundamentos de Programación
174. Las listas pueden tener cualquier número de
elementos. Por lo tanto, las funciones que
manipulan las listas deben tener la suficiente
flexibilidad para tratar cualquier cantidad de
elementos presentes en ellas.
Como procesar las Listas
Fundamentos de Programación
175. Para el manejo de listas las funciones usan un
ingrediente bastante popular y potente presente
en los lenguajes de programación.
Recursión.
Como procesar las Listas
Fundamentos de Programación
176. La recursión se presenta cuando una función se
llama a sí misma.
Es un poderoso mecanismo para realizar procesos
repetitivos.
Las funciones realmente llaman a una “copia” de sí
mismas.
Muy útil, especialmente para tipos dinámicos de
datos.
Recursión
Fundamentos de Programación
177. Las tres características de la Recursión son:
1. La Función se llama a sí misma.
2. Existe una condición de terminación.
3. Cada vez se acerca más a la condición de terminación.
Características de la Recursión
Fundamentos de Programación
178. Respecto a las listas, su manejo se apoya en la
recursión.
Se dispone de una condición de parada que
permite detener el procesamiento.
La lista vacía (empty)
Se dispone de una operación que paulatinamente
aproxima a la condición de parada. (rest …)
Como se procesa una Lista
Fundamentos de Programación
179. Definición del Problema:
Escribir una función sumList que a partir de una
lista de números, determine la suma de los
elementos presentes en la lista.
Procesando una Lista de números
Fundamentos de Programación
180. ;;Análisis y Definición de Datos:
;; Una lista-de-números consiste de:
;; 1) la lista vacía, empty o
;; 2) (cons n lon) donde n es un número
;; y lon es una lista-de-números.
Receta de Diseño
¡Esta definición de datos es recursiva!
Fundamentos de Programación
181. ;; Propósito:
;; Esta función suma todos los números presentes
;; en la lista de entrada.
;; Contrato: sumList: lista-de-números --> número
Receta de Diseño
Fundamentos de Programación
185. Definir una función que reciba un número y una
lista; la función debe retornar true si el número
está presente en una lista de números, de lo
contrario retorne false.
Ejercicios
Fundamentos de Programación
186. Definir una función (llamada contiene-
simbolos?), que toma un símbolo y una lista de
símbolos y determina si el símbolo está en la
lista.
Ejercicios
Fundamentos de Programación
187. Definir una función (llamada contiene-cadena?),
que toma una cadena y una lista de cadenas y
determina si la cadena está en la lista.
Ejercicios
Fundamentos de Programación
188. Definir una estructura para una biblioteca, tal que los
registros tengan id, titulo, autor y número de paginas.
Definir las siguientes funciones:
a. Una función que determine el promedio de paginas
de los libros presentes en una biblioteca.
b. Una función que retorne la información del libro a
partir del id.
Fundamentos de Programación
189. Definir una estructura para una librería, tal que sus
registros (libros) tengan como campos:
código, titulo, editorial y año de publicación.
Definir las siguientes funciones:
a. Una función que determine el año de publicación a partir
del código.
b. Una función que determine el número de libros cuyo año
de publicación es superior al 2010.
c. Una función que muestre la lista de libros adquiridos en
los últimos cinco años.
Fundamentos de Programación
191. Una secuencia an es una función desde el subconjunto
de los enteros (puede ser {0,1,...,n} o {1,2,...,n}) a un
conjunto S. Usamos el símbolo an para denotar la
imagen del entero n. Se llama a an un término de la
secuencia.
Usamos la notación {an} para describir una secuencia.
Las secuencias se describen listando sus términos en
orden de subíndice creciente.
Fundamentos de Programación
192. Una progresión geométrica es una secuencia de la forma a, ar,
ar2, ....,arn; donde el termino inicial a y el radio común r son
números reales.
Radio Común: valor constante, resultado del cociente de
cualquier término entre su predecesor.
Ex. La secuencia 5, 15, 45, 135,...., es una progresión
geométrica, cuya solución general an= 3an-1 , n≥0, a0=5.
Fundamentos de Programación
193. Teorema: La solución particular de la función
recursiva an= dan-1 , donde n≥ 0, d es una
constante y a0=A, es única y está dada por an=
Adn, n≥0.
La solución particular de an= 3an-1 , n≥0, a0=5 es
an= 5(3)n
Fundamentos de Programación
194. Una progresión aritmética es una secuencia de la
forma a, a+d, a+2d, ......a+nd. donde el termino inicial
a y la diferencia común d son números reales.
La secuencia -1, 3, 7, 11, ...., es una progresión
aritmética, con termino inicial –1 y diferencia común
es 4, cuya solución es la secuencia {sn} con sn=-1+4n.
Fundamentos de Programación
195. Escriba en Racket un programa que permita
calcular la suma de los n primeros términos de las
siguientes series:
1 + 2 + 3 + 4 + 5 + 6 + 7 +…+ n
1 * 2 * 3 * 4 * 5 * 6 * 7 *….* n
2 + 4 + 6 + 8 + 10 + 12 + 14 +…+ 2n
3 + 5 + 7 + 9 + 11 + 13 + 15 +…+ (2n+1)
-4 + 6 – 8 + 10 – 12 + 14 – 16 +…+ (-1)n(2n+2)
Fundamentos de Programación
196. Escriba en DrRacket un programa que permita
calcular la suma de los n primeros términos de
la siguiente serie:
..
)!18..!1(
18
)!14..1(
15
)!12..!1(
12
)!87654321(
9
)!6!5!4!3!2!1(
6
)!21(
3
Fundamentos de Programación
197. Escriba en DrRacket un programa que permita
calcular la suma de los n primeros términos de
la siguiente serie:
......
16!
16
14)..(1
14
12!
12
10)..(1
10
8!
8
6)5432(1
6
!4
4
)21(
2
Fundamentos de Programación
198. Desarrollar una función (llamada add), que
tome dos números naturales, llamados n y x,
luego genere n + x sin usar el operador + de
DrRacket.
Fundamentos de Programación
204. (define (seriecoseno x n)
(cond
[(= n 0)0]
[else (+
(* (expt -1 (sub1 n)) (/ (expt x (* 2 (sub1 n)))
(fact (* 2 (sub1 n))))) (seriecoseno x (sub1 n)))]))
n)!(2
x
1)(...
6!
x
4!
x
2!
x
1cos(x)
n2
n
642
1))!(2(n
x
1)(
1)-2(n
1-n
Fundamentos de Programación
205. (define (seriecoseno1 x n)
(cond
[(= n 0)0]
[(=(modulo n 2)0)
(- (seriecoseno1 x (sub1 n)) (/ (expt x (* 2 (sub1 n)))
(fact (* 2 (sub1 n)))))]
[else (+ (seriecoseno1 x (sub1 n))
(/ (expt x (* 2 (sub1 n))) (fact (* 2 (sub1 n)))))]))
(2n)!
x
1)(...
6!
x
4!
x
2!
x
1cos(x)
2n
n
642
Fundamentos de Programación
206. (define (seriecoseno2 x n)
(cond
[(= n 1)1]
[(even? n)
(- (seriecoseno2 x (sub1 n)) (/ (expt x (* 2 (sub1 n)))
(fact (* 2 (sub1 n)))))]
[else (+ (seriecoseno2 x (sub1 n))
(/ (expt x (* 2 (sub1 n))) (fact (* 2 (sub1 n)))))]))
(2n)!
x
1)(...
6!
x
4!
x
2!
x
1cos(x)
2n
n
642
Fundamentos de Programación
208. (define (serieex x n)
(cond
[(= n 0)0]
[else (+
(/ (expt x (sub1 n))
(fact (sub1 n))) (serieex x (sub1 n)))]))
n!
x
1)(...
3!
x
2!
x
x1x)(exp
n
n
32
1)!(n
x
1)(
1)-(n
1-n
Fundamentos de Programación
211. Un árbol es una estructura discreta que está formada
por un conjunto de vértices conectados por medio de
aristas y donde no hay circuitos.
¿Qué son los árboles?
Fundamentos de Programación
212. Es una de las estructuras más utilizadas en
computación, y se requiere aprender a
representarlas y el manejo de sus operaciones.
¿Por qué los árboles?
Fundamentos de Programación
213. Un árbol binario es una estructura recursiva,
generalmente compuesta por un elemento raíz y
por dos subárboles: el subárbol izquierdo y el
subárbol derecho.
Árboles Binarios
Fundamentos de Programación
214. ¿Cómo construir un árbol en un lenguaje de
programación?
Se puede resumir en los siguientes pasos:
Pensar que datos se quieren almacenar y definir las
estructuras correspondientes.
Que tipo de árbol se quiere usar y definir la estructura
para los vértices.
Construir el árbol con los datos que se requiera.
Árboles Binarios
Fundamentos de Programación
215. Los árboles binarios se caracterizan porque cada
vértice está conectado a lo sumo con otros dos
vértices, de manera directa; es decir, usando una
sola arista entre cada par de vértices.
Se dice que un vértice está conectado a los otros
dos vértices, por medio de dos ramas o enlaces:
uno llamado enlace o rama izquierda, y el otro,
enlace o rama derecha.
Árboles Binarios
Fundamentos de Programación
217. Primer paso:
No se necesita definir estructuras para almacenar la
información de los vértices, ya que solo va a tener
números.
Construcción de un árbol binario
Fundamentos de Programación
218. Segundo paso:
Se va a usar árboles binarios, por lo tanto se requiere que
la construcción de la estructura vértice tenga tres partes:
Construcción de un árbol binario
Fundamentos de Programación
219. Segundo paso:
Un campo para guardar la información del vértice.
Un campo para acceder a uno de los otros vértices:
acceso al vértice conectado por medio de la rama
izquierda.
Un campo para acceder al otro vértice: el acceso al
vértice conectado por medio de la rama derecha.
Construcción de un árbol binario
Fundamentos de Programación
220. En DrRacket se puede escribir así:
(define-struct vertice (info izq der))
donde a la estructura asociada a los vertices, se le ha
llamado vértice y a sus campos info, izq y der.
En info se guardará un número, en izq y der se
guardaran nodos.
Construcción de un árbol binario
Fundamentos de Programación
221. Tercer paso:
Ahora se construye el árbol, empezando por el vértice
raíz.
(define arbol1 (make-vertice 20
(make-vertice 15 empty empty)
(make-vertice 21 empty empty)))
Construcción de un árbol binario
Fundamentos de Programación
222. La definición de un árbol binario será:
1. empty
2. (make-vertice info izq der)
donde info es un número, izq, der son árbol binario.
Lo anterior indica que un árbol puede estar vacío, y que
su definición se hace a partir de los vértices.
Definición de datos de un árbol binario:
Fundamentos de Programación
225. Operaciones sobre árboles binarios
Las operaciones que se utilizan para acceder a los
elementos de los árboles binarios son las mismas
que se utilizarían para acceder a una estructura con
estructuras
Operaciones sobre un árbol binario
Fundamentos de Programación
226. Funciones sobre árboles binarios
Desarrollar una función que retorne el número de
elementos de un árbol binario
Funciones sobre un árbol binario
Fundamentos de Programación
232. Árbol binario de búsqueda
Un árbol binario de búsqueda es un árbol binario,
donde cada vértice tiene un valor mayor que los
vértices situados a su izquierda, y tiene un valor
menor que los vértices situados a su derecha.
Es una estructura eficiente al momento de hacer
búsquedas.
Árbol Binario de Búsqueda
Fundamentos de Programación
233. Árbol binario de búsqueda
Un arbol-binario-busqueda es:
1. empty
2. (make-nodo info izq der)
donde: izq y der son arbol-binario-busqueda.
Todos los valores tomados por los vértices a la
izquierda deben ser menores que info.
Todos los valores tomados por los vértices a la
derecha deben ser mayores que info.
Árbol Binario de Búsqueda
Fundamentos de Programación
234. Árbol binario de búsqueda
Escriba una función que permita
determinar si un número se encuentra en un Árbol
Binario de Búsqueda
Árbol Binario de Búsqueda
21
2318
Fundamentos de Programación
235. Aplicación de los Árboles
Los investigadores médicos representan la
información familiar mediante árboles para estudiar
enfermedades de tipo hereditarias.
Por ejemplo, requieren buscar en algún momento
sobre un árbol familiar, un cierto tipo de color de
ojos.
Trabajaremos en la representación de árboles
familiares y funciones para procesarlos.
Aplicaciones de los Árboles
Fundamentos de Programación
236. Solución
Para resolver este problema utilizaremos el tipo de
dato abstracto ARBOL que modela de forma adecuada
la información requerida.
Solución
Fundamentos de Programación
237. Análisis y Definición de Datos
Paso 1:
Análisis y Definición de Datos
Necesitamos una estructura para
representar los nodos del árbol.
Esta estructura debe almacenar
los datos necesarios del problema:
(define-struct hijo (padre madre nombre edad ojos))
Análisis y Definición de Datos
Fundamentos de Programación
238. Análisis y Definición de Datos
Se define un árbol familiar de ancestros como una colección
de nodos donde:
Un nodoAFamiliar es:
1. empty o
2. (make-hijo p m no fn co) donde p y m son de tipo
nodoAFamiliar, no y co son símbolos; y fn es un número.
(define-struct hijo (padre madre nombre fechaNac ColorOjos))
Análisis y Definición de Datos
Fundamentos de Programación
239. Ejemplo
;PADRES
(define Eva (make-hijo empty empty 'Eva 1965 ‘blue))
(define Fred (make-hijo empty empty 'Fred 1966 ‘brown))
;HIJO
(define Gustav (make-hijo Fred Eva 'Gustav 1988 ‘brown))
Análisis y Definición de Datos
Fundamentos de Programación
240. ¿Cómo se establecen
las conexiones del hijo al padre en esta representación?
Pregunta
Fundamentos de Programación
241. Paso 2 y 3: Contrato y Propósito
Una vez se tiene el modelo para representar la información
del problema, se pasa a trabajar en la función.
;; CONTRATO:
ancestro-ojos-azules? : nodoAFamiliar -> booleano
;; PROPOSITO:
Determinar si un nodoAFamiliar contiene una estructura
hijo con ojos azules.
Contrato y Propósito
Fundamentos de Programación