Bienvenido(a), Visitante. Favor de ingresar o registrarse.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Foros del Club

Páginas: [1]   Ir Abajo
  Enviar tema  |  Imprimir  
Autor Tema: Implementaciones  (Leído 567 veces)
0 Usuarios y 1 Visitante están viendo este tema.
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« en: 22/06/2006, 21:06:13 »

Éstas son algunas implementaciones propias que he desarrollado hoy, en realidad no las necesitaba.... bueno casi... ya me estaba volviendo loco de tanto php. Aunque paresca loco necesitaba tener contacto con punteros.

Código
/*** Una implementación minimalista y eficiente de strcmp ***/
int strcmp2 (const char *s1, const char *s2){
while((*s1++ == *s2++) && *s1 && *s2);
return (*--s1 > *--s2)?1:(*s1 < *s2)?-1:0;  
}
 
/*** Una implementación minimalista y eficiente de strcpy ***/
char* strcpy2(char *s1, const char *s2){
char *r = s1;
while((*s1++ = *s2++));
return r;
}
 
/*** Una implementación minimalista y eficiente de strncpy a mi estilo ***/
char* strncpy2(const char *s, int index, int count){
char *r, *r2;
r2 = r = new char[count+1];
s += index;
while((*r++=*s++) && (--count != 0));
*r = &#39;\0&#39;;
return r2;
}
 

Pueden agregar algunas otras si quieren.
« Última modificación: 12/10/2006, 07:52:47 por CID » En línea

jam
Wizard
****

Prestigio: 0
Desconectado Desconectado

Mensajes: 9


Usuario Devs


« Respuesta #1 en: 27/06/2006, 17:09:56 »

Comentario y opinion:
Algunas veces si se requieren este tipo de implementaciones, un caso particular es cuando trabajamos con microprocesadores o microcontroladores directamente. En la mayoria de las ocaciones contamos con un assembly y con un compilador de C, sin bibliotecas!
Observacion:
Me recuerda el estilo de Kernighan y Ritchie Cheesy
Un defecto muy comun de quienes programamos en C(C++) es que pareciera que encriptamos el codigo Sonreir , quiza algunos se pregunten y se rasquen la cabeza viendo...

while((*s1++ == *s2++) && *s1 && *s2);   
return (*--s1 > *--s2)?1:(*s1 < *s2)?-1:0;

que les parece:

int strcmp3 (const char *s1, const char *s2){
    // Mientras el caracter apuntado por s1 sea igual al apuntado por s2
    while (*s1==*s2){
          // Si alguno de los 2 es nulo termina el ciclo
          if (*s1==NULL || *s2==NULL) break;
          // Desplaza los punteros
          s1++;
          s2++;
    }
    // Verifica la desigualdad o terminacion de cadena,
    // Note que al terminar el ciclo no se desplazan los punteros
   if (*s1>*s2) return 1; // cadena s1 es mayor que s2
   if (*s1<*s2) return -1; // cadena s1 es menor que s2, no requiere else
   return 0;               // ambas cadenas son identicas
}

Esto no es una correccion, solo quiero mostrar que algunas veces podemos programar de tal manera que nuestro codigo sea claro para otros y para nosotros mismos!
Ademas, los compiladores actuales son tan eficientes que quiza el codigo maquina resultante sea igual en ambas versiones.

Saludos a todos los miembros de este foro.
En línea
JoRgE-1987
Programador
Legend
**********

Prestigio: 7
Desconectado Desconectado

Sexo: Masculino
Título universitario: No.
Profesión: Programador
Mensajes: 633

Geek


WWW
Lenguajes:
Object Pascal
Pascal
HTML
Aprendiendo C++
« Respuesta #2 en: 27/06/2006, 18:28:59 »

Muy de acuerdo con Jam, y aparte lo podriamos poner como una especie de regla no obligatoria, pero para bien del foro, todo codigo que se postee, tenga sus respectivos comentarios, o explicacion, para que los usuarios con menos experiencia les cueste menos interpretarlo, o para los programadores de otros lenguajes donde por ahi hay terminos que no los comprenden.

Saludos Cheesy:D
En línea


CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« Respuesta #3 en: 27/06/2006, 19:05:30 »

Saben que pasa?
Estuve semanas programando exclusivamente en PHP, y entre nos... ya esta podrido. Todo era rutinario (no tanto por el lenguaje, sino por el sistema que estaba haciendo), asi que un amigo desde el msn me preguntó como se implementaba la función strcpy y esos fueron los resultados.
Mi idea era hacerlas con la menor cantidad de código y variables posible (por eso lo de minimalistas y eficientes). Por otro lado tienen razón en cuanto a colocar comentarios, se me pasó.
Pero bueno, ésto es un foro, y si algo no se entiende siempre se puede preguntar.

Saludos.
En línea

Foros del Club
   

 En línea
Páginas: [1]   Ir Arriba
  Enviar tema  |  Imprimir  
 
Ir a: