58 - Comandos break y continue dentro de estructuras repetitivas


Hay dos comando en el lenguaje C que modifican un ciclo repetitivo for, while o do while.

break

El primer comando se llama break y lo que hace es finalizar el ciclo repetitivo inmediatamente sin tener que analizar la condición del ciclo.

Problema 1:

Realizar la carga de enteros por teclado y sumarlos, finalizar cuando se ingrese un valor cero o se hayan cargado 10 valores.

Programa: programa194.c

Ver video

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

int main()
{
    int valor;
    int f;
    int suma=0;
    for(f=0;f<10;f++)
    {
        printf("Ingrese valor:");
        scanf("%i",&valor);
        if (valor==0)
        {
            break;
        }
        suma+=valor;
    }
    printf("La suma de los valores ingresados es:%i",suma);
    getch();
    return 0;
}

En este problema planteamos una estructura que se repite 10 veces, pero dependiendo del valor que ingresa el operador puede abortarse la ejecución al ingresar el cero.

Cuando se ejecuta la sentencia break se produce un salto a la primera línea fuera del for que la contiene:

    for(f=0;f<10;f++)
    {
        printf("Ingrese valor:");
        scanf("%i",&valor);
        if (valor==0)
        {
            break;
        }
        suma+=valor;
    }
    printf("La suma de los valores ingresados es:%i",suma);

Hay que tener en cuenta que el break lo podemos utilizar en cualquiera de las tres estructuras repetitivas que hay en C.

También considerar que instrucción break sale de la estructura repetitiva que la contiene, si estamos en el caso estructuras repetitivas anidadas solo sale de la primera estructura repetitiva que lo contiene.

continue

El comando continue cuando se ejecuta vuelve al principio del ciclo repetitivo.

Problema 2:

Realizar la carga de 5 enteros por teclado. Mostrar por pantalla en castellano dicho número si está comprendido entre 1 y 5.

Programa: programa195.c

Ver video

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

int main()
{
    int f;
    int valor;
    for(f=0;f<5;f++)
    {
        printf("Ingrese un valor:");
        scanf("%i",&valor);
        if (valor>5 || valor<=0)
        {
            continue;
        }
        switch(valor) {
            case 1:printf("Uno");
                   break;
            case 2:printf("Dos");
                   break;
            case 3:printf("Tres");
                   break;
            case 4:printf("Cuatro");
                   break;
            case 5:printf("Cinco");
                   break;
        }
        printf("\n");
    }
    getch();
    return 0;
}

EN este problema cuando el if se verifica verdadero, es decir cuando el operador carga un valor mayor a 5 o menor o igual a cero se ejecuta el comando continue, en dicho caso la siguiente instrucción a ejecutarse es el incremento del contador f en la parte superior del for. Luego verifica la condición y de ser verdadera se repite nuevamente el bloque del for.

Tengamos en cuenta que los break contenidos en el switch el lenguaje C no los confunde con comandos break contenidos en el for.

Ciclos con condiciones siempre verdaderas.

Podemos disponer un ciclo repetitivo while, for o do/while con una condición que siempre sea verdadera. Luego en estos casos es obligatorio para que el ciclo finalice que haya un comando break en su interior.

Problema 3:

Ingresar valores por teclado y sumarlos. Finalizar al ingresar el cero.

Programa: programa196.c

Ver video

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

int main()
{
    int valor;
    int suma=0;
    while(1)
    {
        printf("Ingrese un valor (0 para finalizar):");
        scanf("%i",&valor);
        if (valor==0)
        {
            break;
        }
        suma+=valor;
    }
    printf("La suma de los valores ingresados es:%i",suma);
    getch();
    return 0;
}

Tengamos en cuenta que en el lenguaje C en una condición el cero es el falso y cualquier otro valor genera verdadero. En nuestro problema la condición tiene un valor 1:

    while(1)
    {
        printf("Ingrese un valor (0 para finalizar):");
        scanf("%i",&valor);
        if (valor==0)
        {
            break;
        }
        suma+=valor;
    }

La condición del while siempre se verificará verdadera al disponer un 1, entonces para finalizar el ciclo debe ejecutarse el comando break, esto sucede si el operador ingresa un 0.

Retornar