elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda dependencia circular
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda dependencia circular  (Leído 2,905 veces)
MatiasLaplana

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda dependencia circular
« en: 17 Diciembre 2022, 11:21 am »

Buenos días

Tengo un problemita por si vosotros seres de luz podeis ayudarme

Tengo que hacer un proyecto de programación en el que todo debe ser lo más modular posible.
Hay un módulo de un juego (un parchis) y otros que le complementan para hacer una partida, en concreto uno que se llama control_Entrada_Salida (al que se llama dentro de parchis).

El problema es que necesito hacer un submódulo del parchis que formatee la información del parchis es decir, un submódulo que accede a datos y funciones del módulo parchis, y que el control_Entrada_Salida muestre esos datos por pantalla (o por donde sea, de eso no me encargo)

Me han obligado a hacerlo así, yo directamente metería el submódulo dentro del parchís y a correr...

De esta forma, con este concepto de modularidad; me ocurren dependencias circulares que no sé como evitar, y no sé como enfocarlo

1)
..llamada dentro del módulo parchis..
funcion_control_Entrada_Salida_mostrar(funcion_submódulo_formateado_parchis() )

dependencia circular: parchis  -> submodulo_parchis -> parchis (hace uso de sus funciones, por lo que quedan redeclaradas)-> control_Entrada_Salida

2)
..llamada dentro del módulo parchis..
funcion_control_Entrada_Salida()
..llamada dentro de funcion_control_Entrada_Salida()..
funcion_submódulo_formateado_parchis()

sigue habiendo dependencia circular: parchis -> control_Entrada_Salida -> submodulo_parchis -> parchis (hace uso de datos y funciones, redeclarados)

Os agradecería mucho una respuesta, me estoy volviendo loco XDDDD ;-) :rolleyes:



« Última modificación: 17 Diciembre 2022, 11:24 am por MatiasLaplana » En línea

Falo Zipo Pixote

Desconectado Desconectado

Mensajes: 143


Ver Perfil
Re: Ayuda dependencia circular
« Respuesta #1 en: 17 Diciembre 2022, 16:09 pm »

¿Y tú crees que así alguien va a entender algo?  :rolleyes:

¿Porqué no pones el código de:

control_Entrada_Salida(lo-quiera-que-sea-que haya-aqui-dentro)
funcion_control_Entrada_Salida_mostrar(funcion_submódulo_formateado_parchis() )
funcion_control_Entrada_Salida()
funcion_submodulo_formateado_parchis()
    ... véte olvidando ya de en una función C/C++ acentuar la "o" de submodulo; no se acentúan.
?

¿Qué piensas, que somos adivinos?  :silbar:

PD: y también me olvidaría de funciones en C/C++ que contengan mayúscula, como:
funcion_control_Entrada_Salida()

Se pueden poner pero no es buena práctica.



En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.357


Ver Perfil
Re: Ayuda dependencia circular
« Respuesta #2 en: 18 Diciembre 2022, 00:07 am »

Sí, se hace difícil entenderte, te expresas con dificultad, las cosas que tienen en tu cerebro, no están en el nuestro y debemos caer en sempiternas suposiciones, por lo que no te serían de ayuda.

Trata de explicarte con más claridad... En realidad si piensas con cierto orden, probablemente serías capaz de procede rigualmente con es emismo orden para solventar el problema que tienes entre 'teclas' (manos)...  ;)
En línea

Locura_23

Desconectado Desconectado

Mensajes: 162



Ver Perfil
Re: Ayuda dependencia circular
« Respuesta #3 en: 18 Diciembre 2022, 02:14 am »

Es cierto que es difícil comprender la pregunta, pero por regla general un modulo o una función debería encargarse de una sola tarea... si estás trabajando en C/C++ puedes utilizar punteros para acceder a los datos de una manera más cómoda. Con el tema de esa dependencia, tal vez hacer un diagrama de estructuras o Clases puede guiarte en la lógica de tu programa.
En línea

wndProc64

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda dependencia circular
« Respuesta #4 en: 18 Diciembre 2022, 15:51 pm »

