sábado, 18 de junio de 2016

Capítulo 41. C++: Estructuras repetitivas, For, While, Do


Diario de un programador día 86


Estructuras repetitivas. While, Do, For.

En esta clase (que es casi un copy/paste de la anterior), se mostrará la sintaxis de esas estructuras en C++.
La explicación de esas estructuras fue mostrada en su momento, durante los capítulos 9, 10 y 11, por lo que solamente mostraré su sintaxis, con la finalidad de avanzar rápidamente  para llegar a estudiar lo nuevo que nos ofrece este lenguaje  y ver sus posibilidades.

1.- WHILE

La sintaxis es:

while(condicion verdadera){
    instrucciones;
}
Como se puede ver, su construcción es similar a la instrucción IF. La condición va entre paréntesis y el bloque de instrucciones va entre llaves { }

Ejemplo:

#include<iostream>

int main(void){

  int num = 0;

  while(num != 5){
    std::cout << "Ingresa un 5 para continuar ";
    std::cin >> num;

    if (num != 5){
      std::cout << "Debes ingresar un 5\n";
    }
  }//fin while

  std::cout << "Numero 5 ingresado, gracias!!!";

  return 0;

}



Otro ejemplo:

#include<iostream>
#include<stdlib.h>

int main(void){
  int continuar = 1;
  int edad;

  while(continuar == 1){
    std::cout << "Ingresa tu edad: ";
    std::cin >> edad;

    if(edad >= 18){
     std::cout << "Eres mayor de edad\n";
    }
    else{
      std::cout << "Eres menor de edad\n";
    }
    std::cout << "\nOtro Ingreso??\n1 = Si\nOtro numero = No: ";
    std::cin >> continuar;

    if (continuar == 1){
      system("cls");
    }
  }//fin while
  std::cout << "Hasta Luego!!!\n";
  return 0;
}


2.- DO

La sintaxis es:

do {
    instrucciones;
}while(condicion verdadera);

Como se puede ver, la condición a evaluar se encuentra al final del bloque, por lo que esta estructura siempre se ejecutará al menos una vez (la primera) y dependiendo de la condición, se volverá a ejecutar o finalizará el ciclo.

  
Ejemplo:

Utilizaré el mismo ejemplo anterior pero adaptado a esta instrucción, después de todo, el resultado es el mismo.

#include<stdio.h>

int main(void){
  int num;

  do{
    printf("Ingresa un 5 para continuar...");
    scanf("%d", &num);

    if(num != 5){
      printf("Debes ingresar un 5\n");}

  }while(num != 5);//fin do

  printf("Numero 5 ingresado, gracias!!!\n");

return 0;
}


Si hacen lo mismo ¿cuál es la diferencia o cuando escoger uno u otro? Bueno, en el caso de DO yo lo escogería siempre que necesite que algo se ejecute al menos 1 vez y si no consigo el resultado que quiero, entonces que se vuelva a repetir. En cambio, en el caso de WHILE, yo lo escogería solamente si necesito que algo se ejecute bajo ciertas condiciones y no siempre, como ocurre en el caso de DO. Aquí colocaré un ejemplo de ambos casos.


//La maldición del 13
#include<iostream>

int main(void){
  int num, maldad;

  do{
    std::cout << "Si ingresas un 13, algo malo puede ocurrir\n";
    std::cout << "Yo recomiendo ingresar cualquier otro numero: ";
    std::cin >> num;

    if(num != 13){
      std::cout << "Estamos a salvo del 13\n";
    }

    if(num == 13){
      while(num == 13){
        std::cout << "Has caido en la trampa Ja ja ja!!!. Presiona Ctrl + c para cerrar\n";
      }//fin while
    }//fin if

  std::cout << "\nHas salido sano y salvo de la maldicion del 13!!!\n";
  std::cout << "Quieres continuar??\n1 = Si\nOtro = No ";
  std::cin >> num;

  }while(num == 1);//fin do

return 0;
}


Este programa integra ambas estructuras, pero aquí se puede comprobar que en el caso de la estructura DO, SIEMPRE se ejecuta como mínimo 1 vez. En el caso de la estructura WHILE, ésta solamente se ejecutará bajo condiciones específicas, en este caso, si el usuario ingresa el número 13, donde caerá en un ciclo infinito XD, pero aquí la gran diferencia. Puede que el usuario jamás ingrese el número 13 y por lo tanto, esa estructura nunca se ejecute.

3.- FOR

La sintaxis es:
for(variable inicio ; variable final ; incremento/decremento){
    instrucciones;
}

Al igual que en small basic y lo que se explicó en el capítulo 9, esta instrucción ejecuta las instrucciones que se encuentran en su bloque la cantidad de veces según se lo indiquemos. La variable inicio, es la que indica el valor inicial del ciclo, la variable final es la que indica el final de éste y el incremento o decremento, corresponde al valor por el cual se irá incrementando o disminuyendo la variable en cuestión.
Ejemplo, sencillo y barato. Se mostrará una secuencia del 1 al 10

#include<iostream>

int main(void){
  int num;

  for(num = 1; num <= 10; num++){
    std::cout << num << "\n";
  }

return 0;
}



El primer término "num = 1" indica el inicio del valor de la variable. El segundo término indica el valor final de la variable, es en este lugar donde se indica cuando finalizará el ciclo. En este caso, el ciclo finalizará cuando la variable tenga un valor de 10. El tercer término es el incremento, en este caso está indicado como "num++" el ++ indica que se irá incrementando uno en uno. Esto es equivalente a escribir "num = num + 1" Se utiliza ++ simplemente para abreviar lo anterior. Si se quisiera hacer un decremento de uno en uno, en vez de escribir "variable = variable - 1" se puede escribir "variable--" y sería lo mismo. Si quisiera aumentar con otro valor distinto a 1, no me sirve el ++ ahí tendría que usar por ejemplo "var = var + 2" si quisiera por ejemplo mostrar los múltiplos de 2

El siguiente ejemplo, muestra una tabla de multiplicar según el numero que ingrese el usuario:

#include<iostream>

int main(void){
  int num1, tabla;

  std::cout << "Ingresa un numero: ";
  std::cin >> num1;

  for(tabla = 1; tabla <= 10; tabla++){
    std::cout << num1 << " x " << tabla << " = " << num1 * tabla << "\n";
  }//fin for

return 0;

}


Esto es todo por ahora, espero se entienda.


Gustavo J. Cerda Nilo
Enero 2016, última actualización Junio 2016




No hay comentarios:

Publicar un comentario

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...