TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micro_pepe en 13 de Abril de 2009, 11:41:54

Título: Dudilla con la instruccion Break
Publicado por: micro_pepe en 13 de Abril de 2009, 11:41:54
Tengo una duda con la instrucción Break. Si pongo esto, al ejecutarse la instruccion Break se sale del do-while?

Código: [Seleccionar]
do{
-----
-----
if(condicion1)
      Break;
}while(condicion2);

Un saludo.
Título: Re: Dudilla con la instruccion Break
Publicado por: migsantiago en 13 de Abril de 2009, 11:48:15
Sí, el break termina cualquier ciclo o loop en el que se encuentre anidado. Si el while está anidado en otro while, solo termina el while interior y se sigue ejecutando el while exterior.
Título: Re: Dudilla con la instruccion Break
Publicado por: jeremylf en 14 de Abril de 2009, 20:44:50
Tb sirve para el ciclo for y el switch.
Título: Re: Dudilla con la instruccion Break
Publicado por: micro_cadaver en 16 de Abril de 2009, 14:14:58
tambien hay una llamada continue, aca un poco de teoria:

BIFURCACIONES DE CONTROL BREAK
Esta instrucción nos permite salir de cualquier bucle ya sea WHILE , DO WHILE, FOR. Cuando el programa encuentra a esat instrucción simplemente salta a la siguiente instruccion fuera del bucle donde se hallaba contenido.

Ejm:
   for(a=0;a<=200;a++)
   {
      Delay1KTCYx(200);
      if (PORTA==0X05)
         break;
      LATB=~LATB;
   }

En esta situación, tenemos un bucle FOR que contara hasta 200 con la variable " a " para satisfacer la expresión del bucle, sin embargo existe un break el cual depende de la estructura condicional IF que inidica si PORTA is igual a 5 entonces ejecuta break, de lo contrario finaliza el IF y continua con el bucle. Cuando PORTA sea igual a 5 el programa se topara con el BREAK y como consecuencia terminara con el bucle FOR y continuará con la siguiente instrucción fuera del bucle.


BIFURCACIONES DE CONTROL CONTINUE
Digamos que dentro de nuestro bucle existe una instrucción al final del bloque de codigo que queremos saltarla o no ejecutarla dependiendo de alguna condición extra, la instruccion CONTINUE permite saltar todas las instrucciones posteriores a su aparición dentro del bloque de codigo escrito en el bucle.

Ejm:
   for(b=0;b<=200;b++)
   {
      Delay1KTCYx(200);
      if (PORTA==0X0A)
         continue;
      LATC=~LATC;
   }

En este caso, el bucle FOR contara hasta 200 con la variable " b " y ejecutará la ultima instruccion LATC=~LATC dependiendo del estado del PORTA, siempre y cuando sea igual a 0X0A, de esta manera se utiliza el CONTINUE.


lo saque de aqui:
tutorial de c18 (http://www.todopic.com.ar/foros/index.php?topic=17017.msg115528#msg115528)