Está en la página 1de 4

Usos de ciclos While y for

Bucle while
While(PREGUNTA)
{
}
El programa se ejecutará dentro de las dos {} mientras la PREGUNTA sea
verdadera.
Cuando la condición cambia y la PREGUNTA es Falsa el ciclo se interrumpe.
En el ejemplo se ve claramente

Bucle for

For es un ciclo que tiene tres parámetros

For (inicio de variable; CONDICION; incremento)


{}
Ejemplo
For (int =0; i< 3; ++i)
{
instruccion1
Instruction 2
Instruction 3
}

Esto funciona de la siguiente manera


I inicia en 0
Luego hace
{instruccion1
Instrucción 2
Instrucción 3}
¿Pregunta i es menor que 3?

Si porque i vale 0 hace ++i (es lo mismo que hacer i=i+1)


Luego hace
{instruccion1
Instrucción 2
Instrucción 3}

¿Pregunta i es menor que 3?

Si porque i vale 2 hace ++i


Luego hace
{instruccion1
Instrucción 2
Instrucción 3}
¿Pregunta i es menor que 3?
No porque i vale 3  en este punto sale del ciclo for.

En el siguiente ejemplo se ve más claro.

Secuencia de encendido de 3 leds con un pulsador de inicio y


otro de parada

Ver video

https://www.youtube.com/watch?v=762Sw9w3Xn0

CONEXIONADO

CODIGO

int ledR=0; // INICIO LAS VARIABLES


//PUERTO 0 LEDO
//PUERTO 1 LEDO
//PUERTO 2 LEDO
//PUERTO 3 PULSADOR DE MARCHA
//PUERTO 0 PULSADOR DE PARADA

int ledV=1;
int ledA=2;
int marcha=3;
int parada=4;
//VARIABLES AUXILIARES
boolean estado_boton= LOW;
boolean bandera=LOW;
boolean estado_boton_2=LOW;
void setup()
{
pinMode(ledR,OUTPUT); //definicion de puertos
pinMode(ledA,OUTPUT);
pinMode(ledV,OUTPUT);
pinMode(marcha,INPUT);
pinMode(parada,INPUT);
}

void loop()
{
estado_boton=digitalRead(marcha); //LEO EL PULSAODR DE
MARCHA
if(estado_boton==HIGH) // SI ESTA PULSADO ENTRO
{
bandera=HIGH; // LEVANTO UNA BANDERA
}

while(bandera==HIGH) //MINETRAS LA BANDERA ESTE


LEVANTADA ME QUEDO ACA
{
for(int i=0 ; i<3 ; ++i ) // SECUENCIA DE LEDS
{
digitalWrite(i,HIGH);
delay (100);
digitalWrite(i,LOW);
}

estado_boton_2=digitalRead(parada); //VUELVO A PREGNTAR


PERO AHORA POR EL PULSADOR DE PARADA
if(estado_boton_2==HIGH) // SI ESTA APRETADO ENTRO
{
bandera=LOW; //BAJO LA BANDERA ASI LA PROXIMA
VUELTA YA NO ENTRA AL CICLO WHILE
estado_boton=LOW; //LIMPIO LAS VARIABLES
estado_boton_2=LOW;

}//SI NO APRTERARON EL PULSAOR DE PARADA SIGO


DENTRO DEL CICLO
}
//SI ESTOY EN ESTE PUNTO ESTOY FUERA DEL CICLO SIGINIFICA
QUE ALGUIEN APRETO EL BOTON DE PARADA
//}FIN DE LOOP

También podría gustarte