TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: remi04 en 23 de Mayo de 2017, 17:39:18

Título: Duda sobre "break" dentro de un bucle for.
Publicado por: remi04 en 23 de Mayo de 2017, 17:39:18
En un cicle For, por ejemplo en el codigo de ejemplo, la variable I se incrementa de cero a 5 ejecutando las instrucciones 5 veces, luego sale del bucle pero he visto que I se incrementa en una unidad mas. es decir, al terminar el bucle, I se queda con valor = 6.

   Si la salida del bucle se fuerza con un break, " al recibirse el caracter ',' en el caso del ejemplo, la variable I en este caso no vale 6, sino 5.

   La pregunta es si es correcta mi observación y si hay alguna forma de hacer que en ambos casos I no se incremente una de mas al terminar el bucle.




Código: [Seleccionar]
for (i=0;i<=5;i++)
        {   
            pack5[i] = getchar();
            if (pack5[i] == ',')             
               break;
        }
       
Título: Re:Duda sobre "break" dentro de un bucle for.
Publicado por: Picuino en 23 de Mayo de 2017, 17:45:26
Te traduzco

Código: C
  1. for (i=0;i<=5;i++)  {    
  2.    pack5[i] = getchar();
  3.    if (pack5[i] == ',')            
  4.    break;
  5. }


Es igual a:

Código: C
  1. i=0;
  2. while(i<=5)  {    
  3.    pack5[i] = getchar();
  4.    if (pack5[i] == ',')            
  5.    break;
  6.    i++;
  7. }

Saludos.
Título: Re:Duda sobre "break" dentro de un bucle for.
Publicado por: remi04 en 24 de Mayo de 2017, 03:32:33
Muchas gracias picuino. 
Título: Re:Duda sobre "break" dentro de un bucle for.
Publicado por: Archangels en 08 de Junio de 2017, 12:11:35
En un cicle For, por ejemplo en el codigo de ejemplo, la variable I se incrementa de cero a 5 ejecutando las instrucciones 5 veces, luego sale del bucle pero he visto que I se incrementa en una unidad mas. es decir, al terminar el bucle, I se queda con valor = 6.

   Si la salida del bucle se fuerza con un break, " al recibirse el caracter ',' en el caso del ejemplo, la variable I en este caso no vale 6, sino 5.

   La pregunta es si es correcta mi observación y si hay alguna forma de hacer que en ambos casos I no se incremente una de mas al terminar el bucle.




Código: [Seleccionar]
for (i=0;i<=5;i++)
        {   
            pack5[i] = getchar();
            if (pack5[i] == ',')             
               break;
        }
       

Si quieres que no llegue hasta 6 tienes qué cambiar el <= por < de esta forma ya no te hace el paso por el 5 tambien. O tambien puedes poner un 4 en lugar de 5.