Tema: menu array
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/03/2016, 06:20
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: menu array

Buenas.

Lo primero es recordarte que no estás hablando con tus amigos de toda la vida en la calle. Estás escribiendo en un foro que intenta ser mínimamente serio. No debería ser tan complicado pararse un par de minutos y escribir un mensaje bien escrito y sin faltas ortográficas obvias... que alguna se puede escapar, pero es que en tu caso es ligeramente sangrante. Incluso si después de enviar el mensaje te das cuenta de que es mejorable puedes editarlo mientras nadie te responda.

No me queda muy claro si tu intención es programar en C o C++ (los .h son típicos de C y los .cpp son típicos de C++). No es excesivamente relevante dado lo escueto de tu mensaje, pero estaría bien que tomases nota para siguientes mensajes.

Bueno, al lío. Tanto en C como en C++ tienes libertad absoluta para poner donde te de la gana cada pieza del código. Lo único que sucede es que has de respetar ciertas reglas de dependencia, pero salvo eso no hay restricciones en cuanto al diseño (puedes poner un programa entero en un solo fichero y una sola línea de código).

El problema que tiene poner todo el código junto es que cada modificación por tonta que sea en un fichero provoca la recompilación de este fichero y de todos aquellos que enlacen al mismo. Si tienes un programa de 10.000 líneas en un solo fichero verás que modificar cualquier tontería implica volver a compilar las 10.000 líneas con el tiempo que ello conlleva.

Para evitar este problema lo usual es separar los diferentes elementos que componen el programa en dos tipos de archivos (cabecera y código). En las cabeceras suelen estar las declaraciones de las funciones y tipos (estructuras, clases y typedef) que se van a usar en el resto del programa. En los archivos de código lo usual es encontrar la implementación de las funciones, clases y estructuras antes citadas. De esta forma si se modifica algo en un archivo de código (lo más usual), la recompilación se limita a únicamente un fichero... en el caso de las cabeceras la recompilación es algo más grande.

Organizar el código en ficheros también ayuda a mantenerlo organizado.

Todo lo anterior hay que asimilarlo teniendo en cuenta que no es una norma fija y que puede haber excepciones.

Quizás la más importante son los templates. todo el código del template tiene que estar en los archivos de cabecera. Esto tiene sus razones (aunque personalmente no las comparto) pero no viene a cuento mencionarlas ahora.

También te puedes encontrar con pequeñas funciones implementadas en la cabecera. Esto se suele hacer generalmente por una obsesión generalizada por el rendimiento (las funciones implementadas en la cabecera pueden ser etiquetadas como inline, lo que permite que el compilador sustituya la llamada a la función por el código de la misma, lo que mejora el rendimiento.

En la línea contraria también te puedes encontrar funciones cuya declaración esté en el archivo de código. La razón para hacer esto es que se pretende que dicha función se use exclusivamente dentro de dicho fichero y se desea que no sea accesible desde el resto del código.

La única regla que tienes que respetar es que no puedes usar nada que no hayas declarado o implementado previamente.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.