martes, 5 de julio de 2011

ANSI C extra: while, do while y for pueden ser equivalentes

Las estructuras de tipo cíclo en la lógica de programación como lo son el While, el Do While y el For, pueden ser utilizadas indistintamente en muchas ocasiones. En el ejemplo siguiente, podemos observar que sin importar cuál de estas estructuras elijamos, el resultado será el mismo.

El ejemplo imprime los múltiplos de 3 menores que 30 comenzando por el número 3. Las tres estructuras realizan un proceso similar: existe una inicialización de la variable a un cierto valor (en este caso a 3), se realiza un proceso que involucra a esta variable (en nuestro ejemplo se imprime su valor) y además, hay una verificación de la validez de la condición que nos permitirá seguir imprimiendo el valor de la variable o nos sacará del ciclo (que para nuestro ejemplo será el momento en el que la variable supere el valor de 30).

Veamos el código fuente del ejemplo:


#include <stdio.h>


int main(int argc, char** args){

  //Programa para demostrar que los ciclos for, while y do while 
  //pueden ser utilizados para obtener los mismos resultados

  int variable = 3;

  //Imprimir los multiplos de 3 menores que 30 utilizando un while
  printf("Multiplos de 3 menores que 30 generados utilizando un while:\n");
  while(variable < 30){
    printf("%2d\n", variable);
    variable += 3;
  }

  //Limpiar la variable para poder reutilizarla
  variable = 3;

  //Imprimir los multiplos de 3 menores que 30 utilizando un do while
  printf("Multiplos de 3 menores que 30 generados utilizando un do while:\n");
  do{
    printf("%2d\n", variable);
    variable += 3;
  }while((variable + 3) < 30);

  //Imprimir los multiplos de 3 menores que 30 utilizando un for
  printf("Multiplos de 3 menores que 30 generados utilizando un for:\n");
  //El ciclo for inicializa la variable a 3, por lo que no es necesario
  //limpiarla
  for(variable = 3; variable < 30; variable += 3){
    printf("%2d\n", variable);
  }
}

Como puedes observar, el While, Do While y el For guardan muchas similitudes. Este es el resultado de correr el programa:

Podemos entonces afirmar, que el uso de estas estructuras depende de la elección del programador: se puede llegar al mismo resultado con cualquiera de las 3.

1 comentario: