UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

Los punteros en C

Ejercicios

 

And get ready, 
cause this s--t is about to get heavy

 
  --Eminem

1. Uso de punteros en C

Plan de trabajo

  1. Prepara el entorno de desarrollo para crear, compilar y ejecutar programas cortos.

  2. Leer el capitulo sobre punteros (40 minutos). Escribir todas las dudas que aparezcan y clarificarlas mediante consulta con el profesor o posteando en el foro de la asignatura.

  3. Resuelve los diez primeros ejercicios del capítulo. Si tras resolverlos tienes dudas sobre el funcionamiento de los punteros acude a consultas con el profesor. Si ves que el concepto lo tienes claro, resuelve los problemas restantes.

¿Cuánto tiempo has dedicado a esta actividad? mins.

2. Gestión de celdas en el móvil

Plan de trabajo

Una aplicación del móvil necesita almacenar las celdas que ofrecen cobertura en cada momento. El número de celdas no se sabe de antemano pues depende de la situación del dispositivo. Cada celda tiene un identificador único (entero positivo) y un nivel de la calidad de la señal (número entre 0 y 100). En todo momento, la aplicación distingue a una de las celdas como la actual (la que da mejor cobertura en ese instante). Cada cierto tiempo, esta información se actualiza dependiendo de la calidad de la señal.

Las siguientes dos funciones ya están implementadas en la aplicación:

  • ... new_cell(). Devuelve un puntero a una nueva estructura de celda. El tipo de dato del resultado es el utilizado para definir la estructura con la información de la celda.

  • void remove_cell(...). Función opuesta a la anterior, recibe un puntero a una estructura de datos de una celda y se deshace de ella. Hay que llamar a esta función para cerciorarse de que esta estructura desaparece.

Tienes que escribir las siguientes porciones de código:

  • Definición de la estructura de datos para almacenar la información de una celda y declaración de las variables necesarias para almacenar los datos que se piden.

  • void fill_fields(...). Función que asigna los valores de los campos pasados como parámetros a las variables de una estructura cuyo puntero se recibe como parámetro. Decide primero qué parámetros debe recibir la función y luego escribe el código.

  • void update_current(...). Función que asigna como celda actual la que tiene mayor calidad de señal.

  • ¿Qué cambio harías en la definición de la estructura de datos para almacenar la información de forma circular (es decir, que estén ordenadas como un círculo)?

Para ello puedes seguir los pasos:

  1. ¿Cómo vas a representar el conjunto de celdas? ¿Sabes de antemano cuántas celdas tienes que manipular?

  2. Define las estructuras de datos necesarias para almacenar el conjunto de celdas. ¿Cómo distingues a la celda actual?

  3. ¿Qué prototipo crees que tiene la función new_cell?

  4. Define el prototipo de la función fill_fields. Escribe su código.

  5. Implementa la función update_current.

  6. ¿Qué quiere decir exactamente una estructura circular y cómo se puede implementar en C?

¿Cuánto tiempo has dedicado a esta actividad? mins.