sábado, 10 de mayo de 2014

EVAP 3


Bucle

Un bucle o ciclo, en programación, es una sentencia que se realiza repetidas veces a un trozo aislado de código, hasta que la condición asignada a dicho bucle deje de cumplirse.
Generalmente,un bucle es utilizado para hacer una acción repetida sin tener que escribir varias veces el mismo código, lo que ahorra tiempo, deja el código más claro y facilita su modificación en el futuro.
El bucle y los condicionales representan la base de la programación estructurada. Es una evolución del código ensamblador, donde la única posibilidad de iterar un código era establecer una sentencia jump (que en los lenguajes de programación fue sustituida por el "ir a" o GOTO).
Los tres bucles más utilizados en programación son el bucle while, el bucle for y el bucle repetir.

Ejemplo en código C de sentencias repetidas


    int var=0;
 
 
      //código que puede ser sustituido por un bucle
      var = var + 2; //var igual a 2 (puede ser sustituido por var+=2)
      var = var + 2; //var igual a 4
      var = var + 2; //var igual a 6
      var = var + 2; //var igual a 8
      var = var + 2; //var igual a 10
      // fin de código  que puede ser sustituido por un bucle
 
    printf("el resultado es %i", var );

Ejemplo con un bucle:

          int var=0;
 
          //Código para el bucle
          int i;
 
          // este es el Bucle for
          for(i=0;i<10;i+=2)
          { 
             var += 2;          
          }
 
 
          printf("el resultado es %i", var);
Algunos lenguajes de programación tienen sentencias que permiten "escapar" de los bucles sin llegar a la condición de fin, como el romper o el devolver.

Bucles Infinitos

Bucle infinito en programación es un error que consiste en realizar un ciclo que se repite de forma indefinida ya que su condición para finalizar nunca se cumple.

Por definición un bucle debe contener condiciones que establezcan cuándo empieza y cuándo acaba, de manera que, mientras las condiciones se cumplan, ejecute una secuencia de código de manera repetitiva. En el caso de ciclo infinito, como la condición de finalización no se alcanza, el bucle sigue ejecutando el segmento de código indefinidamente.

Ejemplo de ciclo infinito en C (while)


#include <stdio.h>
#include <iostream>
 
int main(void) {
 int x = 0;
 while(x < 10) {
  printf("\x¡No acabaré nunca >:D !\n");
 } 
 return 0;
}
Se observa que la sentencia printf("\x¡No acabaré nunca!\n"); siempre se ejecuta porque la condición del bucle while() siempre es cierta, no existe una condición de salida que obligue al bucle a finalizar. Exactamente, no se alcanza la condición de salida. Si en el ejemplo anterior, dentro del bloque de código del bucle while, se encontrase la instrucción
x++;
El bucle hubiera ejecutado 10 veces y hubiera terminado.

Algoritmo:

 1. Inicio
 2. Suma-0
     N-Bucle infinito, ya que no existe ninguna condición.
     Suma=suma+N
 3. Suma ++

Diagrama de Flujo.





Bucles finitos 


Los bucles finitos se ejecutan un determinado número de veces y pueden tener varios tipos de estructuras, las más utilizadas son: 

  •  Bucle con condición de testeo.
  •  Bucle que se repite un número conocido de veces.

  •  Bucle con condición de testeo. 


Se utiliza una instrucción de testeo para controlar la ejecución del bucle. Para 
este caso la repetición del lazo es finita, pero no se puede precisar el número 
de veces que se repite. 

Ejemplo1: 


 EsperaUno 


                btfss PORTA,4 
                goto EsperaUno 

En el ejemplo1 se lee el pin 4 de PORTA y hasta que no se pone a 1 no sale de este bucle. 

Ejemplo2: 

 No Es Igual 

                               movf PORTA, W 
                               sublw 0x56 
                               btfss STATUS,Z 
                               goto NoEsIgual 
 Es Igual 


En el ejemplo 2 se lee el registro PORTA y hasta que no su valor no es igual al de la constante 0x56 no se sale del bucle. 



  • Bucle que se repite un número conocido de veces 


Las instrucciones decfsz e incfsz se utilizan generalmente en combinación con 
una instrucción de salto goto, para el diseño de bucles de instrucciones que 
deben repetirse una cantidad determinada de veces. Se hace de manera tal 
que un registro se decrementa o incrementa hasta que tome un determinado 
valor. En este caso, sí se conoce el número de veces que se repite el bucle.

Ejemplo: 

 movlw NumeroVeces; este es el numero de veces que se repite el bucle 
 movwf Contador; carga el contador con el numero de veces 
 Lazo ……… 
         ……… 
         ……… 
 decfsz Contador,F; se decrementa el contador hasta que llega a 0 
 goto Lazo; si no llega a cero repite el bucle 

Algoritmo:

1.Inicio
2.Suma=0
   N=0  ____ Bucle finito, porque finaliza cuando se cumpla la condición de que N sea igual a cero.
   Suma=suma+N
3.Resultado: Suma
4.Fin

Diagrama de Flujo.


No hay comentarios:

Publicar un comentario