UNIVERSIDAD ANÁHUAC Campus Córdoba-Orizaba EXAMEN DEPARTAMENTAL ALGORITMOS Y PROGRAMACIÓN Agosto-diciembre 2021 Nombres de integrantes del equipo: 1. Luis Enrique Contreras González 2. Arturo Emilio Espinosa Castellanos Proyecto Seleccionado (1) (2) Objetivo: Aplicar los conocimientos de Algoritmos y Programación en la solución de problemas de diferente naturaleza (administrativos y/o matemáticos). Formato de documentos: El documento en Word deberá cumplir con lo siguiente: Tipos de letra aceptables: Calibri, Times Roman o Arial. Color de letra: negro. Tamaño de letra: 11 Nota: no cumplir con este formato implica -1/10 sobre calificación del examen. Criterios de Evaluación: a. Cada sección se califica en una escala de 1 a 10 para obtener el puntaje asignado. Ejemplo: Sección Análisis de Datos para obtener el puntaje de 1 debes obtener la calificación de 10 en esa sección. b. La suma de todas las secciones y el puntaje de calificación del examen se muestra a continuación: 1. 2. 3. 4. 5. 6. Análisis de datos (1 punto) Procesos (1 punto) Tabla de asignación de variables (1 punto) Diagrama de Flujo (1 punto) Pseudocódigo (2 puntos) Programa en C++ (4 puntos) Total de Puntos: 10 c. Por cada nombre de archivo incorrecto -0.5/10 Problemas propuestos 1. Realice un algoritmo para generar N elementos de la sucesión de Fibonacci (0, 1, 1, 2, 3, 5, 8, 13,…). 2. Una empresa tiene el registro de las horas que trabaja diariamente un empleado durante la semana (seis días) y requiere determinar el total de éstas, así como el sueldo que recibirá por las horas trabajadas. Entregables: 1. Reporte de examen (este documento) con el nombre: Reporte_inicialesalumnos.pdf El nombre de este archivo debe contener todas las iniciales de los nombres de cada integrante del equipo. 2. Archivos de pseudocódigo. Los nombres de estos archivos deberán seguir el siguiente formato: Pseudo_X_iniciales.psc Dónde la X representa el número de proceso y “iniciales” deben ser la primera inicial del nombre de cada alumno integrante del equipo. El número de archivos debe corresponder al número de procesos del algoritmo. 3. Archivos de programa en C++. Los nombres de estos archivos deberán seguir el siguiente formato: Program_X_iniciales.cpp Dónde la X representa el número de proceso y “iniciales” deben ser la primera inicial del nombre de cada alumno integrante del equipo. El número de archivos debe corresponder al número de procesos del algoritmo programados en C++. 4. Video. El nombre del archivo debe ser: Videodocumental_inicialesalumnos.mp4 La duración del video debe ser entre 3 minutos (mínimo) y 5 minutos (máximo). Al menos debe contener: explicación breve de proyecto, algunos momentos de cada miembro del equipo trabajando en el proyecto, debes incluir imágenes de la pantalla con el código y su evolución (pseudocódigo y C++), explicación de aquellas aportaciones innovadoras al proyecto (uso de librerías en C++, ciclos de repetición diferentes a mientras, instrucciones que ayuden a la presentación de resultados en C++, etc.). Podrás usar la música de tu preferencia pero que permita escuchar los comentarios de los miembros del equipo. Si el vídeo no es entendible o no contiene información relevante del proyecto tendrá una penalización de -2/10 sobre la calificación obtenida 1. Análisis de Datos (1 punto) Investigación: Aquí debes describir cuál es el planteamiento del problema (Puedes usar el espacio que necesites). Describir el algoritmo que se propone usar para solucionar el problema. Elaborar un programa el cual nos permita trabajar con el número de veces que nos indique el usuario siguiendo la sucesión de Fibonacci la cual consiste en la sumatoria de los 2 números anteriores empezando con el “0” y “1” por lo cual nuestro programa deberá conseguir leer los números anteriores y la suma de ellos mostrarla como el nuevo número de la sucesión y así las veces que el usuario nos indique. A partir de esta serie generada también se podrá buscar un número determinado. ¿Con qué datos de entrada inicia el algoritmo y de qué tipo son? Los datos de entrada son el número de veces que nos indica el usuario para repetir la sucesión o el numero a buscar y es de tipo real ¿Qué datos de entrada necesita cada uno de los procesos? (Debes escribir el nombre de cada proceso y el dato de entrada requerido. Debes incluir todos los procesos). Entrada de datos: Real(opción deseada, cantidad de posiciones que pide el usuario/numero a buscar) Generar Serie: Entero (cantidad de posiciones que pide el usuario) Obtener diferencia:Real(número que busca el usuario, número de la serie de la iteración en actual) Comparar diferencia:Real(diferencia del número buscado con el número de la iteración en actual, diferencia del número buscado con el número de la iteración anterior) Mensajes para presentar al usuario: Real(cantidad de posiciones que pide el usuario/número a buscar, números de la serie correspondientes a la cantidad de posiciones que pide el usuario,la diferencia más pequeña de todas las obtenidas en el proceso “obtener diferencia”). ¿Qué tipos de datos salen de cada proceso? (Debes escribir el nombre de cada proceso y el dato de entrada requerido. Debes incluir todos los procesos). Entrada de datos: Real(cantidad de posiciones que pide el usuario/numero a buscar almacenado en una variable y filtrado para evitar entradas incorrectas) Generar Serie: Entero (números de la serie correspondientes a la cantidad de posiciones que pide el usuario) Obtener diferencia:Real(Diferencia entre el número buscado y el número de la serie correspondiente a la iteración actual) Comparar diferencia:Real(La diferencia más pequeña de todas las obtenidas en el proceso “obtener diferencia”) Mensajes para presentar al usuario:Real(lista de la serie por posición o la posición y número de la serie más cercanos al número que se buscó). ¿En qué procesos del algoritmo solución se requieren usar contadores? (Especifica qué es lo que cuentan) La variable “serie” en el proceso de “Generar serie” ya que este nos cuenta el número de veces que se va repetir el programa hasta la impresión en pantalla. ¿En qué procesos se requieren usar variables de control y qué es lo que controlan? En el proceso “Entrada de datos” para bloquear números que no correspondan a una opción y números menores o iguales a 0. ¿Qué tipos de datos entrega a la salida con los que termina el algoritmo? Reales(lista de la serie por posición o la posición y número de la serie más cercanos al número que se buscó). ¿Qué datos deben mostrarse al usuario y por qué? La lista de la serie por posición o la posición y número de la serie más cercanos al número que se buscó; ya que de esta manera el usuario puede entender la información mostrada. ¿Qué tipos de datos deben introducir el usuario y en qué procesos? Debe introducir el número correspondiente a la opción deseada así como el número de posiciones que quiere de la serie o el número a buscar en la parte de “Entrada de datos”. 2. Procesos (1 punto) Respetar la norma para usar diagrama de bloques: a. Las flechas de entrada se colocan a la izquierda del bloque y debe tocarlo. b. Las flechas de salida se colocan del lado derecho del bloque. c. No se admiten flechas de entrada o salida en la parte superior o inferior del bloque. d. No se admiten elementos adicionales a lo descrito en los puntos anteriores. e. Como referencia puede verse los ejemplos en los siguientes procesos. f. Debes pegar la imagen de cada proceso en esta sección. La elaboración de los diagramas a bloques deberá realizarse obligatoriamente con: https://app.diagrams.net/ EL NO CUMPLIMIENTO DE LO ANTERIOR 🡪 PENALIZACIÓN DE -1/10 sobre calificación examen. 3. Tabla de asignación de variables (1 punto) ● Aquí deberás colocar el nombre de cada variable usada en el algoritmo de solución. Recuerda que el nombre debe ser lo más intuitivo posible. ● No se permiten variables de una sola letra. ● El nombre de la variable al menos deberá estar compuesta por cuatro letras como mínimo. ● También debes identificar y mencionar todos los procesos donde es utilizada cada variable. Nombre de la Variable resp Descripción Tipo de Dato Respuesta real numa Número a real numb numc Número b Número c real real num Número real serie Serie real compa Comparación a real compb Comparación b real Variable de Control si Proceso Entrada de datos Generar Serie/Mensajes para presentar al usuario/Obtener diferencia Generar Serie Generar Serie Entrada de datos/Generar série/Obtener diferencia Generar serie/Mensajes para presentar al usuario Obtener diferencia/Comparar diferencia Obtener diferencia/Comparar diferencia 4. Diagrama de Flujo (1 punto) En esta sección debes pegar la imagen del diagrama de flujo. Reglas para usar diagramas de flujo (vistas en clase) • Debe haber un inicio y un final • Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas verticales y horizontales. • Todas las líneas de dirección de flujo deben estar conectadas. • Se debe construir de arriba a abajo y de derecha a izquierda. • La notación en un D.F. es independiente del lenguaje de programación. • Se recomienda colocar comentarios para un mejor entendimiento. • Si se requiere más de una hoja para construir el D.F. es importante usar conectores y numerar las hojas. • No puede llegar más de una línea a un símbolo. • El texto contenido dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras. La elaboración de los diagramas de flujo deberá realizarse obligatoriamente con: https://app.diagrams.net/ EL NO CUMPLIMIENTO DE LO ANTERIOR PENALIZACIÓN DE -1/10 sobre calificación examen. Algoritmo Pseudo_0_AL Definir resp, numa, numb, numc, num, serie, compa, compb como real numa ← 0 numb ← 1 -------Serie de Fibonacci------- "Para generar un numero de posiciones de la serie de Fibonacci, presione 1" "Para buscar un numero dentro de la serie de Fibonacci, presione 2" "" resp resp≠1 Y resp≠2 "Introduzca un numero que corresponda a una de las opciones (1 o 2)" resp resp=1 "¿Cuantas posiciones de la serie fibonacci deseas?" "¿Qué numero dentro de la serie fibonacci deseas buscar?" num num num<0 num ≤0 "Inserte un numero mayor a 0" "El numero mas cercano a ",num, "es 0 en la posción 1" num compb ← num+1 compa ← num-numa compa<0 "Posición",serie,":",numa compb ← compa*(-1) numc ← numa+numb compa≤compb numa ← numb compb ← compa numb ← numc Borrar Pantalla "El número mas cercano a ",num," es: ",numa, "en la posición ",serie numc ← numa+numb numa ← numb numb ← numc FinAlgoritmo 5. Pseudocódigo (2 puntos) ● El pseudocódigo debe ser congruente con los procesos que definiste en la sección del mismo nombre, por lo que: o Deberás elaborar un pseudocódigo por cada proceso (forman parte de los entregables) de la siguiente forma: Suponiendo que tu programa tiene cuatro procesos: ▪ El primero de contener el proceso de captura de datos ▪ El siguiente debe contener: captura de datos más el siguiente proceso 2 ▪ El siguiente debe contener: captura de datos + segundo proceso + tercer proceso. ▪ El último debe contener: captura de datos + segundo proceso + tercer proceso + proceso para mostrar resultados al usuario. NOTA: El ejemplo anterior puede variar según el número de procesos que tu definas. o o ● ● ● ● El último pseudocódigo deberá integrar todos los procesos es decir será el programa completo. Debes entregar un archivo por cada proceso y un archivo con todos los procesos (algoritmo completo). El pseudocódigo del algoritmo completo debe corresponder exactamente al diagrama de flujo elaborado en la sección anterior. Debes asegurarte de que cada instrucción (del pseudocódigo) está representada en el diagrama de flujo. Debes usar exactamente el mismo nombre de las variables que definiste en la “tabla de variables”. Todos los archivos de pseudocódigo deben contener la cabecera completa definida en clase. En la sección de autor deberán aparecer los nombres de los miembros del equipo. Por ejemplo, si definiste cuatro procesos debes entregar cuatro archivos. 6. Programa en C++ (4 puntos) ● Al igual que en la sección de pseudocódigo deberás entregar un programa en C++ por cada proceso definido en la sección del mismo nombre. Por lo que deberás entregar el mismo número de archivos que el mismo número de procesos de la siguiente forma: Suponiendo que tu programa tiene cuatro procesos: ▪ El primer programa en C++ de contener el proceso de captura de datos ▪ El siguiente debe contener: captura de datos más el siguiente proceso 2 ▪ El siguiente debe contener: captura de datos + segundo proceso + tercer proceso. ▪ El último debe contener: captura de datos + segundo proceso + tercer proceso + código en C++ para mostrar resultados al usuario. NOTA: El ejemplo anterior puede variar según el número de procesos que tu definas. o o El último código de C++ deberá integrar todos los procesos es decir será el programa completo. Debes entregar un archivo por cada proceso y un archivo con todos los procesos (algoritmo completo). Por ejemplo, si definiste cuatro procesos debes entregar cuatro archivos. Cabecera para pseudocódigo y programas en C++ Título del programa: Autor/es: Fecha de creación: Descripción del programa: Descripción de variables: (Nombre de la variable y cuál es su función en el algoritmo o programa) Fecha de la última modificación: Modificación hecha por: