SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Alfonsos1 en Domingo 3 de Octubre de 2010, 02:05

Título: como organizar el code en Dev-Cpp
Publicado por: Alfonsos1 en Domingo 3 de Octubre de 2010, 02:05
apenas estoy comensando a programar un programa (llevo 300 lineas), y ya me esta costando entender y ubicarme entre tanto codigo  :wacko:

mirando la interfas del DevCpp vi que todo el codigo que escrivi estaba dentro de una pestaña, quisiera saver si puedo dividir el codigo en varias pestañas, si se puede diganme como
Título: Re: como organizar el code en Dev-Cpp
Publicado por: Geo en Domingo 3 de Octubre de 2010, 06:32
Puedes separar el código en diferentes archivos, un ejemplo sencillo sería esto:

funciones.h
Código: C
  1.  
  2. #ifndef FUNCIONES_H
  3. #define FUNCIONES_H
  4.  
  5. void imprime( char *mensaje );
  6.  
  7. #endif
  8.  
  9.  

funciones.c
Código: C
  1.  
  2. #include "funciones.h"
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. void imprime( char *mensaje ) {
  7.   printf( "%sn", mensaje );
  8. }
  9.  
  10.  

main.c
Código: C
  1.  
  2. #include "funciones.h"
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. int main() {
  7.   imprime( "Hola mundo" );
  8.  
  9.   return 0;
  10. }
  11.  
  12.  
En main.c se usa la función imprime que está declarada fuera de main.c, de esta forma puedes separar el programa en módulos, o simplemente colocar código en diferentes archivos de manera que puedas tenerlo mejor organizado :).

En Dev-Cpp solo tienes que ir agregando archivos al proyecto para que compile sin problemas (para el ejemplo que puse), suerte.
Título: Re: como organizar el code en Dev-Cpp
Publicado por: alb en Domingo 3 de Octubre de 2010, 07:38
En C++, puedes declarar la clase en un archivo .h y definirla en un .cpp. Es importante al empezar un nuevo programa de tener una idea de los elementos mas importantes del programa. Eso te puede ayudar a separar el codigo en diferentes partes.
Título: Re: como organizar el code en Dev-Cpp
Publicado por: Alfonsos1 en Domingo 3 de Octubre de 2010, 17:50
no he podido aún, les digo lo que hice:

le di clic al boton "nuevo", luego elegi la opcion "nuevo codigo fuente", y puse este codigo:

#ifndef FUNCIONES_H
#define FUNCIONES_H
 
int fun();
 
#endif

luego volvi a crear otro codigo fuente y puse este codigo:

#include "funciones.h"
 
int fun() {
return 1;
}

Pero cuando intento compilar me da el siguiente error:

Citar
1 C:Dev-CppcarpetaNueva carpetaSinNombre5.cpp funciones.h: No such file or directory.
 C:Dev-CppcarpetaNueva carpetaMakefile.win [Build Error]  [SinNombre5.o] Error 1  

me marca la linea que dice #include "funciones.h" como la linea del error.

Les dejo una imagen, notaran que el archivo SinNombre4 es .cpp y no .h , talves sea ese el problema pero no se como hacer para que sea .h
Título: Re: como organizar el code en Dev-Cpp
Publicado por: alb en Domingo 3 de Octubre de 2010, 23:15
Has salvado el primer archivo con nombre "funciones.h" ?
Título: Re: como organizar el code en Dev-Cpp
Publicado por: Alfonsos1 en Lunes 4 de Octubre de 2010, 01:06
no sabia que era asi de sensillo!
gracias
Título: Re: como organizar el code en Dev-Cpp
Publicado por: Alfonsos1 en Martes 5 de Octubre de 2010, 20:04
PD: se puede declarar clases de esta manera? (osea declarar clases afuera del main.cpp)
Título: Re: como organizar el code en Dev-Cpp
Publicado por: Geo en Miércoles 6 de Octubre de 2010, 07:39
Claro que se puede.
Es habitual tener dos archivos por clase: uno para la declaración y otro para la definición/implementación de la misma.
Título: Re: como organizar el code en Dev-Cpp
Publicado por: Alfonsos1 en Viernes 8 de Octubre de 2010, 13:37
recuerden que soy nuevo  :blink:

astaba (y aún estoy) aprendiendo c++ en el sitio "C con clase", y aí no me dice como declarar una clase, de hecho ni siquiera sabia que se pudiera declarar y definir las clases por separado, como si fueran funciones. Asi que: ¿como se hace?

otro problema es que intente seguir la logica del ejemplo de Geo pero no anda (si me anda para las funciones, pero no para las clases)

intente esto:
cree un archivo llamado clases.h con este codigo:

Código: C++
  1. #ifndef CLASES_H//Es el mismo codigo del ejempo de Geo, pero remplace en donde decia "funcion" por "clase"
  2. #define CLASES_H
  3.  
  4. class claseterr;//aqui INTENTE declarar la clase
  5.  
  6. #endif
  7.  

luego cree un archivo llamado clases.cpp con este codigo:
Código: C++
  1. #include "clases.h"
  2.  
  3. class claseterr
  4. {
  5.  public:
  6.    int cordx;
  7.    int cordy;
  8.    distintosterr tipoterr;
  9.    claseterr()
  10.    {
  11.       tipoterr=vasio;
  12.    }
  13. };
  14.  
  15.  

y al comienso del main.cpp puse:
Código: C++
  1. #include "clases.h"
  2.  

EL error que me da es el siguiente:
elements of array `claseterr terreno[300]' have incomplete type
Título: Re: como organizar el code en Dev-Cpp
Publicado por: Epa en Viernes 8 de Octubre de 2010, 16:10
Buenas, cuando uno dice definir una clase, no se refiere a la clase en si, sino a los metodos de la clase.

Cuando uno declara una clase, suele poner solo los prototipos de los metodos (a menos que quiera funciones inline, eso en el tutorial de conclase esta explicado), y despues las define en otro lado, aunque no es necesario que sea en un fichero aparte, es recomendable para que sea mas facil de leer.
La idea es la misma que cuando se hace un programa estructurado:

1-declaracion de funciones.
2-funcion main
3-definicion de funciones

Con la diferencia que las declaraciones se hacen dentro de la claseal y nombre de la funcion en la definicion (si se hace fuera de la clase) se le antepone el nombre de la clase seguido del operador de ambito ::

<tipo retorno> <nombreclase>::<nombre metodo>([lista parametros])
{
<cuerpo metodo>
}

te pongo un ejemplo sencillo haber si se entiende.

en el .h pones
Código: C++
  1.  
  2.  
  3. class MiClase
  4. {
  5.   public:
  6.     MiClase(){}; //constructor
  7.     ~MiClase(){}; //destructor
  8.     int leerdato();
  9.     void escribirdato(int d);
  10.     int potencia(unsigned int exponente);
  11.  
  12.   private:
  13.     int dato;
  14. };
  15.  
  16.  

y en el .c
Código: C++
  1.  
  2.  
  3. void MiClase::escribirdato(int d)
  4. {
  5.   dato = d;
  6. }
  7.  
  8. int MiClase::leerdato()
  9. {
  10.   return dato;
  11. }
  12.  
  13. int MiClase::potencia(unsigned int exponente)
  14. {
  15.   int i, n = 1;
  16.  
  17.   for(i = 1; i <= exponente; i++)
  18.     n *= dato;
  19.  
  20.   return n;
  21. }
  22.  
  23.  

Espero que ahora se entienda mejor.

Saludos
Título: Re: como organizar el code en Dev-Cpp
Publicado por: Amilius en Viernes 8 de Octubre de 2010, 20:56
La verdad 300 líneas de código no es mucho.

Creo que el problema de fondo es que te falta seguir un estilo de codificación y configurar el editor para hacer tu código más legible:
1. Tu código está en blanco y negro, los editores modernos como el Notepad++ te permiten cambiar el color de operadores, cadenas, números comentarios, tipos, etc. Incluso te muestran visualmente cuando tienes paréntesis demás o te falta alguno.
2. Tu código no respeta un máximo de X columnas. (Generalmente X es 80.) Tener que usar la barra de desplazamiento horizontal para leer esas líneas extra largas es incómodo y pierdes capacidad de visualizar el código rápidamente.
3. Usa espacios después de las comas, punto y coma y para separar expresiones. Puede que al principio te resulte incómodo pero a la larga agradecerás la facilidad con la que podrás leer tu código.
4. Trata de usar siempre las llaves {} en lugar de escribir el código en una sola línea, a menos que dicho código sea extremadamente corto y fácil de entender, para evitar lineas innecesariamente largas.
5. En la medida de lo posible evita las anidaciones y múltiples niveles de tabulación. Posiblemente sea mejor llamar a una función en lugar de escribir el código dentro de la anidación. Lo ideal es que el bloque completo pueda ser visto en la pantalla sin tener que mover la barra vertical.
6. Evita funciones o métodos demasiado largos, si no es posible asegúrate que puedan ser divididos en etapas bien documentadas de forma que sea fácil ubicarse. Lo peor es tener una función que es un bloque indivisible con varios niveles de anidamiento conteniendo cientos de líneas; por que para entender dicha función hay que leerla entera y seguir el flujo completo de proceso. En cambio si está separada en etapas puedes enfocarte en una sola etapa y en el mejor de los casos puedes ver la parte que te interesa en pantalla sin necesidad de mover la barra vertical.
7. En general das buenos nombres a las variables, pero sería bueno que eches un vistazo a estilos de codificación.