Bdias. Pon algún ejemplo o algo para precisar respuestas  :rolleyes:
En línea

MatiasLaplana

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda dependencia circular
« Respuesta #5 en: 18 Diciembre 2022, 21:44 pm »

Buenas noches

Muchas gracias por tantas respuestas, es la primera vez que escribo en un foro.

Tenéis razón, me expliqué fatal. Comienzo de nuevo

Tengo 3 módulos (cada uno con su .h y .c) con estas operaciones:

/*MODULO PARCHIS*/ Lleva una partida del juego del parchis y llama a las funciones del módulo ENTRADA_SALIDA

void parchis_iniciar (void);
void parchis_reiniciar_partida(void);
void parchis_realizar_jugada (uint8_t);
void parchis_deshacer_ultima_jugada(void);

--funciones exclusivas de PARCHIS (sólo en el PARCHIS.c)
static uint8_t comprobar_casilla_vacia(tablero);
static uint8_t  comprobar_ficha_jugador(tablero);
--datos exclusivos de PARCHIS (sólo en PARCHIS.c)
uint8_t tablero[TABLERO_SIZE];

/*MODULO ENTRADA_SALIDA*/ Externaliza visualmente cosas que le pide el módulo de parchis. Ej: ver el turno, mostrar fin de partida, mostrar un mensaje concreto (bytes)... Se supone que el PARCHIS es independiente de la implementación de este módulo, en este caso muestra por UART, pero podrían ser unos LEDS, un sistema neumático, unas gafas de realidad virtual,... y parchis no tendría por qué saberlo

void ES_encender_turno(uint8_t jugador);
... irrelevantes...
void ES_mostrar_mensaje(char *mensaje) --> muestra mensaje por una UART

/*SUBMODULO PARCHIS+/
char* submodulo_parchis_formatear_tablero(void); --> accede a métodos y datos privados del módulo parchis para formatear el tablero y dejarlo bonido para enviarlo por la UART
--
Me han pedido imprimir por la UART el tablero de parchis, por tanto debo usar ES_mostrar_mensaje(,,,), pero me dicen que el módulo PARCHIS no debe encargarse del formato del tablero, sino que debe ser un módulo aparte (submodulo_parchis).

Así, dentro de una función como parchis_realizar_jugada(), deberá mostrarse el tablero tras invocarse el modulo ENTRADA_SALIDA, que no conoce su formato, por lo que debe llegarle un mensaje con un formato en ascii ya disponible para imprimir(algo como ES_mostrar_mensaje(submodulo_parchis_formatear_tablero()).

El problema es que este submódulo debe acceder al tablero (sólo en el .c) y a funciones que ayudan a reconocer el tablero (sólo en el .c de parchis. Ej: comprobar_casilla_vacia(tablero)), y me está dando problemas el que este submódulo acceda a estos métodos privados del módulo parchis. Me ocurren problemas con dependencias circulares, y con redefiniciones de funciones y no sé como arreglarlo.

Puedo cambiar el esquema, añadir módulos,... pero es necesario que exista este submódulo que acceda a las funciones y datos ocultos del parchis.

Un saludo y muchas gracias por responder a todos

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda en nodo de lista circular
Java
apolo85 3 5,002 Último mensaje 28 Noviembre 2009, 03:57 am
por egyware
ayuda cola circular
Programación C/C++
edo908458 1 2,439 Último mensaje 31 Marzo 2016, 20:22 pm
por LaiaxanIV
La dependencia a Whatsapp
Noticias
wolfbcn 0 1,328 Último mensaje 19 Junio 2016, 21:29 pm
por wolfbcn
[Ayuda] Como puede hacer de mi programa una Lista doblemente ligada "circular" C
Programación C/C++
Evox4 2 2,700 Último mensaje 9 Octubre 2016, 21:53 pm
por Evox4
Problema con la dependencia de un paquete
GNU/Linux
JonaLamper 3 3,089 Último mensaje 26 Agosto 2017, 11:43 am
por JonaLamper
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines