Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Universidad Tecnológica Nacional Facultad Regional Haedo Departamento de Ingeniería Electrónica Informática I Guía de ejercicios Estructuras Autores: Facundo Larosa Martín Zuccotti Año: 2018 Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras Organización del contenido La guía posee dos secciones diferentes: ● La primera, contiene un conjunto de ejercicios independientes para cada subtema. ● La siguiente está compuesta por dos ejercicios integradores. El primero de ellos está planteado como una sucesión de ejercicios interrelacionados que sirven de guía para resolverlo. El segundo ejercicio es abierto, es responsabilidad del estudiante definir el camino para realizarlo. En cada una de las secciones, los ejercicios se encuentran organizados de forma que su nivel de complejidad va aumentando progresivamente. Contenido de las secciones ● Sección 1. Se trabajan los siguientes subtemas: ➢ Definición de estructuras simples. Carga, impresión en pantalla. ➢ Utilización de funciones. ➢ Vectores de estructuras. Cantidad indeterminada de datos. ➢ Ordenamiento, búsqueda de valores críticos. ➢ Punteros y estructuras. ● Sección 2. Ejercicios propuestos: ➢ Gestión de biblioteca ➢ Central de soporte técnico Facundo Larosa. Martín Zuccotti. - Página 1 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras Sección 1: ejercicios por subtema ¿Cómo avanzar con esta sección? Según el nivel de ejercitación deseado, se recomiendan los siguientes lineamientos: ● Menú básico: 1-> 2-> 5 ● Menú intermedio: 1-> 2-> 3-> 5->7 ● Menú completo: 1-> 2-> 3-> 4-> 5-> 6-> 7 Temas: Acceso a campos. Carga. Impresión en pantalla. Estructuras y funciones. Estructuras y vectores. Utilidad: Recomendado como punto de partida para comprender la sintaxis de estructuras (1-a), su utilización con funciones (1-b) y el uso de vectores de estructuras (1-c). 1) a) A partir de la siguiente estructura, realice un programa que pida al usuario que cargue cada uno de sus campos y los muestre en pantalla. struct domicilio_s{ char calle[30]; int altura; }; b) Realizar la carga y la impresión en pantalla a partir de funciones. c) Desarrollar un programa en el que se carguen datos hasta ingresar el domicilio “fin”. Luego de la carga, se imprimirán todos los datos cargados. Nota: no se cargarán más de 100 datos. Temas: Acceso a campos. Carga. Impresión en pantalla. Estructuras y vectores. Ordenamiento y búsqueda de valores. Utilidad: Recomendado para familiarizarse con las bases de datos en memoria, incluyendo ordenamiento y búsqueda de valores. Si resulta muy complejo, encarar primero el ejercicio 1. 2) Una empresa quiere realizar una base de datos con los teléfonos de sus clientes, guardándolos junto con sus nombres. a) Se pide hacer una función que permita la carga de los datos de los clientes (finalizará al ingresar el cliente “fin”). b) Imprimir en pantalla los clientes y sus teléfonos, en orden alfabético. c) Realizar una función que permita la búsqueda del teléfono de un cliente a partir de su nombre. Nota: considerar que no se cargarán más de 100 clientes. Facundo Larosa. Martín Zuccotti. - Página 2 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras Temas: Acceso a campos. Carga. Impresión en pantalla. Estructuras y vectores. Menú. Estructuras anidadas. Utilidad: Recomendado para aplicar estructuras anidadas, por ejemplo, utilizando un vector de tres estructuras para los diferentes servicios, cada una de las cuales contiene la cantidad de anotados y un vector de estructuras para los 50 potenciales inscriptos. 3) Diseñe un programa para una máquina de turnos de un banco. Cada usuario se anotará con su nombre completo y DNI e indicará qué clase de servicio utilizará (la clase es un número entero: 1, 2 o 3). El ingreso se hará por un menú donde se indicará si se desea anotar en la lista de turnos u obtener el siguiente usuario de la lista. El criterio para indicar quién es el próximo a atenderse es el siguiente: se elegirá el usuario más antiguo del servicio con mayor cantidad de anotados. Nota: se considera que no habrá más de 50 inscriptos a cada servicio simultáneamente. Temas: Acceso a campos. Carga. Impresión en pantalla. Estructuras y vectores. Ordenamiento. Procesamiento de datos. Utilidad: Recomendado para comenzar a incorporar algoritmos matemáticos en los programas y realizar una toma de decisiones a partir de los coeficientes calculados. Además se incorpora el manejo de estimadores que representan una muestra de datos. 4) En una empresa de colectivos se quiere realizar un informe acerca del estado de las unidades. Para esto los empleados de mantenimiento registran los siguientes datos: Patente: vector de caracteres. Kilometraje: Entero que representa el kilometraje del vehículo en miles de kilómetros (entre 40 y 120). Motor: Entero entre 0 y 4 que representa el estado del motor. Chasis: Entero entre 0 y 4 relacionado al estado del chasis. Interior: Entero entre 0 y 4 vinculado al estado del interior del vehículo. Se determina el estado general de la unidad (un número real entre 0 y 10) a través del siguiente algoritmo: )stado general Chasis E = 4 Motor * ( + 2 Interior + 20 120 − Kilometraje A partir del estado general de la unidad se establecen distintas situaciones: ● Entre 0 y 4: la unidad queda fuera de servicio de manera definitiva. ● Entre 4 y 6: la unidad queda fuera de servicio hasta que se realice mantenimiento. ● Entre 6 y 8: la unidad puede circular pero se recomienda hacer mantenimiento. Facundo Larosa. Martín Zuccotti. - Página 3 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras ● Entre 8 y 10: la unidad puede circular sin correr riesgos. Se solicita hacer un software que reúna los datos de los colectivos y los imprima en pantalla en orden decreciente de estado general, indicando la medida que se debe tomar para cada uno. Además se debe realizar un informe en el que se indique el promedio de estado general, la cantidad de unidades habilitadas para circular y la cantidad de unidades que se encuentran fuera de servicio. Temas: Acceso a campos. Carga. Impresión en pantalla. Estructuras y vectores. Menú. Procesamiento de datos. Muestra de tamaño desconocido. Utilidad: Recomendado para comenzar a manejar cantidades desconocidas de datos y procesar e informar en tiempo real valores críticos de la muestra. 5) Una central del servicio meteorológico cuenta con cinco estaciones remotas capaces de medir presión y temperatura (en este ejemplo, los datos se ingresan por teclado indicando: número de estación, si es presión o temperatura y el valor de la medición). El programa debe ser capaz de guardar e informar en todo momento los diez últimos valores de presión y temperatura de cada estación así como para cada estación y tipo de medición: máximo absoluto, mínimo absoluto ypromedio de todas las mediciones. El ingreso de datos, el informe y la salida del programa se implementarán usando un menú. Temas: Acceso a campos. Carga. Impresión en pantalla. Estructuras y vectores. Menú. Procesamiento de datos. Muestra de tamaño desconocido. Utilidad: Refuerza los conceptos trabajados en los ejercicios 4 y 5. Si resulta muy complejo, primero resolver los anteriores. 6) El personal de Recursos Humanos de una multinacional pretende seleccionar 4 ingenieros de un grupo de entrevistados para un puesto de desarrollos electrónicos. Se pretende hacer la elección en base a un puntaje que se obtiene de un cálculo utilizando atributos que se disponen luego de la entrevista para cada candidato, estos son: Entrevista: Un entero que va de 0 a 5 y denota la impresión obtenida al ser entrevistado. Referencias: Un puntaje que va de -2 a 2 e indica las referencias brindadas por el último empleador. En caso de no tenerlas se ingresará 0. Académico: El promedio académico del entrevistado. Experiencia: Un coeficiente determinado en base a la experiencia previa que va de 0 a 5. El algoritmo es el siguiente: ntrevista eferencias xperiencia cadémico .5P = E * 2 + R + E * 2 + A * 0 Facundo Larosa. Martín Zuccotti. - Página 4 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras Se requiere que en el grupo haya al menos un integrante con un promedio académico mayor a 8 y uno cuyo coeficiente de experiencia sea al menos 4. Realizar un programa que permita ingresar candidatos ingresando primero su nombre y apellido y luego cada uno de los atributos. Terminar con un candidato de nombre “fin” y luego informar los 4 candidatos con los puntajes de cada atributo y el puntaje final calculado. Nota: el número de candidatos que se presentan es indefinido pero se asume que hay al menos 4. Temas: Acceso a campos. Carga. Impresión en pantalla. Estructuras y vectores. Menú. Estructuras anidadas. Procesamiento de datos. Muestra de tamaño desconocido. Utilidad: Recomendado para aplicar estructuras anidadas, trabajar con cantidades desconocidas de datos y extraer valores representativos de la muestra. Si resulta muy complejo, realizar antes ejercicios 3 y 5. 7) En un local de comidas rápidas se quiere implementar un sistema para agilizar el proceso de toma de pedidos. Cada pedido estará compuesto por su número de orden, su importe y entre uno y cinco productos distintos. Para cada producto se conocerá su descripción y su importe. Producto: Descripción: vector de caracteres que describe el producto. Importe: importe del producto. Pedido: Número de orden: número que identifica y ordena al pedido Productos: productos que componen el pedido Importe: importe total calculado a partir de los productos. Realizar un programa que, a través de un menú, permita ingresar un nuevo pedido, indicar el siguiente a ser preparado o finalizar el programa. Cuando se finaliza el programa, se debe indicar la cantidad de pedidos despachados y el importe total facturado en la jornada. Nota: no se conoce la cantidad de pedidos que se harán pero no habrá más de 30 simultáneos. Facundo Larosa. Martín Zuccotti. - Página 5 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras Sección 2: ejercicios integradores Temas: Acceso a campos. Carga. Impresión en pantalla. Estructuras y funciones. Estructuras y vectores. Utilidad: Este es un ejercicio integrador guiado, es decir, integra todos los contenidos de la unidad de estructuras y además está conducido paso a paso para que atraviese los diferentes pasos de la implementación, desde lo más sencillo hasta lo más complejo. Es necesario resolver cada paso para continuar con los siguientes. ¡No sea ansioso! ¡No se saltee los pasos! ¡Déjese llevar! Problema 1: Gestión de biblioteca a) ¡Felicitaciones! Después de mucho esfuerzo, su empresa ha ganado una importante licitación para implementar la base de datos de la Biblioteca Nacional. Con el dinero podrá pagar salarios, comprar equipamiento, saldar la deuda con el banco, irse al Caribe, pero lo más importante… ¡vamos a programar! Se nos indica que se quiere saber, para cada libro, los siguientes datos: ✓ Nombre del libro. ✓ Código (es único para cada libro). ✓ Cantidad de ejemplares. Para comenzar, defina en su programa la estructura de datos con la que trabajará: typedef struct{ char nombre[60]; unsigned int codigo, cantidad; }libro_t; Desde el programa principal, ingrese un valor para cada uno de los campos definidos. Luego, muéstrelos en pantalla. b) Una vez completado el punto anterior realice dos funciones: una para la carga de los datos y la otra para imprimirlos en pantalla. ¿Qué recibe la función de carga? ¿Qué devuelve? ¿Y la que imprime? ¿Qué recibe? ¿Qué devuelve? No siga programando hasta poder contestar, aunque sea mentalmente, estas preguntas. Diagrame primero y codifique después. Realice un programa que cargue los datos de un libro y muéstrelos en pantalla utilizando las funciones definidas. c) A partir de una serie de entrevistas con bibliotecarios, se llegó a la conclusión de que, además de los datos ya definidos, es necesario saber la ubicación del libro dentro de la biblioteca. La ubicación está dada por una letra que representa la estantería y un número, relacionado a la posición del libro dentro de la misma. Facundo Larosa. Martín Zuccotti. - Página 6 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras Modifique la estructura y las funciones definidas para incorporar los nuevos campos. El tipo de datos quedará entonces: typedef struct{ char nombre[60], estanteria; unsigned int codigo, cantidad, posicion; }libro_t; Compruebe que se cargan los datos correctamente. Observación: para simplificar el problema, se va a considerar que todos los ejemplares de un determinado libro se encuentran en la misma posición en la biblioteca. d) Hasta ahora, sólo tenemos la posibilidad de cargar un único libro en nuestro programa. ¿No es muy útil verdad? Realice las modificaciones necesarias para poder cargar hasta un máximo de 50 libros. Luego, imprima en pantalla en el orden en el que fueron ingresados. Considere que la carga finaliza cuando se ingrese un libro con código “0”. e) Teniendo ya nuestros libros cargados en el programa, es importante poder verificar si la biblioteca posee un determinado título, por ejemplo, si alguien está interesado en una obra en particular. Para esto, implemente una función que busque dentro de los libros e informe si lo encontró. En el caso de que se encuentre, imprima en pantalla todos los datos del libro en cuestión. Realice una función que busque por nombre y otra que busque por código. f) Cuando trabajamos con datos es muy difícil interpretar una lista desordenada. Por ejemplo, una lista de alumnos que no está ordenada nos obliga a leer todos hasta encontraral que buscamos. Por eso vamos a organizar nuestros datos. Agregue una función que ordene los libros en orden decreciente de cantidad de ejemplares. Facundo Larosa. Martín Zuccotti. - Página 7 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras g) Realice una función que ordene alfabéticamente el inventario. h) Nuestro programa cuenta con muchísimas funcionalidades, sin embargo, para acceder a todas ellas es necesario contar con alguna interfaz práctica para el usuario, por ejemplo, un menú. Recuerde: sea solidario, escriba menúes para sus programas de texto. El usuario se los agradecerá. Cree un menú que permita realizar cada una de las siguientes tareas: ✓ Cargar un libro ✓ Mostrar en pantalla todos los libros cargados ✓ Buscar un libro por título ✓ Buscar un libro por código ✓ Ordenar por cantidad de ejemplares ✓ Ordenar alfabéticamente ✓ Finalizar Nota: la función que permite la carga de libros debe cargar un solo libro cada vez que es llamada. Con la incorporación del menú, no es necesaria la existencia de un código que indique el fin de carga. i) Supongamos que queremos modificar la cantidad de ejemplares de un determinado libro o la posición que ocupa en la biblioteca, esto es algo muy común para la labor de los bibliotecarios, pero no hemos incorporado esta funcionalidad a nuestro programa… hasta ahora... Incorpore una función que permita modificar los datos de un libro. Se debe poder indicar el libro que se quiere modificar por su título o por su código. Incorpore esta función al menú. j) Para facilitar el trabajo de los bibliotecarios, nos piden agregar una nueva funcionalidad que ordene los libros por ubicación. Siempre el cliente pide cosas que no se le ocurrió antes y su trabajo es hacer que pasen, o al menos eso creen los clientes. Para esto se debe considerar primero la estantería a la que pertenece y, luego, la posición dentro de la misma. Por caso, el libro en la posición A-99 estará antes que el libro en la posición B-01, por ejemplo: ✓ A-01 ✓ A-02 ✓ A-03 ✓ B-01 ✓ B-02 ✓ B-03 ✓ B-04 Facundo Larosa. Martín Zuccotti. - Página 8 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras ✓ C-01 Agregue una función que ordene por ubicación e incorpórela al menú. k) ¡Es momento de probar todas las funcionalidades del programa! Cuando trabajamos sobre un proyecto de programación, es usual realizar ensayos para comprobar que todo se haya hecho según lo especificado. ¡Llegó el momento! Como un artesano, un programador se fabrica sus propias herramientas… para no tener que realizar la carga de libros cada vez que se ejecute el programa, pueden descargar la carpeta del siguiente link: https://github.com/facundolarosa/info1/tree/master/Estructuras/Ejercicio%202-1 %20Biblioteca En la misma, va a encontrar los siguientes archivos: ✓ biblioteca.h: archivo de cabecera ✓ biblioteca.c: código fuente ✓ inventario.bin: archivo binario con el inventario Incluya biblioteca.h en el archivo donde tengan el main. Luego, dentro del programa principal, tendrán que llamar a la función cargarInventario cuyo prototipo es: int cargarInventario(libro_t *libros, int max); La función recibe un vector de libros y la cantidad máxima de elementos que puede contener. Se devuelve la cantidad de títulos que fueron cargados. Una vez cargado el inventario, muestre el menú para poder trabajar con él. Problema 2: Central de soporte técnico Tecnología SRL quiere implementar un sistema informático para registrar y atender las dudas de sus clientes. El sistema debe poseer un menú que permita realizar las siguientes operaciones: 1. Registrar consulta: El usuario selecciona el tipo de producto sobre el que quiere realizar una consulta: computadoras, televisores, línea blanca, accesorios, otros productos. Facundo Larosa. Martín Zuccotti. - Página 9 - https://github.com/facundolarosa/info1/tree/master/Estructuras/Ejercicio%202-1%20Biblioteca https://github.com/facundolarosa/info1/tree/master/Estructuras/Ejercicio%202-1%20Biblioteca Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras Posteriormente, redacta la consulta. El sistema debe generar un código único para la misma e informarlo al usuario para futuras operaciones. Adicionalmente, se debe almacenar la fecha en la que se produce el registro. 2. Ver estado de consulta: A través del código, el usuario debe poder conocer el estado de la consulta que realizó (respondida, no respondida o descartada). En el caso de que ya haya sido respondida se debe mostrar la respuesta junto con la pregunta que realizó. Si la pregunta fue descartada se indicará el motivo. En ambas situaciones se informará el número de identificación del empleado que atendió la consulta. 3. Atender consultas: Para poder atender una consulta, el personal debe indicar su número de identificación. Si es un número de identificación válido, el sistema debe mostrar en una lista ordenada de manera decreciente la cantidad de preguntas sin resolver que hay de cada tipo para que el personal elija uno de ellos. Luego de esta selección, se mostrará la pregunta más antigua del tipo en cuestión y el empleado deberá elegir si la responde, ignora o descarta indicando la respuesta o el motivo en caso de que la responda o descarte, respectivamente. 4. Generar informe: Se podrá elegir entre un informe por tipos de consulta o por empleados. En el caso de un informe por tipos de consulta, el sistema elaborará una lista con la cantidad de consultas respondidas, rechazadas y actualmente sin responder por cada tipo. Además, se indicará la fecha de la consulta más reciente de cada tipo. La lista se ordenará de manera decreciente según la cantidad de consultas respondidas. Para el informe por empleados, la lista contendrá la cantidad total de consultas respondidas, ignoradas y descartadas por cada uno. También se querrá saber la cantidad de preguntas de cada tipo que respondió. La lista se mostrará ordenada en forma decreciente de cantidad de respondidas. Ejemplo de orden por tipo: Tipo Resp Rech S/Cont Más reciente Comp 5 2 3 10/03/2018 Tv 5 1 2 02/07/2018 Otros 4 0 3 24/07/2018 L.Blanca 3 1 2 30/06/2018 Acces 1 0 0 22/11/2017 Ejemplo de orden por empleado: Facundo Larosa. Martín Zuccotti. - Página 10 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras Empleado Resp Igno Rech Comp Tv L.blan Acces Otros p015 10 1 3 0 4 2 1 3 p023 6 3 0 4 0 1 0 1 p042 2 2 0 1 1 0 0 0 Facundo Larosa. Martín Zuccotti. - Página 11 - Universidad Tecnológica Nacional - Facultad Regional Haedo Departamento de Ingeniería Electrónica. Informática I Guía de ejercicios: Estructuras Operación El usuario ingresa El sistema muestra/informa Registrar deconsulta - Tipo de consulta (selección dentro de una lista) - Consulta - Código de consulta Ver estado de consulta - Código de consulta - Estado - Respuesta/motivo - Personal relacionado Atender consulta - Identificación - Lista de cantidad de consultas por tipo - Tipo de consulta - Pregunta más antigua - Decisión - Respuesta/motivo Generar informe - Tipo de informe - Lista de consultas por tipo - Lista de consultas por empleado Acciones a realizar por tipo de operación. *Funcionalidad obligatoria: Eliminar preguntas respondidas o rechazadas cuyo estado ya fue mostrado al usuario que las hizo. *Funcionalidades extra: - Eliminar preguntas respondidas o rechazadas de más de 30 días de antigüedad. - Permitir que el criterio de orden de las listas sea seleccionado por el usuario. Recomendaciones: 1. Este es un ejercicio abierto, es decir, muchas de las especificaciones planteadas por el cliente deben ser definidas previamente a resolver el ejercicio, por ejemplo, los tipos de datos que se van a usar. 2. ¡Organícese! En base a las especificaciones planteadas, desarrolle un plan de trabajo en etapas para ir completando gradualmente el sistema propuesto. Determine qué pruebas se harán en cada etapa para evaluar el cumplimiento de los objetivos. 3. Investigue cómo obtener la fecha en su sistema a partir de librerías externas (por ejemplo, time.h) Facundo Larosa. Martín Zuccotti. - Página 12 -
Compartir