martes, 28 de noviembre de 2017

Pequeños recordatorios 4

En este caso haremos un recordatorio de la directiva (#define)

Debemos recordar en primer lugar que no tiene nada que ver con las variables. Podemos comparar la directiva #define, como la creación de una macro.

Sintaxis:

#define MI_NOMBRE Juan

En este caso, en cualquier parte del programa donde aparezca MI_NOMBRE, será sustituido por Juan.



En el caso siguiente:

Yo me llamo MI_NOMBRE

El complilador lo transformará en:

Yo me llamo Juan

Ahora un ejemplo tipo ejercicio para comprender la directiva. No hagáis los comentarios en whatsapp, hacedlos aquí para que queden como guía.

#define NUMERO 10
#define INCREMENTO (NUMERO + 1)
#define VALOR 5
#define QUE_ROLLO ((NUMERO*INCREMENTO)/VALOR)


int a = NUMERO;
int b = VALOR * 2
if (a == b) b= b + INCREMENTO;
if (a < b) b = b / 5;
int c = a + NUMERO + INCREMENTO + b;
int d = (c * VALOR)/2 + QUE_ROLLO;
int e = a + b + c + d;

1º Valor de la variable e
2º ¿Cuanto vale al final QUE_ROLLO?

Espero, que tras esto, el #define quede un poco más claro. Ánimo.
Podéis dar el valor de la variable e, pero sin dar muchas pistas a los demás.
Si tenéis preguntas muy concretas, que den pistas, las preguntas aquí en el blog, pero os contesto por whatsapp, en privado, pero solo para eso.


22 comentarios:

  1. Me quiero pasar de listo intentando compilarlo para que el arduino me de el valor de "e"y me lo muestre por puerto serie , pero no hay forma...

    ResponderEliminar
  2. Venga me tiro a la piscina....e=124,7

    Creo que es el mismo rollo de siempre ;).

    ResponderEliminar
  3. Pues no.

    La cague en el valor de QUE_ROLLO, hice sumar VALOR e INCREMENTO.

    QUE_ROLLO = 22 siempre.

    El resultado final que lo ponga otro......

    ResponderEliminar
  4. Jode me confundo hasta en lkos comentarios...hice:NUMERO+INCREMENTO. De ahi mi error, creo que solo ese ese.

    ResponderEliminar
  5. a mi me ha salido:

    que la variable e=185.5
    y el define QUE_ROLLO es 22.

    ResponderEliminar
  6. Buenas tardes compañer@s y teacher:
    Yo lo había hecho con papel y lápiz y me salía un resultado e=159,4 y QUE_ROLLO = 22 y como quería comprobarlo, lo he convertido a código y lo he metido en el programa Arduino... y no salía lo mismo el "e"
    Esta tarde "El Teacher" me ha comentado que las variables "int" no pueden utilizar decimales... hay que utilizar "float".... y entonces sí...
    Para poder visualizarlo, Ángel nos enseñará a utilizar el monitor de arduino, que se comunica con la placa..Salud..

    ResponderEliminar
    Respuestas
    1. Vocación de profe, mando tarea y el contesta mandándome tarea, :)

      Eliminar
  7. Tres comentarios tres resultados. A la segunda pregunta los tres de acuerdo. Faltan 17 comentarios.

    ResponderEliminar
  8. A mi me sale lo mismo que a Joel.
    e=185,5
    q_ROLLO=22

    ResponderEliminar
    Respuestas
    1. Ok, mañana lo comentaré aquí después de clase, porque no puedes ir creo

      Eliminar
  9. Como son valores int y no llevamos decimales, a mi me sale: e=158 y QUE_ROLLO=22

    ResponderEliminar
  10. ami me sale diferente 159.4
    pero lo voy a hacer otra vez

    ResponderEliminar
  11. como metes esto a arduino copias y pegas ,cambias lo de int por float y luego hay que poner void loop o void setup

    ResponderEliminar
  12. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  13. a mi me sale el QUE_ROLLO = 22; y al tomar todos los resultados como enteros he tenido que truncar aquellos que me salían con decimales, quedándome con la parte entera, siendo el resultado de e = 158

    ResponderEliminar
  14. Yo he obtenido que QUE_ROLLO es 22 y que e con decimales es 159,4 y sin decimales e es 159

    ResponderEliminar
  15. Eso de los decimales... Que rollo = 22 y valor de e= 213???

    ResponderEliminar