Autor Tema: una ayudita con este programa  (Leído 2078 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Juan_PIC

  • PIC12
  • **
  • Mensajes: 84
una ayudita con este programa
« en: 12 de Enero de 2008, 20:23:39 »
Hola me salio una duda con el siguiente programa para comunicacion serial.


struct animal { char code;
char name[8];
int count; };

#define MAX 3

struct animal animals[MAX] = {{‘A’,”Ant”,0},
                                            {‘B’,”Bird”,0},
                                            {‘C’,”Cat”,0}};

int find(char code, int & index) {            \\ aca es donde me hago el problema, no entiendo lo que hace    "int & index". Si alguien me puede ayudar lo agradeceria
for(index=0;index<MAX;index++)         \\ otra pregunta... que es lo que repite el FOR? el IF? el IF y los RETURN?
if(animals[index].code==code)
return(TRUE);
return(FALSE);
}

main() {
int index;
char code;
while(TRUE) {
printf(“\r\nEnter the code: “);
code=getc();
if(find(code,index)) {
animals[index].count++;
printf(“\r\nYou now have %u %s’s\r\n”,
animals[index].count,
animals[index].name);
} else
printf(“\r\nCode not valid\r\n”);
}
}

Gracias por su colaboracion!
Cuando se ponen límites, la mente humana comienza a buscar maneras de romperlos.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: una ayudita con este programa
« Respuesta #1 en: 12 de Enero de 2008, 20:33:42 »
Lo normal sería que estuviera escrito así:

int find(char code, int &index)

El "&" indica que lo que se pasa como parámetro no es el valor de la variable,si no su posición en memoria,y así la función trabaja directamente con lo que hay en esa posición de memoria.Se hace así cuando la variable puede cambiar de valor dentro de la rutina.
Si el parámetro no lleva el "&",el compilador hace una copia de la variable original y trabaja con esa copia.
El "for" yo diría que engloba sólo al primer "return" aunque posiblemente me equivoque.
Hay que acostumbrarse a poner siempre las llaves que delimitan las estructuras del código,así se evitan confusiones y hace el código más legible.
« Última modificación: 12 de Enero de 2008, 20:41:42 por Modulay »

Desconectado Juan_PIC

  • PIC12
  • **
  • Mensajes: 84
Re: una ayudita con este programa
« Respuesta #2 en: 12 de Enero de 2008, 20:54:55 »
Este es un ejemplo que encontre en un manual, a mi tambien me parecion algo desprolijo  :?

A ver si entendi bien... si no estuviera el "&" la funcion de arriba usaria lo que esta almacenado en index, y por mas que lo cambie, cuando vuelva a la funcion principal, index va a tener el mismo valor que cuando se llamo a la otra funcion...

En cambio, con el "&", esta funcion si cambia el valor de index, al regresar a la funcion principal, index no va a tener el valor de antes, sino el nuevo valor...


Entendi bien?

Gracias por tu ayuda!!!
Cuando se ponen límites, la mente humana comienza a buscar maneras de romperlos.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: una ayudita con este programa
« Respuesta #3 en: 12 de Enero de 2008, 21:02:22 »
Eso es.
Es la diferencia entre lo que se llama parámetro de entrada (sin el &) y parámetro de entrada-salida (con el &)

Desconectado Juan_PIC

  • PIC12
  • **
  • Mensajes: 84
Re: una ayudita con este programa
« Respuesta #4 en: 13 de Enero de 2008, 13:33:59 »
Wiiiiiii  :mrgreen: Muchas gracias Modulay!! :-)
Cuando se ponen límites, la mente humana comienza a buscar maneras de romperlos.