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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 ... 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 [124] 125
1231  Programación / Programación C/C++ / Re: for y do while en: 1 Julio 2013, 13:48 pm
Pues fíjate Eferion, eso último que has puesto no me convence nada. Hacer una iteración sobre una función me parece un desperdicio de rendimiento.

Sí es cierto que a la hora de pedir datos el rendimiento no es importante, pero es una manía mía ;)

Cuando compiles en modo release el compilador, al optimizar, seguramente convierta esa función en inline, ya que no tiene bucles ni condicionales... overhead cero. Si eso no te convence piensa que un bucle for o while tiene saltos igualmente...

En cualquier caso es lo que digo... las prácticas de programación son un momento perfecto para aprender buenos hábitos. Es como cuando te sacas el carnet... ningún conductor se tira 45 minutos dando vueltas por las calles más puñeteras de una ciudad para no ir a ningún sitio... esto es igual... vale que la función quizás no merezca la pena en términos de productividad, mantenimiento y rendimiento... pero son habilidades y hábitos que adquieres al aprender y eso te ayuda a evitar malos vicios después.
1232  Programación / Programación C/C++ / Re: Ayuda con base de datos en C++ en: 1 Julio 2013, 08:18 am
si lis datos estan en xml? seguro primero he de convertirlos a text antes de trabajarlos con C........ mmmm

Para poder manipular datos en c ( quien dice c, dice c, c++, c#, java, perl, ruby, ... ) éstos tienen que estar en tipos propios del lenguaje ( int, char, double, char*, ... ).

Luego esa información, como norma general, los programadores tienen la extraña necesidad de almacenarla en disco. Para realizar esta tarea hay tres formas diferentes:

  • Guardar datos binarios.
  • Guardar los datos en formato legible.
  • Almacenar la información en una base de datos.

El primer formato es el más sencillo, ya que coges los datos tal cual los tiene tu programa y los vuelcas a un fichero de texto. Esto presenta el inconveniente de que la información almacenada es complicado editarla de forma manual.

El segundo caso requiere un proceso de "formateo" de la información, la idea es que la información generada por el programa pueda ser leída y fácilmente modificada por una persona... es el caso de usar XML, los antiguos INI, etc.

En el tercer caso delegamos la responsabilidad de almacenar los datos en un programa o código externo, éstos como normal general ( por cuestiones de rendimiento, escalado, comodidad, ... ) se guardan en formato binario, pero eso a nosotros nos da igual, ya que solo necesitamos conocer la forma de interactuar con el motor de la base de datos para conseguir interactuar con la información que almacena.

Dicho esto, si tienes los datos almacenados en XML, tendrás que hacer un pequeño parche que lea esos datos y los vuelque a tu base de datos.
1233  Programación / Programación C/C++ / Re: for y do while en: 1 Julio 2013, 08:07 am
Yo fíjate que propondría una tercera forma... ponerlo en una función independiente.

En el mundo de la programación se le puede sacar bastante rendimiento al "divide y vencerás".

Código
  1. void CreaMatriz( char letra, int* filas, int* columnas )
  2. {
  3.  system("cls");
  4.  printf("Dame el numero de filas de %c :", letra);
  5.  scanf("%d",filas);
  6.  printf("Dame el numero de columnas de %c : ", letra);
  7.  scanf("%d",columnas);
  8. }

En este caso la función es sumamente simple... pero nunca está de más adquirir buenas costumbres a la hora de programar.

Mi experiencia es que generalmente los profesores se preocupan más de que la gente conozca las funciones del lenguaje que de que enseñar buenos hábitos.
1234  Programación / Programación C/C++ / Re: Problema con apuntadores!!!!!! en: 1 Julio 2013, 07:58 am
Código
  1. for(*opcion=1;*opcion<=7;opcion++)

en el último "opcion" te falta un asterisco... si no lo pones lo que haces es modificar la dirección a la que apunta el puntero.

Código
  1. for(*opcion=1;*opcion<=7;(*opcion)++)
1235  Programación / Programación C/C++ / Re: Ayuda con base de datos en C++ en: 29 Junio 2013, 09:50 am
Usa Sqlite... no requiere servidor, no requiere instalación, su rendimiento es aceptable y usa sql para interactuar con la aplicación.
1236  Programación / Programación C/C++ / Re: Duda en una condición con return en: 28 Junio 2013, 12:40 pm
Es una suite de aplicaciones para el sector naval :)

Sobre lo de trabajar en equipo... lo de las notaciones está bien... pero cuando los grupos crecen se complica el asunto hasta niveles insospechados.

Hay mucha diferencia entre tener el control de todo lo que se hace porque eres el único desarrollador a encontrarte en medio de una tormenta con código de todas las formas tamaños y colores.
1237  Programación / Programación C/C++ / Re: Duda en una condición con return en: 28 Junio 2013, 11:38 am
A mí me gustan los returns, una forma fácil y eficiente de acabar una función.

Solo tienes que tener cuidado de liberar la memoria  ;)

Mi caso es un poco extremo... pero en un proyecto como en el que estoy... de 13 millones de líneas de código... y 70 personas picando código... acabas detestando un poco los returns a mitad de función.

No es por el que lo hace... sino por el que luego va a meter mano ahí.

Pero es cierto, es cuestión de gustos.
1238  Programación / Programación C/C++ / Re: Matriz Triangular Superior en: 28 Junio 2013, 11:34 am
A mi me rechina un poco en el segundo for la instrucción

Código
  1. (j > 0+i)

Funcionar funcionará... pero ese for no queda más claro así?

Código
  1. for(j=n-1;(j > i)&&(tri_sup);j--)

y luego lo que dice satu, ese if else sobra también. Dado que tri_sup tiene un valor inicial 1, el bucle solo debería preocuparse de darle valor 0 cuando proceda... volver a poner un 1 es absurdo, te hace poner más líneas de código que no solo no aportan nada sino que a la larga dificultan la lectura del código.
1239  Programación / Programación C/C++ / Re: Duda en una condición con return en: 28 Junio 2013, 11:15 am
Hombre, eliminar returns intermedios siempre es una buena opción como norma general... ya que es fácil si no saltarse alguna tarea a realizar antes de salir... como liberar memoria.

Código
  1. void func( int numero )
  2. {
  3.  char* buffer = new buffer[ 10 ];
  4.  
  5.  // ...
  6.  
  7.  if ( numero < 0 )
  8.    return;
  9.  
  10. // ...
  11.  
  12.  delete buffer;
  13. }

Ejemplos similares a este me he encontrado a patadas.

No obstante también digo que funciones con muchos niveles, si con returns mejora muchísimo la claridad... ahí me pienso si poner o no returns :)
1240  Programación / Programación C/C++ / Re: Socket send and recv problema en: 28 Junio 2013, 09:39 am
Código
  1. std::string prueba;
  2.  
  3. std::cout << sizeof( prueba ) << std::endl;
  4.  
  5. prueba = "ASDFASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDASDFASDFASDFA";
  6.  
  7. std::cout << sizeof( prueba ) << std::endl;

resultado:
32
32

expilcación:

sizeof es un operador estático que se resuelve en tiempo de compilación, por este motivo no te va a devolver nunca el tamaño real de un buffer dinámico.

Para trabajar con sockets suele ser más adecuado crear estructuras con tamaños definidos y delimitados y enviar esos paquetes se usen o no todos los bytes.

Me explico:
Código
  1. struct Paquete
  2. {
  3.  char[50] cadena;
  4. };
  5.  
  6. // ...
  7.  
  8. int Sender::SendMensaje(Mensaje &pMensaje)
  9. {
  10.  struct Paquete to_send;
  11.  strncpy( to_send.cadena, pMensaje.getMensaje( ), 49 );
  12.  
  13.  return send(this->host->getSocket(), &to_send , sizeof(struct Paquete), 0);
  14. }

Y para recibirlo es similar... creas otro paquete, almacenas los datos en el paquete y después guardas el contenido en pMensaje.
Páginas: 1 ... 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 [124] 125
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines