Foros del Web » Programación para mayores de 30 ;) » C/C++ »

menu array

Estas en el tema de menu array en el foro de C/C++ en Foros del Web. buen dia me gustaria un pequeño ejemplo de menu con un array me confunde mucho lo que va en un .h y en el .cpp. ...
  #1 (permalink)  
Antiguo 15/03/2016, 05:48
 
Fecha de Ingreso: diciembre-2014
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Información menu array

buen dia me gustaria un pequeño ejemplo de menu con un array me confunde mucho lo que va en un .h y en el .cpp. lo estoy hacindo en eclipse solo necesito un pequeño ejempplo para guiarme. muy agradecido
  #2 (permalink)  
Antiguo 15/03/2016, 06:20
 
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.
  #3 (permalink)  
Antiguo 15/03/2016, 09:28
 
Fecha de Ingreso: diciembre-2014
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: menu array

muchas gracias amigo, la verdad muy apenado; escribí rápido y no revise para corregir. la verdad soy nuevo en c++, mis dudas son con este lenguaje y debido a que lo estoy haciendo en eclipse, cuando genero la clase eclipse crea la clase nombre.cpp y un nombre.h yo uso el .h para declarar y hago un include <nombre.h> en el .cpp pero para efectos de array, son varias clases que en realidad no se como incluirlas. por eso solo pedi un ejemplo de menu para guiarme. saludos y muchas gracias por responder
  #4 (permalink)  
Antiguo 15/03/2016, 09:43
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: menu array

Complementando la respuesta de eferion.

En si, la buena práctica en general es tener las definiciones en un archivo de cabecera (.h) y las definiciones en un cpp.
De esta manera la cabecera es como una interface y tal como dice eferion no hay necesidad de recompilar todo, sino solo el cpp que modifiques. Para programas pequeños esto puede sonar absurdo, pero en sistemas de gran tamaño, la compilación puede tardar cosas de 20 minutos o mas. Imaginate que estas haciendo prueba y error.... para cada iteración tienes que esperar 20 minutos para que el código compile y corra.

Otro dato. Cuando creas tus propios archivos de cabecera y los quieres incluir no usas <>, sino "".

Código:
#nclude "micabecera.h"
Reglas locas del compilador. Mas que nada para diferenciar librería estándar y librerías instaladas, de cosas propias del proyecto.

Saludos
  #5 (permalink)  
Antiguo 15/03/2016, 09:44
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: menu array

La convención es usar #include "ruta" para los ficheros locales de tu proyecto y #include <ruta> para librerías externas. ¿Por qué? Pues porque como todo en C++, "algo" no es igual a "Algo". El include con comillas únicamente intenta localizar los ficheros en las rutas locales, mientras que el include con llaves tiene un rango de búsqueda más amplio... el efecto de usar el include con llaves de forma abusiva es un aumento del tiempo que le lleva al compilador hacer su trabajo... además usar ambos tipos de includes ayuda a mantener el código un poquito más limpio y legible.

Lo normal a la hora de estructurar el código en C++ es usar una pareja de ficheros (cabecera y código) por clase. Puede parecer un poco coñazo si la clase es sencilla y no tiene más que unas pocas líneas de código, pero luego en la vida real esa clase tan sencilla puede acabar mutando hasta convertirse en un monstruo de varios miles de líneas de código y entonces te das cuenta que es un engorro tener dos o tres de estas clases en un mismo fichero.

En cuanto a lo que comentas del array, si no enseñas nada de código es complicado hacerse una idea de tu problema.

Cita:
Iniciado por Instru Ver Mensaje
pero en sistemas de gran tamaño, la compilación puede tardar cosas de 20 minutos o mas. Imaginate que estas haciendo prueba y error.... para cada iteración tienes que esperar 20 minutos para que el código compile y corra.
... el sistema en el que trabajo tarda unas 6 horas y pico en compilarse completamente jejejejeje... donde quedarán esos 20 minutos :)

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.
  #6 (permalink)  
Antiguo 15/03/2016, 10:52
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: menu array

Cita:
... el sistema en el que trabajo tarda unas 6 horas y pico en compilarse completamente jejejejeje... donde quedarán esos 20 minutos :)
!!!

Personalmente nunca he trabajado en proyectos con ese tiempo de compilación.
Sólo recuerdo alguna vez intente compilar Xorg en una máquina con un AMD K6. Recuerdo que lo deje toda la noche, y todo el día siguiente. En algún punto de la siguiente noche acabó.
Incluso en mi máquina actual compilar QTWebkit tarda algunas horas.

Datos curiosos.
  #7 (permalink)  
Antiguo 15/03/2016, 11:26
 
Fecha de Ingreso: diciembre-2014
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: menu array

ok muchas gracias en realidad tengo claro lo que es el .h y el .cpp gracias a sus comentarios. en cuanto a lo que debo hacer bueno intentare realizar algo y mostrarlo de cualquier manera muchas gracias
  #8 (permalink)  
Antiguo 15/03/2016, 15:16
 
Fecha de Ingreso: diciembre-2014
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: menu array

ok muchas gracias en realidad tengo claro lo que es el .h y el .cpp gracias a sus comentarios. en cuanto a lo que debo hacer bueno intentare realizar algo y mostrarlo de cualquier manera muchas gracias

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:38.