Etiquetas: ,

La sentencia while es la estructura condicional para crear un bucle en una condición. Se encuentra en todos los lenguajes de programación. Permite ejecutar en bucle un bloque de código siempre que se cumpla una condición.

Sintaxis de la declaración de while

La declaración toma una condición en forma de variable booleana como entrada y ejecuta un bloque de instrucciones en un bucle siempre que esta condición sea verdadera. Si la condición sigue siendo cierta, el código que sigue al bloque while nunca se ejecutará. Tenga cuidado de actualizar su condición.

  while(condición){
    <listas de instrucciones condición=true>;
    <actualización de la condición>;
  }

Ejemplo de un código que cuenta hasta 10:

int val=0;
void setup() {
  Serial.begin(9600);
}

void loop() {
  while(val<=10){
    Serial.println(val);
    val++;
  }
}

Un booleano es un tipo de variable igual a true( 1) o false(0). En el lenguaje C(Arduino), las variables booleanas se inicializan con la palabra clave bool o boolean. Un booleano puede obtenerse de diferentes maneras

  • El resultado de una prueba lógica <,>,==,!=,!
 condition = variable == 10;    // variable égale à 10? 
 condition = temperature>30;   // temperature est supérieure à 30 
 condition = vitesse <= 100    // vitesse inférieure ou égale à 100 
 condition = !true // condition égale  non vraie (faux) 
   
  • El resultado de varias condiciones
condition=(temperature>30) && (vitesse<20);
  • El resultado de una función
bool test(int val){
  //retourne vraie si la valeur est supérieur à 200
  return val>200;
}

Cabe señalar que la función de entrada se ejecuta en cada bucle.

int val=0;
void setup() {
  Serial.begin(9600);
}

void loop() {
  while(condition()){
    Serial.println(val);
  }
  delay(10);//sanity delay
}

bool condition(){
  val++;
  return val<=10;
}


Otras sintaxis

Otra versión de la instrucción while existe. La declaración «do… while», que es de hecho una declaración completamente diferente. La principal diferencia es que se ejecuta al menos una vez.

El siguiente código cuenta hasta 10. El bloque hace… mientras que debe ser ajustado en la función de configuración, de lo contrario la variable val se incrementará a inifinita. Dado que el bloque dowhile se ejecuta al menos una vez, val se incrementará una vez cada vez que se ejecute un loop().

int val = 0;
void setup() {
  Serial.begin(9600);
  do{
    Serial.println(val);
    val++;
  } while(val<=10);
}

void loop() {
  delay(10);//sanity delay
}

En conclusión, lo que es importante recordar

  • la declaración while toma como entrada una condición representada por una variable booleana
  • la instrucción de entrada del bucle while se ejecuta en cada bucle
  • la condición está entre paréntesis
  • el bloque de instrucciones está entre llaves {}
  • La instrucción «do… while» se ejecuta al menos una vez, a diferencia de la instrucción «while».

Fuentes