ArchiTecnologia

Aprendizaje abierto. Conocimiento libre.

ArchiTecnologia
Código abiertoProgramaciónTutorial

Programación en C: estructuras de control repetitiva e iteración condicional – Parte 1/2

Seguimos con las estructuras de control en la programación en lenguaje C. En los anteriores ya mostré información sobre las estructuras de control y su clasificación, los algoritmos, el control secuencial, y el control selectivo o bifurcaciones. Ahora toca dar un paso más y mostrar ya lo último referente a estructuras.

Me refiero a las estructuras de control repetitivo o iteración condicional. Seguro que por este nombre no te sonarán, pero cuando los bucles o ciclos con while, for, do-while, etc., comenzarás a ver cómo trabajan este tipo de estructuras para diseñar nuevos algoritmos de programación y códigos fuente.

Bucles o ciclos

Un bucle o ciclo es una secuencia especial en la programación cuyas instrucciones se ejecutarán repetidas veces, es decir, habrá iteración. Se irán ejecutando hasta que la condición que tenga dicho bucle asignada se deja de cumplir. En caso de que nunca lo haga, sería un bucle infinito.

En cada una de las iteraciones se comprobará la condición y hasta que pase de estado verdadero a falso se seguiría ejecutando la/s instrución/es del bucle. Cuando se detecta que la condición ya no se cumple, entonces se dice que el bucle se rompe.

Herramientas para las condiciones

Evidentemente, para poder formar condiciones, el lenguaje C te dota de una serie de «herramientas» para que puedas formarlas.

Contador

El contador es una variable cuyo valor se va incrementando o decrementando de forma constante. Lo hará cada vez que se produce un evento. De esa forma, se puede controlar la cantidad de veces que queremos que se repita un bucle antes de romperlo.

#Iniciar contador a 1
int contador = 1;

#Poner en marca el contador
++contador;

Un ejemplo de uso con pseudocódigo sería el siguiente:

Inicio
     Mostrar “¿Qué tabla quieres conocer (de 1 a 10)?”
     Pedir Tabla T
     Mostrar “Tabla del”, T
     Contador desde i = 1 hasta 10 Hacer
     Mostrar T, “*”, i, “=”, T * i
     Siguiente
Fin

Y el código fuente equivalente en C este:

#include <stdio.h>
#include <stdlib.h>
 
int main() 
{
    int T, i;
    printf ("¿Qué tabla deseas conocer? (de 1 a 10): ");
    scanf ("%d", &T);
    puts(""); 
    printf("TABLA DEL %d \n", T);

//Inicio del contador del 1 al 10 y el bucle
    for (i=1; i<=10; i++) { 
         printf ("%d * %d = %d \n",T, i, T*i); 
     }
    return 0; 
}

Acumulador

EN e caso del acumulador, es otro tipo de variable con la que se puede controlar un bucle, es decir, usar como condición. En este caso no se incrementa o decrementa de forma constante, sino que lo hace de forma variable. Lo hará almacenando valores de operaciones.

//Iniciar acumulador a 0
int acumulador = 0;

//Poner en marcha el acumulador
acumulador = acumulador + valor;
         //o
acumulador += valor

En cuanto al ejemplo en este caso, el código fuente en C sería:

#include <conio.h>
#include <stdio.h>

int main()
{
    char continuar;
    int acumulador, valor;

//El acumulador irá guardando la suma de los número que introduce el usuario
//Se inicia a 0

    acumulador = 0;
    do
    {
        printf( "\n   Introduce un entero: ", 163 );
        scanf( "%d", &valor );

        acumulador += valor;

//Se piede si se quiere introducir otro o no
        printf( "\n   ¿Quieres introducir otro número (s/n)?: ", 168, 163 );
        fflush( stdin );
        scanf( "%c", &continuar );
    } while ( continuar != 'n' );

//Mientras el usuario conteste s a la pregunta, se seguirá repidiendo el bucle que suma las cantidades
    printf( "\n   La suma resultante de los números introducidos es: %d", 163, acumulador );
    getch(); 
    return 0;
}

Centinela

Por otro lado, el centinela es una variable que indicará un valor que cambiará dentro del bucle. Eso hace que la condición sea falsa y el bucle se rompa. Eso sirve para que el usuario que ejecuta el programa elija cuándo se puede romper el bucle. Es el caso de la pregunta s/n o y/n que ves en algunos códigos como en el caso del anterior…

Bandera o flag

Por último, la bandera o interruptor es otra variable que puede tomar solo 2 valores: verdadero o falso, 0 o 1. Y el valor dependerá de la ejecución del código fuente del programa.

//Iniciación de la bandera
int bandera = 0;
bandera = 1;

Un ejemplo de código de bandera sería:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int numero;
   int i;
//Bandera
   int primo;    
   
   printf("Introduce un número: \n");
   fflush(stdout);
   if (scanf("%d", &numero) != 1 || numero < 2)
   return EXIT_FAILURE;
   
   primo = 1; /* Se asume que es primo */
   
   for (i = 2; i < numero; i++)
      if (numero%i == 0){
         primo = 0; //No es primo
         break;
      }
   
   if (primo) 
      printf("%d es primo\n", numero);
   else //Si no es primo
      printf("%d no es primo\n", numero);
   return EXIT_SUCCESS;
}

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar