domingo, 11 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 repetirBucle 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.1

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)[editar]

#include <stdio.h>
#include <iostream>
 
int main(void) {
 int x = 0;
 while(x < 10) {
  printf("\x¡No acabaré nunca!\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.
También existe esta posibilidad con el while(true). En C:
#include <stdio.h>
#include <iostream>
 
int main(void) {
 while(1) {
  printf("\xadNo acabar\x82 en algún momento!\n");
 }
 return 0; /*De todas maneras no llega nunca a ejecutarse esta l\xd6nea*/
}

Lo mismo en c++[editar]

#include <iostream>
using namespace std;
 
int main(void) {
 while(true){
  cout << "Se repite" << endl;
 }
 return 0;
}

Condición == en for. C++[editar]

#include <iostream>
using namespace std;
 
int main(int argc, char *argv[]) {
 
 for(int i=0;i==i;i++){
  cout << "Se repite" << endl;
 }
 
 return 0;
}
Como siempre la variable i va a ser igual a ella misma, se incrementa e itera infinitas veces.

++ -- en for. C++[editar]

#include <iostream>
using namespace std;
 
int main(int argc, char *argv[]) {
 int h=0;
 for(int i=0;i<5;i++){
  i--;
  h++;
  cout << "Se repitio: " << h << " Veces." << endl;
 }
 
return 0;
}
En este caso, por cada vez que se incrementa la variable, como es menor a 5 se decrementa dentro del cuerpo del bucle. Luego se vuelve a incrementar y de esa manera infinitas veces.

Ejemplo de ciclo infinito en C (for)[editar]

#include <stdio.h>
 
int main(void) {
 int cont;
 for (cont = 0; cont < 5; cont++) {
  cont = cont%4;
  printf("%d\n",cont);
 }
 return 0;
}
En la sentencia "printf" se muestra en pantalla 0,1,2,3,0,1,2,3,0,.... infinitamente y mientras no llegue a 5 no se cerrará el programa.
Y también podemos crear un ciclo infinito con el for de esta forma:
#include <stdio.h>
 
int main(void) {
 for (;;)
  printf("Bucle infinito\n");
 return 0;
}

Bucle infinito en Visual Basic (while)[editar]

Public function suma2(a, b) As Double
 
suma2 = a + b
 
While (suma2 >= 10)
suma2 = suma2 + 1
Wend
Siempre que la suma de a y b sea superior o igual a 10.

Bucle infinito en Visual Basic (do - loop)[editar]

Dim Suma
 Suma = 0
 Do
  Suma = Suma + 1
 Loop
La variable "Suma" se sumará infinitamente 1 unidad.

Bucle infinito en Pascal (repeat)[editar]

Una forma de hacer un bucle infinito en Pascal es con un ciclo repeat como se muestra a continuación:
program HASTAELINFINITO;
begin
 repeat
  writeln('Nunca termina!');
 until 2=3;
end.
Ya que 2 nunca es igual a 3, el código se repite hasta el infinito.

Bucle infinito en Pascal (while)[editar]

program HASTAELINFINITO;
 
begin
 while 2<>3 do
  writeln('Nunca termina!');
 end; 
end..

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.
Ejemplo escapando de un bucle en Visual Basic 1:
     Dim h&, var&
     var = 0
 
     'Codigo del Bucle
     do
        var = var + 2
 
        if var = 10 then    'Codigo para salir del bucle
           goto escape
        end if
     loop
 
  escape:
     print "El resultado es " & var
Ejemplo escapando de un bucle en Visual Basic 2:
     Dim h&, var&
     var = 0
 
     'Codigo del Bucle
     do
        var = var + 2
 
        if var = 10 then    'Codigo para salir del bucle
           exit do
        end if
     loop
 
     print "El resultado es " & var
Ejemplo escapando de un bucle en Delphi
va
  iConta: Byte;
for iConta := 1 to 15 do 
  if iConta = 10 then   //Se sale al llegar el contador a 10
    break;





No hay comentarios:

Publicar un comentario