al lío con las funciones y los parámetros :-(

Buenos días !

Ando un poco liado con las funciones para Arduino, yo vengo del mundo de la programación en VB y con el C me lío :-(, por mas que busco en Internet no aclaro mis dudas, a ver si alguien me puede responder un par de dudas...

A la hora de definir los parámetros que le pasamos a la función:
int var1; int var2; void funcion(var1,var2) { ordenes que ejecuto;} es lo mismo que void funcion(int var1, int var2); {ordenes que ejecuto}

Por otro lado, si los parámetros que le pase a una función son de un tipo, pongamos int por ejemplo, la función me puede devolver un valor char? seria algo como esto: char mifuncion (int var1, int var2);{ordenes que ejecuto}

y ya por pedir, algun post donde se vea el tema de las funciones en arduino en profundidad :slight_smile:

Gracias !!

albertf1970:

 int var1; int var2; void funcion(var1,var2){ ordenes que ejecuto;}
 void funcion(int var1, int var2){ordenes que ejecuto}

Si, es distinto. Por lo que parece estas declarando las funciones, y en ese caso tendrías que hacerlo exclusivamente como en el segundo caso, dado que sino te dara un error de compilación pues en la declaración de la función debes indicar el tipo de las variables de entrada

Por otro lado, si los parámetros que le pase a una función son de un tipo, pongamos int por ejemplo, la función me puede devolver un valor char? seria algo como esto:

char mifuncion (int var1, int var2){ordenes que ejecuto}

Si, es independiente las variables que le pasas que lo que devuelves por lo que podrias tener un char a la salida pasandole dos int

y ya por pedir, algun post donde se vea el tema de las funciones en arduino en profundidad :slight_smile:

Gracias !!

http://www.prometec.net/funciones/
No te centres en buscar el tema de las funciones para arduino, si no te enteras mucho hay muy buenos libros de C y vienen a ser lo mismo

Lo mas sencillo es que empieces por revisar los ejemplos de cada librería. Allí te darás cuenta como se escriben las instrucciones.

No te líes tratando de obtener equivalencias, ya que muchas instrucciones no se usan de la misma forma.

Gracias por las respuestas. Voy a ver el link que ha pasado bidi3 y a ver si voy aclarándome.

TFTLCDCyg, el caso es que esto de mirar ejemplos ya lo voy haciendo, pero precisamente en un sketch de un proyecto, al modificar algún parámetro para adaptar el código a mi proyecto, empezó a darme problemas de compilación :frowning: y no sabía ver si el problema estaba en la función o fuera de ella... de ahí las dudas :slight_smile:

Gracias y un saludo !!!

albertf1970

albertf1970:
Ando un poco liado con las funciones para Arduino, yo vengo del mundo de la programación en VB y con el C me lío :-(, por mas que busco en Internet no aclaro mis dudas, a ver si alguien me puede responder un par de dudas...

El uso de parámetros es igual en todos los lenguajes con independencia de si se declara la variable dentro o no. Si sólo conoces VB (lengauje de alto nivel, osea el fácil) lo más raro que encontrarás son los punteros y acabar todo en (punto y coma) ; pero estas cuestiones son similares en otros lenguajes de bajo nivel similares o basados en C.
Confío en que cuando hablas de VB te refieras a un .NET porque el VB (visual basic) como tal, creo que tuvo su última versión en el 6.0 y eso es de la época en la que programaba siendo menor de edad........ No quiero ni pensar los años de diferencia.

albertf1970

albertf1970:
A la hora de definir los parámetros que le pasamos a la función:

 int var1; int var2; void funcion(var1,var2) { ordenes que ejecuto;}

es lo mismo que

void funcion(int var1, int var2); {ordenes que ejecuto}

(No, no es lo mismo)
El primero está mal por dos cuestiones, una práctica y otra de sintaxis.
Cuando se usan parámetros se da por hecho que no envías una variable global, porque no tiene sentido pasarla, la puedes llamar directamente desde la función sin más, y el fallo de sintaxis por el cual ni podrías ejecutarlo es que debes poner delante del parámetro el tipo de variable que pasas.

albertf1970

albertf1970:
Por otro lado, si los parámetros que le pase a una función son de un tipo, pongamos int por ejemplo, la función me puede devolver un valor char? seria algo como esto:

char mifuncion (int var1, int var2);{ordenes que ejecuto}

Por supuestísimo que NO
Ni siquiera en VB, una variable es de un tipo diferente salvo que se convierta en otra. Lenguajes "diferentes" donde las variables no son de un tipo y pueden comportarse de múltiples formas es PHP, pero ni en VB sucede eso.
Si pasas un int y quieres que sea un char debes convertirlo.
Otra diferencia que encontrarás con otros lenguajes es que debes definir el tipo de variable que se retorna (si vas a hacer un return) al inicio de la función, no basta sólo con poner un return.

int funcion(int var1, int var2) { 
  return var1 + var2;
}