miércoles, 8 de mayo de 2019

estructura hasta

    4.3) Estructura for.


    El formato general de la sentencia if es el siguiente.






        La inicialización es una expresión simple, normalmente una asignación a la variable de control del bucle de un valor inicial. La condición es una expresión lógica o de comparación que determina el fin del bucle. El incremento es una expresión simple que modifica la variable de control al final de cada vuelta.
      El funcionamiento de la estructura for es el siguiente:
     
     
    1) Se evalúa la expresión de inicialización.
    2) Se evalúa la condición. Si el resultado es falso, termina la ejecución de la estructura for. Si es verdadero, sigue por el paso 3.
    3) Se ejecuta el bloque de instrucciones dentro de la estructura.
    4) Se evalúa la expresión final, que normalmente altera la variable de control, y se vuelve al paso segundo.

      Variando las tres expresiones de la estructura for, se pueden realizar diferentes tipos de bucles.
     
     Ejemplo: A continuación se presenta un ejemplo con traza del bucle for. Por medio del cual realizmos la suma de los 8 primeros números enteros. Dando el resultado por pantalla.

     
     
     

    NOTA: Si sólo consta el for de una sentencia, entonces podemos prescindir de las llaves ( { } ).


     Ejemplos.

     
     
    No es necesario que nos aparezcan las tres expresiones en la sentencia for, aunque deben aparecer los puntos y comas. Sin embargo, se deben entender perfectamente las consecuencias de esta omisión. Las expresiones primera y tercerase pueden omitir si se inicializa y/o altera el índice de alguna otra forma. Si omitimos la segunda expresión se dará por supuesto que ésta, al ser evaluada dará siempre 1 (cierto); por tanto, tendremos un caso de bucle infinito, a menos que introduzcamos una sentencia que rompa el ciclo (Ej: break o return). En cualquier caso en la gran mayoría de las ocasiones incluiremos las tres expresiones en el for.
      Para acabar con el for sería conveniente hacer una mención sobre la existencia de un operador coma (,), que se utiliza principalmente en esta sentencia. Este operador me permite que aparezcan dos expresiones en situaciones en donde sólo se utilizaría una expresión ordinariamente. Por tanto, sería posible encontrarse algo como:
for (expresion 1a, expresion 1b; expresion 2; expresion 3) sentencia
         
           
      Como vemos la expresion 1a se encuentra separada de la expresion 1b por una coma, en lugar de aparecer una sola expresión, como habitualmente.
       
    ó
for (expresion 1a; expresion 2; expresion 3a, expresion 3b) sentencia

     
    Como vemos la expresion 3a se encuentra separada de la expresion 3b por una coma, en lugar de aparecer una sola expresión, como habitualmente.

     
     Ejemplo 1:


      #include <stdio.h>
      main() {
        int n,i;
        int suma;
          printf("Suma desde 0 hasta n.\n");
          printf("Introduce un número n: ");
          scanf("%i", &n);
          for(i=suma=0;i<=n;i++)
            suma=suma+i;
          printf("Suma desde 0 hasta %d=%d\n", n, suma);
      }
      NOTA: Este ejemplo visualizaría lo siguiente:

      Suma desde 0 hasta n.
      Introduce un número n:
       
  En este punto nos pediría un número por teclado, que nos va a servir para darle valor a la variable entera (%i: entero decimal, octal, o hexadecimal). Supongamos que introducimos el 3; seguidamente el bucle inicializa la suma al valor de 0 (i=suma=0;). Como el valor de i (que es 0), es menor o igual que el valor de n (que es 3), ejecuto el cuerpo del bucle, que asignará en la primera vuelta a la variable suma el valor de 0 (0+0), tras realizar el cuerpo del bucle, incrementaré el valor de i en 1, volviendo a comprobar la condición: i<=n; así hasta dar cuatro pasadas en el bucle, el valor de suma finalmente será:
     
      1ª iteración: suma=0+0;
      2ª iteración: suma=0+1;
      3ª iteración: suma=1+2;
      4ª iteración: suma=3+3;
       
    6, visualizando por pantalla:
     
      Suma desde 0 hasta 3=6.
     Ejemplo 2:

      #include <stdio.h>main()  /*visualiza los números del 0 al 9.*/
      {
        int digito, vueltas=0;
          for (digito=0; digito<=9; ++digito){
            printf("%d ", digito);
            vueltas++;
          }
      }
    Visualizará: 0 1 2 3 4 5 6 7 8 9
     
  Como vemos tenemos dentro del for tres expresiones encerradas entre paréntesis. La primera expresión asigna un valor de 0 a la variable entera digito, la segunda expresión establece que el bucle se repetirá hasta que el valor actual de digito no sea mayor que 9, y la tercera expresión incrementa en 1 el valor de digito en cada pasada del bucle.
     
     
     Ejemplo 1:


      #include <stdio.h>main()  /*visualiza los números del 0 al 9.*/
      {
        int digito=0, vueltas=0;
          for (; digito<=9; ) {
            printf("%d ", digito++);
            vueltas++;
          }
      }Visualizará: 0 1 2 3 4 5 6 7 8 9
       
    NOTA: El ejemplo anterior es equivalente a este, pero variando la sentencia for.
       
     Ejemplo 1:

      ...............
      ...............
      for ((cont=0, contr=6); cont <=40; (++cont, --contr)) {
        .........
        .........
      }
      ..............
      ..............

      El efecto de este código incorporando el operador (,) coma es:
       
    En la primera entrada se inicializa cont contr a 0 y a 6 respectivamente.
    Se evalúa la condición: cont <= 40, si es cierta seguimos, sino, salimos.
    Se ejecuta el cuerpo del bucle for.
    Se evalúa la expresión final, incrementando, y decrementando, cont contr
    respectivamente, y volvemos al paso 2.

     

No hay comentarios:

Publicar un comentario