Príkazy break, continue a switch alebo "obušok z cyklu von".

Sú situácie, v ktorých je vhodné cyklus ukončiť. (Najmä vtedy, keď chceme, aby program vôbec skončil.) Bežne sa to robí tak, že sa zvolí správna podmienka cyklu. Keď podmienka prestane platiť, cyklus sa prestane cykliť a program pokračuje za ním. Občas sa ale stane, že kdesi vo vnútri cyklu zistíme, že musíme cyklus ukončiť okamžite. A práve na to slúži príkaz break.

V prípade, že použijeme break, program ihneď opustí cyklus, v ktorom sa nachádza a pokračuje až za ním. Ak sa program práve nachádza vo viacerých cykloch (vo vnútri jedného cyklu môže byť ďalší!), tak vyskočí z toho najvnútornejšieho. Použitie príkazu break si môžete pozrieť v nasledujúcej ukážke:

    int i = 0;
    
    for ( ; 1 ; )
    {
        putchar('*');
        if ( i == 10 )
            break;
        i++;
    }
    putchar('\n');
Cyklus for nachádzajúci sa v ukážke je evidentne cyklus nekonečný. Nič sa v ňom nezačína ani nemení a v podmienke má napevno nastavené 1 čiže "pravda". Za normálnych okolností by takýto cyklus bežal až do vypnutia počítača či zhodenia programu. Ale vďaka tomu, že hodnota premennej i sa v každom priebehu cyklu zväčší o 1 a keď nadobudne hodnotu 10, zavolá sa break, program šťastne skončí. Mimochodom -- koľko hviezdičiek vypíše?

Ďalší zaujímavý príkaz sa nazýva continue. Používa sa v trochu odlišnej situácii: Predstavte si, že píšete nejaký dlhý cyklus. A kdesi uprostred cyklu zistíte, že potrebujete, aby sa toto "kolo" cyklu skončilo a okamžite začalo ďalšie.0.12 A práve vtedy vám príkaz continue príde vhod. Pozrite sa na príklad:

    int i;

    for( i = 0; i <= 100; i++ )
    {
        if (i % 2 == 0)
            continue;
        printf("%d\n",i);
    }
V cykle for nadobúda premenná i postupne všetky hodnoty od 0 po 100. Keďže sa ale pri všetkých párnych hodnotách zavolá príkaz continue, k výpisu sa program dostane len pri nepárnych hodnotách.

Posledný dnešný príkaz je príkaz switch. Je to príkaz prepínač. Opäť sa pozrite na ukážku:

    int i;
    
    printf("Napis cislo 1, 2 alebo 3: ");
    scanf("%d", &i);
    switch (i)
    {
    case 1:
        printf("Napisal si jednicku.\n");
        break;
    case 2:
        printf("Napisal si dvojku.\n");
        break;
    case 3:
        printf("Napisal si trojku.\n");
        break;
    default:
        printf("Napisal si nejaku blbost.\n");
    }
Za samotným príkazom switch je v zátvorkách niečo typu char alebo int. Potom nasledujú kučeravé zátvorky v ktorých sú jednotlivé možnosti, uvedené slovíčkom case a ukončené dvojbodkou. Ak je hodnota výrazu v zátvorke niektorou z možností, vykonajú sa všetky príkazy za touto možnosťou. V prípade, že žiadna z možností nenastane, vykoná sa možnosť default. (V prípade, že tam túto možnosť nedáte, nevykoná sa nič.)



Úloha č.1 Napíšte, pochopte a vyskúšajte prvé dva programy.

Úloha č.2 Napíšte tretí program, ale vynechajte z neho všetky príkazy break. Aký bude výstup, keď na vstup napíšete 3? A keď napíšete 1?

Úloha č.3 S pomocou príkazu switch a skúseností z predošlej úlohy napíšte program, ktorý si vypýta číslo, v prípade, že je to 1, 2 alebo 3 napíše obstojne cislo, ak je to 4 alebo 5, napíše ujde to a ak je to nejaké iné číslo, napíše humus.

Úloha č.4 Napíšte program, ktorý zistí a vypíše najmenší násobok čísla 31 väčší ako 10000. Použite nekonečný cykus (v ktorom sa nejaká premenná vždy zväčší o 31) a príkaz break.

Úloha č.5 (nepovinná, pre guruov) Fibonacciho postupnosť je postupnosť čísel 1, 1, 2, 3, 5, 8, 13,..., každý ďalší člen je súčtom dvoch predchádzajúcich. Napíšte program, ktorý vypíše všetky členy Fibonacciho postupnosti menšie než 10000

Anino Belan 2003-10-26